358 lines
9.3 KiB
YAML
358 lines
9.3 KiB
YAML
# Make sure to update all the similar conditions in other CI config files if you modify these conditions
|
|
.if-not-canonical-namespace: &if-not-canonical-namespace
|
|
if: '$CI_PROJECT_NAMESPACE !~ /^gitlab(-org)?($|\/)/'
|
|
|
|
# Make sure to update all the similar conditions in other CI config files if you modify these conditions
|
|
.if-not-ee: &if-not-ee
|
|
if: '$CI_PROJECT_NAME !~ /^gitlab(-ee)?$/'
|
|
|
|
# Make sure to update all the similar conditions in other CI config files if you modify these conditions
|
|
.if-master-refs: &if-master-refs
|
|
if: '$CI_COMMIT_REF_NAME == "master"'
|
|
|
|
# Make sure to update all the similar conditions in other CI config files if you modify these conditions
|
|
.if-default-refs: &if-default-refs
|
|
if: '$CI_COMMIT_REF_NAME == "master" || $CI_COMMIT_REF_NAME =~ /^[\d-]+-stable(-ee)?$/ || $CI_COMMIT_REF_NAME =~ /^\d+-\d+-auto-deploy-\d+$/ || $CI_COMMIT_REF_NAME =~ /^security\// || $CI_MERGE_REQUEST_IID || $CI_COMMIT_TAG'
|
|
|
|
# Make sure to update all the similar patterns in other CI config files if you modify these patterns
|
|
.code-backstage-patterns: &code-backstage-patterns
|
|
- ".gitlab/ci/**/*"
|
|
- ".{eslintignore,gitattributes,nvmrc,prettierrc,stylelintrc,yamllint}"
|
|
- ".{codeclimate,eslintrc,gitlab-ci,haml-lint,haml-lint_todo,rubocop,rubocop_todo,scss-lint}.yml"
|
|
- ".csscomb.json"
|
|
- "Dockerfile.assets"
|
|
- "*_VERSION"
|
|
- "Gemfile{,.lock}"
|
|
- "Rakefile"
|
|
- "{babel.config,jest.config}.js"
|
|
- "config.ru"
|
|
- "{package.json,yarn.lock}"
|
|
- "{,ee/}{app,bin,config,db,haml_lint,lib,locale,public,scripts,symbol,vendor}/**/*"
|
|
- "doc/api/graphql/reference/*" # Files in this folder are auto-generated
|
|
# Backstage changes
|
|
- "Dangerfile"
|
|
- "danger/**/*"
|
|
- "{,ee/}fixtures/**/*"
|
|
- "{,ee/}rubocop/**/*"
|
|
- "{,ee/}spec/**/*"
|
|
- "doc/README.md" # Some RSpec test rely on this file
|
|
|
|
# Make sure to update all the similar patterns in other CI config files if you modify these patterns
|
|
.code-backstage-qa-patterns: &code-backstage-qa-patterns
|
|
- ".gitlab/ci/**/*"
|
|
- ".{eslintignore,gitattributes,nvmrc,prettierrc,stylelintrc,yamllint}"
|
|
- ".{codeclimate,eslintrc,gitlab-ci,haml-lint,haml-lint_todo,rubocop,rubocop_todo,scss-lint}.yml"
|
|
- ".csscomb.json"
|
|
- "Dockerfile.assets"
|
|
- "*_VERSION"
|
|
- "Gemfile{,.lock}"
|
|
- "Rakefile"
|
|
- "{babel.config,jest.config}.js"
|
|
- "config.ru"
|
|
- "{package.json,yarn.lock}"
|
|
- "{,ee/}{app,bin,config,db,haml_lint,lib,locale,public,scripts,symbol,vendor}/**/*"
|
|
- "doc/api/graphql/reference/*" # Files in this folder are auto-generated
|
|
# Backstage changes
|
|
- "Dangerfile"
|
|
- "danger/**/*"
|
|
- "{,ee/}fixtures/**/*"
|
|
- "{,ee/}rubocop/**/*"
|
|
- "{,ee/}spec/**/*"
|
|
- "doc/README.md" # Some RSpec test rely on this file
|
|
# QA changes
|
|
- ".dockerignore"
|
|
- "qa/**/*"
|
|
|
|
.assets-compile-cache:
|
|
cache:
|
|
paths:
|
|
- vendor/ruby/
|
|
- .yarn-cache/
|
|
- tmp/cache/assets/sprockets
|
|
- tmp/cache/babel-loader
|
|
- tmp/cache/vue-loader
|
|
|
|
.gitlab:assets:compile-metadata:
|
|
extends:
|
|
- .default-tags
|
|
- .default-retry
|
|
- .default-before_script
|
|
- .assets-compile-cache
|
|
image: registry.gitlab.com/gitlab-org/gitlab-build-images:ruby-2.6.5-git-2.24-lfs-2.9-chrome-73.0-node-12.x-yarn-1.21-graphicsmagick-1.3.34-docker-19.03.1
|
|
stage: prepare
|
|
services:
|
|
- docker:19.03.0-dind
|
|
variables:
|
|
NODE_ENV: "production"
|
|
RAILS_ENV: "production"
|
|
SETUP_DB: "false"
|
|
SKIP_STORAGE_VALIDATION: "true"
|
|
WEBPACK_REPORT: "true"
|
|
# we override the max_old_space_size to prevent OOM errors
|
|
NODE_OPTIONS: --max_old_space_size=3584
|
|
DOCKER_DRIVER: overlay2
|
|
DOCKER_HOST: tcp://docker:2375
|
|
cache:
|
|
key: "assets-compile:production:vendor_ruby:.yarn-cache:tmp_cache_assets_sprockets:tmp_cache_webpack:v7"
|
|
artifacts:
|
|
name: webpack-report
|
|
expire_in: 31d
|
|
paths:
|
|
- webpack-report/
|
|
- public/assets/
|
|
script:
|
|
- node --version
|
|
- retry yarn install --frozen-lockfile --production --cache-folder .yarn-cache --prefer-offline
|
|
- free -m
|
|
- retry bundle exec rake gitlab:assets:compile
|
|
- time scripts/build_assets_image
|
|
- scripts/clean-old-cached-assets
|
|
- rm -f /etc/apt/sources.list.d/google*.list # We don't need to update Chrome here
|
|
tags:
|
|
- gitlab-org
|
|
- docker
|
|
|
|
gitlab:assets:compile pull-push-cache:
|
|
extends: .gitlab:assets:compile-metadata
|
|
rules:
|
|
- <<: *if-not-canonical-namespace
|
|
when: never
|
|
- <<: *if-master-refs
|
|
changes: *code-backstage-qa-patterns
|
|
when: on_success
|
|
cache:
|
|
policy: pull-push
|
|
|
|
gitlab:assets:compile pull-cache:
|
|
extends: .gitlab:assets:compile-metadata
|
|
rules:
|
|
- <<: *if-not-canonical-namespace
|
|
when: never
|
|
- <<: *if-default-refs
|
|
changes: *code-backstage-qa-patterns
|
|
when: on_success
|
|
cache:
|
|
policy: pull
|
|
|
|
.compile-assets-metadata:
|
|
extends:
|
|
- .default-tags
|
|
- .default-retry
|
|
- .default-before_script
|
|
- .assets-compile-cache
|
|
stage: prepare
|
|
script:
|
|
- node --version
|
|
- retry yarn install --frozen-lockfile --cache-folder .yarn-cache --prefer-offline
|
|
- free -m
|
|
- retry bundle exec rake gitlab:assets:compile
|
|
- scripts/clean-old-cached-assets
|
|
variables:
|
|
SETUP_DB: "false"
|
|
# we override the max_old_space_size to prevent OOM errors
|
|
NODE_OPTIONS: --max_old_space_size=3584
|
|
cache:
|
|
key: "assets-compile:v8"
|
|
artifacts:
|
|
expire_in: 7d
|
|
paths:
|
|
- node_modules
|
|
- public/assets
|
|
|
|
compile-assets pull-push-cache:
|
|
extends: .compile-assets-metadata
|
|
rules:
|
|
- <<: *if-master-refs
|
|
changes: *code-backstage-qa-patterns
|
|
when: on_success
|
|
cache:
|
|
policy: pull-push
|
|
|
|
compile-assets pull-push-cache foss:
|
|
extends:
|
|
- .compile-assets-metadata
|
|
- .as-if-foss
|
|
rules:
|
|
- <<: *if-not-ee
|
|
when: never
|
|
- <<: *if-master-refs
|
|
changes: *code-backstage-qa-patterns
|
|
when: on_success
|
|
cache:
|
|
policy: pull-push
|
|
key: "assets-compile:v8:foss"
|
|
|
|
compile-assets pull-cache:
|
|
extends: .compile-assets-metadata
|
|
rules:
|
|
- <<: *if-default-refs
|
|
changes: *code-backstage-qa-patterns
|
|
when: on_success
|
|
cache:
|
|
policy: pull
|
|
|
|
compile-assets pull-cache foss:
|
|
extends:
|
|
- .compile-assets-metadata
|
|
- .as-if-foss
|
|
rules:
|
|
- <<: *if-not-ee
|
|
when: never
|
|
- <<: *if-default-refs
|
|
changes: *code-backstage-qa-patterns
|
|
when: on_success
|
|
cache:
|
|
policy: pull
|
|
key: "assets-compile:v8:foss"
|
|
|
|
.frontend-job-base:
|
|
extends:
|
|
- .default-tags
|
|
- .default-retry
|
|
- .default-cache
|
|
- .default-before_script
|
|
- .use-pg9
|
|
stage: test
|
|
needs: ["setup-test-env", "compile-assets pull-cache"]
|
|
|
|
.karma-base:
|
|
extends: .frontend-job-base
|
|
variables:
|
|
# we override the max_old_space_size to prevent OOM errors
|
|
NODE_OPTIONS: --max_old_space_size=3584
|
|
script:
|
|
- export BABEL_ENV=coverage CHROME_LOG_FILE=chrome_debug.log
|
|
- date
|
|
- scripts/gitaly-test-spawn
|
|
- date
|
|
- bundle exec rake karma
|
|
|
|
karma:
|
|
extends: .karma-base
|
|
rules:
|
|
- <<: *if-default-refs
|
|
changes: *code-backstage-patterns
|
|
when: on_success
|
|
coverage: '/^Statements *: (\d+\.\d+%)/'
|
|
artifacts:
|
|
name: coverage-javascript
|
|
expire_in: 31d
|
|
when: always
|
|
paths:
|
|
- chrome_debug.log
|
|
- coverage-javascript/
|
|
- tmp/tests/frontend/
|
|
reports:
|
|
junit: junit_karma.xml
|
|
|
|
karma-foss:
|
|
extends:
|
|
- .karma-base
|
|
- .as-if-foss
|
|
rules:
|
|
- <<: *if-not-ee
|
|
when: never
|
|
- <<: *if-default-refs
|
|
changes: *code-backstage-patterns
|
|
when: on_success
|
|
|
|
.jest-base:
|
|
extends: .frontend-job-base
|
|
script:
|
|
- scripts/gitaly-test-spawn
|
|
- date
|
|
- bundle exec rake frontend:fixtures
|
|
- date
|
|
- yarn jest --ci --coverage
|
|
cache:
|
|
key: jest
|
|
paths:
|
|
- tmp/jest/jest/
|
|
policy: pull-push
|
|
|
|
jest:
|
|
extends: .jest-base
|
|
rules:
|
|
- <<: *if-default-refs
|
|
changes: *code-backstage-patterns
|
|
when: on_success
|
|
artifacts:
|
|
name: coverage-frontend
|
|
expire_in: 31d
|
|
when: always
|
|
paths:
|
|
- coverage-frontend/
|
|
- junit_jest.xml
|
|
- tmp/tests/frontend/
|
|
reports:
|
|
junit: junit_jest.xml
|
|
|
|
jest-foss:
|
|
extends:
|
|
- .jest-base
|
|
- .as-if-foss
|
|
rules:
|
|
- <<: *if-not-ee
|
|
when: never
|
|
- <<: *if-default-refs
|
|
changes: *code-backstage-patterns
|
|
when: on_success
|
|
cache:
|
|
policy: pull
|
|
|
|
.qa-frontend-node:
|
|
extends:
|
|
- .default-tags
|
|
- .default-retry
|
|
- .default-cache
|
|
stage: test
|
|
rules:
|
|
- <<: *if-master-refs
|
|
when: on_success
|
|
dependencies: []
|
|
cache:
|
|
key: "$CI_JOB_NAME"
|
|
paths:
|
|
- .yarn-cache/
|
|
policy: pull-push
|
|
script:
|
|
- date
|
|
- yarn install --frozen-lockfile --cache-folder .yarn-cache --prefer-offline
|
|
- date
|
|
- yarn run webpack-prod
|
|
|
|
qa-frontend-node:8:
|
|
extends: .qa-frontend-node
|
|
image: node:carbon
|
|
|
|
qa-frontend-node:10:
|
|
extends: .qa-frontend-node
|
|
image: node:dubnium
|
|
|
|
qa-frontend-node:latest:
|
|
extends: .qa-frontend-node
|
|
image: node:latest
|
|
allow_failure: true
|
|
|
|
webpack-dev-server:
|
|
extends:
|
|
- .default-tags
|
|
- .default-retry
|
|
- .default-cache
|
|
stage: test
|
|
rules:
|
|
- <<: *if-default-refs
|
|
changes: *code-backstage-patterns
|
|
when: on_success
|
|
needs: ["setup-test-env", "compile-assets pull-cache"]
|
|
variables:
|
|
WEBPACK_MEMORY_TEST: "true"
|
|
WEBPACK_VENDOR_DLL: "true"
|
|
script:
|
|
- yarn webpack-vendor
|
|
- node --expose-gc node_modules/.bin/webpack-dev-server --config config/webpack.config.js
|
|
artifacts:
|
|
name: webpack-dev-server
|
|
expire_in: 31d
|
|
paths:
|
|
- webpack-dev-server.json
|