diff --git a/.cloudbuild/ci/integration-tests.yaml b/.cloudbuild/ci/integration-tests.yaml index 25cc62f3aff..c5c5d31684d 100644 --- a/.cloudbuild/ci/integration-tests.yaml +++ b/.cloudbuild/ci/integration-tests.yaml @@ -12,7 +12,7 @@ options: steps: # Run the integration tests. Actual content of this job depends on the changes # detected in the PR - - name: quay.io/gravitational/teleport-buildbox:teleport10 + - name: public.ecr.aws/gravitational/teleport-buildbox:teleport11 id: run-tests dir: /workspace/.cloudbuild/scripts entrypoint: bash diff --git a/.cloudbuild/ci/lint.yaml b/.cloudbuild/ci/lint.yaml index d93c051dcc1..0aa46266386 100644 --- a/.cloudbuild/ci/lint.yaml +++ b/.cloudbuild/ci/lint.yaml @@ -1,5 +1,5 @@ steps: - - name: quay.io/gravitational/teleport-buildbox:teleport11 + - name: public.ecr.aws/gravitational/teleport-buildbox:teleport11 id: lint args: ['make', 'lint'] options: diff --git a/.cloudbuild/ci/unit-tests.yaml b/.cloudbuild/ci/unit-tests.yaml index 22b1c02efbf..540c65048e5 100644 --- a/.cloudbuild/ci/unit-tests.yaml +++ b/.cloudbuild/ci/unit-tests.yaml @@ -12,7 +12,7 @@ options: steps: # Run the unit tests. Actual content of this job depends on the changes # detected in the PR - - name: quay.io/gravitational/teleport-buildbox:teleport11 + - name: public.ecr.aws/gravitational/teleport-buildbox:teleport11 id: run-tests dir: /workspace/.cloudbuild/scripts entrypoint: bash diff --git a/.drone.yml b/.drone.yml index a5b16a91b6e..92d20d4735c 100644 --- a/.drone.yml +++ b/.drone.yml @@ -5337,7 +5337,7 @@ volumes: ################################################ # Generated using dronegen, do not edit by hand! # Use 'make dronegen' to update. -# Generated at dronegen/buildbox.go:67 +# Generated at dronegen/buildbox.go:83 ################################################ kind: pipeline @@ -5379,48 +5379,154 @@ steps: - name: buildbox image: docker commands: - - apk add --no-cache make + - apk add --no-cache make aws-cli - chown -R $UID:$GID /go - - docker login -u="$$QUAYIO_DOCKER_USERNAME" -p="$$QUAYIO_DOCKER_PASSWORD" quay.io + - export AWS_ACCESS_KEY_ID="$STAGING_AWS_ACCESS_KEY_ID" + - export AWS_SECRET_ACCESS_KEY="$STAGING_AWS_SECRET_ACCESS_KEY" + - aws ecr get-login-password --region=us-west-2 | docker login -u="AWS" --password-stdin + 146628656107.dkr.ecr.us-west-2.amazonaws.com - make -C build.assets buildbox - - docker push quay.io/gravitational/teleport-buildbox:$BUILDBOX_VERSION + - docker tag public.ecr.aws/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 + - export AWS_ACCESS_KEY_ID="$PROD_AWS_ACCESS_KEY_ID" + - export AWS_SECRET_ACCESS_KEY="$PROD_AWS_SECRET_ACCESS_KEY" + - aws ecr-public get-login-password --region=us-east-1 | docker login -u="AWS" --password-stdin + public.ecr.aws + - docker push public.ecr.aws/gravitational/teleport-buildbox:$BUILDBOX_VERSION environment: - QUAYIO_DOCKER_PASSWORD: - from_secret: QUAYIO_DOCKER_PASSWORD - QUAYIO_DOCKER_USERNAME: - from_secret: QUAYIO_DOCKER_USERNAME + PROD_AWS_ACCESS_KEY_ID: + from_secret: PRODUCTION_BUILDBOX_DRONE_USER_ECR_KEY + PROD_AWS_SECRET_ACCESS_KEY: + from_secret: PRODUCTION_BUILDBOX_DRONE_USER_ECR_SECRET + STAGING_AWS_ACCESS_KEY_ID: + from_secret: STAGING_BUILDBOX_DRONE_USER_ECR_KEY + STAGING_AWS_SECRET_ACCESS_KEY: + from_secret: STAGING_BUILDBOX_DRONE_USER_ECR_SECRET volumes: - name: dockersock path: /var/run - name: buildbox-fips image: docker commands: - - apk add --no-cache make + - apk add --no-cache make aws-cli - chown -R $UID:$GID /go - - docker login -u="$$QUAYIO_DOCKER_USERNAME" -p="$$QUAYIO_DOCKER_PASSWORD" quay.io + - export AWS_ACCESS_KEY_ID="$STAGING_AWS_ACCESS_KEY_ID" + - export AWS_SECRET_ACCESS_KEY="$STAGING_AWS_SECRET_ACCESS_KEY" + - aws ecr get-login-password --region=us-west-2 | docker login -u="AWS" --password-stdin + 146628656107.dkr.ecr.us-west-2.amazonaws.com - make -C build.assets buildbox-fips - - docker push quay.io/gravitational/teleport-buildbox-fips:$BUILDBOX_VERSION + - docker tag public.ecr.aws/gravitational/teleport-buildbox-fips:$BUILDBOX_VERSION + 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-buildbox-fips:$BUILDBOX_VERSION-$DRONE_COMMIT_SHA + - docker push 146628656107.dkr.ecr.us-west-2.amazonaws.com/gravitational/teleport-buildbox-fips:$BUILDBOX_VERSION-$DRONE_COMMIT_SHA + - docker logout 146628656107.dkr.ecr.us-west-2.amazonaws.com + - export AWS_ACCESS_KEY_ID="$PROD_AWS_ACCESS_KEY_ID" + - export AWS_SECRET_ACCESS_KEY="$PROD_AWS_SECRET_ACCESS_KEY" + - aws ecr-public get-login-password --region=us-east-1 | docker login -u="AWS" --password-stdin + public.ecr.aws + - docker push public.ecr.aws/gravitational/teleport-buildbox-fips:$BUILDBOX_VERSION environment: - QUAYIO_DOCKER_PASSWORD: - from_secret: QUAYIO_DOCKER_PASSWORD - QUAYIO_DOCKER_USERNAME: - from_secret: QUAYIO_DOCKER_USERNAME + PROD_AWS_ACCESS_KEY_ID: + from_secret: PRODUCTION_BUILDBOX_DRONE_USER_ECR_KEY + PROD_AWS_SECRET_ACCESS_KEY: + from_secret: PRODUCTION_BUILDBOX_DRONE_USER_ECR_SECRET + STAGING_AWS_ACCESS_KEY_ID: + from_secret: STAGING_BUILDBOX_DRONE_USER_ECR_KEY + STAGING_AWS_SECRET_ACCESS_KEY: + from_secret: STAGING_BUILDBOX_DRONE_USER_ECR_SECRET volumes: - name: dockersock path: /var/run - name: buildbox-arm image: docker commands: - - apk add --no-cache make + - apk add --no-cache make aws-cli - chown -R $UID:$GID /go - - docker login -u="$$QUAYIO_DOCKER_USERNAME" -p="$$QUAYIO_DOCKER_PASSWORD" quay.io + - export AWS_ACCESS_KEY_ID="$STAGING_AWS_ACCESS_KEY_ID" + - export AWS_SECRET_ACCESS_KEY="$STAGING_AWS_SECRET_ACCESS_KEY" + - aws ecr get-login-password --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 push quay.io/gravitational/teleport-buildbox-arm:$BUILDBOX_VERSION + - docker tag public.ecr.aws/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 + - export AWS_ACCESS_KEY_ID="$PROD_AWS_ACCESS_KEY_ID" + - export AWS_SECRET_ACCESS_KEY="$PROD_AWS_SECRET_ACCESS_KEY" + - aws ecr-public get-login-password --region=us-east-1 | docker login -u="AWS" --password-stdin + public.ecr.aws + - docker push public.ecr.aws/gravitational/teleport-buildbox-arm:$BUILDBOX_VERSION environment: - QUAYIO_DOCKER_PASSWORD: - from_secret: QUAYIO_DOCKER_PASSWORD - QUAYIO_DOCKER_USERNAME: - from_secret: QUAYIO_DOCKER_USERNAME + PROD_AWS_ACCESS_KEY_ID: + from_secret: PRODUCTION_BUILDBOX_DRONE_USER_ECR_KEY + PROD_AWS_SECRET_ACCESS_KEY: + from_secret: PRODUCTION_BUILDBOX_DRONE_USER_ECR_SECRET + STAGING_AWS_ACCESS_KEY_ID: + from_secret: STAGING_BUILDBOX_DRONE_USER_ECR_KEY + STAGING_AWS_SECRET_ACCESS_KEY: + from_secret: STAGING_BUILDBOX_DRONE_USER_ECR_SECRET + volumes: + - name: dockersock + path: /var/run +- name: buildbox-centos7 + image: docker + commands: + - apk add --no-cache make aws-cli + - chown -R $UID:$GID /go + - export AWS_ACCESS_KEY_ID="$STAGING_AWS_ACCESS_KEY_ID" + - export AWS_SECRET_ACCESS_KEY="$STAGING_AWS_SECRET_ACCESS_KEY" + - aws ecr get-login-password --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 public.ecr.aws/gravitational/teleport-buildbox-centos7:$BUILDBOX_VERSION + 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 + - export AWS_ACCESS_KEY_ID="$PROD_AWS_ACCESS_KEY_ID" + - export AWS_SECRET_ACCESS_KEY="$PROD_AWS_SECRET_ACCESS_KEY" + - aws ecr-public get-login-password --region=us-east-1 | docker login -u="AWS" --password-stdin + public.ecr.aws + - docker push public.ecr.aws/gravitational/teleport-buildbox-centos7:$BUILDBOX_VERSION + environment: + PROD_AWS_ACCESS_KEY_ID: + from_secret: PRODUCTION_BUILDBOX_DRONE_USER_ECR_KEY + PROD_AWS_SECRET_ACCESS_KEY: + from_secret: PRODUCTION_BUILDBOX_DRONE_USER_ECR_SECRET + STAGING_AWS_ACCESS_KEY_ID: + from_secret: STAGING_BUILDBOX_DRONE_USER_ECR_KEY + STAGING_AWS_SECRET_ACCESS_KEY: + from_secret: STAGING_BUILDBOX_DRONE_USER_ECR_SECRET + volumes: + - name: dockersock + path: /var/run +- name: buildbox-centos7-fips + image: docker + commands: + - apk add --no-cache make aws-cli + - chown -R $UID:$GID /go + - export AWS_ACCESS_KEY_ID="$STAGING_AWS_ACCESS_KEY_ID" + - export AWS_SECRET_ACCESS_KEY="$STAGING_AWS_SECRET_ACCESS_KEY" + - aws ecr get-login-password --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 public.ecr.aws/gravitational/teleport-buildbox-centos7-fips:$BUILDBOX_VERSION + 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 + - export AWS_ACCESS_KEY_ID="$PROD_AWS_ACCESS_KEY_ID" + - export AWS_SECRET_ACCESS_KEY="$PROD_AWS_SECRET_ACCESS_KEY" + - aws ecr-public get-login-password --region=us-east-1 | docker login -u="AWS" --password-stdin + public.ecr.aws + - docker push public.ecr.aws/gravitational/teleport-buildbox-centos7-fips:$BUILDBOX_VERSION + environment: + PROD_AWS_ACCESS_KEY_ID: + from_secret: PRODUCTION_BUILDBOX_DRONE_USER_ECR_KEY + PROD_AWS_SECRET_ACCESS_KEY: + from_secret: PRODUCTION_BUILDBOX_DRONE_USER_ECR_SECRET + STAGING_AWS_ACCESS_KEY_ID: + from_secret: STAGING_BUILDBOX_DRONE_USER_ECR_KEY + STAGING_AWS_SECRET_ACCESS_KEY: + from_secret: STAGING_BUILDBOX_DRONE_USER_ECR_SECRET volumes: - name: dockersock path: /var/run @@ -6365,6 +6471,6 @@ volumes: medium: memory --- kind: signature -hmac: 435e18755866e12d1b6cc018ea75e457c1d6aa4054cdce89f0ffeac9119841f4 +hmac: 733409db7e7bf4d9fa981e163359c19d9157b4bdd4e80e5f3397cb94ff421219 ... diff --git a/build.assets/Dockerfile-arm b/build.assets/Dockerfile-arm index b5bae889570..08d99f276a6 100644 --- a/build.assets/Dockerfile-arm +++ b/build.assets/Dockerfile-arm @@ -1,5 +1,5 @@ ARG BUILDBOX_VERSION -FROM quay.io/gravitational/teleport-buildbox:$BUILDBOX_VERSION +FROM public.ecr.aws/gravitational/teleport-buildbox:$BUILDBOX_VERSION USER root diff --git a/build.assets/Dockerfile-arm-fips b/build.assets/Dockerfile-arm-fips index 571a02c3980..3096fc5bf06 100644 --- a/build.assets/Dockerfile-arm-fips +++ b/build.assets/Dockerfile-arm-fips @@ -1,5 +1,5 @@ ARG BUILDBOX_VERSION -FROM quay.io/gravitational/teleport-buildbox-fips:$BUILDBOX_VERSION +FROM public.ecr.aws/gravitational/teleport-buildbox-fips:$BUILDBOX_VERSION RUN apt-get -y update && \ apt-get -y install gcc-arm-linux-gnueabihf gcc-aarch64-linux-gnu && \ diff --git a/build.assets/Dockerfile-teleterm b/build.assets/Dockerfile-teleterm index da9da1d5cba..54464e629f2 100644 --- a/build.assets/Dockerfile-teleterm +++ b/build.assets/Dockerfile-teleterm @@ -1,7 +1,7 @@ ARG BUILDBOX_VERSION # GRPC_NODE_PLUGIN_BINARY_TYPE can be "prebuilt" or "compiled" ARG GRPC_NODE_PLUGIN_BINARY_TYPE -FROM quay.io/gravitational/teleport-buildbox:$BUILDBOX_VERSION as base +FROM public.ecr.aws/gravitational/teleport-buildbox:$BUILDBOX_VERSION as base ARG BUILDARCH diff --git a/build.assets/Makefile b/build.assets/Makefile index c694bb4f649..f4d66e5256e 100644 --- a/build.assets/Makefile +++ b/build.assets/Makefile @@ -38,13 +38,13 @@ RUNTIME_ARCH := $(RUNTIME_ARCH_$(HOST_ARCH)) PROTOC_VER ?= 3.20.1 GOGO_PROTO_TAG ?= v1.3.2 -BUILDBOX=quay.io/gravitational/teleport-buildbox:$(BUILDBOX_VERSION) -BUILDBOX_FIPS=quay.io/gravitational/teleport-buildbox-fips:$(BUILDBOX_VERSION) -BUILDBOX_CENTOS7=quay.io/gravitational/teleport-buildbox-centos7:$(BUILDBOX_VERSION) -BUILDBOX_CENTOS7_FIPS=quay.io/gravitational/teleport-buildbox-centos7-fips:$(BUILDBOX_VERSION) -BUILDBOX_ARM=quay.io/gravitational/teleport-buildbox-arm:$(BUILDBOX_VERSION) -BUILDBOX_ARM_FIPS=quay.io/gravitational/teleport-buildbox-arm-fips:$(BUILDBOX_VERSION) -BUILDBOX_TELETERM=quay.io/gravitational/teleport-buildbox-teleterm:$(BUILDBOX_VERSION) +BUILDBOX=public.ecr.aws/gravitational/teleport-buildbox:$(BUILDBOX_VERSION) +BUILDBOX_FIPS=public.ecr.aws/gravitational/teleport-buildbox-fips:$(BUILDBOX_VERSION) +BUILDBOX_CENTOS7=public.ecr.aws/gravitational/teleport-buildbox-centos7:$(BUILDBOX_VERSION) +BUILDBOX_CENTOS7_FIPS=public.ecr.aws/gravitational/teleport-buildbox-centos7-fips:$(BUILDBOX_VERSION) +BUILDBOX_ARM=public.ecr.aws/gravitational/teleport-buildbox-arm:$(BUILDBOX_VERSION) +BUILDBOX_ARM_FIPS=public.ecr.aws/gravitational/teleport-buildbox-arm-fips:$(BUILDBOX_VERSION) +BUILDBOX_TELETERM=public.ecr.aws/gravitational/teleport-buildbox-teleterm:$(BUILDBOX_VERSION) # These variables are used to dynamically change the name of the buildbox Docker image used by the 'release' # target. The other solution was to remove the 'buildbox' dependency from the 'release' target, but this would diff --git a/docker/Dockerfile b/docker/Dockerfile index 36fddca288a..a26cb17cd26 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -1,6 +1,6 @@ # The base image (buildbox:latest) is built by running `make -C build.assets` # from the base repo directory $GOPATH/gravitational.com/teleport -FROM quay.io/gravitational/teleport-buildbox:teleport11 +FROM public.ecr.aws/gravitational/teleport-buildbox:teleport11 # DEBUG=1 is needed for the Web UI to be loaded from static assets instead # of the binary diff --git a/dronegen/buildbox.go b/dronegen/buildbox.go index f8a08c62325..3d39e1a1a5c 100644 --- a/dronegen/buildbox.go +++ b/dronegen/buildbox.go @@ -29,7 +29,7 @@ func buildboxPipelineSteps() []step { waitForDockerStep(), } - for _, name := range []string{"buildbox", "buildbox-arm"} { + for _, name := range []string{"buildbox", "buildbox-arm", "buildbox-centos7"} { for _, fips := range []bool{false, true} { // FIPS is unsupported on ARM/ARM64 if name == "buildbox-arm" && fips { @@ -49,16 +49,32 @@ func buildboxPipelineStep(buildboxName string, fips bool) step { Name: buildboxName, Image: "docker", Environment: map[string]value{ - "QUAYIO_DOCKER_USERNAME": {fromSecret: "QUAYIO_DOCKER_USERNAME"}, - "QUAYIO_DOCKER_PASSWORD": {fromSecret: "QUAYIO_DOCKER_PASSWORD"}, + "STAGING_AWS_ACCESS_KEY_ID": {fromSecret: "STAGING_BUILDBOX_DRONE_USER_ECR_KEY"}, + "STAGING_AWS_SECRET_ACCESS_KEY": {fromSecret: "STAGING_BUILDBOX_DRONE_USER_ECR_SECRET"}, + "PROD_AWS_ACCESS_KEY_ID": {fromSecret: "PRODUCTION_BUILDBOX_DRONE_USER_ECR_KEY"}, + "PROD_AWS_SECRET_ACCESS_KEY": {fromSecret: "PRODUCTION_BUILDBOX_DRONE_USER_ECR_SECRET"}, }, Volumes: dockerVolumeRefs(), Commands: []string{ - `apk add --no-cache make`, + `apk add --no-cache make aws-cli`, `chown -R $UID:$GID /go`, - `docker login -u="$$QUAYIO_DOCKER_USERNAME" -p="$$QUAYIO_DOCKER_PASSWORD" quay.io`, + // Authenticate to staging registry + `export AWS_ACCESS_KEY_ID="$STAGING_AWS_ACCESS_KEY_ID"`, + `export AWS_SECRET_ACCESS_KEY="$STAGING_AWS_SECRET_ACCESS_KEY"`, + `aws ecr get-login-password --region=us-west-2 | docker login -u="AWS" --password-stdin ` + StagingRegistry, + // Build buildbox image fmt.Sprintf(`make -C build.assets %s`, buildboxName), - fmt.Sprintf(`docker push quay.io/gravitational/teleport-%s:$BUILDBOX_VERSION`, buildboxName), + // Retag for staging registry + fmt.Sprintf(`docker tag %s/gravitational/teleport-%s:$BUILDBOX_VERSION %s/gravitational/teleport-%s:$BUILDBOX_VERSION-$DRONE_COMMIT_SHA`, ProductionRegistry, buildboxName, 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, + `export AWS_ACCESS_KEY_ID="$PROD_AWS_ACCESS_KEY_ID"`, + `export AWS_SECRET_ACCESS_KEY="$PROD_AWS_SECRET_ACCESS_KEY"`, + `aws ecr-public get-login-password --region=us-east-1 | docker login -u="AWS" --password-stdin ` + ProductionRegistry, + // Push to production registry + fmt.Sprintf(`docker push %s/gravitational/teleport-%s:$BUILDBOX_VERSION`, ProductionRegistry, buildboxName), }, } }