Move docker image builds to Travis CI (#288)

- Faster
- Multi-Arch works correctly with Docker CI 19.03
This commit is contained in:
Travis Groth 2019-08-31 09:29:05 -04:00 committed by GitHub
parent 247cf4781d
commit e25b65d4b8
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 85 additions and 7 deletions

View file

@ -1,3 +1,9 @@
stages:
- test
- "Docker Test Build"
- name: "Docker Build and Publish"
if: fork = false AND pull_request = false
language: go language: go
go: go:
- 1.x - 1.x
@ -42,3 +48,76 @@ deploy:
- dist/pomerium-windows-amd64.md5 - dist/pomerium-windows-amd64.md5
- dist/pomerium-windows-amd64.sha256 - dist/pomerium-windows-amd64.sha256
skip_cleanup: true skip_cleanup: true
docker_setup: &docker_setup
- curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
- sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
- sudo apt-get update
- sudo apt-get -y -o Dpkg::Options::="--force-confnew" install docker-ce
- docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
docker_login: &docker_login
- echo ${DOCKER_PASSWORD} | docker login -u ${DOCKER_USERNAME} --password-stdin
jobs:
include:
- name: "Test Build amd64"
stage: "Docker Test Build"
install: *docker_setup
script:
- .travis/docker_build.sh ${TRAVIS_REPO_SLUG}:${TRAVIS_COMMIT} Dockerfile
- name: "Build Master amd64"
stage: "Docker Build and Publish"
if: branch = master
install: *docker_setup
before_script: *docker_login
script:
- .travis/docker_build.sh ${TRAVIS_REPO_SLUG}:master Dockerfile
- docker push ${TRAVIS_REPO_SLUG}
- name: "Build Master arm64v8"
if: branch = master
install: *docker_setup
before_script: *docker_login
script:
- .travis/docker_build.sh ${TRAVIS_REPO_SLUG}:arm64v8-master Dockerfile.arm64v8
- docker push ${TRAVIS_REPO_SLUG}
- name: "Build Tag amd64"
if: tag =~ /^v([0-9.]+)$/
install: *docker_setup
before_script: *docker_login
script:
- .travis/docker_build.sh ${TRAVIS_REPO_SLUG}:${TRAVIS_TAG} Dockerfile
- docker tag ${TRAVIS_REPO_SLUG}:${TRAVIS_TAG} ${TRAVIS_REPO_SLUG}:latest
- docker tag ${TRAVIS_REPO_SLUG}:${TRAVIS_TAG} ${TRAVIS_REPO_SLUG}:amd64-latest
- docker tag ${TRAVIS_REPO_SLUG}:${TRAVIS_TAG} ${TRAVIS_REPO_SLUG}:amd64-${TRAVIS_TAG}
- docker push ${TRAVIS_REPO_SLUG}
- name: "Build Tag arm64v8"
if: tag =~ /^v([0-9.]+)$/
install: *docker_setup
before_script: *docker_login
script:
- .travis/docker_build.sh ${TRAVIS_REPO_SLUG}:arm64v8-${TRAVIS_TAG} Dockerfile.arm64v8
- docker tag ${TRAVIS_REPO_SLUG}:arm64v8-${TRAVIS_TAG} ${TRAVIS_REPO_SLUG}:arm64v8-latest
- docker push ${TRAVIS_REPO_SLUG}
- name: "Build Tag arm32v7"
if: tag =~ /^v([0-9.]+)$/
install: *docker_setup
before_script: *docker_login
script:
- .travis/docker_build.sh ${TRAVIS_REPO_SLUG}:arm32v7-${TRAVIS_TAG} Dockerfile.arm32v7
- docker tag ${TRAVIS_REPO_SLUG}:arm32v7-${TRAVIS_TAG} ${TRAVIS_REPO_SLUG}:arm32v7-latest
- docker push ${TRAVIS_REPO_SLUG}
- name: "Build Tag arm32v6"
if: tag =~ /^v([0-9.]+)$/
install: *docker_setup
before_script: *docker_login
script:
- .travis/docker_build.sh ${TRAVIS_REPO_SLUG}:arm32v6-${TRAVIS_TAG} Dockerfile.arm32v6
- docker tag ${TRAVIS_REPO_SLUG}:arm32v6-${TRAVIS_TAG} ${TRAVIS_REPO_SLUG}:arm32v6-latest
- docker push ${TRAVIS_REPO_SLUG}

6
.travis/docker_build.sh Executable file
View file

@ -0,0 +1,6 @@
#!/bin/sh -e
FULL_IMAGE_NAME=${1:-pomerium/pomerium}
DOCKERFILE=${2:-Dockerfile}
docker build -t "${FULL_IMAGE_NAME}" -f "${DOCKERFILE}" .

View file

@ -1,4 +0,0 @@
#!/bin/bash
apt-get update
apt-get install -y curl binfmt-support

View file

@ -1,3 +0,0 @@
#!/bin/bash
docker run --rm --privileged multiarch/qemu-user-static --reset