stages: - build - test - deploy - release variables: DOCKER_TAG: $CI_COMMIT_TAG build: stage: build script: - docker build -t short-build . test: stage: test script: - docker run short-build -v - docker tag short-build tandrade/short:latest deploy: before_script: - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" stage: deploy script: - docker push tandrade/short:latest only: - master release: before_script: - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" stage: release script: - docker tag short-build tandrade/short:$DOCKER_TAG - docker push tandrade/short:$DOCKER_TAG only: - tags