Skip to main content

Python wrapper for the Buildkite API

Project description

PyBuildkite

Build status Coverage Status PyPI most recent version PyPI downloads

A Python library and client for the Buildkite API.

Usage

To get the package, execute:

pip install pybuildkite

Then set up an instance of the Buildkite object, set you access token, and make any available requests.

from pybuildkite.buildkite import Buildkite, BuildState

buildkite = Buildkite()
buildkite.set_access_token('YOUR_API_ACCESS_TOKEN_HERE')

# Get all info about particular org
org = buildkite.organizations().get_org('my-org')

# Get all running and scheduled builds for a particular pipeline
builds = buildkite.builds().list_all_for_pipeline('my-org', 'my-pipeline', states=[BuildState.RUNNING, BuildState.SCHEDULED])

# Create a build
buildkite.builds().create_build('my-org', 'my-pipeline', 'COMMITSHA', 'master', 
clean_checkout=True, message="My First Build!")

Per-Page Configuration

The per_page parameter controls the number of items returned per API request. This can be useful for organizations with large datasets that experience timeouts.

# Default behavior (100 items per page)
buildkite = Buildkite()

# Custom per_page for smaller responses (useful for large organizations)
buildkite = Buildkite(per_page=25)

Pagination

Buildkite offers pagination for endpoints that return a lot of data. By default this wrapper returns 100 objects per page. However, any request that may contain more than that offers a pagination option.

When with_pagination=True, we return a response object with properties that may have next_page, last_page, previous_page, or first_page depending on what page you're on.

builds_response = buildkite.builds().list_all(page=1, with_pagination=True)

# Keep looping until next_page is not populated
while builds_response.next_page:
    builds_response = buildkite.builds().list_all(page=builds_response.next_page, with_pagination=True)

Artifacts

Artifacts can be downloaded as binary data. The following example loads the artifact into memory as Python bytes and then writes them to disc:

artifacts = buildkite.artifacts()
artifact = artifacts.download_artifact("org_slug", "pipe_slug", "build_no", 123, "artifact")
with open('artifact.bin', 'b') as f:
  f.write(artifact)

Large artifacts should be streamed as chunks of bytes to limit the memory consumption:

stream = artifacts.download_artifact("org_slug", "pipe_slug", "build_no", 123, "artifact", as_stream=True)
with open('artifact.bin', 'b') as f:
  for chunk in stream:
    f.write(chunk)

A unicode text artifact can be turned into a string easily:

text = str(artifact)

License

This library is distributed under the BSD-style license found in the LICENSE file.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pybuildkite-1.3.0.tar.gz (21.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pybuildkite-1.3.0-py3-none-any.whl (19.3 kB view details)

Uploaded Python 3

File details

Details for the file pybuildkite-1.3.0.tar.gz.

File metadata

  • Download URL: pybuildkite-1.3.0.tar.gz
  • Upload date:
  • Size: 21.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.1

File hashes

Hashes for pybuildkite-1.3.0.tar.gz
Algorithm Hash digest
SHA256 81e5531b74ca21ccb85159e5d757b9153c062b1bf583118b0bc8bef314228f1c
MD5 c9eab11cf5a3e376a0291ee16357fe1c
BLAKE2b-256 fef6f4870301b9d398e7850631bd3b364e22f0558e7e85138cb80f224128b1c9

See more details on using hashes here.

File details

Details for the file pybuildkite-1.3.0-py3-none-any.whl.

File metadata

  • Download URL: pybuildkite-1.3.0-py3-none-any.whl
  • Upload date:
  • Size: 19.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.1

File hashes

Hashes for pybuildkite-1.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 fbfc7700377b8478c92b89711ff974a5bcf44fc93bd8d3d4d17b88da3f6e70d8
MD5 62d575e7506aa7c4c7b25154d5d2f797
BLAKE2b-256 17675783801c84f2030b26fbaac3f367038e85664a7edd4f3bb5644fb3e35676

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page