image: docker:git services: - docker:dind stages: - build - test - release variables: TEST_IMAGE: ${CI_REGISTRY_IMAGE}:$CI_BUILD_REF_NAME RELEASE_IMAGE: ${CI_REGISTRY_IMAGE}:latest before_script: - echo $CI_BUILD_TOKEN | docker login -u gitlab-ci-token --password-stdin ${CI_REGISTRY} build: stage: build script: - docker build -t $TEST_IMAGE . - docker push $TEST_IMAGE test: stage: test script: - docker run $TEST_IMAGE /test release: stage: release script: - echo Publishing ${RELEASE_IMAGE} - docker pull $TEST_IMAGE - docker tag $TEST_IMAGE $RELEASE_IMAGE - docker push $RELEASE_IMAGE only: - master - tags