From 8e20220f17582fe02fc9f7575d6d7d7c97feab86 Mon Sep 17 00:00:00 2001 From: fheinecke <23390735+fheinecke@users.noreply.github.com> Date: Thu, 1 Feb 2024 14:50:47 -0600 Subject: [PATCH] Removed old Drone pipelines (#37526) * Removed old Drone pipelines * Removed docs webhook and buildbox pipelines --- .drone.yml | 2558 +------------------------- dronegen/buildbox.go | 122 -- dronegen/common.go | 29 - dronegen/container_image_triggers.go | 66 - dronegen/container_images.go | 11 +- dronegen/container_images_repos.go | 17 +- dronegen/container_images_testing.go | 87 - dronegen/main.go | 2 - dronegen/misc.go | 24 - 9 files changed, 10 insertions(+), 2906 deletions(-) delete mode 100644 dronegen/buildbox.go delete mode 100644 dronegen/container_images_testing.go delete mode 100644 dronegen/misc.go diff --git a/.drone.yml b/.drone.yml index 4b7c45d1e0e..a5d5063ed55 100644 --- a/.drone.yml +++ b/.drone.yml @@ -899,115 +899,6 @@ volumes: temp: {} --- -kind: pipeline -type: kubernetes -name: teleport-helm-cron - -trigger: - cron: - - teleport-helm-cron - repo: - include: - - gravitational/teleport - -workspace: - path: /go - -clone: - disable: true - -steps: - - name: Check out code - image: alpine/git - pull: if-not-exists - commands: - - mkdir -p /go/src/github.com/gravitational/teleport - - cd /go/src/github.com/gravitational/teleport - - git clone https://github.com/gravitational/${DRONE_REPO_NAME}.git . - - git checkout ${DRONE_COMMIT} - - mkdir -p /go/chart - - cd /go/chart - - - name: Assume AWS Role - image: amazon/aws-cli - commands: - - aws sts get-caller-identity - - |- - printf "[default]\naws_access_key_id = %s\naws_secret_access_key = %s\naws_session_token = %s\n" \ - $(aws sts assume-role \ - --role-arn "$AWS_ROLE" \ - --role-session-name $(echo "drone-${DRONE_REPO}-${DRONE_BUILD_NUMBER}" | sed "s|/|-|g") \ - --query "Credentials.[AccessKeyId,SecretAccessKey,SessionToken]" \ - --output text) \ - > /root/.aws/credentials - - unset AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY - - aws sts get-caller-identity --profile default - environment: - AWS_ACCESS_KEY_ID: - from_secret: PRODUCTION_CHARTS_AWS_ACCESS_KEY_ID - AWS_SECRET_ACCESS_KEY: - from_secret: PRODUCTION_CHARTS_AWS_SECRET_ACCESS_KEY - AWS_ROLE: - from_secret: PRODUCTION_CHARTS_AWS_ROLE - volumes: - - name: awsconfig - path: /root/.aws - - - name: Download chart repo contents - image: amazon/aws-cli - environment: - AWS_REGION: us-west-2 - AWS_S3_BUCKET: - from_secret: PRODUCTION_CHARTS_AWS_S3_BUCKET - volumes: - - name: awsconfig - path: /root/.aws - commands: - - mkdir -p /go/chart - # download all previously packaged chart versions from the S3 bucket - - aws s3 sync s3://$AWS_S3_BUCKET/ /go/chart - - - name: Package helm charts - image: alpine/helm:latest - commands: - - cd /go/chart - - helm package /go/src/github.com/gravitational/teleport/examples/chart/teleport-cluster - - helm package /go/src/github.com/gravitational/teleport/examples/chart/teleport-kube-agent - - helm package /go/src/github.com/gravitational/teleport/examples/chart/teleport-cluster/charts/teleport-operator - # copy index.html to root of the S3 bucket - - cp /go/src/github.com/gravitational/teleport/examples/chart/index.html /go/chart - # this will index all previous versions of the charts downloaded from the S3 bucket, - # plus the just-packaged charts listed above - - helm repo index /go/chart - - - name: Upload to S3 - image: amazon/aws-cli - commands: - - cd /go/chart - - aws s3 sync . s3://$AWS_S3_BUCKET/ - environment: - AWS_REGION: us-west-2 - AWS_S3_BUCKET: - from_secret: PRODUCTION_CHARTS_AWS_S3_BUCKET - volumes: - - name: awsconfig - path: /root/.aws - - - name: Send Slack notification - image: plugins/slack:1.4.1 - settings: - template: | - *✘ Failed:* `{{ build.event }}` / `${DRONE_STAGE_NAME}` / <{{ build.link }}|Build: #{{ build.number }}> - Author: Repo: Branch: Commit: - webhook: - from_secret: SLACK_WEBHOOK_DEV_TELEPORT - when: - status: [failure] - -volumes: - - name: awsconfig - temp: {} ---- ################################################ # Generated using dronegen, do not edit by hand! # Use 'make dronegen' to update. @@ -1641,221 +1532,6 @@ steps: image_pull_secrets: - DOCKERHUB_CREDENTIALS ---- -################################################ -# Generated using dronegen, do not edit by hand! -# Use 'make dronegen' to update. -# Generated at dronegen/buildbox.go (main.buildboxPipeline) -################################################ - -kind: pipeline -type: kubernetes -name: build-buildboxes -environment: - BUILDBOX_VERSION: teleport16 - GID: "1000" - UID: "1000" -trigger: - event: - include: - - push - repo: - include: - - gravitational/teleport - branch: - include: - - master - - branch/* -workspace: - path: /go/src/github.com/gravitational/teleport -clone: - disable: true -steps: -- name: Check out code - image: docker:git - commands: - - git clone --depth 1 --single-branch --branch ${DRONE_SOURCE_BRANCH:-master} https://github.com/gravitational/${DRONE_REPO_NAME}.git - . - - git checkout ${DRONE_COMMIT} -- name: Wait for docker - image: docker - pull: if-not-exists - commands: - - timeout 30s /bin/sh -c 'while [ ! -S /var/run/docker.sock ]; do sleep 1; done' - - printenv DOCKERHUB_PASSWORD | docker login -u="$DOCKERHUB_USERNAME" --password-stdin - environment: - DOCKERHUB_PASSWORD: - from_secret: DOCKERHUB_READONLY_TOKEN - DOCKERHUB_USERNAME: - from_secret: DOCKERHUB_USERNAME - volumes: - - name: dockersock - path: /var/run - - name: dockerconfig - path: /root/.docker -- name: Configure Staging AWS Profile - image: amazon/aws-cli - pull: if-not-exists - commands: - - aws sts get-caller-identity - - |- - printf "[staging]\naws_access_key_id = %s\naws_secret_access_key = %s\naws_session_token = %s\n" \ - $(aws sts assume-role \ - --role-arn "$AWS_ROLE" \ - --role-session-name $(echo "drone-${DRONE_REPO}-${DRONE_BUILD_NUMBER}" | sed "s|/|-|g") \ - --query "Credentials.[AccessKeyId,SecretAccessKey,SessionToken]" \ - --output text) \ - > /root/.aws/credentials - - unset AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY - - aws sts get-caller-identity --profile staging - environment: - AWS_ACCESS_KEY_ID: - from_secret: STAGING_BUILDBOX_DRONE_USER_ECR_KEY - AWS_ROLE: - from_secret: STAGING_BUILDBOX_DRONE_ECR_AWS_ROLE - AWS_SECRET_ACCESS_KEY: - from_secret: STAGING_BUILDBOX_DRONE_USER_ECR_SECRET - volumes: - - name: awsconfig - path: /root/.aws -- name: Configure Production AWS Profile - image: amazon/aws-cli - pull: if-not-exists - commands: - - aws sts get-caller-identity - - |- - printf "[production]\naws_access_key_id = %s\naws_secret_access_key = %s\naws_session_token = %s\n" \ - $(aws sts assume-role \ - --role-arn "$AWS_ROLE" \ - --role-session-name $(echo "drone-${DRONE_REPO}-${DRONE_BUILD_NUMBER}" | sed "s|/|-|g") \ - --query "Credentials.[AccessKeyId,SecretAccessKey,SessionToken]" \ - --output text) \ - >> /root/.aws/credentials - - unset AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY - - aws sts get-caller-identity --profile production - environment: - AWS_ACCESS_KEY_ID: - from_secret: PRODUCTION_BUILDBOX_DRONE_USER_ECR_KEY - AWS_ROLE: - from_secret: PRODUCTION_BUILDBOX_DRONE_ECR_AWS_ROLE - AWS_SECRET_ACCESS_KEY: - from_secret: PRODUCTION_BUILDBOX_DRONE_USER_ECR_SECRET - volumes: - - name: awsconfig - path: /root/.aws -- name: Build and push buildbox - image: docker - pull: if-not-exists - commands: - - apk add --no-cache make aws-cli go - - chown -R $UID:$GID /go - - aws ecr get-login-password --profile staging --region=us-west-2 | docker login - -u="AWS" --password-stdin 146628656107.dkr.ecr.us-west-2.amazonaws.com - - make -C build.assets buildbox - - docker tag ghcr.io/gravitational/teleport-buildbox:$BUILDBOX_VERSION 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-buildbox:$BUILDBOX_VERSION-$DRONE_COMMIT_SHA - - docker push 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-buildbox:$BUILDBOX_VERSION-$DRONE_COMMIT_SHA - - docker logout 146628656107.dkr.ecr.us-west-2.amazonaws.com - - aws ecr-public get-login-password --profile production --region=us-east-1 | docker - login -u="AWS" --password-stdin public.ecr.aws - - docker tag ghcr.io/gravitational/teleport-buildbox:$BUILDBOX_VERSION public.ecr.aws/gravitational/teleport-buildbox:$BUILDBOX_VERSION - - docker push public.ecr.aws/gravitational/teleport-buildbox:$BUILDBOX_VERSION - volumes: - - name: awsconfig - path: /root/.aws - - name: dockersock - path: /var/run - - name: dockerconfig - path: /root/.docker -- name: Build and push buildbox-arm - image: docker - pull: if-not-exists - commands: - - apk add --no-cache make aws-cli go - - chown -R $UID:$GID /go - - aws ecr get-login-password --profile staging --region=us-west-2 | docker login - -u="AWS" --password-stdin 146628656107.dkr.ecr.us-west-2.amazonaws.com - - make -C build.assets buildbox-arm - - docker tag ghcr.io/gravitational/teleport-buildbox-arm:$BUILDBOX_VERSION 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-buildbox-arm:$BUILDBOX_VERSION-$DRONE_COMMIT_SHA - - docker push 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-buildbox-arm:$BUILDBOX_VERSION-$DRONE_COMMIT_SHA - - docker logout 146628656107.dkr.ecr.us-west-2.amazonaws.com - - aws ecr-public get-login-password --profile production --region=us-east-1 | docker - login -u="AWS" --password-stdin public.ecr.aws - - docker tag ghcr.io/gravitational/teleport-buildbox-arm:$BUILDBOX_VERSION public.ecr.aws/gravitational/teleport-buildbox-arm:$BUILDBOX_VERSION - - docker push public.ecr.aws/gravitational/teleport-buildbox-arm:$BUILDBOX_VERSION - volumes: - - name: awsconfig - path: /root/.aws - - name: dockersock - path: /var/run - - name: dockerconfig - path: /root/.docker -- name: Build and push buildbox-centos7 - image: docker - pull: if-not-exists - commands: - - apk add --no-cache make aws-cli go - - chown -R $UID:$GID /go - - aws ecr get-login-password --profile staging --region=us-west-2 | docker login - -u="AWS" --password-stdin 146628656107.dkr.ecr.us-west-2.amazonaws.com - - make -C build.assets buildbox-centos7 - - docker tag ghcr.io/gravitational/teleport-buildbox-centos7:$BUILDBOX_VERSION-amd64 - 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-buildbox-centos7:$BUILDBOX_VERSION-$DRONE_COMMIT_SHA - - docker push 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-buildbox-centos7:$BUILDBOX_VERSION-$DRONE_COMMIT_SHA - - docker logout 146628656107.dkr.ecr.us-west-2.amazonaws.com - - aws ecr-public get-login-password --profile production --region=us-east-1 | docker - login -u="AWS" --password-stdin public.ecr.aws - - docker tag ghcr.io/gravitational/teleport-buildbox-centos7:$BUILDBOX_VERSION-amd64 - public.ecr.aws/gravitational/teleport-buildbox-centos7:$BUILDBOX_VERSION - - docker push public.ecr.aws/gravitational/teleport-buildbox-centos7:$BUILDBOX_VERSION - volumes: - - name: awsconfig - path: /root/.aws - - name: dockersock - path: /var/run - - name: dockerconfig - path: /root/.docker -- name: Build and push buildbox-centos7-fips - image: docker - pull: if-not-exists - commands: - - apk add --no-cache make aws-cli go - - chown -R $UID:$GID /go - - aws ecr get-login-password --profile staging --region=us-west-2 | docker login - -u="AWS" --password-stdin 146628656107.dkr.ecr.us-west-2.amazonaws.com - - make -C build.assets buildbox-centos7-fips - - docker tag ghcr.io/gravitational/teleport-buildbox-centos7-fips:$BUILDBOX_VERSION-amd64 - 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-buildbox-centos7-fips:$BUILDBOX_VERSION-$DRONE_COMMIT_SHA - - docker push 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-buildbox-centos7-fips:$BUILDBOX_VERSION-$DRONE_COMMIT_SHA - - docker logout 146628656107.dkr.ecr.us-west-2.amazonaws.com - - aws ecr-public get-login-password --profile production --region=us-east-1 | docker - login -u="AWS" --password-stdin public.ecr.aws - - docker tag ghcr.io/gravitational/teleport-buildbox-centos7-fips:$BUILDBOX_VERSION-amd64 - public.ecr.aws/gravitational/teleport-buildbox-centos7-fips:$BUILDBOX_VERSION - - docker push public.ecr.aws/gravitational/teleport-buildbox-centos7-fips:$BUILDBOX_VERSION - volumes: - - name: awsconfig - path: /root/.aws - - name: dockersock - path: /var/run - - name: dockerconfig - path: /root/.docker -services: -- name: Start Docker - image: docker:dind - privileged: true - volumes: - - name: dockersock - path: /var/run -volumes: -- name: awsconfig - temp: {} -- name: dockersock - temp: {} -- name: dockerconfig - temp: {} -image_pull_secrets: -- DOCKERHUB_CREDENTIALS - --- ################################################ # Generated using dronegen, do not edit by hand! @@ -3135,2238 +2811,6 @@ volumes: image_pull_secrets: - DOCKERHUB_CREDENTIALS ---- -################################################ -# Generated using dronegen, do not edit by hand! -# Use 'make dronegen' to update. -# Generated at dronegen/container_images_release_version.go (main.(*ReleaseVersion).buildVersionPipeline) -################################################ - -kind: pipeline -type: kubernetes -name: teleport-container-images-current-version-cron -environment: - DEBIAN_FRONTEND: noninteractive -trigger: - cron: - include: - - teleport-container-images-cron - repo: - include: - - gravitational/teleport -workspace: - path: /go -clone: - disable: true -steps: -- name: Find the latest available semver for v14 - image: golang:1.18 - commands: - - mkdir -pv "/tmp/teleport" - - cd "/tmp/teleport" - - git init - - git remote add origin ${DRONE_REMOTE_URL} - - git fetch origin --tags - - git checkout -qf "branch/v14" - - mkdir -pv $(dirname "/go/vars/full-version-v14") - - cd "/tmp/teleport/build.assets/tooling/cmd/query-latest" - - go run . "v14" | sed 's/v//' > "/go/vars/full-version-v14" - - echo Found full semver "$(cat "/go/vars/full-version-v14")" for major version - "v14" -- name: Wait for docker - image: docker - pull: if-not-exists - commands: - - timeout 30s /bin/sh -c 'while [ ! -S /var/run/docker.sock ]; do sleep 1; done' - - printenv DOCKERHUB_PASSWORD | docker login -u="$DOCKERHUB_USERNAME" --password-stdin - environment: - DOCKERHUB_PASSWORD: - from_secret: DOCKERHUB_READONLY_TOKEN - DOCKERHUB_USERNAME: - from_secret: DOCKERHUB_USERNAME - volumes: - - name: dockersock - path: /var/run - - name: dockerconfig - path: /root/.docker - depends_on: - - Find the latest available semver for v14 -- name: Wait for docker registry - image: alpine - pull: if-not-exists - commands: - - apk add curl - - timeout 30s /bin/sh -c 'while [ "$(curl -s -o /dev/null -w %{http_code} http://drone-docker-registry:5000/)" - != "200" ]; do sleep 1; done' - depends_on: - - Find the latest available semver for v14 -- name: Check out code - image: alpine/git:latest - pull: if-not-exists - commands: - - mkdir -pv "/go/src/github.com/gravitational/teleport" - - cd "/go/src/github.com/gravitational/teleport" - - git init - - git remote add origin ${DRONE_REMOTE_URL} - - git fetch origin --tags - - git checkout -qf "v$(cat '/go/vars/full-version-v14')" - depends_on: - - Find the latest available semver for v14 -- name: Build major, minor, and full semvers - image: alpine - commands: - - mkdir -pv $(dirname "/go/var/major-version") - - echo v$(cat '/go/vars/full-version-v14') | sed 's/v//' | cut -d'.' -f "1" > "/go/var/major-version" - - echo $(cat "/go/var/major-version") - - mkdir -pv $(dirname "/go/var/minor-version") - - echo v$(cat '/go/vars/full-version-v14') | sed 's/v//' | cut -d'.' -f "1,2" > - "/go/var/minor-version" - - echo $(cat "/go/var/minor-version") - - mkdir -pv $(dirname "/go/var/full-version") - - echo v$(cat '/go/vars/full-version-v14') | sed 's/v//' > "/go/var/full-version" - - echo $(cat "/go/var/full-version") - depends_on: - - Find the latest available semver for v14 -- name: Assume ECR - staging AWS Role - image: amazon/aws-cli - pull: if-not-exists - commands: - - aws sts get-caller-identity - - |- - printf "[ecr-staging]\naws_access_key_id = %s\naws_secret_access_key = %s\naws_session_token = %s\n" \ - $(aws sts assume-role \ - --role-arn "$AWS_ROLE" \ - --role-session-name $(echo "drone-${DRONE_REPO}-${DRONE_BUILD_NUMBER}" | sed "s|/|-|g") \ - --query "Credentials.[AccessKeyId,SecretAccessKey,SessionToken]" \ - --output text) \ - >> /root/.aws/credentials - - unset AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY - - aws sts get-caller-identity --profile ecr-staging - environment: - AWS_ACCESS_KEY_ID: - from_secret: STAGING_TELEPORT_DRONE_USER_ECR_KEY - AWS_ROLE: - from_secret: STAGING_TELEPORT_DRONE_ECR_AWS_ROLE - AWS_SECRET_ACCESS_KEY: - from_secret: STAGING_TELEPORT_DRONE_USER_ECR_SECRET - volumes: - - name: awsconfig - path: /root/.aws - depends_on: - - Find the latest available semver for v14 -- name: Assume ECR - authenticated-pull AWS Role - image: amazon/aws-cli - pull: if-not-exists - commands: - - aws sts get-caller-identity - - |- - printf "[ecr-authenticated-pull]\naws_access_key_id = %s\naws_secret_access_key = %s\naws_session_token = %s\n" \ - $(aws sts assume-role \ - --role-arn "$AWS_ROLE" \ - --role-session-name $(echo "drone-${DRONE_REPO}-${DRONE_BUILD_NUMBER}" | sed "s|/|-|g") \ - --query "Credentials.[AccessKeyId,SecretAccessKey,SessionToken]" \ - --output text) \ - >> /root/.aws/credentials - - unset AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY - - aws sts get-caller-identity --profile ecr-authenticated-pull - environment: - AWS_ACCESS_KEY_ID: - from_secret: PRODUCTION_TELEPORT_DRONE_USER_ECR_KEY - AWS_ROLE: - from_secret: PRODUCTION_TELEPORT_DRONE_ECR_AWS_ROLE - AWS_SECRET_ACCESS_KEY: - from_secret: PRODUCTION_TELEPORT_DRONE_USER_ECR_SECRET - volumes: - - name: awsconfig - path: /root/.aws - depends_on: - - Assume ECR - staging AWS Role - - Find the latest available semver for v14 -- name: Assume ECR - production AWS Role - image: amazon/aws-cli - pull: if-not-exists - commands: - - aws sts get-caller-identity - - |- - printf "[ecr-production]\naws_access_key_id = %s\naws_secret_access_key = %s\naws_session_token = %s\n" \ - $(aws sts assume-role \ - --role-arn "$AWS_ROLE" \ - --role-session-name $(echo "drone-${DRONE_REPO}-${DRONE_BUILD_NUMBER}" | sed "s|/|-|g") \ - --query "Credentials.[AccessKeyId,SecretAccessKey,SessionToken]" \ - --output text) \ - >> /root/.aws/credentials - - unset AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY - - aws sts get-caller-identity --profile ecr-production - environment: - AWS_ACCESS_KEY_ID: - from_secret: PRODUCTION_TELEPORT_DRONE_USER_ECR_KEY - AWS_ROLE: - from_secret: PRODUCTION_TELEPORT_DRONE_ECR_AWS_ROLE - AWS_SECRET_ACCESS_KEY: - from_secret: PRODUCTION_TELEPORT_DRONE_USER_ECR_SECRET - volumes: - - name: awsconfig - path: /root/.aws - depends_on: - - Assume ECR - authenticated-pull AWS Role - - Find the latest available semver for v14 -- name: Build teleport-operator image "teleport-operator:v14-amd64" - image: docker - commands: - - docker run --privileged --rm tonistiigi/binfmt --install all - - mkdir -pv "/go/src/github.com/gravitational/teleport" && cd "/go/src/github.com/gravitational/teleport" - - mkdir -pv "/tmp/teleport-operator-v14-amd64-builder" - - echo '[registry."drone-docker-registry:5000"]' > "/tmp/teleport-operator-v14-amd64-builder/buildkitd.toml" - - echo ' http = true' >> "/tmp/teleport-operator-v14-amd64-builder/buildkitd.toml" - - docker buildx create --driver "docker-container" --driver-opt "network=host" --name - "teleport-operator-v14-amd64-builder" --config "/tmp/teleport-operator-v14-amd64-builder/buildkitd.toml" - - apk add --no-cache aws-cli - - aws ecr-public get-login-password --region=us-east-1 | docker login -u="AWS" --password-stdin - public.ecr.aws - - printenv DOCKERHUB_PASSWORD | docker login -u="$DOCKERHUB_USERNAME" --password-stdin - - docker buildx build --push --builder "teleport-operator-v14-amd64-builder" --platform - "linux/amd64" --tag drone-docker-registry:5000/teleport-operator:$(cat "/go/var/full-version")-amd64 - --file "/go/src/github.com/gravitational/teleport/integrations/operator/Dockerfile" - --build-arg BUILDBOX=public.ecr.aws/gravitational/teleport-buildbox:teleport15 - --build-arg COMPILER_NAME=x86_64-linux-gnu-gcc --build-arg GOLANG_VERSION=go1.21.6 - --build-arg PROTOC_VERSION=3.20.3 --build-arg TARGETARCH=amd64 --build-arg BUILD_ARCH=amd64 - /go/src/github.com/gravitational/teleport - - docker logout "public.ecr.aws" - - docker buildx rm "teleport-operator-v14-amd64-builder" - - rm -rf "/tmp/teleport-operator-v14-amd64-builder" - environment: - AWS_PROFILE: ecr-authenticated-pull - DOCKER_BUILDKIT: "1" - DOCKERHUB_PASSWORD: - from_secret: DOCKERHUB_READONLY_TOKEN - DOCKERHUB_USERNAME: - from_secret: DOCKERHUB_USERNAME - volumes: - - name: awsconfig - path: /root/.aws - - name: dockersock - path: /var/run - depends_on: - - Assume ECR - authenticated-pull AWS Role - - Find the latest available semver for v14 - - Wait for docker - - Wait for docker registry - - Check out code - - Build major, minor, and full semvers - - Assume ECR - staging AWS Role - - Assume ECR - authenticated-pull AWS Role - - Assume ECR - production AWS Role -- name: Build teleport-operator image "teleport-operator:v14-arm" - image: docker - commands: - - docker run --privileged --rm tonistiigi/binfmt --install all - - mkdir -pv "/go/src/github.com/gravitational/teleport" && cd "/go/src/github.com/gravitational/teleport" - - mkdir -pv "/tmp/teleport-operator-v14-arm-builder" - - echo '[registry."drone-docker-registry:5000"]' > "/tmp/teleport-operator-v14-arm-builder/buildkitd.toml" - - echo ' http = true' >> "/tmp/teleport-operator-v14-arm-builder/buildkitd.toml" - - docker buildx create --driver "docker-container" --driver-opt "network=host" --name - "teleport-operator-v14-arm-builder" --config "/tmp/teleport-operator-v14-arm-builder/buildkitd.toml" - - apk add --no-cache aws-cli - - aws ecr-public get-login-password --region=us-east-1 | docker login -u="AWS" --password-stdin - public.ecr.aws - - printenv DOCKERHUB_PASSWORD | docker login -u="$DOCKERHUB_USERNAME" --password-stdin - - docker buildx build --push --builder "teleport-operator-v14-arm-builder" --platform - "linux/arm" --tag drone-docker-registry:5000/teleport-operator:$(cat "/go/var/full-version")-arm - --file "/go/src/github.com/gravitational/teleport/integrations/operator/Dockerfile" - --build-arg BUILDBOX=public.ecr.aws/gravitational/teleport-buildbox-arm:teleport15 - --build-arg COMPILER_NAME=arm-linux-gnueabihf-gcc --build-arg GOLANG_VERSION=go1.21.6 - --build-arg PROTOC_VERSION=3.20.3 --build-arg TARGETARCH=arm --build-arg BUILD_ARCH=amd64 - /go/src/github.com/gravitational/teleport - - docker logout "public.ecr.aws" - - docker buildx rm "teleport-operator-v14-arm-builder" - - rm -rf "/tmp/teleport-operator-v14-arm-builder" - environment: - AWS_PROFILE: ecr-authenticated-pull - DOCKER_BUILDKIT: "1" - DOCKERHUB_PASSWORD: - from_secret: DOCKERHUB_READONLY_TOKEN - DOCKERHUB_USERNAME: - from_secret: DOCKERHUB_USERNAME - volumes: - - name: awsconfig - path: /root/.aws - - name: dockersock - path: /var/run - depends_on: - - Assume ECR - authenticated-pull AWS Role - - Find the latest available semver for v14 - - Wait for docker - - Wait for docker registry - - Check out code - - Build major, minor, and full semvers - - Assume ECR - staging AWS Role - - Assume ECR - authenticated-pull AWS Role - - Assume ECR - production AWS Role -- name: Build teleport-operator image "teleport-operator:v14-arm64" - image: docker - commands: - - docker run --privileged --rm tonistiigi/binfmt --install all - - mkdir -pv "/go/src/github.com/gravitational/teleport" && cd "/go/src/github.com/gravitational/teleport" - - mkdir -pv "/tmp/teleport-operator-v14-arm64-builder" - - echo '[registry."drone-docker-registry:5000"]' > "/tmp/teleport-operator-v14-arm64-builder/buildkitd.toml" - - echo ' http = true' >> "/tmp/teleport-operator-v14-arm64-builder/buildkitd.toml" - - docker buildx create --driver "docker-container" --driver-opt "network=host" --name - "teleport-operator-v14-arm64-builder" --config "/tmp/teleport-operator-v14-arm64-builder/buildkitd.toml" - - apk add --no-cache aws-cli - - aws ecr-public get-login-password --region=us-east-1 | docker login -u="AWS" --password-stdin - public.ecr.aws - - printenv DOCKERHUB_PASSWORD | docker login -u="$DOCKERHUB_USERNAME" --password-stdin - - docker buildx build --push --builder "teleport-operator-v14-arm64-builder" --platform - "linux/arm64" --tag drone-docker-registry:5000/teleport-operator:$(cat "/go/var/full-version")-arm64 - --file "/go/src/github.com/gravitational/teleport/integrations/operator/Dockerfile" - --build-arg BUILDBOX=public.ecr.aws/gravitational/teleport-buildbox-arm:teleport15 - --build-arg COMPILER_NAME=aarch64-linux-gnu-gcc --build-arg GOLANG_VERSION=go1.21.6 - --build-arg PROTOC_VERSION=3.20.3 --build-arg TARGETARCH=arm64 --build-arg BUILD_ARCH=amd64 - /go/src/github.com/gravitational/teleport - - docker logout "public.ecr.aws" - - docker buildx rm "teleport-operator-v14-arm64-builder" - - rm -rf "/tmp/teleport-operator-v14-arm64-builder" - environment: - AWS_PROFILE: ecr-authenticated-pull - DOCKER_BUILDKIT: "1" - DOCKERHUB_PASSWORD: - from_secret: DOCKERHUB_READONLY_TOKEN - DOCKERHUB_USERNAME: - from_secret: DOCKERHUB_USERNAME - volumes: - - name: awsconfig - path: /root/.aws - - name: dockersock - path: /var/run - depends_on: - - Assume ECR - authenticated-pull AWS Role - - Find the latest available semver for v14 - - Wait for docker - - Wait for docker registry - - Check out code - - Build major, minor, and full semvers - - Assume ECR - staging AWS Role - - Assume ECR - authenticated-pull AWS Role - - Assume ECR - production AWS Role -- name: Tag and push image "teleport-operator:v14-amd64" to ECR - staging - image: docker - commands: - - docker pull --platform "linux/amd64" drone-docker-registry:5000/teleport-operator:$(cat - "/go/var/full-version")-amd64 - - apk add --no-cache aws-cli - - aws ecr get-login-password --region=us-west-2 | docker login -u="AWS" --password-stdin - 146628656107.dkr.ecr.us-west-2.amazonaws.com - - printenv DOCKERHUB_PASSWORD | docker login -u="$DOCKERHUB_USERNAME" --password-stdin - - TIMESTAMP=$(date -d @"$DRONE_BUILD_CREATED" '+%Y%m%d%H%M') - - docker manifest inspect 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/full-version")-$TIMESTAMP-amd64 > /dev/null 2>&1 && echo 'Found existing - image, skipping' || (docker tag drone-docker-registry:5000/teleport-operator:$(cat - "/go/var/full-version")-amd64 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/full-version")-$TIMESTAMP-amd64 && docker push 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/full-version")-$TIMESTAMP-amd64) - - docker manifest inspect 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/major-version")-$TIMESTAMP-amd64 > /dev/null 2>&1 && echo 'Found existing - image, skipping' || (docker tag drone-docker-registry:5000/teleport-operator:$(cat - "/go/var/full-version")-amd64 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/major-version")-$TIMESTAMP-amd64 && docker push 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/major-version")-$TIMESTAMP-amd64) - - docker manifest inspect 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/minor-version")-$TIMESTAMP-amd64 > /dev/null 2>&1 && echo 'Found existing - image, skipping' || (docker tag drone-docker-registry:5000/teleport-operator:$(cat - "/go/var/full-version")-amd64 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/minor-version")-$TIMESTAMP-amd64 && docker push 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/minor-version")-$TIMESTAMP-amd64) - - docker logout "146628656107.dkr.ecr.us-west-2.amazonaws.com" - environment: - AWS_PROFILE: ecr-staging - DOCKERHUB_PASSWORD: - from_secret: DOCKERHUB_READONLY_TOKEN - DOCKERHUB_USERNAME: - from_secret: DOCKERHUB_USERNAME - volumes: - - name: awsconfig - path: /root/.aws - - name: dockersock - path: /var/run - depends_on: - - Build teleport-operator image "teleport-operator:v14-amd64" -- name: Tag and push image "teleport-operator:v14-arm" to ECR - staging - image: docker - commands: - - docker pull --platform "linux/arm" drone-docker-registry:5000/teleport-operator:$(cat - "/go/var/full-version")-arm - - apk add --no-cache aws-cli - - aws ecr get-login-password --region=us-west-2 | docker login -u="AWS" --password-stdin - 146628656107.dkr.ecr.us-west-2.amazonaws.com - - printenv DOCKERHUB_PASSWORD | docker login -u="$DOCKERHUB_USERNAME" --password-stdin - - TIMESTAMP=$(date -d @"$DRONE_BUILD_CREATED" '+%Y%m%d%H%M') - - docker manifest inspect 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/full-version")-$TIMESTAMP-arm > /dev/null 2>&1 && echo 'Found existing - image, skipping' || (docker tag drone-docker-registry:5000/teleport-operator:$(cat - "/go/var/full-version")-arm 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/full-version")-$TIMESTAMP-arm && docker push 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/full-version")-$TIMESTAMP-arm) - - docker manifest inspect 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/major-version")-$TIMESTAMP-arm > /dev/null 2>&1 && echo 'Found existing - image, skipping' || (docker tag drone-docker-registry:5000/teleport-operator:$(cat - "/go/var/full-version")-arm 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/major-version")-$TIMESTAMP-arm && docker push 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/major-version")-$TIMESTAMP-arm) - - docker manifest inspect 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/minor-version")-$TIMESTAMP-arm > /dev/null 2>&1 && echo 'Found existing - image, skipping' || (docker tag drone-docker-registry:5000/teleport-operator:$(cat - "/go/var/full-version")-arm 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/minor-version")-$TIMESTAMP-arm && docker push 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/minor-version")-$TIMESTAMP-arm) - - docker logout "146628656107.dkr.ecr.us-west-2.amazonaws.com" - environment: - AWS_PROFILE: ecr-staging - DOCKERHUB_PASSWORD: - from_secret: DOCKERHUB_READONLY_TOKEN - DOCKERHUB_USERNAME: - from_secret: DOCKERHUB_USERNAME - volumes: - - name: awsconfig - path: /root/.aws - - name: dockersock - path: /var/run - depends_on: - - Build teleport-operator image "teleport-operator:v14-arm" -- name: Tag and push image "teleport-operator:v14-arm64" to ECR - staging - image: docker - commands: - - docker pull --platform "linux/arm64" drone-docker-registry:5000/teleport-operator:$(cat - "/go/var/full-version")-arm64 - - apk add --no-cache aws-cli - - aws ecr get-login-password --region=us-west-2 | docker login -u="AWS" --password-stdin - 146628656107.dkr.ecr.us-west-2.amazonaws.com - - printenv DOCKERHUB_PASSWORD | docker login -u="$DOCKERHUB_USERNAME" --password-stdin - - TIMESTAMP=$(date -d @"$DRONE_BUILD_CREATED" '+%Y%m%d%H%M') - - docker manifest inspect 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/full-version")-$TIMESTAMP-arm64 > /dev/null 2>&1 && echo 'Found existing - image, skipping' || (docker tag drone-docker-registry:5000/teleport-operator:$(cat - "/go/var/full-version")-arm64 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/full-version")-$TIMESTAMP-arm64 && docker push 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/full-version")-$TIMESTAMP-arm64) - - docker manifest inspect 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/major-version")-$TIMESTAMP-arm64 > /dev/null 2>&1 && echo 'Found existing - image, skipping' || (docker tag drone-docker-registry:5000/teleport-operator:$(cat - "/go/var/full-version")-arm64 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/major-version")-$TIMESTAMP-arm64 && docker push 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/major-version")-$TIMESTAMP-arm64) - - docker manifest inspect 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/minor-version")-$TIMESTAMP-arm64 > /dev/null 2>&1 && echo 'Found existing - image, skipping' || (docker tag drone-docker-registry:5000/teleport-operator:$(cat - "/go/var/full-version")-arm64 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/minor-version")-$TIMESTAMP-arm64 && docker push 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/minor-version")-$TIMESTAMP-arm64) - - docker logout "146628656107.dkr.ecr.us-west-2.amazonaws.com" - environment: - AWS_PROFILE: ecr-staging - DOCKERHUB_PASSWORD: - from_secret: DOCKERHUB_READONLY_TOKEN - DOCKERHUB_USERNAME: - from_secret: DOCKERHUB_USERNAME - volumes: - - name: awsconfig - path: /root/.aws - - name: dockersock - path: /var/run - depends_on: - - Build teleport-operator image "teleport-operator:v14-arm64" -- name: Create manifest and push "teleport-operator:major-$TIMESTAMP" to ECR - staging - image: docker - commands: - - apk add --no-cache aws-cli - - aws ecr get-login-password --region=us-west-2 | docker login -u="AWS" --password-stdin - 146628656107.dkr.ecr.us-west-2.amazonaws.com - - printenv DOCKERHUB_PASSWORD | docker login -u="$DOCKERHUB_USERNAME" --password-stdin - - TIMESTAMP=$(date -d @"$DRONE_BUILD_CREATED" '+%Y%m%d%H%M') - - docker manifest inspect 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/major-version")-$TIMESTAMP > /dev/null 2>&1 && echo 'Found existing image, - skipping' || (docker manifest create 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/major-version")-$TIMESTAMP --amend 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/major-version")-$TIMESTAMP-amd64 --amend 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/major-version")-$TIMESTAMP-arm --amend 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/major-version")-$TIMESTAMP-arm64 && docker manifest push 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/major-version")-$TIMESTAMP) - - docker logout "146628656107.dkr.ecr.us-west-2.amazonaws.com" - environment: - AWS_PROFILE: ecr-staging - DOCKERHUB_PASSWORD: - from_secret: DOCKERHUB_READONLY_TOKEN - DOCKERHUB_USERNAME: - from_secret: DOCKERHUB_USERNAME - volumes: - - name: awsconfig - path: /root/.aws - - name: dockersock - path: /var/run - depends_on: - - Tag and push image "teleport-operator:v14-amd64" to ECR - staging - - Tag and push image "teleport-operator:v14-arm" to ECR - staging - - Tag and push image "teleport-operator:v14-arm64" to ECR - staging -- name: Create manifest and push "teleport-operator:minor-$TIMESTAMP" to ECR - staging - image: docker - commands: - - apk add --no-cache aws-cli - - aws ecr get-login-password --region=us-west-2 | docker login -u="AWS" --password-stdin - 146628656107.dkr.ecr.us-west-2.amazonaws.com - - printenv DOCKERHUB_PASSWORD | docker login -u="$DOCKERHUB_USERNAME" --password-stdin - - TIMESTAMP=$(date -d @"$DRONE_BUILD_CREATED" '+%Y%m%d%H%M') - - docker manifest inspect 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/minor-version")-$TIMESTAMP > /dev/null 2>&1 && echo 'Found existing image, - skipping' || (docker manifest create 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/minor-version")-$TIMESTAMP --amend 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/minor-version")-$TIMESTAMP-amd64 --amend 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/minor-version")-$TIMESTAMP-arm --amend 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/minor-version")-$TIMESTAMP-arm64 && docker manifest push 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/minor-version")-$TIMESTAMP) - - docker logout "146628656107.dkr.ecr.us-west-2.amazonaws.com" - environment: - AWS_PROFILE: ecr-staging - DOCKERHUB_PASSWORD: - from_secret: DOCKERHUB_READONLY_TOKEN - DOCKERHUB_USERNAME: - from_secret: DOCKERHUB_USERNAME - volumes: - - name: awsconfig - path: /root/.aws - - name: dockersock - path: /var/run - depends_on: - - Tag and push image "teleport-operator:v14-amd64" to ECR - staging - - Tag and push image "teleport-operator:v14-arm" to ECR - staging - - Tag and push image "teleport-operator:v14-arm64" to ECR - staging -- name: Create manifest and push "teleport-operator:full-$TIMESTAMP" to ECR - staging - image: docker - commands: - - apk add --no-cache aws-cli - - aws ecr get-login-password --region=us-west-2 | docker login -u="AWS" --password-stdin - 146628656107.dkr.ecr.us-west-2.amazonaws.com - - printenv DOCKERHUB_PASSWORD | docker login -u="$DOCKERHUB_USERNAME" --password-stdin - - TIMESTAMP=$(date -d @"$DRONE_BUILD_CREATED" '+%Y%m%d%H%M') - - docker manifest inspect 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/full-version")-$TIMESTAMP > /dev/null 2>&1 && echo 'Found existing image, - skipping' || (docker manifest create 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/full-version")-$TIMESTAMP --amend 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/full-version")-$TIMESTAMP-amd64 --amend 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/full-version")-$TIMESTAMP-arm --amend 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/full-version")-$TIMESTAMP-arm64 && docker manifest push 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/full-version")-$TIMESTAMP) - - docker logout "146628656107.dkr.ecr.us-west-2.amazonaws.com" - environment: - AWS_PROFILE: ecr-staging - DOCKERHUB_PASSWORD: - from_secret: DOCKERHUB_READONLY_TOKEN - DOCKERHUB_USERNAME: - from_secret: DOCKERHUB_USERNAME - volumes: - - name: awsconfig - path: /root/.aws - - name: dockersock - path: /var/run - depends_on: - - Tag and push image "teleport-operator:v14-amd64" to ECR - staging - - Tag and push image "teleport-operator:v14-arm" to ECR - staging - - Tag and push image "teleport-operator:v14-arm64" to ECR - staging -- name: Tag and push image "teleport-operator:v14-amd64" to ECR - production - image: docker - commands: - - docker pull --platform "linux/amd64" drone-docker-registry:5000/teleport-operator:$(cat - "/go/var/full-version")-amd64 - - apk add --no-cache aws-cli - - aws ecr-public get-login-password --region=us-east-1 | docker login -u="AWS" --password-stdin - public.ecr.aws - - printenv DOCKERHUB_PASSWORD | docker login -u="$DOCKERHUB_USERNAME" --password-stdin - - docker manifest inspect public.ecr.aws/gravitational/teleport-operator:$(cat "/go/var/full-version")-amd64 - > /dev/null 2>&1 && echo 'Found existing image, skipping' || (docker tag drone-docker-registry:5000/teleport-operator:$(cat - "/go/var/full-version")-amd64 public.ecr.aws/gravitational/teleport-operator:$(cat - "/go/var/full-version")-amd64 && docker push public.ecr.aws/gravitational/teleport-operator:$(cat - "/go/var/full-version")-amd64) - - docker tag drone-docker-registry:5000/teleport-operator:$(cat "/go/var/full-version")-amd64 - public.ecr.aws/gravitational/teleport-operator:$(cat "/go/var/major-version")-amd64 - - docker push public.ecr.aws/gravitational/teleport-operator:$(cat "/go/var/major-version")-amd64 - - docker tag drone-docker-registry:5000/teleport-operator:$(cat "/go/var/full-version")-amd64 - public.ecr.aws/gravitational/teleport-operator:$(cat "/go/var/minor-version")-amd64 - - docker push public.ecr.aws/gravitational/teleport-operator:$(cat "/go/var/minor-version")-amd64 - - docker logout "public.ecr.aws" - environment: - AWS_PROFILE: ecr-production - DOCKERHUB_PASSWORD: - from_secret: DOCKERHUB_READONLY_TOKEN - DOCKERHUB_USERNAME: - from_secret: DOCKERHUB_USERNAME - volumes: - - name: awsconfig - path: /root/.aws - - name: dockersock - path: /var/run - depends_on: - - Build teleport-operator image "teleport-operator:v14-amd64" -- name: Tag and push image "teleport-operator:v14-arm" to ECR - production - image: docker - commands: - - docker pull --platform "linux/arm" drone-docker-registry:5000/teleport-operator:$(cat - "/go/var/full-version")-arm - - apk add --no-cache aws-cli - - aws ecr-public get-login-password --region=us-east-1 | docker login -u="AWS" --password-stdin - public.ecr.aws - - printenv DOCKERHUB_PASSWORD | docker login -u="$DOCKERHUB_USERNAME" --password-stdin - - docker manifest inspect public.ecr.aws/gravitational/teleport-operator:$(cat "/go/var/full-version")-arm - > /dev/null 2>&1 && echo 'Found existing image, skipping' || (docker tag drone-docker-registry:5000/teleport-operator:$(cat - "/go/var/full-version")-arm public.ecr.aws/gravitational/teleport-operator:$(cat - "/go/var/full-version")-arm && docker push public.ecr.aws/gravitational/teleport-operator:$(cat - "/go/var/full-version")-arm) - - docker tag drone-docker-registry:5000/teleport-operator:$(cat "/go/var/full-version")-arm - public.ecr.aws/gravitational/teleport-operator:$(cat "/go/var/major-version")-arm - - docker push public.ecr.aws/gravitational/teleport-operator:$(cat "/go/var/major-version")-arm - - docker tag drone-docker-registry:5000/teleport-operator:$(cat "/go/var/full-version")-arm - public.ecr.aws/gravitational/teleport-operator:$(cat "/go/var/minor-version")-arm - - docker push public.ecr.aws/gravitational/teleport-operator:$(cat "/go/var/minor-version")-arm - - docker logout "public.ecr.aws" - environment: - AWS_PROFILE: ecr-production - DOCKERHUB_PASSWORD: - from_secret: DOCKERHUB_READONLY_TOKEN - DOCKERHUB_USERNAME: - from_secret: DOCKERHUB_USERNAME - volumes: - - name: awsconfig - path: /root/.aws - - name: dockersock - path: /var/run - depends_on: - - Build teleport-operator image "teleport-operator:v14-arm" -- name: Tag and push image "teleport-operator:v14-arm64" to ECR - production - image: docker - commands: - - docker pull --platform "linux/arm64" drone-docker-registry:5000/teleport-operator:$(cat - "/go/var/full-version")-arm64 - - apk add --no-cache aws-cli - - aws ecr-public get-login-password --region=us-east-1 | docker login -u="AWS" --password-stdin - public.ecr.aws - - printenv DOCKERHUB_PASSWORD | docker login -u="$DOCKERHUB_USERNAME" --password-stdin - - docker manifest inspect public.ecr.aws/gravitational/teleport-operator:$(cat "/go/var/full-version")-arm64 - > /dev/null 2>&1 && echo 'Found existing image, skipping' || (docker tag drone-docker-registry:5000/teleport-operator:$(cat - "/go/var/full-version")-arm64 public.ecr.aws/gravitational/teleport-operator:$(cat - "/go/var/full-version")-arm64 && docker push public.ecr.aws/gravitational/teleport-operator:$(cat - "/go/var/full-version")-arm64) - - docker tag drone-docker-registry:5000/teleport-operator:$(cat "/go/var/full-version")-arm64 - public.ecr.aws/gravitational/teleport-operator:$(cat "/go/var/major-version")-arm64 - - docker push public.ecr.aws/gravitational/teleport-operator:$(cat "/go/var/major-version")-arm64 - - docker tag drone-docker-registry:5000/teleport-operator:$(cat "/go/var/full-version")-arm64 - public.ecr.aws/gravitational/teleport-operator:$(cat "/go/var/minor-version")-arm64 - - docker push public.ecr.aws/gravitational/teleport-operator:$(cat "/go/var/minor-version")-arm64 - - docker logout "public.ecr.aws" - environment: - AWS_PROFILE: ecr-production - DOCKERHUB_PASSWORD: - from_secret: DOCKERHUB_READONLY_TOKEN - DOCKERHUB_USERNAME: - from_secret: DOCKERHUB_USERNAME - volumes: - - name: awsconfig - path: /root/.aws - - name: dockersock - path: /var/run - depends_on: - - Build teleport-operator image "teleport-operator:v14-arm64" -- name: Create manifest and push "teleport-operator:major" to ECR - production - image: docker - commands: - - apk add --no-cache aws-cli - - aws ecr-public get-login-password --region=us-east-1 | docker login -u="AWS" --password-stdin - public.ecr.aws - - printenv DOCKERHUB_PASSWORD | docker login -u="$DOCKERHUB_USERNAME" --password-stdin - - docker manifest create public.ecr.aws/gravitational/teleport-operator:$(cat "/go/var/major-version") - --amend public.ecr.aws/gravitational/teleport-operator:$(cat "/go/var/major-version")-amd64 - --amend public.ecr.aws/gravitational/teleport-operator:$(cat "/go/var/major-version")-arm - --amend public.ecr.aws/gravitational/teleport-operator:$(cat "/go/var/major-version")-arm64 - - docker manifest push public.ecr.aws/gravitational/teleport-operator:$(cat "/go/var/major-version") - - docker logout "public.ecr.aws" - environment: - AWS_PROFILE: ecr-production - DOCKERHUB_PASSWORD: - from_secret: DOCKERHUB_READONLY_TOKEN - DOCKERHUB_USERNAME: - from_secret: DOCKERHUB_USERNAME - volumes: - - name: awsconfig - path: /root/.aws - - name: dockersock - path: /var/run - depends_on: - - Tag and push image "teleport-operator:v14-amd64" to ECR - production - - Tag and push image "teleport-operator:v14-arm" to ECR - production - - Tag and push image "teleport-operator:v14-arm64" to ECR - production -- name: Create manifest and push "teleport-operator:minor" to ECR - production - image: docker - commands: - - apk add --no-cache aws-cli - - aws ecr-public get-login-password --region=us-east-1 | docker login -u="AWS" --password-stdin - public.ecr.aws - - printenv DOCKERHUB_PASSWORD | docker login -u="$DOCKERHUB_USERNAME" --password-stdin - - docker manifest create public.ecr.aws/gravitational/teleport-operator:$(cat "/go/var/minor-version") - --amend public.ecr.aws/gravitational/teleport-operator:$(cat "/go/var/minor-version")-amd64 - --amend public.ecr.aws/gravitational/teleport-operator:$(cat "/go/var/minor-version")-arm - --amend public.ecr.aws/gravitational/teleport-operator:$(cat "/go/var/minor-version")-arm64 - - docker manifest push public.ecr.aws/gravitational/teleport-operator:$(cat "/go/var/minor-version") - - docker logout "public.ecr.aws" - environment: - AWS_PROFILE: ecr-production - DOCKERHUB_PASSWORD: - from_secret: DOCKERHUB_READONLY_TOKEN - DOCKERHUB_USERNAME: - from_secret: DOCKERHUB_USERNAME - volumes: - - name: awsconfig - path: /root/.aws - - name: dockersock - path: /var/run - depends_on: - - Tag and push image "teleport-operator:v14-amd64" to ECR - production - - Tag and push image "teleport-operator:v14-arm" to ECR - production - - Tag and push image "teleport-operator:v14-arm64" to ECR - production -- name: Create manifest and push "teleport-operator:full" to ECR - production - image: docker - commands: - - apk add --no-cache aws-cli - - aws ecr-public get-login-password --region=us-east-1 | docker login -u="AWS" --password-stdin - public.ecr.aws - - printenv DOCKERHUB_PASSWORD | docker login -u="$DOCKERHUB_USERNAME" --password-stdin - - docker manifest inspect public.ecr.aws/gravitational/teleport-operator:$(cat "/go/var/full-version") - > /dev/null 2>&1 && echo 'Found existing image, skipping' || (docker manifest - create public.ecr.aws/gravitational/teleport-operator:$(cat "/go/var/full-version") - --amend public.ecr.aws/gravitational/teleport-operator:$(cat "/go/var/full-version")-amd64 - --amend public.ecr.aws/gravitational/teleport-operator:$(cat "/go/var/full-version")-arm - --amend public.ecr.aws/gravitational/teleport-operator:$(cat "/go/var/full-version")-arm64 - && docker manifest push public.ecr.aws/gravitational/teleport-operator:$(cat "/go/var/full-version")) - - docker logout "public.ecr.aws" - environment: - AWS_PROFILE: ecr-production - DOCKERHUB_PASSWORD: - from_secret: DOCKERHUB_READONLY_TOKEN - DOCKERHUB_USERNAME: - from_secret: DOCKERHUB_USERNAME - volumes: - - name: awsconfig - path: /root/.aws - - name: dockersock - path: /var/run - depends_on: - - Tag and push image "teleport-operator:v14-amd64" to ECR - production - - Tag and push image "teleport-operator:v14-arm" to ECR - production - - Tag and push image "teleport-operator:v14-arm64" to ECR - production -services: -- name: Start Docker - image: docker:dind - privileged: true - volumes: - - name: dockersock - path: /var/run -- name: drone-docker-registry - image: registry:2 - privileged: false - volumes: [] -volumes: -- name: awsconfig - temp: {} -- name: dockersock - temp: {} -- name: dockerconfig - temp: {} -image_pull_secrets: -- DOCKERHUB_CREDENTIALS - ---- -################################################ -# Generated using dronegen, do not edit by hand! -# Use 'make dronegen' to update. -# Generated at dronegen/container_images_release_version.go (main.(*ReleaseVersion).buildVersionPipeline) -################################################ - -kind: pipeline -type: kubernetes -name: teleport-container-images-previous-version-1-cron -environment: - DEBIAN_FRONTEND: noninteractive -trigger: - cron: - include: - - teleport-container-images-cron - repo: - include: - - gravitational/teleport -workspace: - path: /go -clone: - disable: true -steps: -- name: Find the latest available semver for v13 - image: golang:1.18 - commands: - - mkdir -pv "/tmp/teleport" - - cd "/tmp/teleport" - - git init - - git remote add origin ${DRONE_REMOTE_URL} - - git fetch origin --tags - - git checkout -qf "branch/v13" - - mkdir -pv $(dirname "/go/vars/full-version-v13") - - cd "/tmp/teleport/build.assets/tooling/cmd/query-latest" - - go run . "v13" | sed 's/v//' > "/go/vars/full-version-v13" - - echo Found full semver "$(cat "/go/vars/full-version-v13")" for major version - "v13" -- name: Wait for docker - image: docker - pull: if-not-exists - commands: - - timeout 30s /bin/sh -c 'while [ ! -S /var/run/docker.sock ]; do sleep 1; done' - - printenv DOCKERHUB_PASSWORD | docker login -u="$DOCKERHUB_USERNAME" --password-stdin - environment: - DOCKERHUB_PASSWORD: - from_secret: DOCKERHUB_READONLY_TOKEN - DOCKERHUB_USERNAME: - from_secret: DOCKERHUB_USERNAME - volumes: - - name: dockersock - path: /var/run - - name: dockerconfig - path: /root/.docker - depends_on: - - Find the latest available semver for v13 -- name: Wait for docker registry - image: alpine - pull: if-not-exists - commands: - - apk add curl - - timeout 30s /bin/sh -c 'while [ "$(curl -s -o /dev/null -w %{http_code} http://drone-docker-registry:5000/)" - != "200" ]; do sleep 1; done' - depends_on: - - Find the latest available semver for v13 -- name: Check out code - image: alpine/git:latest - pull: if-not-exists - commands: - - mkdir -pv "/go/src/github.com/gravitational/teleport" - - cd "/go/src/github.com/gravitational/teleport" - - git init - - git remote add origin ${DRONE_REMOTE_URL} - - git fetch origin --tags - - git checkout -qf "v$(cat '/go/vars/full-version-v13')" - depends_on: - - Find the latest available semver for v13 -- name: Build major, minor, and full semvers - image: alpine - commands: - - mkdir -pv $(dirname "/go/var/major-version") - - echo v$(cat '/go/vars/full-version-v13') | sed 's/v//' | cut -d'.' -f "1" > "/go/var/major-version" - - echo $(cat "/go/var/major-version") - - mkdir -pv $(dirname "/go/var/minor-version") - - echo v$(cat '/go/vars/full-version-v13') | sed 's/v//' | cut -d'.' -f "1,2" > - "/go/var/minor-version" - - echo $(cat "/go/var/minor-version") - - mkdir -pv $(dirname "/go/var/full-version") - - echo v$(cat '/go/vars/full-version-v13') | sed 's/v//' > "/go/var/full-version" - - echo $(cat "/go/var/full-version") - depends_on: - - Find the latest available semver for v13 -- name: Assume ECR - staging AWS Role - image: amazon/aws-cli - pull: if-not-exists - commands: - - aws sts get-caller-identity - - |- - printf "[ecr-staging]\naws_access_key_id = %s\naws_secret_access_key = %s\naws_session_token = %s\n" \ - $(aws sts assume-role \ - --role-arn "$AWS_ROLE" \ - --role-session-name $(echo "drone-${DRONE_REPO}-${DRONE_BUILD_NUMBER}" | sed "s|/|-|g") \ - --query "Credentials.[AccessKeyId,SecretAccessKey,SessionToken]" \ - --output text) \ - >> /root/.aws/credentials - - unset AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY - - aws sts get-caller-identity --profile ecr-staging - environment: - AWS_ACCESS_KEY_ID: - from_secret: STAGING_TELEPORT_DRONE_USER_ECR_KEY - AWS_ROLE: - from_secret: STAGING_TELEPORT_DRONE_ECR_AWS_ROLE - AWS_SECRET_ACCESS_KEY: - from_secret: STAGING_TELEPORT_DRONE_USER_ECR_SECRET - volumes: - - name: awsconfig - path: /root/.aws - depends_on: - - Find the latest available semver for v13 -- name: Assume ECR - authenticated-pull AWS Role - image: amazon/aws-cli - pull: if-not-exists - commands: - - aws sts get-caller-identity - - |- - printf "[ecr-authenticated-pull]\naws_access_key_id = %s\naws_secret_access_key = %s\naws_session_token = %s\n" \ - $(aws sts assume-role \ - --role-arn "$AWS_ROLE" \ - --role-session-name $(echo "drone-${DRONE_REPO}-${DRONE_BUILD_NUMBER}" | sed "s|/|-|g") \ - --query "Credentials.[AccessKeyId,SecretAccessKey,SessionToken]" \ - --output text) \ - >> /root/.aws/credentials - - unset AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY - - aws sts get-caller-identity --profile ecr-authenticated-pull - environment: - AWS_ACCESS_KEY_ID: - from_secret: PRODUCTION_TELEPORT_DRONE_USER_ECR_KEY - AWS_ROLE: - from_secret: PRODUCTION_TELEPORT_DRONE_ECR_AWS_ROLE - AWS_SECRET_ACCESS_KEY: - from_secret: PRODUCTION_TELEPORT_DRONE_USER_ECR_SECRET - volumes: - - name: awsconfig - path: /root/.aws - depends_on: - - Assume ECR - staging AWS Role - - Find the latest available semver for v13 -- name: Assume ECR - production AWS Role - image: amazon/aws-cli - pull: if-not-exists - commands: - - aws sts get-caller-identity - - |- - printf "[ecr-production]\naws_access_key_id = %s\naws_secret_access_key = %s\naws_session_token = %s\n" \ - $(aws sts assume-role \ - --role-arn "$AWS_ROLE" \ - --role-session-name $(echo "drone-${DRONE_REPO}-${DRONE_BUILD_NUMBER}" | sed "s|/|-|g") \ - --query "Credentials.[AccessKeyId,SecretAccessKey,SessionToken]" \ - --output text) \ - >> /root/.aws/credentials - - unset AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY - - aws sts get-caller-identity --profile ecr-production - environment: - AWS_ACCESS_KEY_ID: - from_secret: PRODUCTION_TELEPORT_DRONE_USER_ECR_KEY - AWS_ROLE: - from_secret: PRODUCTION_TELEPORT_DRONE_ECR_AWS_ROLE - AWS_SECRET_ACCESS_KEY: - from_secret: PRODUCTION_TELEPORT_DRONE_USER_ECR_SECRET - volumes: - - name: awsconfig - path: /root/.aws - depends_on: - - Assume ECR - authenticated-pull AWS Role - - Find the latest available semver for v13 -- name: Build teleport-operator image "teleport-operator:v13-amd64" - image: docker - commands: - - docker run --privileged --rm tonistiigi/binfmt --install all - - mkdir -pv "/go/src/github.com/gravitational/teleport" && cd "/go/src/github.com/gravitational/teleport" - - mkdir -pv "/tmp/teleport-operator-v13-amd64-builder" - - echo '[registry."drone-docker-registry:5000"]' > "/tmp/teleport-operator-v13-amd64-builder/buildkitd.toml" - - echo ' http = true' >> "/tmp/teleport-operator-v13-amd64-builder/buildkitd.toml" - - docker buildx create --driver "docker-container" --driver-opt "network=host" --name - "teleport-operator-v13-amd64-builder" --config "/tmp/teleport-operator-v13-amd64-builder/buildkitd.toml" - - apk add --no-cache aws-cli - - aws ecr-public get-login-password --region=us-east-1 | docker login -u="AWS" --password-stdin - public.ecr.aws - - printenv DOCKERHUB_PASSWORD | docker login -u="$DOCKERHUB_USERNAME" --password-stdin - - docker buildx build --push --builder "teleport-operator-v13-amd64-builder" --platform - "linux/amd64" --tag drone-docker-registry:5000/teleport-operator:$(cat "/go/var/full-version")-amd64 - --file "/go/src/github.com/gravitational/teleport/integrations/operator/Dockerfile" - --build-arg BUILDBOX=public.ecr.aws/gravitational/teleport-buildbox:teleport15 - --build-arg COMPILER_NAME=x86_64-linux-gnu-gcc --build-arg GOLANG_VERSION=go1.21.6 - --build-arg PROTOC_VERSION=3.20.3 --build-arg TARGETARCH=amd64 --build-arg BUILD_ARCH=amd64 - /go/src/github.com/gravitational/teleport - - docker logout "public.ecr.aws" - - docker buildx rm "teleport-operator-v13-amd64-builder" - - rm -rf "/tmp/teleport-operator-v13-amd64-builder" - environment: - AWS_PROFILE: ecr-authenticated-pull - DOCKER_BUILDKIT: "1" - DOCKERHUB_PASSWORD: - from_secret: DOCKERHUB_READONLY_TOKEN - DOCKERHUB_USERNAME: - from_secret: DOCKERHUB_USERNAME - volumes: - - name: awsconfig - path: /root/.aws - - name: dockersock - path: /var/run - depends_on: - - Assume ECR - authenticated-pull AWS Role - - Find the latest available semver for v13 - - Wait for docker - - Wait for docker registry - - Check out code - - Build major, minor, and full semvers - - Assume ECR - staging AWS Role - - Assume ECR - authenticated-pull AWS Role - - Assume ECR - production AWS Role -- name: Build teleport-operator image "teleport-operator:v13-arm" - image: docker - commands: - - docker run --privileged --rm tonistiigi/binfmt --install all - - mkdir -pv "/go/src/github.com/gravitational/teleport" && cd "/go/src/github.com/gravitational/teleport" - - mkdir -pv "/tmp/teleport-operator-v13-arm-builder" - - echo '[registry."drone-docker-registry:5000"]' > "/tmp/teleport-operator-v13-arm-builder/buildkitd.toml" - - echo ' http = true' >> "/tmp/teleport-operator-v13-arm-builder/buildkitd.toml" - - docker buildx create --driver "docker-container" --driver-opt "network=host" --name - "teleport-operator-v13-arm-builder" --config "/tmp/teleport-operator-v13-arm-builder/buildkitd.toml" - - apk add --no-cache aws-cli - - aws ecr-public get-login-password --region=us-east-1 | docker login -u="AWS" --password-stdin - public.ecr.aws - - printenv DOCKERHUB_PASSWORD | docker login -u="$DOCKERHUB_USERNAME" --password-stdin - - docker buildx build --push --builder "teleport-operator-v13-arm-builder" --platform - "linux/arm" --tag drone-docker-registry:5000/teleport-operator:$(cat "/go/var/full-version")-arm - --file "/go/src/github.com/gravitational/teleport/integrations/operator/Dockerfile" - --build-arg BUILDBOX=public.ecr.aws/gravitational/teleport-buildbox-arm:teleport15 - --build-arg COMPILER_NAME=arm-linux-gnueabihf-gcc --build-arg GOLANG_VERSION=go1.21.6 - --build-arg PROTOC_VERSION=3.20.3 --build-arg TARGETARCH=arm --build-arg BUILD_ARCH=amd64 - /go/src/github.com/gravitational/teleport - - docker logout "public.ecr.aws" - - docker buildx rm "teleport-operator-v13-arm-builder" - - rm -rf "/tmp/teleport-operator-v13-arm-builder" - environment: - AWS_PROFILE: ecr-authenticated-pull - DOCKER_BUILDKIT: "1" - DOCKERHUB_PASSWORD: - from_secret: DOCKERHUB_READONLY_TOKEN - DOCKERHUB_USERNAME: - from_secret: DOCKERHUB_USERNAME - volumes: - - name: awsconfig - path: /root/.aws - - name: dockersock - path: /var/run - depends_on: - - Assume ECR - authenticated-pull AWS Role - - Find the latest available semver for v13 - - Wait for docker - - Wait for docker registry - - Check out code - - Build major, minor, and full semvers - - Assume ECR - staging AWS Role - - Assume ECR - authenticated-pull AWS Role - - Assume ECR - production AWS Role -- name: Build teleport-operator image "teleport-operator:v13-arm64" - image: docker - commands: - - docker run --privileged --rm tonistiigi/binfmt --install all - - mkdir -pv "/go/src/github.com/gravitational/teleport" && cd "/go/src/github.com/gravitational/teleport" - - mkdir -pv "/tmp/teleport-operator-v13-arm64-builder" - - echo '[registry."drone-docker-registry:5000"]' > "/tmp/teleport-operator-v13-arm64-builder/buildkitd.toml" - - echo ' http = true' >> "/tmp/teleport-operator-v13-arm64-builder/buildkitd.toml" - - docker buildx create --driver "docker-container" --driver-opt "network=host" --name - "teleport-operator-v13-arm64-builder" --config "/tmp/teleport-operator-v13-arm64-builder/buildkitd.toml" - - apk add --no-cache aws-cli - - aws ecr-public get-login-password --region=us-east-1 | docker login -u="AWS" --password-stdin - public.ecr.aws - - printenv DOCKERHUB_PASSWORD | docker login -u="$DOCKERHUB_USERNAME" --password-stdin - - docker buildx build --push --builder "teleport-operator-v13-arm64-builder" --platform - "linux/arm64" --tag drone-docker-registry:5000/teleport-operator:$(cat "/go/var/full-version")-arm64 - --file "/go/src/github.com/gravitational/teleport/integrations/operator/Dockerfile" - --build-arg BUILDBOX=public.ecr.aws/gravitational/teleport-buildbox-arm:teleport15 - --build-arg COMPILER_NAME=aarch64-linux-gnu-gcc --build-arg GOLANG_VERSION=go1.21.6 - --build-arg PROTOC_VERSION=3.20.3 --build-arg TARGETARCH=arm64 --build-arg BUILD_ARCH=amd64 - /go/src/github.com/gravitational/teleport - - docker logout "public.ecr.aws" - - docker buildx rm "teleport-operator-v13-arm64-builder" - - rm -rf "/tmp/teleport-operator-v13-arm64-builder" - environment: - AWS_PROFILE: ecr-authenticated-pull - DOCKER_BUILDKIT: "1" - DOCKERHUB_PASSWORD: - from_secret: DOCKERHUB_READONLY_TOKEN - DOCKERHUB_USERNAME: - from_secret: DOCKERHUB_USERNAME - volumes: - - name: awsconfig - path: /root/.aws - - name: dockersock - path: /var/run - depends_on: - - Assume ECR - authenticated-pull AWS Role - - Find the latest available semver for v13 - - Wait for docker - - Wait for docker registry - - Check out code - - Build major, minor, and full semvers - - Assume ECR - staging AWS Role - - Assume ECR - authenticated-pull AWS Role - - Assume ECR - production AWS Role -- name: Tag and push image "teleport-operator:v13-amd64" to ECR - staging - image: docker - commands: - - docker pull --platform "linux/amd64" drone-docker-registry:5000/teleport-operator:$(cat - "/go/var/full-version")-amd64 - - apk add --no-cache aws-cli - - aws ecr get-login-password --region=us-west-2 | docker login -u="AWS" --password-stdin - 146628656107.dkr.ecr.us-west-2.amazonaws.com - - printenv DOCKERHUB_PASSWORD | docker login -u="$DOCKERHUB_USERNAME" --password-stdin - - TIMESTAMP=$(date -d @"$DRONE_BUILD_CREATED" '+%Y%m%d%H%M') - - docker manifest inspect 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/full-version")-$TIMESTAMP-amd64 > /dev/null 2>&1 && echo 'Found existing - image, skipping' || (docker tag drone-docker-registry:5000/teleport-operator:$(cat - "/go/var/full-version")-amd64 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/full-version")-$TIMESTAMP-amd64 && docker push 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/full-version")-$TIMESTAMP-amd64) - - docker manifest inspect 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/major-version")-$TIMESTAMP-amd64 > /dev/null 2>&1 && echo 'Found existing - image, skipping' || (docker tag drone-docker-registry:5000/teleport-operator:$(cat - "/go/var/full-version")-amd64 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/major-version")-$TIMESTAMP-amd64 && docker push 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/major-version")-$TIMESTAMP-amd64) - - docker manifest inspect 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/minor-version")-$TIMESTAMP-amd64 > /dev/null 2>&1 && echo 'Found existing - image, skipping' || (docker tag drone-docker-registry:5000/teleport-operator:$(cat - "/go/var/full-version")-amd64 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/minor-version")-$TIMESTAMP-amd64 && docker push 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/minor-version")-$TIMESTAMP-amd64) - - docker logout "146628656107.dkr.ecr.us-west-2.amazonaws.com" - environment: - AWS_PROFILE: ecr-staging - DOCKERHUB_PASSWORD: - from_secret: DOCKERHUB_READONLY_TOKEN - DOCKERHUB_USERNAME: - from_secret: DOCKERHUB_USERNAME - volumes: - - name: awsconfig - path: /root/.aws - - name: dockersock - path: /var/run - depends_on: - - Build teleport-operator image "teleport-operator:v13-amd64" -- name: Tag and push image "teleport-operator:v13-arm" to ECR - staging - image: docker - commands: - - docker pull --platform "linux/arm" drone-docker-registry:5000/teleport-operator:$(cat - "/go/var/full-version")-arm - - apk add --no-cache aws-cli - - aws ecr get-login-password --region=us-west-2 | docker login -u="AWS" --password-stdin - 146628656107.dkr.ecr.us-west-2.amazonaws.com - - printenv DOCKERHUB_PASSWORD | docker login -u="$DOCKERHUB_USERNAME" --password-stdin - - TIMESTAMP=$(date -d @"$DRONE_BUILD_CREATED" '+%Y%m%d%H%M') - - docker manifest inspect 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/full-version")-$TIMESTAMP-arm > /dev/null 2>&1 && echo 'Found existing - image, skipping' || (docker tag drone-docker-registry:5000/teleport-operator:$(cat - "/go/var/full-version")-arm 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/full-version")-$TIMESTAMP-arm && docker push 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/full-version")-$TIMESTAMP-arm) - - docker manifest inspect 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/major-version")-$TIMESTAMP-arm > /dev/null 2>&1 && echo 'Found existing - image, skipping' || (docker tag drone-docker-registry:5000/teleport-operator:$(cat - "/go/var/full-version")-arm 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/major-version")-$TIMESTAMP-arm && docker push 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/major-version")-$TIMESTAMP-arm) - - docker manifest inspect 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/minor-version")-$TIMESTAMP-arm > /dev/null 2>&1 && echo 'Found existing - image, skipping' || (docker tag drone-docker-registry:5000/teleport-operator:$(cat - "/go/var/full-version")-arm 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/minor-version")-$TIMESTAMP-arm && docker push 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/minor-version")-$TIMESTAMP-arm) - - docker logout "146628656107.dkr.ecr.us-west-2.amazonaws.com" - environment: - AWS_PROFILE: ecr-staging - DOCKERHUB_PASSWORD: - from_secret: DOCKERHUB_READONLY_TOKEN - DOCKERHUB_USERNAME: - from_secret: DOCKERHUB_USERNAME - volumes: - - name: awsconfig - path: /root/.aws - - name: dockersock - path: /var/run - depends_on: - - Build teleport-operator image "teleport-operator:v13-arm" -- name: Tag and push image "teleport-operator:v13-arm64" to ECR - staging - image: docker - commands: - - docker pull --platform "linux/arm64" drone-docker-registry:5000/teleport-operator:$(cat - "/go/var/full-version")-arm64 - - apk add --no-cache aws-cli - - aws ecr get-login-password --region=us-west-2 | docker login -u="AWS" --password-stdin - 146628656107.dkr.ecr.us-west-2.amazonaws.com - - printenv DOCKERHUB_PASSWORD | docker login -u="$DOCKERHUB_USERNAME" --password-stdin - - TIMESTAMP=$(date -d @"$DRONE_BUILD_CREATED" '+%Y%m%d%H%M') - - docker manifest inspect 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/full-version")-$TIMESTAMP-arm64 > /dev/null 2>&1 && echo 'Found existing - image, skipping' || (docker tag drone-docker-registry:5000/teleport-operator:$(cat - "/go/var/full-version")-arm64 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/full-version")-$TIMESTAMP-arm64 && docker push 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/full-version")-$TIMESTAMP-arm64) - - docker manifest inspect 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/major-version")-$TIMESTAMP-arm64 > /dev/null 2>&1 && echo 'Found existing - image, skipping' || (docker tag drone-docker-registry:5000/teleport-operator:$(cat - "/go/var/full-version")-arm64 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/major-version")-$TIMESTAMP-arm64 && docker push 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/major-version")-$TIMESTAMP-arm64) - - docker manifest inspect 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/minor-version")-$TIMESTAMP-arm64 > /dev/null 2>&1 && echo 'Found existing - image, skipping' || (docker tag drone-docker-registry:5000/teleport-operator:$(cat - "/go/var/full-version")-arm64 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/minor-version")-$TIMESTAMP-arm64 && docker push 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/minor-version")-$TIMESTAMP-arm64) - - docker logout "146628656107.dkr.ecr.us-west-2.amazonaws.com" - environment: - AWS_PROFILE: ecr-staging - DOCKERHUB_PASSWORD: - from_secret: DOCKERHUB_READONLY_TOKEN - DOCKERHUB_USERNAME: - from_secret: DOCKERHUB_USERNAME - volumes: - - name: awsconfig - path: /root/.aws - - name: dockersock - path: /var/run - depends_on: - - Build teleport-operator image "teleport-operator:v13-arm64" -- name: Create manifest and push "teleport-operator:major-$TIMESTAMP" to ECR - staging - image: docker - commands: - - apk add --no-cache aws-cli - - aws ecr get-login-password --region=us-west-2 | docker login -u="AWS" --password-stdin - 146628656107.dkr.ecr.us-west-2.amazonaws.com - - printenv DOCKERHUB_PASSWORD | docker login -u="$DOCKERHUB_USERNAME" --password-stdin - - TIMESTAMP=$(date -d @"$DRONE_BUILD_CREATED" '+%Y%m%d%H%M') - - docker manifest inspect 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/major-version")-$TIMESTAMP > /dev/null 2>&1 && echo 'Found existing image, - skipping' || (docker manifest create 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/major-version")-$TIMESTAMP --amend 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/major-version")-$TIMESTAMP-amd64 --amend 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/major-version")-$TIMESTAMP-arm --amend 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/major-version")-$TIMESTAMP-arm64 && docker manifest push 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/major-version")-$TIMESTAMP) - - docker logout "146628656107.dkr.ecr.us-west-2.amazonaws.com" - environment: - AWS_PROFILE: ecr-staging - DOCKERHUB_PASSWORD: - from_secret: DOCKERHUB_READONLY_TOKEN - DOCKERHUB_USERNAME: - from_secret: DOCKERHUB_USERNAME - volumes: - - name: awsconfig - path: /root/.aws - - name: dockersock - path: /var/run - depends_on: - - Tag and push image "teleport-operator:v13-amd64" to ECR - staging - - Tag and push image "teleport-operator:v13-arm" to ECR - staging - - Tag and push image "teleport-operator:v13-arm64" to ECR - staging -- name: Create manifest and push "teleport-operator:minor-$TIMESTAMP" to ECR - staging - image: docker - commands: - - apk add --no-cache aws-cli - - aws ecr get-login-password --region=us-west-2 | docker login -u="AWS" --password-stdin - 146628656107.dkr.ecr.us-west-2.amazonaws.com - - printenv DOCKERHUB_PASSWORD | docker login -u="$DOCKERHUB_USERNAME" --password-stdin - - TIMESTAMP=$(date -d @"$DRONE_BUILD_CREATED" '+%Y%m%d%H%M') - - docker manifest inspect 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/minor-version")-$TIMESTAMP > /dev/null 2>&1 && echo 'Found existing image, - skipping' || (docker manifest create 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/minor-version")-$TIMESTAMP --amend 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/minor-version")-$TIMESTAMP-amd64 --amend 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/minor-version")-$TIMESTAMP-arm --amend 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/minor-version")-$TIMESTAMP-arm64 && docker manifest push 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/minor-version")-$TIMESTAMP) - - docker logout "146628656107.dkr.ecr.us-west-2.amazonaws.com" - environment: - AWS_PROFILE: ecr-staging - DOCKERHUB_PASSWORD: - from_secret: DOCKERHUB_READONLY_TOKEN - DOCKERHUB_USERNAME: - from_secret: DOCKERHUB_USERNAME - volumes: - - name: awsconfig - path: /root/.aws - - name: dockersock - path: /var/run - depends_on: - - Tag and push image "teleport-operator:v13-amd64" to ECR - staging - - Tag and push image "teleport-operator:v13-arm" to ECR - staging - - Tag and push image "teleport-operator:v13-arm64" to ECR - staging -- name: Create manifest and push "teleport-operator:full-$TIMESTAMP" to ECR - staging - image: docker - commands: - - apk add --no-cache aws-cli - - aws ecr get-login-password --region=us-west-2 | docker login -u="AWS" --password-stdin - 146628656107.dkr.ecr.us-west-2.amazonaws.com - - printenv DOCKERHUB_PASSWORD | docker login -u="$DOCKERHUB_USERNAME" --password-stdin - - TIMESTAMP=$(date -d @"$DRONE_BUILD_CREATED" '+%Y%m%d%H%M') - - docker manifest inspect 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/full-version")-$TIMESTAMP > /dev/null 2>&1 && echo 'Found existing image, - skipping' || (docker manifest create 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/full-version")-$TIMESTAMP --amend 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/full-version")-$TIMESTAMP-amd64 --amend 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/full-version")-$TIMESTAMP-arm --amend 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/full-version")-$TIMESTAMP-arm64 && docker manifest push 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/full-version")-$TIMESTAMP) - - docker logout "146628656107.dkr.ecr.us-west-2.amazonaws.com" - environment: - AWS_PROFILE: ecr-staging - DOCKERHUB_PASSWORD: - from_secret: DOCKERHUB_READONLY_TOKEN - DOCKERHUB_USERNAME: - from_secret: DOCKERHUB_USERNAME - volumes: - - name: awsconfig - path: /root/.aws - - name: dockersock - path: /var/run - depends_on: - - Tag and push image "teleport-operator:v13-amd64" to ECR - staging - - Tag and push image "teleport-operator:v13-arm" to ECR - staging - - Tag and push image "teleport-operator:v13-arm64" to ECR - staging -- name: Tag and push image "teleport-operator:v13-amd64" to ECR - production - image: docker - commands: - - docker pull --platform "linux/amd64" drone-docker-registry:5000/teleport-operator:$(cat - "/go/var/full-version")-amd64 - - apk add --no-cache aws-cli - - aws ecr-public get-login-password --region=us-east-1 | docker login -u="AWS" --password-stdin - public.ecr.aws - - printenv DOCKERHUB_PASSWORD | docker login -u="$DOCKERHUB_USERNAME" --password-stdin - - docker manifest inspect public.ecr.aws/gravitational/teleport-operator:$(cat "/go/var/full-version")-amd64 - > /dev/null 2>&1 && echo 'Found existing image, skipping' || (docker tag drone-docker-registry:5000/teleport-operator:$(cat - "/go/var/full-version")-amd64 public.ecr.aws/gravitational/teleport-operator:$(cat - "/go/var/full-version")-amd64 && docker push public.ecr.aws/gravitational/teleport-operator:$(cat - "/go/var/full-version")-amd64) - - docker tag drone-docker-registry:5000/teleport-operator:$(cat "/go/var/full-version")-amd64 - public.ecr.aws/gravitational/teleport-operator:$(cat "/go/var/major-version")-amd64 - - docker push public.ecr.aws/gravitational/teleport-operator:$(cat "/go/var/major-version")-amd64 - - docker tag drone-docker-registry:5000/teleport-operator:$(cat "/go/var/full-version")-amd64 - public.ecr.aws/gravitational/teleport-operator:$(cat "/go/var/minor-version")-amd64 - - docker push public.ecr.aws/gravitational/teleport-operator:$(cat "/go/var/minor-version")-amd64 - - docker logout "public.ecr.aws" - environment: - AWS_PROFILE: ecr-production - DOCKERHUB_PASSWORD: - from_secret: DOCKERHUB_READONLY_TOKEN - DOCKERHUB_USERNAME: - from_secret: DOCKERHUB_USERNAME - volumes: - - name: awsconfig - path: /root/.aws - - name: dockersock - path: /var/run - depends_on: - - Build teleport-operator image "teleport-operator:v13-amd64" -- name: Tag and push image "teleport-operator:v13-arm" to ECR - production - image: docker - commands: - - docker pull --platform "linux/arm" drone-docker-registry:5000/teleport-operator:$(cat - "/go/var/full-version")-arm - - apk add --no-cache aws-cli - - aws ecr-public get-login-password --region=us-east-1 | docker login -u="AWS" --password-stdin - public.ecr.aws - - printenv DOCKERHUB_PASSWORD | docker login -u="$DOCKERHUB_USERNAME" --password-stdin - - docker manifest inspect public.ecr.aws/gravitational/teleport-operator:$(cat "/go/var/full-version")-arm - > /dev/null 2>&1 && echo 'Found existing image, skipping' || (docker tag drone-docker-registry:5000/teleport-operator:$(cat - "/go/var/full-version")-arm public.ecr.aws/gravitational/teleport-operator:$(cat - "/go/var/full-version")-arm && docker push public.ecr.aws/gravitational/teleport-operator:$(cat - "/go/var/full-version")-arm) - - docker tag drone-docker-registry:5000/teleport-operator:$(cat "/go/var/full-version")-arm - public.ecr.aws/gravitational/teleport-operator:$(cat "/go/var/major-version")-arm - - docker push public.ecr.aws/gravitational/teleport-operator:$(cat "/go/var/major-version")-arm - - docker tag drone-docker-registry:5000/teleport-operator:$(cat "/go/var/full-version")-arm - public.ecr.aws/gravitational/teleport-operator:$(cat "/go/var/minor-version")-arm - - docker push public.ecr.aws/gravitational/teleport-operator:$(cat "/go/var/minor-version")-arm - - docker logout "public.ecr.aws" - environment: - AWS_PROFILE: ecr-production - DOCKERHUB_PASSWORD: - from_secret: DOCKERHUB_READONLY_TOKEN - DOCKERHUB_USERNAME: - from_secret: DOCKERHUB_USERNAME - volumes: - - name: awsconfig - path: /root/.aws - - name: dockersock - path: /var/run - depends_on: - - Build teleport-operator image "teleport-operator:v13-arm" -- name: Tag and push image "teleport-operator:v13-arm64" to ECR - production - image: docker - commands: - - docker pull --platform "linux/arm64" drone-docker-registry:5000/teleport-operator:$(cat - "/go/var/full-version")-arm64 - - apk add --no-cache aws-cli - - aws ecr-public get-login-password --region=us-east-1 | docker login -u="AWS" --password-stdin - public.ecr.aws - - printenv DOCKERHUB_PASSWORD | docker login -u="$DOCKERHUB_USERNAME" --password-stdin - - docker manifest inspect public.ecr.aws/gravitational/teleport-operator:$(cat "/go/var/full-version")-arm64 - > /dev/null 2>&1 && echo 'Found existing image, skipping' || (docker tag drone-docker-registry:5000/teleport-operator:$(cat - "/go/var/full-version")-arm64 public.ecr.aws/gravitational/teleport-operator:$(cat - "/go/var/full-version")-arm64 && docker push public.ecr.aws/gravitational/teleport-operator:$(cat - "/go/var/full-version")-arm64) - - docker tag drone-docker-registry:5000/teleport-operator:$(cat "/go/var/full-version")-arm64 - public.ecr.aws/gravitational/teleport-operator:$(cat "/go/var/major-version")-arm64 - - docker push public.ecr.aws/gravitational/teleport-operator:$(cat "/go/var/major-version")-arm64 - - docker tag drone-docker-registry:5000/teleport-operator:$(cat "/go/var/full-version")-arm64 - public.ecr.aws/gravitational/teleport-operator:$(cat "/go/var/minor-version")-arm64 - - docker push public.ecr.aws/gravitational/teleport-operator:$(cat "/go/var/minor-version")-arm64 - - docker logout "public.ecr.aws" - environment: - AWS_PROFILE: ecr-production - DOCKERHUB_PASSWORD: - from_secret: DOCKERHUB_READONLY_TOKEN - DOCKERHUB_USERNAME: - from_secret: DOCKERHUB_USERNAME - volumes: - - name: awsconfig - path: /root/.aws - - name: dockersock - path: /var/run - depends_on: - - Build teleport-operator image "teleport-operator:v13-arm64" -- name: Create manifest and push "teleport-operator:major" to ECR - production - image: docker - commands: - - apk add --no-cache aws-cli - - aws ecr-public get-login-password --region=us-east-1 | docker login -u="AWS" --password-stdin - public.ecr.aws - - printenv DOCKERHUB_PASSWORD | docker login -u="$DOCKERHUB_USERNAME" --password-stdin - - docker manifest create public.ecr.aws/gravitational/teleport-operator:$(cat "/go/var/major-version") - --amend public.ecr.aws/gravitational/teleport-operator:$(cat "/go/var/major-version")-amd64 - --amend public.ecr.aws/gravitational/teleport-operator:$(cat "/go/var/major-version")-arm - --amend public.ecr.aws/gravitational/teleport-operator:$(cat "/go/var/major-version")-arm64 - - docker manifest push public.ecr.aws/gravitational/teleport-operator:$(cat "/go/var/major-version") - - docker logout "public.ecr.aws" - environment: - AWS_PROFILE: ecr-production - DOCKERHUB_PASSWORD: - from_secret: DOCKERHUB_READONLY_TOKEN - DOCKERHUB_USERNAME: - from_secret: DOCKERHUB_USERNAME - volumes: - - name: awsconfig - path: /root/.aws - - name: dockersock - path: /var/run - depends_on: - - Tag and push image "teleport-operator:v13-amd64" to ECR - production - - Tag and push image "teleport-operator:v13-arm" to ECR - production - - Tag and push image "teleport-operator:v13-arm64" to ECR - production -- name: Create manifest and push "teleport-operator:minor" to ECR - production - image: docker - commands: - - apk add --no-cache aws-cli - - aws ecr-public get-login-password --region=us-east-1 | docker login -u="AWS" --password-stdin - public.ecr.aws - - printenv DOCKERHUB_PASSWORD | docker login -u="$DOCKERHUB_USERNAME" --password-stdin - - docker manifest create public.ecr.aws/gravitational/teleport-operator:$(cat "/go/var/minor-version") - --amend public.ecr.aws/gravitational/teleport-operator:$(cat "/go/var/minor-version")-amd64 - --amend public.ecr.aws/gravitational/teleport-operator:$(cat "/go/var/minor-version")-arm - --amend public.ecr.aws/gravitational/teleport-operator:$(cat "/go/var/minor-version")-arm64 - - docker manifest push public.ecr.aws/gravitational/teleport-operator:$(cat "/go/var/minor-version") - - docker logout "public.ecr.aws" - environment: - AWS_PROFILE: ecr-production - DOCKERHUB_PASSWORD: - from_secret: DOCKERHUB_READONLY_TOKEN - DOCKERHUB_USERNAME: - from_secret: DOCKERHUB_USERNAME - volumes: - - name: awsconfig - path: /root/.aws - - name: dockersock - path: /var/run - depends_on: - - Tag and push image "teleport-operator:v13-amd64" to ECR - production - - Tag and push image "teleport-operator:v13-arm" to ECR - production - - Tag and push image "teleport-operator:v13-arm64" to ECR - production -- name: Create manifest and push "teleport-operator:full" to ECR - production - image: docker - commands: - - apk add --no-cache aws-cli - - aws ecr-public get-login-password --region=us-east-1 | docker login -u="AWS" --password-stdin - public.ecr.aws - - printenv DOCKERHUB_PASSWORD | docker login -u="$DOCKERHUB_USERNAME" --password-stdin - - docker manifest inspect public.ecr.aws/gravitational/teleport-operator:$(cat "/go/var/full-version") - > /dev/null 2>&1 && echo 'Found existing image, skipping' || (docker manifest - create public.ecr.aws/gravitational/teleport-operator:$(cat "/go/var/full-version") - --amend public.ecr.aws/gravitational/teleport-operator:$(cat "/go/var/full-version")-amd64 - --amend public.ecr.aws/gravitational/teleport-operator:$(cat "/go/var/full-version")-arm - --amend public.ecr.aws/gravitational/teleport-operator:$(cat "/go/var/full-version")-arm64 - && docker manifest push public.ecr.aws/gravitational/teleport-operator:$(cat "/go/var/full-version")) - - docker logout "public.ecr.aws" - environment: - AWS_PROFILE: ecr-production - DOCKERHUB_PASSWORD: - from_secret: DOCKERHUB_READONLY_TOKEN - DOCKERHUB_USERNAME: - from_secret: DOCKERHUB_USERNAME - volumes: - - name: awsconfig - path: /root/.aws - - name: dockersock - path: /var/run - depends_on: - - Tag and push image "teleport-operator:v13-amd64" to ECR - production - - Tag and push image "teleport-operator:v13-arm" to ECR - production - - Tag and push image "teleport-operator:v13-arm64" to ECR - production -services: -- name: Start Docker - image: docker:dind - privileged: true - volumes: - - name: dockersock - path: /var/run -- name: drone-docker-registry - image: registry:2 - privileged: false - volumes: [] -volumes: -- name: awsconfig - temp: {} -- name: dockersock - temp: {} -- name: dockerconfig - temp: {} -image_pull_secrets: -- DOCKERHUB_CREDENTIALS - ---- -################################################ -# Generated using dronegen, do not edit by hand! -# Use 'make dronegen' to update. -# Generated at dronegen/container_images_release_version.go (main.(*ReleaseVersion).buildVersionPipeline) -################################################ - -kind: pipeline -type: kubernetes -name: teleport-container-images-previous-version-2-cron -environment: - DEBIAN_FRONTEND: noninteractive -trigger: - cron: - include: - - teleport-container-images-cron - repo: - include: - - gravitational/teleport -workspace: - path: /go -clone: - disable: true -steps: -- name: Find the latest available semver for v12 - image: golang:1.18 - commands: - - mkdir -pv "/tmp/teleport" - - cd "/tmp/teleport" - - git init - - git remote add origin ${DRONE_REMOTE_URL} - - git fetch origin --tags - - git checkout -qf "branch/v12" - - mkdir -pv $(dirname "/go/vars/full-version-v12") - - cd "/tmp/teleport/build.assets/tooling/cmd/query-latest" - - go run . "v12" | sed 's/v//' > "/go/vars/full-version-v12" - - echo Found full semver "$(cat "/go/vars/full-version-v12")" for major version - "v12" -- name: Wait for docker - image: docker - pull: if-not-exists - commands: - - timeout 30s /bin/sh -c 'while [ ! -S /var/run/docker.sock ]; do sleep 1; done' - - printenv DOCKERHUB_PASSWORD | docker login -u="$DOCKERHUB_USERNAME" --password-stdin - environment: - DOCKERHUB_PASSWORD: - from_secret: DOCKERHUB_READONLY_TOKEN - DOCKERHUB_USERNAME: - from_secret: DOCKERHUB_USERNAME - volumes: - - name: dockersock - path: /var/run - - name: dockerconfig - path: /root/.docker - depends_on: - - Find the latest available semver for v12 -- name: Wait for docker registry - image: alpine - pull: if-not-exists - commands: - - apk add curl - - timeout 30s /bin/sh -c 'while [ "$(curl -s -o /dev/null -w %{http_code} http://drone-docker-registry:5000/)" - != "200" ]; do sleep 1; done' - depends_on: - - Find the latest available semver for v12 -- name: Check out code - image: alpine/git:latest - pull: if-not-exists - commands: - - mkdir -pv "/go/src/github.com/gravitational/teleport" - - cd "/go/src/github.com/gravitational/teleport" - - git init - - git remote add origin ${DRONE_REMOTE_URL} - - git fetch origin --tags - - git checkout -qf "v$(cat '/go/vars/full-version-v12')" - depends_on: - - Find the latest available semver for v12 -- name: Build major, minor, and full semvers - image: alpine - commands: - - mkdir -pv $(dirname "/go/var/major-version") - - echo v$(cat '/go/vars/full-version-v12') | sed 's/v//' | cut -d'.' -f "1" > "/go/var/major-version" - - echo $(cat "/go/var/major-version") - - mkdir -pv $(dirname "/go/var/minor-version") - - echo v$(cat '/go/vars/full-version-v12') | sed 's/v//' | cut -d'.' -f "1,2" > - "/go/var/minor-version" - - echo $(cat "/go/var/minor-version") - - mkdir -pv $(dirname "/go/var/full-version") - - echo v$(cat '/go/vars/full-version-v12') | sed 's/v//' > "/go/var/full-version" - - echo $(cat "/go/var/full-version") - depends_on: - - Find the latest available semver for v12 -- name: Assume ECR - staging AWS Role - image: amazon/aws-cli - pull: if-not-exists - commands: - - aws sts get-caller-identity - - |- - printf "[ecr-staging]\naws_access_key_id = %s\naws_secret_access_key = %s\naws_session_token = %s\n" \ - $(aws sts assume-role \ - --role-arn "$AWS_ROLE" \ - --role-session-name $(echo "drone-${DRONE_REPO}-${DRONE_BUILD_NUMBER}" | sed "s|/|-|g") \ - --query "Credentials.[AccessKeyId,SecretAccessKey,SessionToken]" \ - --output text) \ - >> /root/.aws/credentials - - unset AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY - - aws sts get-caller-identity --profile ecr-staging - environment: - AWS_ACCESS_KEY_ID: - from_secret: STAGING_TELEPORT_DRONE_USER_ECR_KEY - AWS_ROLE: - from_secret: STAGING_TELEPORT_DRONE_ECR_AWS_ROLE - AWS_SECRET_ACCESS_KEY: - from_secret: STAGING_TELEPORT_DRONE_USER_ECR_SECRET - volumes: - - name: awsconfig - path: /root/.aws - depends_on: - - Find the latest available semver for v12 -- name: Assume ECR - authenticated-pull AWS Role - image: amazon/aws-cli - pull: if-not-exists - commands: - - aws sts get-caller-identity - - |- - printf "[ecr-authenticated-pull]\naws_access_key_id = %s\naws_secret_access_key = %s\naws_session_token = %s\n" \ - $(aws sts assume-role \ - --role-arn "$AWS_ROLE" \ - --role-session-name $(echo "drone-${DRONE_REPO}-${DRONE_BUILD_NUMBER}" | sed "s|/|-|g") \ - --query "Credentials.[AccessKeyId,SecretAccessKey,SessionToken]" \ - --output text) \ - >> /root/.aws/credentials - - unset AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY - - aws sts get-caller-identity --profile ecr-authenticated-pull - environment: - AWS_ACCESS_KEY_ID: - from_secret: PRODUCTION_TELEPORT_DRONE_USER_ECR_KEY - AWS_ROLE: - from_secret: PRODUCTION_TELEPORT_DRONE_ECR_AWS_ROLE - AWS_SECRET_ACCESS_KEY: - from_secret: PRODUCTION_TELEPORT_DRONE_USER_ECR_SECRET - volumes: - - name: awsconfig - path: /root/.aws - depends_on: - - Assume ECR - staging AWS Role - - Find the latest available semver for v12 -- name: Assume ECR - production AWS Role - image: amazon/aws-cli - pull: if-not-exists - commands: - - aws sts get-caller-identity - - |- - printf "[ecr-production]\naws_access_key_id = %s\naws_secret_access_key = %s\naws_session_token = %s\n" \ - $(aws sts assume-role \ - --role-arn "$AWS_ROLE" \ - --role-session-name $(echo "drone-${DRONE_REPO}-${DRONE_BUILD_NUMBER}" | sed "s|/|-|g") \ - --query "Credentials.[AccessKeyId,SecretAccessKey,SessionToken]" \ - --output text) \ - >> /root/.aws/credentials - - unset AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY - - aws sts get-caller-identity --profile ecr-production - environment: - AWS_ACCESS_KEY_ID: - from_secret: PRODUCTION_TELEPORT_DRONE_USER_ECR_KEY - AWS_ROLE: - from_secret: PRODUCTION_TELEPORT_DRONE_ECR_AWS_ROLE - AWS_SECRET_ACCESS_KEY: - from_secret: PRODUCTION_TELEPORT_DRONE_USER_ECR_SECRET - volumes: - - name: awsconfig - path: /root/.aws - depends_on: - - Assume ECR - authenticated-pull AWS Role - - Find the latest available semver for v12 -- name: Build teleport-operator image "teleport-operator:v12-amd64" - image: docker - commands: - - docker run --privileged --rm tonistiigi/binfmt --install all - - mkdir -pv "/go/src/github.com/gravitational/teleport" && cd "/go/src/github.com/gravitational/teleport" - - mkdir -pv "/tmp/teleport-operator-v12-amd64-builder" - - echo '[registry."drone-docker-registry:5000"]' > "/tmp/teleport-operator-v12-amd64-builder/buildkitd.toml" - - echo ' http = true' >> "/tmp/teleport-operator-v12-amd64-builder/buildkitd.toml" - - docker buildx create --driver "docker-container" --driver-opt "network=host" --name - "teleport-operator-v12-amd64-builder" --config "/tmp/teleport-operator-v12-amd64-builder/buildkitd.toml" - - apk add --no-cache aws-cli - - aws ecr-public get-login-password --region=us-east-1 | docker login -u="AWS" --password-stdin - public.ecr.aws - - printenv DOCKERHUB_PASSWORD | docker login -u="$DOCKERHUB_USERNAME" --password-stdin - - docker buildx build --push --builder "teleport-operator-v12-amd64-builder" --platform - "linux/amd64" --tag drone-docker-registry:5000/teleport-operator:$(cat "/go/var/full-version")-amd64 - --file "/go/src/github.com/gravitational/teleport/integrations/operator/Dockerfile" - --build-arg BUILDBOX=public.ecr.aws/gravitational/teleport-buildbox:teleport15 - --build-arg COMPILER_NAME=x86_64-linux-gnu-gcc --build-arg GOLANG_VERSION=go1.21.6 - --build-arg PROTOC_VERSION=3.20.3 --build-arg TARGETARCH=amd64 --build-arg BUILD_ARCH=amd64 - /go/src/github.com/gravitational/teleport - - docker logout "public.ecr.aws" - - docker buildx rm "teleport-operator-v12-amd64-builder" - - rm -rf "/tmp/teleport-operator-v12-amd64-builder" - environment: - AWS_PROFILE: ecr-authenticated-pull - DOCKER_BUILDKIT: "1" - DOCKERHUB_PASSWORD: - from_secret: DOCKERHUB_READONLY_TOKEN - DOCKERHUB_USERNAME: - from_secret: DOCKERHUB_USERNAME - volumes: - - name: awsconfig - path: /root/.aws - - name: dockersock - path: /var/run - depends_on: - - Assume ECR - authenticated-pull AWS Role - - Find the latest available semver for v12 - - Wait for docker - - Wait for docker registry - - Check out code - - Build major, minor, and full semvers - - Assume ECR - staging AWS Role - - Assume ECR - authenticated-pull AWS Role - - Assume ECR - production AWS Role -- name: Build teleport-operator image "teleport-operator:v12-arm" - image: docker - commands: - - docker run --privileged --rm tonistiigi/binfmt --install all - - mkdir -pv "/go/src/github.com/gravitational/teleport" && cd "/go/src/github.com/gravitational/teleport" - - mkdir -pv "/tmp/teleport-operator-v12-arm-builder" - - echo '[registry."drone-docker-registry:5000"]' > "/tmp/teleport-operator-v12-arm-builder/buildkitd.toml" - - echo ' http = true' >> "/tmp/teleport-operator-v12-arm-builder/buildkitd.toml" - - docker buildx create --driver "docker-container" --driver-opt "network=host" --name - "teleport-operator-v12-arm-builder" --config "/tmp/teleport-operator-v12-arm-builder/buildkitd.toml" - - apk add --no-cache aws-cli - - aws ecr-public get-login-password --region=us-east-1 | docker login -u="AWS" --password-stdin - public.ecr.aws - - printenv DOCKERHUB_PASSWORD | docker login -u="$DOCKERHUB_USERNAME" --password-stdin - - docker buildx build --push --builder "teleport-operator-v12-arm-builder" --platform - "linux/arm" --tag drone-docker-registry:5000/teleport-operator:$(cat "/go/var/full-version")-arm - --file "/go/src/github.com/gravitational/teleport/integrations/operator/Dockerfile" - --build-arg BUILDBOX=public.ecr.aws/gravitational/teleport-buildbox-arm:teleport15 - --build-arg COMPILER_NAME=arm-linux-gnueabihf-gcc --build-arg GOLANG_VERSION=go1.21.6 - --build-arg PROTOC_VERSION=3.20.3 --build-arg TARGETARCH=arm --build-arg BUILD_ARCH=amd64 - /go/src/github.com/gravitational/teleport - - docker logout "public.ecr.aws" - - docker buildx rm "teleport-operator-v12-arm-builder" - - rm -rf "/tmp/teleport-operator-v12-arm-builder" - environment: - AWS_PROFILE: ecr-authenticated-pull - DOCKER_BUILDKIT: "1" - DOCKERHUB_PASSWORD: - from_secret: DOCKERHUB_READONLY_TOKEN - DOCKERHUB_USERNAME: - from_secret: DOCKERHUB_USERNAME - volumes: - - name: awsconfig - path: /root/.aws - - name: dockersock - path: /var/run - depends_on: - - Assume ECR - authenticated-pull AWS Role - - Find the latest available semver for v12 - - Wait for docker - - Wait for docker registry - - Check out code - - Build major, minor, and full semvers - - Assume ECR - staging AWS Role - - Assume ECR - authenticated-pull AWS Role - - Assume ECR - production AWS Role -- name: Build teleport-operator image "teleport-operator:v12-arm64" - image: docker - commands: - - docker run --privileged --rm tonistiigi/binfmt --install all - - mkdir -pv "/go/src/github.com/gravitational/teleport" && cd "/go/src/github.com/gravitational/teleport" - - mkdir -pv "/tmp/teleport-operator-v12-arm64-builder" - - echo '[registry."drone-docker-registry:5000"]' > "/tmp/teleport-operator-v12-arm64-builder/buildkitd.toml" - - echo ' http = true' >> "/tmp/teleport-operator-v12-arm64-builder/buildkitd.toml" - - docker buildx create --driver "docker-container" --driver-opt "network=host" --name - "teleport-operator-v12-arm64-builder" --config "/tmp/teleport-operator-v12-arm64-builder/buildkitd.toml" - - apk add --no-cache aws-cli - - aws ecr-public get-login-password --region=us-east-1 | docker login -u="AWS" --password-stdin - public.ecr.aws - - printenv DOCKERHUB_PASSWORD | docker login -u="$DOCKERHUB_USERNAME" --password-stdin - - docker buildx build --push --builder "teleport-operator-v12-arm64-builder" --platform - "linux/arm64" --tag drone-docker-registry:5000/teleport-operator:$(cat "/go/var/full-version")-arm64 - --file "/go/src/github.com/gravitational/teleport/integrations/operator/Dockerfile" - --build-arg BUILDBOX=public.ecr.aws/gravitational/teleport-buildbox-arm:teleport15 - --build-arg COMPILER_NAME=aarch64-linux-gnu-gcc --build-arg GOLANG_VERSION=go1.21.6 - --build-arg PROTOC_VERSION=3.20.3 --build-arg TARGETARCH=arm64 --build-arg BUILD_ARCH=amd64 - /go/src/github.com/gravitational/teleport - - docker logout "public.ecr.aws" - - docker buildx rm "teleport-operator-v12-arm64-builder" - - rm -rf "/tmp/teleport-operator-v12-arm64-builder" - environment: - AWS_PROFILE: ecr-authenticated-pull - DOCKER_BUILDKIT: "1" - DOCKERHUB_PASSWORD: - from_secret: DOCKERHUB_READONLY_TOKEN - DOCKERHUB_USERNAME: - from_secret: DOCKERHUB_USERNAME - volumes: - - name: awsconfig - path: /root/.aws - - name: dockersock - path: /var/run - depends_on: - - Assume ECR - authenticated-pull AWS Role - - Find the latest available semver for v12 - - Wait for docker - - Wait for docker registry - - Check out code - - Build major, minor, and full semvers - - Assume ECR - staging AWS Role - - Assume ECR - authenticated-pull AWS Role - - Assume ECR - production AWS Role -- name: Tag and push image "teleport-operator:v12-amd64" to ECR - staging - image: docker - commands: - - docker pull --platform "linux/amd64" drone-docker-registry:5000/teleport-operator:$(cat - "/go/var/full-version")-amd64 - - apk add --no-cache aws-cli - - aws ecr get-login-password --region=us-west-2 | docker login -u="AWS" --password-stdin - 146628656107.dkr.ecr.us-west-2.amazonaws.com - - printenv DOCKERHUB_PASSWORD | docker login -u="$DOCKERHUB_USERNAME" --password-stdin - - TIMESTAMP=$(date -d @"$DRONE_BUILD_CREATED" '+%Y%m%d%H%M') - - docker manifest inspect 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/full-version")-$TIMESTAMP-amd64 > /dev/null 2>&1 && echo 'Found existing - image, skipping' || (docker tag drone-docker-registry:5000/teleport-operator:$(cat - "/go/var/full-version")-amd64 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/full-version")-$TIMESTAMP-amd64 && docker push 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/full-version")-$TIMESTAMP-amd64) - - docker manifest inspect 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/major-version")-$TIMESTAMP-amd64 > /dev/null 2>&1 && echo 'Found existing - image, skipping' || (docker tag drone-docker-registry:5000/teleport-operator:$(cat - "/go/var/full-version")-amd64 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/major-version")-$TIMESTAMP-amd64 && docker push 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/major-version")-$TIMESTAMP-amd64) - - docker manifest inspect 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/minor-version")-$TIMESTAMP-amd64 > /dev/null 2>&1 && echo 'Found existing - image, skipping' || (docker tag drone-docker-registry:5000/teleport-operator:$(cat - "/go/var/full-version")-amd64 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/minor-version")-$TIMESTAMP-amd64 && docker push 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/minor-version")-$TIMESTAMP-amd64) - - docker logout "146628656107.dkr.ecr.us-west-2.amazonaws.com" - environment: - AWS_PROFILE: ecr-staging - DOCKERHUB_PASSWORD: - from_secret: DOCKERHUB_READONLY_TOKEN - DOCKERHUB_USERNAME: - from_secret: DOCKERHUB_USERNAME - volumes: - - name: awsconfig - path: /root/.aws - - name: dockersock - path: /var/run - depends_on: - - Build teleport-operator image "teleport-operator:v12-amd64" -- name: Tag and push image "teleport-operator:v12-arm" to ECR - staging - image: docker - commands: - - docker pull --platform "linux/arm" drone-docker-registry:5000/teleport-operator:$(cat - "/go/var/full-version")-arm - - apk add --no-cache aws-cli - - aws ecr get-login-password --region=us-west-2 | docker login -u="AWS" --password-stdin - 146628656107.dkr.ecr.us-west-2.amazonaws.com - - printenv DOCKERHUB_PASSWORD | docker login -u="$DOCKERHUB_USERNAME" --password-stdin - - TIMESTAMP=$(date -d @"$DRONE_BUILD_CREATED" '+%Y%m%d%H%M') - - docker manifest inspect 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/full-version")-$TIMESTAMP-arm > /dev/null 2>&1 && echo 'Found existing - image, skipping' || (docker tag drone-docker-registry:5000/teleport-operator:$(cat - "/go/var/full-version")-arm 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/full-version")-$TIMESTAMP-arm && docker push 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/full-version")-$TIMESTAMP-arm) - - docker manifest inspect 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/major-version")-$TIMESTAMP-arm > /dev/null 2>&1 && echo 'Found existing - image, skipping' || (docker tag drone-docker-registry:5000/teleport-operator:$(cat - "/go/var/full-version")-arm 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/major-version")-$TIMESTAMP-arm && docker push 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/major-version")-$TIMESTAMP-arm) - - docker manifest inspect 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/minor-version")-$TIMESTAMP-arm > /dev/null 2>&1 && echo 'Found existing - image, skipping' || (docker tag drone-docker-registry:5000/teleport-operator:$(cat - "/go/var/full-version")-arm 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/minor-version")-$TIMESTAMP-arm && docker push 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/minor-version")-$TIMESTAMP-arm) - - docker logout "146628656107.dkr.ecr.us-west-2.amazonaws.com" - environment: - AWS_PROFILE: ecr-staging - DOCKERHUB_PASSWORD: - from_secret: DOCKERHUB_READONLY_TOKEN - DOCKERHUB_USERNAME: - from_secret: DOCKERHUB_USERNAME - volumes: - - name: awsconfig - path: /root/.aws - - name: dockersock - path: /var/run - depends_on: - - Build teleport-operator image "teleport-operator:v12-arm" -- name: Tag and push image "teleport-operator:v12-arm64" to ECR - staging - image: docker - commands: - - docker pull --platform "linux/arm64" drone-docker-registry:5000/teleport-operator:$(cat - "/go/var/full-version")-arm64 - - apk add --no-cache aws-cli - - aws ecr get-login-password --region=us-west-2 | docker login -u="AWS" --password-stdin - 146628656107.dkr.ecr.us-west-2.amazonaws.com - - printenv DOCKERHUB_PASSWORD | docker login -u="$DOCKERHUB_USERNAME" --password-stdin - - TIMESTAMP=$(date -d @"$DRONE_BUILD_CREATED" '+%Y%m%d%H%M') - - docker manifest inspect 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/full-version")-$TIMESTAMP-arm64 > /dev/null 2>&1 && echo 'Found existing - image, skipping' || (docker tag drone-docker-registry:5000/teleport-operator:$(cat - "/go/var/full-version")-arm64 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/full-version")-$TIMESTAMP-arm64 && docker push 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/full-version")-$TIMESTAMP-arm64) - - docker manifest inspect 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/major-version")-$TIMESTAMP-arm64 > /dev/null 2>&1 && echo 'Found existing - image, skipping' || (docker tag drone-docker-registry:5000/teleport-operator:$(cat - "/go/var/full-version")-arm64 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/major-version")-$TIMESTAMP-arm64 && docker push 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/major-version")-$TIMESTAMP-arm64) - - docker manifest inspect 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/minor-version")-$TIMESTAMP-arm64 > /dev/null 2>&1 && echo 'Found existing - image, skipping' || (docker tag drone-docker-registry:5000/teleport-operator:$(cat - "/go/var/full-version")-arm64 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/minor-version")-$TIMESTAMP-arm64 && docker push 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/minor-version")-$TIMESTAMP-arm64) - - docker logout "146628656107.dkr.ecr.us-west-2.amazonaws.com" - environment: - AWS_PROFILE: ecr-staging - DOCKERHUB_PASSWORD: - from_secret: DOCKERHUB_READONLY_TOKEN - DOCKERHUB_USERNAME: - from_secret: DOCKERHUB_USERNAME - volumes: - - name: awsconfig - path: /root/.aws - - name: dockersock - path: /var/run - depends_on: - - Build teleport-operator image "teleport-operator:v12-arm64" -- name: Create manifest and push "teleport-operator:major-$TIMESTAMP" to ECR - staging - image: docker - commands: - - apk add --no-cache aws-cli - - aws ecr get-login-password --region=us-west-2 | docker login -u="AWS" --password-stdin - 146628656107.dkr.ecr.us-west-2.amazonaws.com - - printenv DOCKERHUB_PASSWORD | docker login -u="$DOCKERHUB_USERNAME" --password-stdin - - TIMESTAMP=$(date -d @"$DRONE_BUILD_CREATED" '+%Y%m%d%H%M') - - docker manifest inspect 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/major-version")-$TIMESTAMP > /dev/null 2>&1 && echo 'Found existing image, - skipping' || (docker manifest create 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/major-version")-$TIMESTAMP --amend 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/major-version")-$TIMESTAMP-amd64 --amend 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/major-version")-$TIMESTAMP-arm --amend 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/major-version")-$TIMESTAMP-arm64 && docker manifest push 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/major-version")-$TIMESTAMP) - - docker logout "146628656107.dkr.ecr.us-west-2.amazonaws.com" - environment: - AWS_PROFILE: ecr-staging - DOCKERHUB_PASSWORD: - from_secret: DOCKERHUB_READONLY_TOKEN - DOCKERHUB_USERNAME: - from_secret: DOCKERHUB_USERNAME - volumes: - - name: awsconfig - path: /root/.aws - - name: dockersock - path: /var/run - depends_on: - - Tag and push image "teleport-operator:v12-amd64" to ECR - staging - - Tag and push image "teleport-operator:v12-arm" to ECR - staging - - Tag and push image "teleport-operator:v12-arm64" to ECR - staging -- name: Create manifest and push "teleport-operator:minor-$TIMESTAMP" to ECR - staging - image: docker - commands: - - apk add --no-cache aws-cli - - aws ecr get-login-password --region=us-west-2 | docker login -u="AWS" --password-stdin - 146628656107.dkr.ecr.us-west-2.amazonaws.com - - printenv DOCKERHUB_PASSWORD | docker login -u="$DOCKERHUB_USERNAME" --password-stdin - - TIMESTAMP=$(date -d @"$DRONE_BUILD_CREATED" '+%Y%m%d%H%M') - - docker manifest inspect 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/minor-version")-$TIMESTAMP > /dev/null 2>&1 && echo 'Found existing image, - skipping' || (docker manifest create 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/minor-version")-$TIMESTAMP --amend 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/minor-version")-$TIMESTAMP-amd64 --amend 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/minor-version")-$TIMESTAMP-arm --amend 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/minor-version")-$TIMESTAMP-arm64 && docker manifest push 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/minor-version")-$TIMESTAMP) - - docker logout "146628656107.dkr.ecr.us-west-2.amazonaws.com" - environment: - AWS_PROFILE: ecr-staging - DOCKERHUB_PASSWORD: - from_secret: DOCKERHUB_READONLY_TOKEN - DOCKERHUB_USERNAME: - from_secret: DOCKERHUB_USERNAME - volumes: - - name: awsconfig - path: /root/.aws - - name: dockersock - path: /var/run - depends_on: - - Tag and push image "teleport-operator:v12-amd64" to ECR - staging - - Tag and push image "teleport-operator:v12-arm" to ECR - staging - - Tag and push image "teleport-operator:v12-arm64" to ECR - staging -- name: Create manifest and push "teleport-operator:full-$TIMESTAMP" to ECR - staging - image: docker - commands: - - apk add --no-cache aws-cli - - aws ecr get-login-password --region=us-west-2 | docker login -u="AWS" --password-stdin - 146628656107.dkr.ecr.us-west-2.amazonaws.com - - printenv DOCKERHUB_PASSWORD | docker login -u="$DOCKERHUB_USERNAME" --password-stdin - - TIMESTAMP=$(date -d @"$DRONE_BUILD_CREATED" '+%Y%m%d%H%M') - - docker manifest inspect 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/full-version")-$TIMESTAMP > /dev/null 2>&1 && echo 'Found existing image, - skipping' || (docker manifest create 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/full-version")-$TIMESTAMP --amend 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/full-version")-$TIMESTAMP-amd64 --amend 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/full-version")-$TIMESTAMP-arm --amend 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/full-version")-$TIMESTAMP-arm64 && docker manifest push 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-operator:$(cat - "/go/var/full-version")-$TIMESTAMP) - - docker logout "146628656107.dkr.ecr.us-west-2.amazonaws.com" - environment: - AWS_PROFILE: ecr-staging - DOCKERHUB_PASSWORD: - from_secret: DOCKERHUB_READONLY_TOKEN - DOCKERHUB_USERNAME: - from_secret: DOCKERHUB_USERNAME - volumes: - - name: awsconfig - path: /root/.aws - - name: dockersock - path: /var/run - depends_on: - - Tag and push image "teleport-operator:v12-amd64" to ECR - staging - - Tag and push image "teleport-operator:v12-arm" to ECR - staging - - Tag and push image "teleport-operator:v12-arm64" to ECR - staging -- name: Tag and push image "teleport-operator:v12-amd64" to ECR - production - image: docker - commands: - - docker pull --platform "linux/amd64" drone-docker-registry:5000/teleport-operator:$(cat - "/go/var/full-version")-amd64 - - apk add --no-cache aws-cli - - aws ecr-public get-login-password --region=us-east-1 | docker login -u="AWS" --password-stdin - public.ecr.aws - - printenv DOCKERHUB_PASSWORD | docker login -u="$DOCKERHUB_USERNAME" --password-stdin - - docker manifest inspect public.ecr.aws/gravitational/teleport-operator:$(cat "/go/var/full-version")-amd64 - > /dev/null 2>&1 && echo 'Found existing image, skipping' || (docker tag drone-docker-registry:5000/teleport-operator:$(cat - "/go/var/full-version")-amd64 public.ecr.aws/gravitational/teleport-operator:$(cat - "/go/var/full-version")-amd64 && docker push public.ecr.aws/gravitational/teleport-operator:$(cat - "/go/var/full-version")-amd64) - - docker tag drone-docker-registry:5000/teleport-operator:$(cat "/go/var/full-version")-amd64 - public.ecr.aws/gravitational/teleport-operator:$(cat "/go/var/major-version")-amd64 - - docker push public.ecr.aws/gravitational/teleport-operator:$(cat "/go/var/major-version")-amd64 - - docker tag drone-docker-registry:5000/teleport-operator:$(cat "/go/var/full-version")-amd64 - public.ecr.aws/gravitational/teleport-operator:$(cat "/go/var/minor-version")-amd64 - - docker push public.ecr.aws/gravitational/teleport-operator:$(cat "/go/var/minor-version")-amd64 - - docker logout "public.ecr.aws" - environment: - AWS_PROFILE: ecr-production - DOCKERHUB_PASSWORD: - from_secret: DOCKERHUB_READONLY_TOKEN - DOCKERHUB_USERNAME: - from_secret: DOCKERHUB_USERNAME - volumes: - - name: awsconfig - path: /root/.aws - - name: dockersock - path: /var/run - depends_on: - - Build teleport-operator image "teleport-operator:v12-amd64" -- name: Tag and push image "teleport-operator:v12-arm" to ECR - production - image: docker - commands: - - docker pull --platform "linux/arm" drone-docker-registry:5000/teleport-operator:$(cat - "/go/var/full-version")-arm - - apk add --no-cache aws-cli - - aws ecr-public get-login-password --region=us-east-1 | docker login -u="AWS" --password-stdin - public.ecr.aws - - printenv DOCKERHUB_PASSWORD | docker login -u="$DOCKERHUB_USERNAME" --password-stdin - - docker manifest inspect public.ecr.aws/gravitational/teleport-operator:$(cat "/go/var/full-version")-arm - > /dev/null 2>&1 && echo 'Found existing image, skipping' || (docker tag drone-docker-registry:5000/teleport-operator:$(cat - "/go/var/full-version")-arm public.ecr.aws/gravitational/teleport-operator:$(cat - "/go/var/full-version")-arm && docker push public.ecr.aws/gravitational/teleport-operator:$(cat - "/go/var/full-version")-arm) - - docker tag drone-docker-registry:5000/teleport-operator:$(cat "/go/var/full-version")-arm - public.ecr.aws/gravitational/teleport-operator:$(cat "/go/var/major-version")-arm - - docker push public.ecr.aws/gravitational/teleport-operator:$(cat "/go/var/major-version")-arm - - docker tag drone-docker-registry:5000/teleport-operator:$(cat "/go/var/full-version")-arm - public.ecr.aws/gravitational/teleport-operator:$(cat "/go/var/minor-version")-arm - - docker push public.ecr.aws/gravitational/teleport-operator:$(cat "/go/var/minor-version")-arm - - docker logout "public.ecr.aws" - environment: - AWS_PROFILE: ecr-production - DOCKERHUB_PASSWORD: - from_secret: DOCKERHUB_READONLY_TOKEN - DOCKERHUB_USERNAME: - from_secret: DOCKERHUB_USERNAME - volumes: - - name: awsconfig - path: /root/.aws - - name: dockersock - path: /var/run - depends_on: - - Build teleport-operator image "teleport-operator:v12-arm" -- name: Tag and push image "teleport-operator:v12-arm64" to ECR - production - image: docker - commands: - - docker pull --platform "linux/arm64" drone-docker-registry:5000/teleport-operator:$(cat - "/go/var/full-version")-arm64 - - apk add --no-cache aws-cli - - aws ecr-public get-login-password --region=us-east-1 | docker login -u="AWS" --password-stdin - public.ecr.aws - - printenv DOCKERHUB_PASSWORD | docker login -u="$DOCKERHUB_USERNAME" --password-stdin - - docker manifest inspect public.ecr.aws/gravitational/teleport-operator:$(cat "/go/var/full-version")-arm64 - > /dev/null 2>&1 && echo 'Found existing image, skipping' || (docker tag drone-docker-registry:5000/teleport-operator:$(cat - "/go/var/full-version")-arm64 public.ecr.aws/gravitational/teleport-operator:$(cat - "/go/var/full-version")-arm64 && docker push public.ecr.aws/gravitational/teleport-operator:$(cat - "/go/var/full-version")-arm64) - - docker tag drone-docker-registry:5000/teleport-operator:$(cat "/go/var/full-version")-arm64 - public.ecr.aws/gravitational/teleport-operator:$(cat "/go/var/major-version")-arm64 - - docker push public.ecr.aws/gravitational/teleport-operator:$(cat "/go/var/major-version")-arm64 - - docker tag drone-docker-registry:5000/teleport-operator:$(cat "/go/var/full-version")-arm64 - public.ecr.aws/gravitational/teleport-operator:$(cat "/go/var/minor-version")-arm64 - - docker push public.ecr.aws/gravitational/teleport-operator:$(cat "/go/var/minor-version")-arm64 - - docker logout "public.ecr.aws" - environment: - AWS_PROFILE: ecr-production - DOCKERHUB_PASSWORD: - from_secret: DOCKERHUB_READONLY_TOKEN - DOCKERHUB_USERNAME: - from_secret: DOCKERHUB_USERNAME - volumes: - - name: awsconfig - path: /root/.aws - - name: dockersock - path: /var/run - depends_on: - - Build teleport-operator image "teleport-operator:v12-arm64" -- name: Create manifest and push "teleport-operator:major" to ECR - production - image: docker - commands: - - apk add --no-cache aws-cli - - aws ecr-public get-login-password --region=us-east-1 | docker login -u="AWS" --password-stdin - public.ecr.aws - - printenv DOCKERHUB_PASSWORD | docker login -u="$DOCKERHUB_USERNAME" --password-stdin - - docker manifest create public.ecr.aws/gravitational/teleport-operator:$(cat "/go/var/major-version") - --amend public.ecr.aws/gravitational/teleport-operator:$(cat "/go/var/major-version")-amd64 - --amend public.ecr.aws/gravitational/teleport-operator:$(cat "/go/var/major-version")-arm - --amend public.ecr.aws/gravitational/teleport-operator:$(cat "/go/var/major-version")-arm64 - - docker manifest push public.ecr.aws/gravitational/teleport-operator:$(cat "/go/var/major-version") - - docker logout "public.ecr.aws" - environment: - AWS_PROFILE: ecr-production - DOCKERHUB_PASSWORD: - from_secret: DOCKERHUB_READONLY_TOKEN - DOCKERHUB_USERNAME: - from_secret: DOCKERHUB_USERNAME - volumes: - - name: awsconfig - path: /root/.aws - - name: dockersock - path: /var/run - depends_on: - - Tag and push image "teleport-operator:v12-amd64" to ECR - production - - Tag and push image "teleport-operator:v12-arm" to ECR - production - - Tag and push image "teleport-operator:v12-arm64" to ECR - production -- name: Create manifest and push "teleport-operator:minor" to ECR - production - image: docker - commands: - - apk add --no-cache aws-cli - - aws ecr-public get-login-password --region=us-east-1 | docker login -u="AWS" --password-stdin - public.ecr.aws - - printenv DOCKERHUB_PASSWORD | docker login -u="$DOCKERHUB_USERNAME" --password-stdin - - docker manifest create public.ecr.aws/gravitational/teleport-operator:$(cat "/go/var/minor-version") - --amend public.ecr.aws/gravitational/teleport-operator:$(cat "/go/var/minor-version")-amd64 - --amend public.ecr.aws/gravitational/teleport-operator:$(cat "/go/var/minor-version")-arm - --amend public.ecr.aws/gravitational/teleport-operator:$(cat "/go/var/minor-version")-arm64 - - docker manifest push public.ecr.aws/gravitational/teleport-operator:$(cat "/go/var/minor-version") - - docker logout "public.ecr.aws" - environment: - AWS_PROFILE: ecr-production - DOCKERHUB_PASSWORD: - from_secret: DOCKERHUB_READONLY_TOKEN - DOCKERHUB_USERNAME: - from_secret: DOCKERHUB_USERNAME - volumes: - - name: awsconfig - path: /root/.aws - - name: dockersock - path: /var/run - depends_on: - - Tag and push image "teleport-operator:v12-amd64" to ECR - production - - Tag and push image "teleport-operator:v12-arm" to ECR - production - - Tag and push image "teleport-operator:v12-arm64" to ECR - production -- name: Create manifest and push "teleport-operator:full" to ECR - production - image: docker - commands: - - apk add --no-cache aws-cli - - aws ecr-public get-login-password --region=us-east-1 | docker login -u="AWS" --password-stdin - public.ecr.aws - - printenv DOCKERHUB_PASSWORD | docker login -u="$DOCKERHUB_USERNAME" --password-stdin - - docker manifest inspect public.ecr.aws/gravitational/teleport-operator:$(cat "/go/var/full-version") - > /dev/null 2>&1 && echo 'Found existing image, skipping' || (docker manifest - create public.ecr.aws/gravitational/teleport-operator:$(cat "/go/var/full-version") - --amend public.ecr.aws/gravitational/teleport-operator:$(cat "/go/var/full-version")-amd64 - --amend public.ecr.aws/gravitational/teleport-operator:$(cat "/go/var/full-version")-arm - --amend public.ecr.aws/gravitational/teleport-operator:$(cat "/go/var/full-version")-arm64 - && docker manifest push public.ecr.aws/gravitational/teleport-operator:$(cat "/go/var/full-version")) - - docker logout "public.ecr.aws" - environment: - AWS_PROFILE: ecr-production - DOCKERHUB_PASSWORD: - from_secret: DOCKERHUB_READONLY_TOKEN - DOCKERHUB_USERNAME: - from_secret: DOCKERHUB_USERNAME - volumes: - - name: awsconfig - path: /root/.aws - - name: dockersock - path: /var/run - depends_on: - - Tag and push image "teleport-operator:v12-amd64" to ECR - production - - Tag and push image "teleport-operator:v12-arm" to ECR - production - - Tag and push image "teleport-operator:v12-arm64" to ECR - production -services: -- name: Start Docker - image: docker:dind - privileged: true - volumes: - - name: dockersock - path: /var/run -- name: drone-docker-registry - image: registry:2 - privileged: false - volumes: [] -volumes: -- name: awsconfig - temp: {} -- name: dockersock - temp: {} -- name: dockerconfig - temp: {} -image_pull_secrets: -- DOCKERHUB_CREDENTIALS - --- ################################################ # Generated using dronegen, do not edit by hand! @@ -5507,6 +2951,6 @@ image_pull_secrets: - DOCKERHUB_CREDENTIALS --- kind: signature -hmac: 9b1631ac46ce1c77ec3fbb4c6d83a243d5cf1a26b34b67dc5e561c064fcdf0fd +hmac: 47d3b4d44c75e4b7c86eba814ac8cdb16c8de36d493b2e1661cdc28d7bbe601b ... diff --git a/dronegen/buildbox.go b/dronegen/buildbox.go deleted file mode 100644 index 0862dc13500..00000000000 --- a/dronegen/buildbox.go +++ /dev/null @@ -1,122 +0,0 @@ -/* - * Teleport - * Copyright (C) 2023 Gravitational, Inc. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - */ - -package main - -import "fmt" - -func buildboxPipelineSteps() []step { - steps := []step{ - { - Name: "Check out code", - Image: "docker:git", - Commands: []string{ - `git clone --depth 1 --single-branch --branch ${DRONE_SOURCE_BRANCH:-master} https://github.com/gravitational/${DRONE_REPO_NAME}.git .`, - `git checkout ${DRONE_COMMIT}`, - }, - }, - waitForDockerStep(), - kubernetesAssumeAwsRoleStep(kubernetesRoleSettings{ - awsRoleSettings: awsRoleSettings{ - awsAccessKeyID: value{fromSecret: "STAGING_BUILDBOX_DRONE_USER_ECR_KEY"}, - awsSecretAccessKey: value{fromSecret: "STAGING_BUILDBOX_DRONE_USER_ECR_SECRET"}, - role: value{fromSecret: "STAGING_BUILDBOX_DRONE_ECR_AWS_ROLE"}, - }, - configVolume: volumeRefAwsConfig, - name: "Configure Staging AWS Profile", - profile: "staging", - }), - kubernetesAssumeAwsRoleStep(kubernetesRoleSettings{ - awsRoleSettings: awsRoleSettings{ - awsAccessKeyID: value{fromSecret: "PRODUCTION_BUILDBOX_DRONE_USER_ECR_KEY"}, - awsSecretAccessKey: value{fromSecret: "PRODUCTION_BUILDBOX_DRONE_USER_ECR_SECRET"}, - role: value{fromSecret: "PRODUCTION_BUILDBOX_DRONE_ECR_AWS_ROLE"}, - }, - configVolume: volumeRefAwsConfig, - name: "Configure Production AWS Profile", - append: true, - profile: "production", - }), - } - - for _, name := range []string{"buildbox", "buildbox-arm", "buildbox-centos7"} { - for _, fips := range []bool{false, true} { - // FIPS is only supported on centos7 - if fips && name != "buildbox-centos7" { - continue - } - steps = append(steps, buildboxPipelineStep(name, fips)) - } - } - return steps -} - -func buildboxPipelineStep(buildboxName string, fips bool) step { - var buildboxTagSuffix string - if buildboxName == "buildbox-centos7" { - // Drone-managed buildboxes are only amd64 - buildboxTagSuffix = "-amd64" - } - if fips { - buildboxName += "-fips" - } - return step{ - Name: "Build and push " + buildboxName, - Image: "docker", - Pull: "if-not-exists", - Volumes: []volumeRef{volumeRefAwsConfig, volumeRefDocker, volumeRefDockerConfig}, - Commands: []string{ - `apk add --no-cache make aws-cli go`, - `chown -R $UID:$GID /go`, - // Authenticate to staging registry - `aws ecr get-login-password --profile staging --region=us-west-2 | docker login -u="AWS" --password-stdin ` + StagingRegistry, - // Build buildbox image - fmt.Sprintf(`make -C build.assets %s`, buildboxName), - // Retag for staging registry - fmt.Sprintf(`docker tag %s/gravitational/teleport-%s:$BUILDBOX_VERSION%s %s/gravitational/teleport-%s:$BUILDBOX_VERSION-$DRONE_COMMIT_SHA`, GitHubRegistry, buildboxName, buildboxTagSuffix, StagingRegistry, buildboxName), - // Push to staging registry - fmt.Sprintf(`docker push %s/gravitational/teleport-%s:$BUILDBOX_VERSION-$DRONE_COMMIT_SHA`, StagingRegistry, buildboxName), - // Authenticate to production registry - `docker logout ` + StagingRegistry, - `aws ecr-public get-login-password --profile production --region=us-east-1 | docker login -u="AWS" --password-stdin ` + ProductionRegistry, - // Retag for production registry - fmt.Sprintf(`docker tag %s/gravitational/teleport-%s:$BUILDBOX_VERSION%s %s/gravitational/teleport-%s:$BUILDBOX_VERSION`, GitHubRegistry, buildboxName, buildboxTagSuffix, ProductionRegistry, buildboxName), - // Push to production registry - fmt.Sprintf(`docker push %s/gravitational/teleport-%s:$BUILDBOX_VERSION`, ProductionRegistry, buildboxName), - }, - } -} - -func buildboxPipeline() pipeline { - p := newKubePipeline("build-buildboxes") - p.Environment = map[string]value{ - "BUILDBOX_VERSION": buildboxVersion, - "UID": {raw: "1000"}, - "GID": {raw: "1000"}, - } - - // only on master for now; add the release branch name when forking a new release series. - p.Trigger = pushTriggerForBranch("master", "branch/*") - p.Workspace = workspace{Path: "/go/src/github.com/gravitational/teleport"} - p.Volumes = []volume{volumeAwsConfig, volumeDocker, volumeDockerConfig} - p.Services = []service{ - dockerService(), - } - p.Steps = buildboxPipelineSteps() - return p -} diff --git a/dronegen/common.go b/dronegen/common.go index be8bb004c8c..febfaeffb97 100644 --- a/dronegen/common.go +++ b/dronegen/common.go @@ -19,10 +19,7 @@ package main import ( - "bytes" "fmt" - "log" - "os/exec" "strings" ) @@ -109,32 +106,6 @@ var ( } ) -var buildboxVersion value - -func init() { - v, err := exec.Command("make", "-s", "-C", "build.assets", "print-buildbox-version").Output() - if err != nil { - log.Fatalf("could not get buildbox version: %v", err) - } - buildboxVersion = value{raw: string(bytes.TrimSpace(v))} -} - -func pushTriggerForBranch(branches ...string) trigger { - t := trigger{ - Event: triggerRef{Include: []string{"push"}}, - Repo: triggerRef{Include: []string{"gravitational/teleport"}}, - } - t.Branch.Include = append(t.Branch.Include, branches...) - return t -} - -func cronTrigger(cronJobNames []string) trigger { - return trigger{ - Cron: triggerRef{Include: cronJobNames}, - Repo: triggerRef{Include: []string{"gravitational/teleport"}}, - } -} - func cloneRepoCommands(cloneDirectory, commit string) []string { return []string{ fmt.Sprintf("mkdir -pv %q", cloneDirectory), diff --git a/dronegen/container_image_triggers.go b/dronegen/container_image_triggers.go index 695b1e74391..69009c80069 100644 --- a/dronegen/container_image_triggers.go +++ b/dronegen/container_image_triggers.go @@ -97,72 +97,6 @@ func NewPromoteTrigger(branchMajorVersion string) *TriggerInfo { } } -func NewCronTrigger(latestMajorVersions []string) *TriggerInfo { - if len(latestMajorVersions) == 0 { - return nil - } - - majorVersionVarBasePath := "/go/vars/full-version" - - supportedVersions := make([]*ReleaseVersion, 0, len(latestMajorVersions)) - if len(latestMajorVersions) > 0 { - latestMajorVersion := latestMajorVersions[0] - supportedVersions = append(supportedVersions, &ReleaseVersion{ - MajorVersion: latestMajorVersion, - ShellVersion: readCronShellVersionCommand(majorVersionVarBasePath, latestMajorVersion), - RelativeVersionName: "current-version", - SetupSteps: []step{getLatestSemverStep(latestMajorVersion, majorVersionVarBasePath)}, - }) - - if len(latestMajorVersions) > 1 { - for i, majorVersion := range latestMajorVersions[1:] { - supportedVersions = append(supportedVersions, &ReleaseVersion{ - MajorVersion: majorVersion, - ShellVersion: readCronShellVersionCommand(majorVersionVarBasePath, majorVersion), - // Omitted because it doesn't matter here - latest tags should always be built - // ShellIsPrerelease: // , - RelativeVersionName: fmt.Sprintf("previous-version-%d", i+1), - SetupSteps: []step{getLatestSemverStep(majorVersion, majorVersionVarBasePath)}, - }) - } - } - } - - return &TriggerInfo{ - Trigger: cronTrigger([]string{"teleport-container-images-cron"}), - Name: "cron", - Flags: &TriggerFlags{ - ShouldAffectProductionImages: true, - ShouldBuildNewImages: true, - UseUniqueStagingTag: true, - ShouldOnlyPublishFullSemver: false, - }, - SupportedVersions: supportedVersions, - } -} - -func getLatestSemverStep(majorVersion string, majorVersionVarBasePath string) step { - // We don't use "/go/src/github.com/gravitational/teleport" here as a later stage - // may need to clone a different version, and "/go" persists between steps - cloneDirectory := "/tmp/teleport" - majorVersionVarPath := fmt.Sprintf("%s-%s", majorVersionVarBasePath, majorVersion) - return step{ - Name: fmt.Sprintf("Find the latest available semver for %s", majorVersion), - Image: fmt.Sprintf("golang:%s", GoVersion), - Commands: append( - cloneRepoCommands(cloneDirectory, fmt.Sprintf("branch/%s", majorVersion)), - fmt.Sprintf("mkdir -pv $(dirname %q)", majorVersionVarPath), - fmt.Sprintf("cd %q", path.Join(cloneDirectory, "build.assets", "tooling", "cmd", "query-latest")), - fmt.Sprintf("go run . %q | sed 's/v//' > %q", majorVersion, majorVersionVarPath), - fmt.Sprintf("echo Found full semver \"$(cat %q)\" for major version %q", majorVersionVarPath, majorVersion), - ), - } -} - -func readCronShellVersionCommand(majorVersionDirectory, majorVersion string) string { - return fmt.Sprintf("v$(cat '%s-%s')", majorVersionDirectory, majorVersion) -} - func recordPrereleaseStatus(shellVersion, recordFilePath string) step { clonePath := "/tmp/repo" commands := []string{ diff --git a/dronegen/container_images.go b/dronegen/container_images.go index a2b0c872e5a..fcae21d885c 100644 --- a/dronegen/container_images.go +++ b/dronegen/container_images.go @@ -32,7 +32,7 @@ import ( const branchMajorVersion int = 15 const latestReleaseVersion int = 14 -func buildPipelineVersions() (string, []string) { +func buildPipelineVersions() string { branchMajorSemver := fmt.Sprintf("v%d", branchMajorVersion) // Note that this only matters in the context of the master branch updateVersionCount := 3 @@ -41,19 +41,14 @@ func buildPipelineVersions() (string, []string) { imageUpdateSemvers[i] = fmt.Sprintf("v%d", latestReleaseVersion-i) } - return branchMajorSemver, imageUpdateSemvers + return branchMajorSemver } func buildContainerImagePipelines() []pipeline { - branchMajorSemver, imageUpdateSemvers := buildPipelineVersions() + branchMajorSemver := buildPipelineVersions() triggers := []*TriggerInfo{ NewPromoteTrigger(branchMajorSemver), - NewCronTrigger(imageUpdateSemvers), - } - - if configureForPRTestingOnly { - triggers = append(triggers, NewTestTrigger(prBranch, branchMajorSemver)) } pipelines := make([]pipeline, 0, len(triggers)) diff --git a/dronegen/container_images_repos.go b/dronegen/container_images_repos.go index 961d5287ac7..2d77f4b905b 100644 --- a/dronegen/container_images_repos.go +++ b/dronegen/container_images_repos.go @@ -26,6 +26,12 @@ import ( "golang.org/x/exp/maps" ) +const ( + ProductionRegistryOrg string = "gravitational" + PublicEcrRegion string = "us-east-1" + StagingEcrRegion string = "us-west-2" +) + // Describes a registry and repo that images are to be published to. type ContainerRepo struct { Name string // Human readable name for the repo. Does not need to match remote value. @@ -51,17 +57,6 @@ func NewEcrContainerRepo(accessKeyIDSecret, secretAccessKeySecret, roleSecret, d profileName := fmt.Sprintf("ecr-%s", name) registryOrg := ProductionRegistryOrg - if configureForPRTestingOnly { - accessKeyIDSecret = testingSecretPrefix + accessKeyIDSecret - secretAccessKeySecret = testingSecretPrefix + secretAccessKeySecret - roleSecret = testingSecretPrefix + roleSecret - registryOrg = testingECRRegistryOrg - - if !isPublic { - domain = testingECRDomain - ecrRegion = testingECRRegion - } - } loginCommands := []string{ "apk add --no-cache aws-cli", diff --git a/dronegen/container_images_testing.go b/dronegen/container_images_testing.go deleted file mode 100644 index 04146a13630..00000000000 --- a/dronegen/container_images_testing.go +++ /dev/null @@ -1,87 +0,0 @@ -/* - * Teleport - * Copyright (C) 2023 Gravitational, Inc. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - */ - -package main - -// This file contains variables and functions to make testing of the container image build process -// more simple and easier. - -// To run one of these pipelines locally: -// # Drone requires certain variables to be set -// export DRONE_REMOTE_URL="https://github.com/gravitational/teleport" -// export DRONE_SOURCE_BRANCH="$(git branch --show-current)" -// # `drone exec` does not support `exec` or `kubernetes` pipelines -// sed -i '' 's/type\: kubernetes/type\: docker/' .drone.yml && sed -i '' 's/type\: exec/type\: docker/' .drone.yml -// # Drone has a bug where "workspace" is appended to "/drone/src". This fixes that by updating references -// sed -i '' 's~/go/~/drone/src/go/~g' .drone.yml -// # Pull the current branch instead of v11 -// sed -i '' "s~git checkout -qf \"\$(cat '/go/vars/full-version/v11')\"~git checkout -qf \"${DRONE_SOURCE_BRANCH}\"~" .drone.yml -// # `drone exec` does not properly map the workspace path. This creates a volume to be shared between steps -// # at the correct path -// DOCKER_VOLUME_NAME="go" -// docker volume create "$DOCKER_VOLUME_NAME" -// drone exec --trusted --pipeline teleport-container-images-current-version-cron --clone=false --volume "${DOCKER_VOLUME_NAME}:/go" -// # Cleanup -// docker volume rm "$DOCKER_VOLUME_NAME" - -// If you are working on a PR/testing changes to this file you should configure the following for Drone testing: -// 1. Publish the branch you're working on -// 2. Set `prBranch` to the name of the branch in (1) -// 3. Set `configureForPRTestingOnly` to true -// 4. Create a public and private ECR repos for "teleport", "teleport-ent", "teleport-operator", "teleport-lab" -// 5. Set `testingECRRegistryOrg` to the org name(s) used in (4) -// 6. Set the `ECRTestingDomain` to the domain used for the private ECR repos -// 7. Create two separate IAM users, each with full access to either the public ECR repo OR the private ECR repo -// 8. Set the Drone secrets for the secret names listed in "GetContainerRepos" to the credentials in (7, 8), prefixed by the value of `testingSecretPrefix` -// -// On each commit, after running `make dronegen``, run the following commands and resign the file: -// # Pull the current branch instead of v11 so the appropriate dockerfile gets loaded -// sed -i '' "s~git checkout -qf \"\$(cat '/go/vars/full-version/v11')\"~git checkout -qf \"${DRONE_SOURCE_BRANCH}\"~" .drone.yml -// -// When finishing up your PR check the following: -// * The testing secrets added to Drone have been removed -// * `configureForPRTestingOnly` has been set to false, and `make dronegen` has been reran afterwords - -const ( - configureForPRTestingOnly bool = false - testingSecretPrefix string = "TEST_" - testingECRRegistryOrg string = "u8j2q1d9" - testingECRRegion string = "us-east-2" - prBranch string = "" // "fred/multiarch-teleport-actual-container-images" - testingECRDomain string = "278576220453.dkr.ecr.us-east-2.amazonaws.com" -) - -const ( - ProductionRegistryOrg string = "gravitational" - PublicEcrRegion string = "us-east-1" - StagingEcrRegion string = "us-west-2" -) - -func NewTestTrigger(triggerBranch, testMajorVersion string) *TriggerInfo { - // baseTrigger := NewTagTrigger(testMajorVersion) - // baseTrigger := NewPromoteTrigger(testMajorVersion) - baseTrigger := NewCronTrigger([]string{testMajorVersion}) - baseTrigger.Name = "Test trigger on push" - baseTrigger.Trigger = trigger{ - Repo: triggerRef{Include: []string{"gravitational/teleport"}}, - Event: triggerRef{Include: []string{"push"}}, - Branch: triggerRef{Include: []string{triggerBranch}}, - } - - return baseTrigger -} diff --git a/dronegen/main.go b/dronegen/main.go index 5870c67dba0..ae54d21b84e 100644 --- a/dronegen/main.go +++ b/dronegen/main.go @@ -37,8 +37,6 @@ func main() { pipelines = append(pipelines, tagPipelines()...) pipelines = append(pipelines, cronPipelines()...) pipelines = append(pipelines, promoteBuildPipelines()...) - pipelines = append(pipelines, updateDocsPipeline()) - pipelines = append(pipelines, buildboxPipeline()) pipelines = append(pipelines, buildContainerImagePipelines()...) pipelines = append(pipelines, publishReleasePipeline()) diff --git a/dronegen/misc.go b/dronegen/misc.go deleted file mode 100644 index 49458a1945e..00000000000 --- a/dronegen/misc.go +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Teleport - * Copyright (C) 2023 Gravitational, Inc. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - */ - -package main - -func updateDocsPipeline() pipeline { - // TODO: migrate - return pipeline{} -}