Skip to main content
Pre-release

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

  1. Upgrade the provider package for your language to v3.x (see Installing above).

  2. Export the stack state to a file:

    pulumi stack export -s <stackName> > stateFile.json
    
  3. Edit stateFile.json:

    a. Bump the provider version. Find the pulumi:providers:buildkite resource and update the version string from your 2.x.x version to the 3.x.x version you are upgrading to. The version appears in three places for this resource: the urn, inputs.version, and outputs.version. Leave the id (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 providerSettings on every buildkite:Pipeline/pipeline:Pipeline resource. 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": {}
        }
    }
    
  4. Re-import the edited state:

    pulumi stack import -s <stackName> --file stateFile.json
    
  5. Run pulumi preview to confirm the state loads cleanly, then pulumi up as 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 the write_pipelines, read_pipelines and write_suites scopes.
  • 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
Daniel Mühlbachler-Pietrzykowski

🚧 💻 📖
Christopher Maier
Christopher Maier

💻 📖
Susan Evans
Susan Evans

📖
Paul Stack
Paul Stack

📖

This project follows the all-contributors specification. Contributions of any kind welcome!

Metadata

Release files for pulumiverse-buildkite 3.5.0a1791500894

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pulumiverse-buildkite 3.5.0a1791500894
File Size Uploaded Provenance
pulumiverse_buildkite-3.5.0a1791500894.tar.gz 84.8 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for pulumiverse-buildkite 3.5.0a1791500894
File Interpreter ABI Platform
pulumiverse_buildkite-3.5.0a1791500894-py3-none-any.whl Python 3 none any Details

Total release size: 216.2 kB

Release files / pulumiverse_buildkite-3.5.0a1791500894.tar.gz

Download URL pulumiverse_buildkite-3.5.0a1791500894.tar.gz
Size 84.8 kB
Tags Source
SHA-256 checksum
How to use checksums
7ef9fa4a26a729f70a451ead68d57c28e2edd5e0f6ee5f66ad3900e46321e579
BLAKE2b-256 checksum
How to use checksums
d99c3d152791c8e4a0ac469f08764d1286d7b48c0321b30b19a267aa62afab4a
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.0a1791500894-py3-none-any.whl

Download URL pulumiverse_buildkite-3.5.0a1791500894-py3-none-any.whl
Size 131.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
12a94c46939041818b6c2594fbcb1374c1e24ccb2a9cce4d7a7a795478d2ec21
BLAKE2b-256 checksum
How to use checksums
4b8c1e618fe371cee9e522fc1d05a4585762c5d00cb0d34f53213692b1196081
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.0a1791500894

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.

Release history Release notifications | RSS feed

This release
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page