stages: - push:readme - build:docker workflow: rules: - if: '$CI_PIPELINE_SOURCE == "push"' - if: $CI_COMMIT_TAG variables: DOCKERHUB_REGISTRY: index.docker.io DOCKERHUB_REPO: bw_backup IMAGE_NAME_DOCKERHUB: $DOCKERHUB_REGISTRY/$DOCKERHUB_USER/$DOCKERHUB_REPO # see https://gitlab.com/gitlab-org/gitlab-runner/issues/4501 DOCKER_DRIVER: overlay2 DOCKER_TLS_CERTDIR: "/certs" # See https://github.com/docker/buildx/releases BUILDX_VERSION: v0.5.1 BUILDX_ARCH: linux-amd64 .docker_login: &docker_login docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY .dockerhub_login: &dockerhub_login docker login -u "$DOCKERHUB_USER" -p "$DOCKERHUB_PASSWORD" $DOCKERHUB_REGISTRY .docker_build_template: &docker_build stage: build:docker image: docker:latest services: - name: docker:dind command: ["--experimental"] tags: - shared before_script: - apk add curl - mkdir -p ~/.docker/cli-plugins - curl -sSLo ~/.docker/cli-plugins/docker-buildx https://github.com/docker/buildx/releases/download/$BUILDX_VERSION/buildx-$BUILDX_VERSION.$BUILDX_ARCH - chmod +x ~/.docker/cli-plugins/docker-buildx - docker run --rm --privileged multiarch/qemu-user-static --reset -p yes - docker context create my-context - docker buildx create --use my-context - docker info push_readme: stage: push:readme image: docker:latest services: - docker:dind tags: - shared script: - docker run -v $(pwd)/README.md:/data/README.md:ro -e DOCKER_USER=$DOCKERHUB_USER -e DOCKER_PASS=$DOCKERHUB_PASSWORD -e PUSHRM_FILE=/data/README.md -e PUSHRM_TARGET=docker.io/$DOCKERHUB_USER/$DOCKERHUB_REPO chko/docker-pushrm rules: - if: '$CI_COMMIT_BRANCH == "master"' changes: - README.md build_master: <<: *docker_build script: - *docker_login - *dockerhub_login #- docker build --pull -t "$IMAGE_NAME" -t "$IMAGE_NAME_DOCKERHUB:${CI_COMMIT_TAG:-latest}" . - docker buildx build --push --platform linux/arm/v7,linux/arm64/v8,linux/amd64 --tag "$CI_REGISTRY_IMAGE:${CI_COMMIT_TAG:-latest}" --tag "$IMAGE_NAME_DOCKERHUB:${CI_COMMIT_TAG:-latest}" . #- docker push "$IMAGE_NAME" #- docker push "$IMAGE_NAME_DOCKERHUB:${CI_COMMIT_TAG:-latest}" rules: - if: '$CI_COMMIT_BRANCH == "master" || $CI_COMMIT_TAG' changes: - Dockerfile - backup.sh - entrypoint.sh build: <<: *docker_build script: - *docker_login #- docker build --pull -t "$CI_REGISTRY_IMAGE/$CI_COMMIT_REF_SLUG/bw_backup:${CI_COMMIT_TAG:-latest}" . - docker buildx build --push --platform linux/arm/v7,linux/arm64/v8,linux/amd64 --tag "$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_NAME" . #- docker push "$CI_REGISTRY_IMAGE/$CI_COMMIT_REF_SLUG/bw_backup:${CI_COMMIT_TAG:-latest}" rules: - if: '$CI_COMMIT_BRANCH == "master" || $CI_COMMIT_TAG' when: never - when: on_success