
Research
/Security News
Critical Vulnerability in NestJS Devtools: Localhost RCE via Sandbox Escape
A flawed sandbox in @nestjs/devtools-integration lets attackers run code on your machine via CSRF, leading to full Remote Code Execution (RCE).
A Python library and client for the Buildkite API.
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!")
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)
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 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)
This library is distributed under the BSD-style license found in the LICENSE file.
FAQs
Python wrapper for the Buildkite API
We found that pybuildkite demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
/Security News
A flawed sandbox in @nestjs/devtools-integration lets attackers run code on your machine via CSRF, leading to full Remote Code Execution (RCE).
Product
Customize license detection with Socket’s new license overlays: gain control, reduce noise, and handle edge cases with precision.
Product
Socket now supports Rust and Cargo, offering package search for all users and experimental SBOM generation for enterprise projects.