Categorygithub.com/buildkite/pipeline-sdk
repositorypackage
0.0.0-20241118214320-69b3a69b53c4
Repository: https://github.com/buildkite/pipeline-sdk.git
Documentation: pkg.go.dev

# Packages

No description provided by the author

# README

Buildkite Pipeline SDK

This repo contains the code to generate language SDKs for Buildkite Pipelines.

Build and Install

To build and install the SDKs, you just need to run the build and install script:

$ ./scripts/build_and_install.sh

TypeScript Example

import * as bk from "buildkite-pipline-sdk";

let pipeline = bk.stepBuilder
    .addCommandStep({
        commands: [ "echo \"Hello World!\"" ],
    });

const branchName = bk.environment.branch();
if (branchName === "main") {
    pipeline = pipeline.addCommandStep({
        commands: [ `echo "I am on the main branch"` ],
    })
} else {
    pipeline = pipeline.addCommandStep({
        commands: [ `echo "This isn't the main its the ${branchName} branch"` ],
    })
}

pipeline.write();

Go Example

The code sample below shows a small Go program to generate a pipeline in json format.

// main.go
package main

import (
    "fmt"
    "os"

    bk "github.com/buildkite/pipeline-sdk/sdk/go"
)

func run() error {
    // Create a new Buildkite Pipeline
    pipeline := bk.NewStepBuilder().
        AddCommand(&bk.Command{
            Commands: []string{
                "echo \"Hello World!\"",
            },
        })

    // Get the branch name of the current build
    branchName := bk.Environment.BUILDKITE_BRANCH()

    // Print out what branch we are on.
    if branchName == "main" {
        pipeline.AddCommand(&bk.Command{
            Commands: []string{
                `echo "I am on the main branch"`,
            },
        })
    } else {
        pipeline.AddCommand(&bk.Command{
            Commands: []string{
                fmt.Sprintf(`echo "I am on the %s branch"`, branchName),
            },
        })
    }

    return pipeline.Print()
}

func main() {
    err := run()
    if err != nil {
        fmt.Printf("ERROR: %v\n", err)
        os.Exit(1)
    }
}

Compiling and running the program will generate a file in your current working directory called pipeline.json with the following contents:

{
    "steps": [
        {
            "commands": [
                "echo \"Hello World!\""
            ],
            "retry": {}
        },
        {
            "commands": [
                "echo \"I am on the  branch\""
            ],
            "retry": {}
        }
    ]
}