variables: DOCKER_TLS_CERTDIR: "/certs" DOCKER_DRIVER: overlay2 services: - docker:dind .build: &build image: docker:latest stage: build script: - docker login -u gitlab-ci-token -p "${CI_JOB_TOKEN}" "${CI_REGISTRY}" - docker build -f "${DOCKERFILE}" -t "${CI_REGISTRY_IMAGE}/${NAME}:${CI_COMMIT_SHA:0:8}" . - docker tag "${CI_REGISTRY_IMAGE}/${NAME}:${CI_COMMIT_SHA:0:8}" "${CI_REGISTRY_IMAGE}/${NAME}:${CI_COMMIT_REF_SLUG}" - docker push "${CI_REGISTRY_IMAGE}/${NAME}:${CI_COMMIT_SHA:0:8}" - docker push "${CI_REGISTRY_IMAGE}/${NAME}:${CI_COMMIT_REF_SLUG}" - if [[ "${CI_COMMIT_REF_SLUG}" == "main" ]]; then docker tag "${CI_REGISTRY_IMAGE}/${NAME}:${CI_COMMIT_REF_SLUG}" "${CI_REGISTRY_IMAGE}/${NAME}:latest" && docker push "${CI_REGISTRY_IMAGE}/${NAME}:latest"; fi .docker-multiarch-image: &docker-multiarch-image image: jdrouet/docker-with-buildx:stable stage: build tags: [docker-builder] before_script: # per recommendations from https://github.com/docker/buildx/issues/495#issuecomment-754200673 - docker run --rm --privileged multiarch/qemu-user-static --reset -p yes - docker buildx create --name cibuilder --driver docker-container --use - docker buildx inspect --bootstrap - docker login -u gitlab-ci-token -p "${CI_JOB_TOKEN}" "${CI_REGISTRY}" script: - docker buildx build --platform "${PLATFORM}" -f "${DOCKERFILE}" -t "${CI_REGISTRY_IMAGE}/${NAME}:${CI_COMMIT_SHA:0:8}" -t "${CI_REGISTRY_IMAGE}/${NAME}:${CI_COMMIT_REF_SLUG}" --push . - if [[ "${CI_COMMIT_REF_SLUG}" == "main" ]]; then docker buildx build --platform "${PLATFORM}" -f "${DOCKERFILE}" -t "${CI_REGISTRY_IMAGE}/${NAME}:latest" --push . ; fi parallel: matrix: - PLATFORM: - linux/amd64 - linux/arm64/v8 - linux/arm/v7 signal-server: image: docker:20.10.0 stage: build script: - docker login -u gitlab-ci-token -p ${CI_JOB_TOKEN} ${CI_REGISTRY} - docker build -f signal-server.Dockerfile -t ${CI_REGISTRY_IMAGE}/signal-server:${CI_COMMIT_SHA:0:8} . - export VERSION=$(docker run ${CI_REGISTRY_IMAGE}/signal-server:${CI_COMMIT_SHA:0:8} java -jar /usr/share/TextSecureServer.jar -v) - docker tag ${CI_REGISTRY_IMAGE}/signal-server:${CI_COMMIT_SHA:0:8} ${CI_REGISTRY_IMAGE}/signal-server:${CI_COMMIT_REF_SLUG} - docker tag ${CI_REGISTRY_IMAGE}/signal-server:${CI_COMMIT_SHA:0:8} ${CI_REGISTRY_IMAGE}/signal-server:${VERSION} - docker push ${CI_REGISTRY_IMAGE}/signal-server:${CI_COMMIT_SHA:0:8} - docker push ${CI_REGISTRY_IMAGE}/signal-server:${CI_COMMIT_REF_SLUG} - docker push ${CI_REGISTRY_IMAGE}/signal-server:${VERSION} - echo "docker pull ${CI_REGISTRY_IMAGE}/signal-server:${VERSION}" allow_failure: true freebsd-cross-build: image: docker:20.10.0 stage: build script: - apk add git - git clone https://github.com/wezm/freebsd-cross-build.git - cd freebsd-cross-build - echo "RUN apt-get update && apt-get install -y git" >> Dockerfile - VERSION=$(git rev-parse --short=8 HEAD) - docker login -u gitlab-ci-token -p ${CI_JOB_TOKEN} ${CI_REGISTRY} - docker build -t ${CI_REGISTRY_IMAGE}/${CI_JOB_NAME}:${VERSION} . - docker push ${CI_REGISTRY_IMAGE}/${CI_JOB_NAME}:${VERSION} - if [[ "${CI_COMMIT_REF_SLUG}" == "main" ]]; then docker tag ${CI_REGISTRY_IMAGE}/${CI_JOB_NAME}:${VERSION} ${CI_REGISTRY_IMAGE}/${CI_JOB_NAME}:latest && docker push ${CI_REGISTRY_IMAGE}/${CI_JOB_NAME}:latest; fi - echo "docker pull ${CI_REGISTRY_IMAGE}/${CI_JOB_NAME}:${VERSION}" test-helper: <<: *build variables: DOCKERFILE: "test-helper.Dockerfile" NAME: "test-helper" allow_failure: true signal-cross-builder: <<: *build variables: DOCKERFILE: "signald-cross-builder.Dockerfile" NAME: "signald-cross-builder" builder-image-alpine: <<: *docker-multiarch-image variables: DOCKERFILE: "signald-builder-alpine.Dockerfile" NAME: "signald-builder-alpine-arm" signald-builder: <<: *docker-multiarch-image variables: DOCKERFILE: "signald-builder.Dockerfile" NAME: "signald-builder"