Updated GitLab CI

This commit is contained in:
Héctor Molinero Fernández
2019-12-12 12:56:29 +01:00
parent 899a40f1d7
commit 57d9bb76ce

View File

@@ -1,131 +1,97 @@
stages: stages:
- "build:images" - 'build:images'
- "push:images" - 'push:images'
- "push:manifests" - 'push:manifests'
variables: variables:
DOCKER_HOST: "tcp://dockerd:2376" DOCKER_HOST: 'tcp://dockerd:2376'
DOCKER_TLS_SAN: "DNS:dockerd" DOCKER_TLS_SAN: 'DNS:dockerd'
DOCKER_TLS_CERTDIR: "/certs" DOCKER_TLS_CERTDIR: '/certs'
DOCKER_DRIVER: "overlay2" DOCKER_DRIVER: 'overlay2'
default: default:
image: "docker.io/docker:stable" image: 'docker.io/docker:stable'
services: services:
- name: "docker.io/docker:dind" - name: 'docker.io/docker:dind'
alias: "dockerd" alias: 'dockerd'
.cmds: .cmds:
- &cmd_install_build_packages "apk add --no-cache coreutils git m4 make xz" - &cmd_install_build_packages 'apk add --no-cache coreutils git m4 make xz'
- &cmd_install_push_packages "apk add --no-cache coreutils git make xz" - &cmd_install_push_packages 'apk add --no-cache coreutils git make xz'
- &cmd_docker_login_registry "docker login -u \"${CI_REGISTRY_USER:?}\" -p \"${CI_REGISTRY_PASSWORD:?}\" \"${CI_REGISTRY:?}\"" - &cmd_docker_login_registry 'docker login -u "${CI_REGISTRY_USER:?}" -p "${CI_REGISTRY_PASSWORD:?}" "${CI_REGISTRY:?}"'
.regexes: .regexes:
- &regex_version "/^v[0-9]+$/" - &regex_version '/^v[0-9]+$/'
build:images:native: build:images:native:
stage: "build:images" stage: 'build:images'
except: except: [*regex_version]
- *regex_version
before_script: before_script:
- *cmd_install_build_packages - *cmd_install_build_packages
script: script:
- "make build-native-image save-native-image" - 'make build-native-image save-native-image'
artifacts: artifacts:
expire_in: "1 day" expire_in: '1 day'
paths: paths:
- "./dist/" - './dist/'
.build:images:cross:
stage: 'build:images'
only: [*regex_version]
before_script:
- *cmd_install_build_packages
script:
- 'make binfmt-register'
- 'make "build-${ARCH:?}-image" "save-${ARCH:?}-image"'
artifacts:
expire_in: '1 week'
paths:
- './dist/'
build:images:amd64: build:images:amd64:
stage: "build:images" extends: .build:images:cross
only: variables: {ARCH: 'amd64'}
- *regex_version
before_script:
- *cmd_install_build_packages
script:
- "make binfmt-register"
- "make build-amd64-image save-amd64-image"
artifacts:
expire_in: "1 week"
paths:
- "./dist/"
build:images:arm64v8: build:images:arm64v8:
stage: "build:images" extends: .build:images:cross
only: variables: {ARCH: 'arm64v8'}
- *regex_version
before_script:
- *cmd_install_build_packages
script:
- "make binfmt-register"
- "make build-arm64v8-image save-arm64v8-image"
artifacts:
expire_in: "1 week"
paths:
- "./dist/"
build:images:arm32v7: build:images:arm32v7:
stage: "build:images" extends: .build:images:cross
only: variables: {ARCH: 'arm32v7'}
- *regex_version
.push:images:cross:
stage: 'push:images'
only: [*regex_version]
before_script: before_script:
- *cmd_install_build_packages - *cmd_install_push_packages
- *cmd_docker_login_registry
script: script:
- "make binfmt-register" - 'make "load-${ARCH:?}-image" "push-${ARCH:?}-image"'
- "make build-arm32v7-image save-arm32v7-image"
artifacts:
expire_in: "1 week"
paths:
- "./dist/"
push:images:amd64: push:images:amd64:
stage: "push:images" extends: .push:images:cross
dependencies: dependencies: ['build:images:amd64']
- "build:images:amd64" variables: {ARCH: 'amd64'}
only:
- *regex_version
before_script:
- *cmd_install_push_packages
- *cmd_docker_login_registry
script:
- "make load-amd64-image push-amd64-image"
push:images:arm64v8: push:images:arm64v8:
stage: "push:images" extends: .push:images:cross
dependencies: dependencies: ['build:images:arm64v8']
- "build:images:arm64v8" variables: {ARCH: 'arm64v8'}
only:
- *regex_version
before_script:
- *cmd_install_push_packages
- *cmd_docker_login_registry
script:
- "make load-arm64v8-image push-arm64v8-image"
push:images:arm32v7: push:images:arm32v7:
stage: "push:images" extends: .push:images:cross
dependencies: dependencies: ['build:images:arm32v7']
- "build:images:arm32v7" variables: {ARCH: 'arm32v7'}
only:
- *regex_version
before_script:
- *cmd_install_push_packages
- *cmd_docker_login_registry
script:
- "make load-arm32v7-image push-arm32v7-image"
push:manifests:cross: push:manifests:cross:
stage: "push:manifests" stage: 'push:manifests'
dependencies: dependencies: ['push:images:amd64', 'push:images:arm64v8', 'push:images:arm32v7']
- "push:images:amd64" only: [*regex_version]
- "push:images:arm64v8"
- "push:images:arm32v7"
only:
- *regex_version
variables: variables:
DOCKER_CLI_EXPERIMENTAL: "enabled" DOCKER_CLI_EXPERIMENTAL: 'enabled'
before_script: before_script:
- *cmd_install_push_packages - *cmd_install_push_packages
- *cmd_docker_login_registry - *cmd_docker_login_registry
script: script:
- "make push-cross-manifest" - 'make push-cross-manifest'