--- .docker-build-setup: image: docker:19.03.12 services: - docker:19.03.12-dind before_script: - apk add --no-cache make .dockerfile-lint: stage: test image: hadolint/hadolint:v1.18.0-alpine script: - "hadolint docker/Dockerfile" .dockerbuild-test: stage: test extends: .docker-build-setup .docker-publish: stage: publish extends: .docker-build-setup before_script: - apk add --no-cache make - docker login -u ${CI_REGISTRY_USER} -p ${CI_REGISTRY_PASSWORD} ${CI_REGISTRY} after_script: - docker logout ${CI_REGISTRY} .test-docker-rules: rules: - if: '$CI_PIPELINE_SOURCE == "merge_request_event"' changes: - "docker/Dockerfile" when: always test:dockerfile:lint: extends: - .dockerfile-lint - .test-docker-rules test:docker:build: extends: - .dockerbuild-test - .test-docker-rules script: - make image publish:docker-image: extends: - .docker-publish script: - make publish rules: - if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $CI_PROJECT_PATH == "dananglin/cv"' changes: - "docker/Dockerfile" when: always - if: '$CI_PIPELINE_SOURCE == "merge_request_event"' when: never