Security News
Research
Data Theft Repackaged: A Case Study in Malicious Wrapper Packages on npm
The Socket Research Team breaks down a malicious wrapper package that uses obfuscation to harvest credentials and exfiltrate sensitive data.
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!")
Buildkite offers pagination for endpoints that return a lot of data. By default this wrapper return 100
objects. 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.
Security News
Research
The Socket Research Team breaks down a malicious wrapper package that uses obfuscation to harvest credentials and exfiltrate sensitive data.
Research
Security News
Attackers used a malicious npm package typosquatting a popular ESLint plugin to steal sensitive data, execute commands, and exploit developer systems.
Security News
The Ultralytics' PyPI Package was compromised four times in one weekend through GitHub Actions cache poisoning and failure to rotate previously compromised API tokens.