Update buildbox to push to ECR (#15058)

This commit is contained in:
Logan Davis
2022-08-16 21:07:07 +00:00
committed by GitHub
parent 960a82a81c
commit 76606fc18b
10 changed files with 165 additions and 43 deletions
+1 -1
View File
@@ -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
+1 -1
View File
@@ -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:
+1 -1
View File
@@ -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
+129 -23
View File
@@ -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
...
+1 -1
View File
@@ -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
+1 -1
View File
@@ -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 && \
+1 -1
View File
@@ -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
+7 -7
View File
@@ -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
+1 -1
View File
@@ -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
+22 -6
View File
@@ -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),
},
}
}