stages: - test - release - build test docker: # Use the official docker image. image: docker:latest stage: test services: - docker:dind before_script: - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY # Default branch leaves tag empty (= latest tag) # All other branches are tagged with the escaped branch name (commit ref slug) script: - docker build --pull -t "$CI_REGISTRY_IMAGE$:develop" -t "index.docker.io/$DOCKERHUB_USER/$DOCKERHUB_REPO:develop" . - docker push "$CI_REGISTRY_IMAGE:develop" "index.docker.io/$DOCKERHUB_USER/$DOCKERHUB_REPO:develop" # Run this job in a branch where a Dockerfile exists rules: - if: $CI_COMMIT_BRANCH exists: - Dockerfile release: needs: ['test docker'] stage: release image: registry.griefed.de/prosper/gitlab-semantic-release:latest services: - name: docker:dind alias: docker variables: project_name: $CI_PROJECT_NAME SEMANTIC_RELEASE_PACKAGE: $CI_PROJECT_NAME script: - npx semantic-release only: - master except: refs: - tags variables: - $CI_COMMIT_TITLE =~ /^RELEASE:.+$/ build docker: stage: build # Use the official docker image. image: docker:latest services: - docker:dind before_script: - docker login -u "$DOCKERHUB_USER" -p "$DOCKERHUB_TOKEN" docker.io - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY # Default branch leaves tag empty (= latest tag) # All other branches are tagged with the escaped branch name (commit ref slug) script: - docker build --pull -t "$CI_REGISTRY_IMAGE$:latest" -t "index.docker.io/$DOCKERHUB_USER/$DOCKERHUB_REPO:latest" . - docker push "$CI_REGISTRY_IMAGE:latest" "index.docker.io/$DOCKERHUB_USER/$DOCKERHUB_REPO:latest" # Run this job in a branch where a Dockerfile exists rules: - if: $CI_COMMIT_BRANCH exists: - Dockerfile