diff --git a/.buildkite/pipeline.yml b/.buildkite/pipeline.yml new file mode 100644 index 0000000..69006fe --- /dev/null +++ b/.buildkite/pipeline.yml @@ -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