add buildkite pipline
This commit is contained in:
82
.buildkite/pipeline.yml
Normal file
82
.buildkite/pipeline.yml
Normal 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
|
||||
Reference in New Issue
Block a user