.default-retry: retry: max: 2 # This is confusing but this means "3 runs at max". when: - unknown_failure - api_failure - runner_system_failure - job_execution_timeout - stuck_or_timeout_failure .default-before_script: before_script: - echo $FOSS_ONLY - '[ "$FOSS_ONLY" = "1" ] && rm -rf ee/ qa/spec/ee/ qa/qa/specs/features/ee/ qa/qa/ee/ qa/qa/ee.rb' - export GOPATH=$CI_PROJECT_DIR/.go - mkdir -p $GOPATH - source scripts/utils.sh - source scripts/prepare_build.sh .ruby-gems-cache: &ruby-gems-cache key: "ruby-gems-${DEBIAN_VERSION}" paths: - vendor/ruby/ policy: pull .ruby-gems-cache-push: &ruby-gems-cache-push <<: *ruby-gems-cache policy: push # We want to rebuild the cache from scratch to ensure stale dependencies are cleaned up. .gitaly-ruby-gems-cache: &gitaly-ruby-gems-cache key: "gitaly-ruby-gems-${DEBIAN_VERSION}" paths: - vendor/gitaly-ruby/ policy: pull .gitaly-ruby-gems-cache-push: &gitaly-ruby-gems-cache-push <<: *gitaly-ruby-gems-cache policy: push # We want to rebuild the cache from scratch to ensure stale dependencies are cleaned up. .gitaly-binaries-cache: &gitaly-binaries-cache key: files: - GITALY_SERVER_VERSION - lib/gitlab/setup_helper.rb prefix: "gitaly-binaries-${DEBIAN-VERSION}" paths: - ${TMP_TEST_FOLDER}/gitaly/_build/bin/ - ${TMP_TEST_FOLDER}/gitaly/_build/deps/git/install/ - ${TMP_TEST_FOLDER}/gitaly/config.toml - ${TMP_TEST_FOLDER}/gitaly/gitaly2.config.toml - ${TMP_TEST_FOLDER}/gitaly/internal/ - ${TMP_TEST_FOLDER}/gitaly/run/ - ${TMP_TEST_FOLDER}/gitaly/run2/ - ${TMP_TEST_FOLDER}/gitaly/Makefile - ${TMP_TEST_FOLDER}/gitaly/praefect.config.toml - ${TMP_TEST_FOLDER}/gitaly/ruby/ policy: pull .go-pkg-cache: &go-pkg-cache key: "go-pkg-${DEBIAN_VERSION}" paths: - .go/pkg/mod/ policy: pull .go-pkg-cache-push: &go-pkg-cache-push <<: *go-pkg-cache policy: push # We want to rebuild the cache from scratch to ensure stale dependencies are cleaned up. .node-modules-cache: &node-modules-cache key: "node-modules-${DEBIAN_VERSION}-${NODE_ENV}" paths: - node_modules/ - tmp/cache/webpack-dlls/ policy: pull .node-modules-cache-push: &node-modules-cache-push <<: *node-modules-cache policy: push # We want to rebuild the cache from scratch to ensure stale dependencies are cleaned up. .assets-cache: &assets-cache key: "assets-${DEBIAN_VERSION}-${NODE_ENV}" paths: - assets-hash.txt - public/assets/webpack/ - tmp/cache/assets/sprockets/ - tmp/cache/babel-loader/ - tmp/cache/vue-loader/ policy: pull .assets-cache-push: &assets-cache-push <<: *assets-cache policy: push # We want to rebuild the cache from scratch to ensure stale dependencies are cleaned up. .storybook-node-modules-cache: &storybook-node-modules-cache key: "storybook-node-modules-${DEBIAN_VERSION}-${NODE_ENV}" paths: - storybook/node_modules/ policy: pull .storybook-node-modules-cache-push: &storybook-node-modules-cache-push <<: *storybook-node-modules-cache policy: push # We want to rebuild the cache from scratch to ensure stale dependencies are cleaned up. .rubocop-cache: &rubocop-cache key: "rubocop-${DEBIAN_VERSION}" paths: - tmp/rubocop_cache/ policy: pull .rubocop-cache-push: &rubocop-cache-push <<: *rubocop-cache # We want to rebuild the cache from scratch to ensure stale dependencies are cleaned up but RuboCop has a mechanism # for keeping only the N latest cache files, so we take advantage of it with `pull-push`. policy: push .qa-ruby-gems-cache: &qa-ruby-gems-cache key: "qa-ruby-gems-${DEBIAN_VERSION}" paths: - qa/vendor/ruby/ policy: pull .qa-ruby-gems-cache-push: &qa-ruby-gems-cache-push <<: *qa-ruby-gems-cache policy: push # We want to rebuild the cache from scratch to ensure stale dependencies are cleaned up. .setup-test-env-cache: cache: - *ruby-gems-cache - *gitaly-ruby-gems-cache - *gitaly-binaries-cache - *go-pkg-cache .setup-test-env-cache-push: cache: - *ruby-gems-cache-push - *gitaly-ruby-gems-cache-push - *go-pkg-cache-push .gitaly-binaries-cache-push: cache: - <<: *gitaly-binaries-cache policy: push # We want to rebuild the cache from scratch to ensure stale dependencies are cleaned up. .ruby-cache: cache: - *ruby-gems-cache .rails-cache: cache: - *ruby-gems-cache - *gitaly-ruby-gems-cache .static-analysis-cache: cache: - *ruby-gems-cache - *node-modules-cache - *rubocop-cache .rubocop-job-cache: cache: - *ruby-gems-cache - *rubocop-cache .rubocop-job-cache-push: cache: - *ruby-gems-cache # We don't push this cache as it's already rebuilt by `update-setup-test-env-cache` - *rubocop-cache-push .coverage-cache: cache: - *ruby-gems-cache .danger-review-cache: cache: - *ruby-gems-cache - *node-modules-cache .qa-cache: cache: - *qa-ruby-gems-cache .qa-cache-push: cache: - *qa-ruby-gems-cache-push .yarn-cache: cache: - *node-modules-cache .yarn-cache-push: cache: - *node-modules-cache-push .assets-compile-cache: cache: - *ruby-gems-cache - *node-modules-cache - *assets-cache .assets-compile-cache-push: cache: - *ruby-gems-cache # We don't push this cache as it's already rebuilt by `update-setup-test-env-cache` - *node-modules-cache-push - *assets-cache-push .storybook-yarn-cache: cache: - *node-modules-cache - *storybook-node-modules-cache .storybook-yarn-cache-push: cache: - *node-modules-cache # We don't push this cache as it's already rebuilt by `update-yarn-cache` - *storybook-node-modules-cache-push .use-pg11: services: - name: postgres:11.6 command: ["postgres", "-c", "fsync=off", "-c", "synchronous_commit=off", "-c", "full_page_writes=off"] - name: redis:5.0-alpine variables: POSTGRES_HOST_AUTH_METHOD: trust PG_VERSION: "11" .use-pg12: services: - name: postgres:12 command: ["postgres", "-c", "fsync=off", "-c", "synchronous_commit=off", "-c", "full_page_writes=off"] - name: redis:6.0-alpine variables: POSTGRES_HOST_AUTH_METHOD: trust PG_VERSION: "12" .use-pg13: services: - name: postgres:13 command: ["postgres", "-c", "fsync=off", "-c", "synchronous_commit=off", "-c", "full_page_writes=off"] - name: redis:5.0-alpine variables: POSTGRES_HOST_AUTH_METHOD: trust PG_VERSION: "13" .use-pg11-ee: services: - name: postgres:11.6 command: ["postgres", "-c", "fsync=off", "-c", "synchronous_commit=off", "-c", "full_page_writes=off"] - name: redis:5.0-alpine - name: elasticsearch:7.17.0 command: ["elasticsearch", "-E", "discovery.type=single-node"] variables: POSTGRES_HOST_AUTH_METHOD: trust PG_VERSION: "11" .use-pg12-ee: services: - name: postgres:12 command: ["postgres", "-c", "fsync=off", "-c", "synchronous_commit=off", "-c", "full_page_writes=off"] - name: redis:6.0-alpine - name: elasticsearch:7.17.0 command: ["elasticsearch", "-E", "discovery.type=single-node"] variables: POSTGRES_HOST_AUTH_METHOD: trust PG_VERSION: "12" .use-pg13-ee: services: - name: postgres:13 command: ["postgres", "-c", "fsync=off", "-c", "synchronous_commit=off", "-c", "full_page_writes=off"] - name: redis:5.0-alpine - name: elasticsearch:7.17.0 command: ["elasticsearch", "-E", "discovery.type=single-node"] variables: POSTGRES_HOST_AUTH_METHOD: trust PG_VERSION: "13" .use-kaniko: image: name: ${REGISTRY_HOST}/${REGISTRY_GROUP}/gitlab-build-images:kaniko entrypoint: [""] before_script: - source scripts/utils.sh - mkdir -p /kaniko/.docker - echo "{\"auths\":{\"$CI_REGISTRY\":{\"username\":\"$CI_REGISTRY_USER\",\"password\":\"$CI_REGISTRY_PASSWORD\"}}}" > /kaniko/.docker/config.json .as-if-foss: variables: FOSS_ONLY: '1' .use-docker-in-docker: image: ${GITLAB_DEPENDENCY_PROXY}docker:${DOCKER_VERSION} services: - docker:${DOCKER_VERSION}-dind variables: DOCKER_DRIVER: overlay2 DOCKER_HOST: tcp://docker:2375 DOCKER_TLS_CERTDIR: "" tags: # See https://gitlab.com/gitlab-com/www-gitlab-com/-/issues/7019 for tag descriptions - gitlab-org-docker