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 -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 -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