This release is a pre-release and may not be stable for production use.
Buildkite Resource Provider
The Buildkite Resource Provider lets you manage Buildkite resources.
The provider is built on https://github.com/buildkite/terraform-provider-buildkite.
Installing
This package is available in many languages in the standard packaging formats.
Node.js (JavaScript/TypeScript)
To use from JavaScript or TypeScript in Node.js, install using either npm:
npm install @pulumiverse/buildkite
or yarn:
yarn add @pulumiverse/buildkite
Python
To use from Python, install using pip:
pip install pulumiverse-buildkite
Go
To use from Go, use go get to grab the latest version of the library:
go get github.com/pulumiverse/pulumi-buildkite/sdk/go/...
.NET
To use from .NET, install using dotnet add package:
dotnet add package Pulumiverse.Buildkite
Java
To use from Java, add the following dependency to your project.
With Maven:
<dependency>
<groupId>com.pulumiverse</groupId>
<artifactId>buildkite</artifactId>
<version>${VERSION}</version>
</dependency>
With Gradle:
implementation("com.pulumiverse:buildkite:${VERSION}")
Migrating from v2 to v3
v3.0.0 is a major upgrade that moves from the pre-release Terraform provider v0.25.x
(used by v2.3.1 and earlier) to the stable Terraform provider v1.x. This changes the
schema of the buildkite:Pipeline/pipeline:Pipeline resource, so upgrading an existing
stack requires a one-time manual edit of the stack state. There is currently no
automatic state mapper — see issue #118.
Symptom
After bumping the provider package to v3.x, the first pulumi preview/pulumi up fails
while trying to read the previously saved state:
error: Unable to Read Previously Saved State for UpgradeResourceState: There was an error reading the saved resource state using the prior resource schema defined for version 0 upgrade.
Please report this to the provider developer:
AttributeName("provider_settings"): invalid JSON, expected "[", got "{"
Cause
The underlying Terraform provider changed the shape of provider_settings on the pipeline
resource. In v2 (Terraform provider v0.25.x) it was modelled as an array
([]*providerSettingsModel); in v3 (Terraform provider v1.x) it is a single object
(*providerSettingsModel). State written by v2 therefore cannot be read by v3 without
adjustment. See also buildkite/terraform-provider-buildkite#501.
Migration steps
-
Upgrade the provider package for your language to
v3.x(see Installing above). -
Export the stack state to a file:
pulumi stack export -s <stackName> > stateFile.json
-
Edit
stateFile.json:a. Bump the provider version. Find the
pulumi:providers:buildkiteresource and update the version string from your2.x.xversion to the3.x.xversion you are upgrading to. The version appears in three places for this resource: theurn,inputs.version, andoutputs.version. Leave theid(GUID) unchanged. This stops Pulumi from trying to load the now-uninstalled v2 plugin to read the old state.Before:
{ "urn": "urn:pulumi:<stack>::<project>::pulumi:providers:buildkite::default_2_2_0_...", "custom": true, "id": "4c1a2d5b-b292-4eec-ac4a-d4d08cd75be6", "type": "pulumi:providers:buildkite", "inputs": { "pluginDownloadURL": "...", "version": "2.2.0" }, "outputs": { "pluginDownloadURL": "...", "version": "2.2.0" } }
After (using the latest release as the target):
{ "urn": "urn:pulumi:<stack>::<project>::pulumi:providers:buildkite::default_3_4_0_...", "custom": true, "id": "4c1a2d5b-b292-4eec-ac4a-d4d08cd75be6", "type": "pulumi:providers:buildkite", "inputs": { "pluginDownloadURL": "...", "version": "3.4.0" }, "outputs": { "pluginDownloadURL": "...", "version": "3.4.0" } }
b. Fix
providerSettingson everybuildkite:Pipeline/pipeline:Pipelineresource. Replace the v2 array-style value with the equivalent v3 object.For a pipeline with no custom provider settings, the v2 state contains the default-tracking marker
{"__defaults": []}; replace it with an empty object:{ "urn": "urn:pulumi:<stack>::<project>::buildkite:Pipeline/pipeline:Pipeline::NAME_HERE", "type": "buildkite:Pipeline/pipeline:Pipeline", "inputs": { "providerSettings": {} } }
-
Re-import the edited state:
pulumi stack import -s <stackName> --file stateFile.json
-
Run
pulumi previewto confirm the state loads cleanly, thenpulumi upas usual.
Configuration
The following configuration points are available for the buildkite provider:
buildkite:apiToken(required, environment:BUILDKITE_API_TOKEN) - A Buildkite API Access Token. Must have GraphQL access, as well as thewrite_pipelines,read_pipelinesandwrite_suitesscopes.buildkite:organization(required, environment:BUILDKITE_ORGANIZATION_SLUG) - The Buildkite organization slug.buildkite:graphqlUrl(optional, environment:BUILDKITE_GRAPHQL_URL) - The Buildkite GraphQL URL.buildkite:restUrl(optional, environment:BUILDKITE_REST_URL) - The Buildkite REST URL.
For example, to set the API token as a secret:
pulumi config set --secret buildkite:apiToken <your-token>
Example
Example for Typescript to create a resource:
import * as buildkite from '@pulumiverse/buildkite';
const args = {};
const vm = new buildkite.agent.AgentToken(
'token',
args,
);
Reference
For detailed reference documentation, please visit the upstream Terraform provider's documentation at: https://registry.terraform.io/providers/buildkite/buildkite/latest
Contributors
Thanks goes to these wonderful people (emoji key):
Daniel Mühlbachler-Pietrzykowski 🚧 💻 📖 |
Christopher Maier 💻 📖 |
Susan Evans 📖 |
Paul Stack 📖 |
This project follows the all-contributors specification. Contributions of any kind welcome!
Metadata
Release files for pulumiverse-buildkite 3.5.0a1791500935
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| pulumiverse_buildkite-3.5.0a1791500935.tar.gz | 84.8 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| pulumiverse_buildkite-3.5.0a1791500935-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 216.3 kB
Release files / pulumiverse_buildkite-3.5.0a1791500935.tar.gz
| Download URL | pulumiverse_buildkite-3.5.0a1791500935.tar.gz |
|---|---|
| Size | 84.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
e0c57734236b1f476d33addab06d3a57b29fed626156be5289ce61d6a997fd26
|
|
BLAKE2b-256 checksum How to use checksums |
4f3c57598a3eb9e55a8c3017a716bd91ddd1c84aac3ec0b523005dc524283304
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.11.8
|
Release files / pulumiverse_buildkite-3.5.0a1791500935-py3-none-any.whl
| Download URL | pulumiverse_buildkite-3.5.0a1791500935-py3-none-any.whl |
|---|---|
| Size | 131.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
ffcf46c14f01ab4957429ee0f57b42403ea1a89319074fcf83f50a9f40c3ac7c
|
|
BLAKE2b-256 checksum How to use checksums |
926f2f5bc23251a45b314b486784a19375cd867b02e1cc54f63001712e26f9ae
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.11.8
|
Security for pulumiverse-buildkite 3.5.0a1791500935
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.