add buildkite pipline

This commit is contained in:
Mike Mason
2023-07-18 23:05:57 +00:00
parent f5103fb3fa
commit 8186433cfb

82
.buildkite/pipeline.yml Normal file
View File

@@ -0,0 +1,82 @@
env:
ARTIFACT_NAME: bk-infra9-metal-bridge
BIN_NAME: infra9-metal-bridge
DEPLOYMENT_REPO: k8s-infra9-metal-bridge
GOPRIVATE: go.equinixmetal.net/*
IMAGE_TAG: ${BUILDKITE_BUILD_NUMBER}-${BUILDKITE_COMMIT:0:8}
QUAY_REPO: quay.io/equinixmetal/infra9-metal-bridge
steps:
- label: ":golangci-lint: lint"
key: "lint"
command: |
make lint
plugins:
- docker#v5.3.0:
image: "golangci/golangci-lint:v1.51.2"
volumes:
- "/var/lib/buildkite-agent/.gitconfig/:/root/.gitconfig/"
- label: ":test_tube: test"
key: "test"
command: |
make test
plugins:
- docker#v5.3.0:
image: "golang:1.20"
volumes:
- "/var/lib/buildkite-agent/.gitconfig/:/root/.gitconfig/"
- label: ":golang: build"
key: "gobuild"
commands: |
CGO_ENABLED=0 go build -o ${ARTIFACT_NAME} -buildvcs=false ./main.go
artifact_paths: "${ARTIFACT_NAME}"
plugins:
- docker#v5.6.0:
image: "golang:1.20"
volumes:
- "/var/lib/buildkite-agent/.gitconfig:/root/.gitconfig"
- label: ":whale: docker build"
key: "build"
depends_on: ["lint", "test", "gobuild"]
commands: |
#!/bin/bash
echo --- Retrieve artifacts
buildkite-agent artifact download "${ARTIFACT_NAME}" .
mv "${ARTIFACT_NAME}" "${BIN_NAME}"
# make sure it is executable
chmod +x ${BIN_NAME}
echo --- Build Docker Image
docker build . -t "$QUAY_REPO:$IMAGE_TAG"
echo --- Push Docker Image
docker push "$QUAY_REPO:$IMAGE_TAG"
buildkite-agent annotate --style "success" "Image pushed to quay [$QUAY_REPO:$IMAGE_TAG](https://$QUAY_REPO:$IMAGE_TAG)"
# For main commits, pull-requests will be created to bump the image in the deployment manifest
- label: "Bump image tag for main branch builds"
depends_on:
- "build"
if: build.branch == 'main'
plugins:
- first-aml/git-clone:
repository: git@github.com:equinixmetal/$DEPLOYMENT_REPO.git
- ssh://git@github.com/equinixmetal/ssm-buildkite-plugin#v1.0.3:
parameters:
GITHUB_TOKEN: /buildkite/github/personal-access-token/v1
- ssh://git@github.com/packethost/yaml-update-buildkite-plugin#v1.0.1:
dir: $DEPLOYMENT_REPO
file: values.yaml
values:
- .bridge.image.tag=$IMAGE_TAG
- ssh://git@github.com/equinixmetal/github-pr-template-buildkite-plugin#v0.2.0: {}
# Create Pull Request to main using commit from previous step
- envato/github-pull-request#v0.4.0:
title: '[buildkite] bump image tag to $IMAGE_TAG'
head: buildkite-yaml-update-$BUILDKITE_BUILD_NUMBER
base: main