# When using dind, it's wise to use the overlayfs driver for # improved performance. variables: DOCKER_DRIVER: overlay2 MAJOR: 1 TMP_IMAGE: $CI_REGISTRY_IMAGE/tmp:$CI_COMMIT_SHA include: - template: Container-Scanning.gitlab-ci.yml - template: Jobs/Code-Quality.gitlab-ci.yml services: - docker:stable-dind stages: - build - test - tag - release build commit: image: docker:stable stage: build script: - docker info - docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY - docker build -t $TMP_IMAGE . - docker push $TMP_IMAGE container_scanning: variables: CI_APPLICATION_REPOSITORY: $CI_REGISTRY_IMAGE/tmp # only predefined variables are parameter-expanded (no $TMP_IMAGE) .QA: image: docker:stable stage: test variables: LM_PYTHON_VERSION: 3 LM_REPORT_VERSION: 1 script: - docker info - docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY - docker pull $TMP_IMAGE - mkdir results - IMAGE_NAME=$TMP_IMAGE ./bin/test artifacts: paths: - results/ when: always unit: stage: test script: - gem install bundler -v '~> 2.0' - bundle install - bundle exec rspec QA:php-composer: extends: .QA variables: QA_PROJECT: php-composer QA:php-composer-v1-1: extends: QA:php-composer variables: LM_REPORT_VERSION: '1.1' QA_RESULTS: php-composer-v1.1 QA:php-composer-v2: extends: QA:php-composer variables: LM_REPORT_VERSION: 2 QA_RESULTS: php-composer-v2 QA:java-maven: extends: .QA variables: QA_PROJECT: java-maven QA_REF: 831c7a04 QA:java-maven-v1-1: extends: QA:java-maven variables: LM_REPORT_VERSION: '1.1' QA_RESULTS: java-maven-v1.1 QA:java-maven-v2: extends: QA:java-maven variables: LM_REPORT_VERSION: 2 QA_RESULTS: java-maven-v2 QA:python-pip: extends: .QA variables: LM_PYTHON_VERSION: 2 QA_PROJECT: python-pip QA_REF: 04dce91b QA:python-pip-v1-1: extends: QA:python-pip variables: LM_REPORT_VERSION: '1.1' QA_RESULTS: python-pip-v1.1 QA:python-pip-v2: extends: QA:python-pip variables: LM_REPORT_VERSION: '2.0' QA_RESULTS: python-pip-v2 QA:python3-pip: extends: .QA variables: QA_RESULTS: python3-pip-v1 QA_PROJECT: python-pip QA_REF: 48e250a1 QA:python3-pip-v1-1: extends: QA:python3-pip variables: LM_REPORT_VERSION: '1.1' QA_RESULTS: python3-pip-v1.1 QA:python3-pip-v2: extends: QA:python3-pip variables: LM_REPORT_VERSION: 2 QA_RESULTS: python3-pip-v2 QA:ruby-bundler: extends: .QA variables: QA_PROJECT: ruby-bundler QA_REF: master QA:ruby-bundler-v1-1: extends: QA:ruby-bundler variables: LM_REPORT_VERSION: '1.1' QA_RESULTS: ruby-bundler-v1.1 QA:ruby-bundler-v2: extends: QA:ruby-bundler variables: LM_REPORT_VERSION: 2 QA_RESULTS: ruby-bundler-v2 QA:go: extends: .QA variables: QA_PROJECT: go-modules QA_REF: master QA:go-v1-1: extends: QA:go variables: LM_REPORT_VERSION: '1.1' QA_RESULTS: go-modules-v1.1 QA:go-v2: extends: QA:go variables: LM_REPORT_VERSION: 2 QA_RESULTS: go-modules-v2 QA:js: extends: .QA variables: QA_PROJECT: js-yarn QA_REF: master QA:js-v1-1: extends: QA:js variables: LM_REPORT_VERSION: '1.1' QA_RESULTS: js-yarn-v1.1 QA:js-v2: extends: QA:js variables: LM_REPORT_VERSION: 2 QA_RESULTS: js-yarn-v2 QA:js-npm: extends: .QA variables: QA_PROJECT: js-npm QA_REF: master QA:js-npm-v1-1: extends: QA:js-npm variables: LM_REPORT_VERSION: '1.1' QA_RESULTS: js-npm-v1.1 QA:js-npm-v2: extends: QA:js-npm variables: LM_REPORT_VERSION: 2 QA_RESULTS: js-npm-v2 QA:dotnet: extends: .QA variables: QA_PROJECT: csharp-nuget-dotnetcore QA_REF: master QA:dotnet-v1-1: extends: QA:dotnet variables: LM_REPORT_VERSION: '1.1' QA_RESULTS: csharp-nuget-dotnetcore-v1.1 QA:dotnet-v2: extends: QA:dotnet variables: LM_REPORT_VERSION: 2 QA_RESULTS: csharp-nuget-dotnetcore-v2 .docker_tag: image: docker:stable stage: tag script: - docker info - docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY - export SOURCE_IMAGE=$TMP_IMAGE - export TARGET_IMAGE=$CI_REGISTRY_IMAGE:${IMAGE_TAG:-$CI_JOB_NAME} - | if [ -z "$DOTENV" ]; then docker pull $SOURCE_IMAGE docker tag $SOURCE_IMAGE $TARGET_IMAGE else ./bin/docker-dotenv fi - docker push $TARGET_IMAGE branch: extends: .docker_tag variables: IMAGE_TAG: $CI_COMMIT_REF_SLUG only: - branches except: - master edge: extends: .docker_tag variables: IMAGE_TAG: edge only: - master version: extends: .docker_tag before_script: - export IMAGE_TAG=${CI_COMMIT_TAG/v/} - echo "Checking that $CI_COMMIT_TAG is last in the changelog" - test "$(grep '^## v' CHANGELOG.md |head -n 1)" = "## $CI_COMMIT_TAG" only: - tags when: manual allow_failure: false .release: extends: .docker_tag stage: release only: - tags major: extends: .release variables: IMAGE_TAG: $MAJOR latest: extends: .release 12-7-stable: extends: .release variables: DOTENV: ".env.12-7-stable" 12-6-stable: extends: .release variables: DOTENV: ".env.12-6-stable" 12-5-stable: extends: .release variables: DOTENV: ".env.12-5-stable" 12-4-stable: extends: .release variables: DOTENV: ".env.12-4-stable" 12-3-stable: extends: .release variables: DOTENV: ".env.12-3-stable" 12-2-stable: extends: .release variables: DOTENV: ".env.12-2-stable" 12-1-stable: extends: .release variables: DOTENV: ".env.legacy" 12-0-stable: extends: .release variables: DOTENV: ".env.legacy" 11-11-stable: extends: .release variables: DOTENV: ".env.legacy" 11-10-stable: extends: .release variables: DOTENV: ".env.legacy" 11-9-stable: extends: .release variables: DOTENV: ".env.legacy" 11-8-stable: extends: .release variables: DOTENV: ".env.legacy" 11-7-stable: extends: .release variables: DOTENV: ".env.legacy" 11-6-stable: extends: .release variables: DOTENV: ".env.legacy" 11-5-stable: extends: .release variables: DOTENV: ".env.legacy" 11-4-stable: extends: .release variables: DOTENV: ".env.legacy" 11-3-stable: extends: .release variables: DOTENV: ".env.legacy" 11-2-stable: extends: .release variables: DOTENV: ".env.legacy" 11-1-stable: extends: .release variables: DOTENV: ".env.legacy" 11-0-stable: extends: .release variables: DOTENV: ".env.legacy"