2020-06-02 12:08:33 +00:00
|
|
|
.frontend-base:
|
2019-08-26 20:41:55 +00:00
|
|
|
extends:
|
|
|
|
- .default-retry
|
|
|
|
- .default-before_script
|
2020-06-02 12:08:33 +00:00
|
|
|
variables:
|
|
|
|
SETUP_DB: "false"
|
|
|
|
# we override the max_old_space_size to prevent OOM errors
|
|
|
|
NODE_OPTIONS: --max_old_space_size=3584
|
|
|
|
|
2020-10-08 18:08:32 +00:00
|
|
|
.yarn-install: &yarn-install
|
|
|
|
- source scripts/utils.sh
|
|
|
|
- run_timed_command "retry yarn install --frozen-lockfile"
|
|
|
|
|
2020-06-02 12:08:33 +00:00
|
|
|
.compile-assets-base:
|
2020-07-09 09:09:27 +00:00
|
|
|
extends:
|
|
|
|
- .frontend-base
|
|
|
|
- .assets-compile-cache
|
2020-10-02 21:08:18 +00:00
|
|
|
image: registry.gitlab.com/gitlab-org/gitlab-build-images:ruby-2.6.6-git-2.28-lfs-2.9-node-12.18-yarn-1.22-graphicsmagick-1.3.34
|
2020-07-09 09:09:27 +00:00
|
|
|
variables:
|
|
|
|
WEBPACK_VENDOR_DLL: "true"
|
2019-12-24 12:08:01 +00:00
|
|
|
stage: prepare
|
2020-06-02 12:08:33 +00:00
|
|
|
script:
|
2020-10-08 18:08:32 +00:00
|
|
|
- *yarn-install
|
2020-09-23 15:10:14 +00:00
|
|
|
- run_timed_command "bin/rake gitlab:assets:compile"
|
2020-06-02 12:08:33 +00:00
|
|
|
- run_timed_command "scripts/clean-old-cached-assets"
|
|
|
|
|
|
|
|
compile-production-assets:
|
|
|
|
extends:
|
|
|
|
- .compile-assets-base
|
|
|
|
- .frontend:rules:compile-production-assets
|
2019-04-12 08:56:38 +00:00
|
|
|
variables:
|
|
|
|
NODE_ENV: "production"
|
|
|
|
RAILS_ENV: "production"
|
|
|
|
WEBPACK_REPORT: "true"
|
2019-08-26 20:41:55 +00:00
|
|
|
artifacts:
|
|
|
|
name: webpack-report
|
|
|
|
expire_in: 31d
|
|
|
|
paths:
|
2020-04-30 09:09:39 +00:00
|
|
|
# These assets are used in multiple locations:
|
|
|
|
# - in `build-assets-image` job to create assets image for packaging systems
|
|
|
|
# - GitLab UI for integration tests: https://gitlab.com/gitlab-org/gitlab-ui/-/blob/e88493b3c855aea30bf60baee692a64606b0eb1e/.storybook/preview-head.pug#L1
|
2020-06-02 12:08:33 +00:00
|
|
|
- public/assets/
|
|
|
|
- webpack-report/
|
2020-03-19 15:09:41 +00:00
|
|
|
when: always
|
2020-06-02 12:08:33 +00:00
|
|
|
after_script:
|
2019-06-05 16:31:35 +00:00
|
|
|
- rm -f /etc/apt/sources.list.d/google*.list # We don't need to update Chrome here
|
2019-04-12 08:56:38 +00:00
|
|
|
|
2020-06-02 12:08:33 +00:00
|
|
|
compile-test-assets:
|
2020-02-18 15:08:51 +00:00
|
|
|
extends:
|
2020-06-02 12:08:33 +00:00
|
|
|
- .compile-assets-base
|
|
|
|
- .frontend:rules:compile-test-assets
|
2019-04-12 08:56:38 +00:00
|
|
|
artifacts:
|
|
|
|
expire_in: 7d
|
|
|
|
paths:
|
2020-06-02 12:08:33 +00:00
|
|
|
- public/assets/
|
|
|
|
- node_modules/@gitlab/svgs/dist/icons.json # app/helpers/icons_helper.rb uses this file
|
2020-04-01 06:07:50 +00:00
|
|
|
when: always
|
2019-06-14 10:13:35 +00:00
|
|
|
|
2020-06-02 12:08:33 +00:00
|
|
|
compile-test-assets as-if-foss:
|
2020-02-18 15:08:51 +00:00
|
|
|
extends:
|
2020-06-02 12:08:33 +00:00
|
|
|
- compile-test-assets
|
|
|
|
- .frontend:rules:compile-test-assets-as-if-foss
|
|
|
|
- .as-if-foss
|
2019-06-14 10:13:35 +00:00
|
|
|
|
2020-06-02 12:08:33 +00:00
|
|
|
update-assets-compile-production-cache:
|
2020-01-28 18:08:35 +00:00
|
|
|
extends:
|
2020-06-02 12:08:33 +00:00
|
|
|
- compile-production-assets
|
|
|
|
- .shared:rules:update-cache
|
|
|
|
stage: prepare
|
|
|
|
artifacts: {} # This job's purpose is only to update the cache.
|
2019-10-16 18:08:01 +00:00
|
|
|
cache:
|
2020-06-02 12:08:33 +00:00
|
|
|
policy: push # We want to rebuild the cache from scratch to ensure stale dependencies are cleaned up.
|
2019-10-16 18:08:01 +00:00
|
|
|
|
2020-06-02 12:08:33 +00:00
|
|
|
update-assets-compile-test-cache:
|
2020-02-18 15:08:51 +00:00
|
|
|
extends:
|
2020-06-02 12:08:33 +00:00
|
|
|
- compile-test-assets
|
|
|
|
- .shared:rules:update-cache
|
|
|
|
stage: prepare
|
|
|
|
artifacts: {} # This job's purpose is only to update the cache.
|
2019-10-16 18:08:01 +00:00
|
|
|
cache:
|
2020-06-02 12:08:33 +00:00
|
|
|
policy: push # We want to rebuild the cache from scratch to ensure stale dependencies are cleaned up.
|
2019-10-16 18:08:01 +00:00
|
|
|
|
2020-06-02 12:08:33 +00:00
|
|
|
update-yarn-cache:
|
2020-01-28 18:08:35 +00:00
|
|
|
extends:
|
2020-06-02 12:08:33 +00:00
|
|
|
- .default-retry
|
|
|
|
- .yarn-cache
|
|
|
|
- .shared:rules:update-cache
|
|
|
|
stage: prepare
|
|
|
|
script:
|
2020-10-08 18:08:32 +00:00
|
|
|
- *yarn-install
|
2019-08-26 20:41:55 +00:00
|
|
|
cache:
|
2020-06-02 12:08:33 +00:00
|
|
|
policy: push
|
|
|
|
|
2020-02-20 12:08:51 +00:00
|
|
|
.frontend-fixtures-base:
|
2019-08-26 20:41:55 +00:00
|
|
|
extends:
|
2020-06-02 12:08:33 +00:00
|
|
|
- .frontend-base
|
2020-05-19 09:08:12 +00:00
|
|
|
- .rails-cache
|
2020-05-14 00:07:47 +00:00
|
|
|
- .use-pg11
|
2020-02-20 12:08:51 +00:00
|
|
|
stage: fixtures
|
2020-06-02 12:08:33 +00:00
|
|
|
needs: ["setup-test-env", "compile-test-assets"]
|
|
|
|
variables:
|
|
|
|
SETUP_DB: "true"
|
2020-07-09 09:09:27 +00:00
|
|
|
WEBPACK_VENDOR_DLL: "true"
|
2020-02-20 12:08:51 +00:00
|
|
|
script:
|
2020-05-19 09:08:12 +00:00
|
|
|
- run_timed_command "scripts/gitaly-test-build"
|
|
|
|
- run_timed_command "scripts/gitaly-test-spawn"
|
2020-06-02 12:08:33 +00:00
|
|
|
- run_timed_command "bin/rake frontend:fixtures"
|
2020-02-20 12:08:51 +00:00
|
|
|
artifacts:
|
|
|
|
name: frontend-fixtures
|
|
|
|
expire_in: 31d
|
|
|
|
when: always
|
|
|
|
paths:
|
|
|
|
- tmp/tests/frontend/
|
|
|
|
|
|
|
|
frontend-fixtures:
|
|
|
|
extends:
|
|
|
|
- .frontend-fixtures-base
|
|
|
|
- .frontend:rules:default-frontend-jobs
|
|
|
|
|
|
|
|
frontend-fixtures-as-if-foss:
|
|
|
|
extends:
|
|
|
|
- .frontend-fixtures-base
|
2020-05-15 15:08:04 +00:00
|
|
|
- .frontend:rules:default-frontend-jobs-as-if-foss
|
2020-02-20 12:08:51 +00:00
|
|
|
- .as-if-foss
|
|
|
|
|
2020-06-02 12:08:33 +00:00
|
|
|
.frontend-test-base:
|
2020-02-20 12:08:51 +00:00
|
|
|
extends:
|
2020-07-09 09:09:27 +00:00
|
|
|
- .frontend-base
|
2020-06-02 12:08:33 +00:00
|
|
|
- .yarn-cache
|
2020-02-20 12:08:51 +00:00
|
|
|
variables:
|
|
|
|
USE_BUNDLE_INSTALL: "false"
|
2019-10-16 18:08:01 +00:00
|
|
|
stage: test
|
2020-07-09 09:09:27 +00:00
|
|
|
|
|
|
|
eslint-as-if-foss:
|
|
|
|
extends:
|
|
|
|
- .frontend-test-base
|
|
|
|
- .frontend:rules:eslint-as-if-foss
|
|
|
|
- .as-if-foss
|
|
|
|
needs: []
|
|
|
|
script:
|
2020-10-08 18:08:32 +00:00
|
|
|
- *yarn-install
|
|
|
|
- run_timed_command "yarn run eslint"
|
2019-09-17 14:16:34 +00:00
|
|
|
|
2019-10-04 15:06:38 +00:00
|
|
|
.karma-base:
|
2020-06-02 12:08:33 +00:00
|
|
|
extends: .frontend-test-base
|
2019-04-12 08:56:38 +00:00
|
|
|
script:
|
|
|
|
- export BABEL_ENV=coverage CHROME_LOG_FILE=chrome_debug.log
|
2020-10-08 18:08:32 +00:00
|
|
|
- *yarn-install
|
2020-06-02 12:08:33 +00:00
|
|
|
- run_timed_command "yarn karma"
|
2019-10-04 15:06:38 +00:00
|
|
|
|
|
|
|
karma:
|
2020-02-18 15:08:51 +00:00
|
|
|
extends:
|
|
|
|
- .karma-base
|
|
|
|
- .frontend:rules:default-frontend-jobs
|
2020-02-20 12:08:51 +00:00
|
|
|
needs: ["frontend-fixtures"]
|
2019-04-12 08:56:38 +00:00
|
|
|
coverage: '/^Statements *: (\d+\.\d+%)/'
|
|
|
|
artifacts:
|
|
|
|
name: coverage-javascript
|
|
|
|
expire_in: 31d
|
|
|
|
when: always
|
|
|
|
paths:
|
|
|
|
- chrome_debug.log
|
|
|
|
- coverage-javascript/
|
2019-07-18 17:52:52 +00:00
|
|
|
- tmp/tests/frontend/
|
2019-07-19 06:53:53 +00:00
|
|
|
reports:
|
|
|
|
junit: junit_karma.xml
|
2020-06-23 15:08:41 +00:00
|
|
|
cobertura: coverage-javascript/cobertura-coverage.xml
|
2019-04-12 08:56:38 +00:00
|
|
|
|
2020-02-18 15:08:51 +00:00
|
|
|
karma-as-if-foss:
|
2019-10-04 15:06:38 +00:00
|
|
|
extends:
|
|
|
|
- .karma-base
|
2020-05-15 15:08:04 +00:00
|
|
|
- .frontend:rules:default-frontend-jobs-as-if-foss
|
2020-02-04 09:08:32 +00:00
|
|
|
- .as-if-foss
|
2020-02-20 12:08:51 +00:00
|
|
|
needs: ["frontend-fixtures-as-if-foss"]
|
2019-10-04 15:06:38 +00:00
|
|
|
|
|
|
|
.jest-base:
|
2020-06-02 12:08:33 +00:00
|
|
|
extends: .frontend-test-base
|
2019-04-12 08:56:38 +00:00
|
|
|
script:
|
2020-10-08 18:08:32 +00:00
|
|
|
- *yarn-install
|
2020-06-02 12:08:33 +00:00
|
|
|
- run_timed_command "yarn jest --ci --coverage --testSequencer ./scripts/frontend/parallel_ci_sequencer.js"
|
2019-10-04 15:06:38 +00:00
|
|
|
|
|
|
|
jest:
|
2020-02-18 15:08:51 +00:00
|
|
|
extends:
|
|
|
|
- .jest-base
|
|
|
|
- .frontend:rules:default-frontend-jobs
|
2020-02-20 12:08:51 +00:00
|
|
|
needs: ["frontend-fixtures"]
|
2019-04-12 08:56:38 +00:00
|
|
|
artifacts:
|
|
|
|
name: coverage-frontend
|
|
|
|
expire_in: 31d
|
|
|
|
when: always
|
|
|
|
paths:
|
2019-06-05 16:31:35 +00:00
|
|
|
- coverage-frontend/
|
|
|
|
- junit_jest.xml
|
2019-07-18 17:52:52 +00:00
|
|
|
- tmp/tests/frontend/
|
2019-07-19 06:53:53 +00:00
|
|
|
reports:
|
|
|
|
junit: junit_jest.xml
|
2020-06-16 03:08:24 +00:00
|
|
|
parallel: 4
|
2019-10-04 15:06:38 +00:00
|
|
|
|
2020-05-15 21:08:21 +00:00
|
|
|
jest-integration:
|
2020-05-16 03:08:23 +00:00
|
|
|
extends:
|
2020-06-02 12:08:33 +00:00
|
|
|
- .frontend-test-base
|
2020-05-16 03:08:23 +00:00
|
|
|
- .frontend:rules:default-frontend-jobs
|
2020-05-15 21:08:21 +00:00
|
|
|
script:
|
2020-10-08 18:08:32 +00:00
|
|
|
- *yarn-install
|
2020-06-02 12:08:33 +00:00
|
|
|
- run_timed_command "yarn jest:integration --ci"
|
2020-05-15 21:08:21 +00:00
|
|
|
needs: ["frontend-fixtures"]
|
|
|
|
|
2020-02-18 15:08:51 +00:00
|
|
|
jest-as-if-foss:
|
2019-10-04 15:06:38 +00:00
|
|
|
extends:
|
|
|
|
- .jest-base
|
2020-05-15 15:08:04 +00:00
|
|
|
- .frontend:rules:default-frontend-jobs-as-if-foss
|
2020-02-04 09:08:32 +00:00
|
|
|
- .as-if-foss
|
2020-02-20 12:08:51 +00:00
|
|
|
needs: ["frontend-fixtures-as-if-foss"]
|
2020-06-16 03:08:24 +00:00
|
|
|
parallel: 2
|
2019-04-12 08:56:38 +00:00
|
|
|
|
2020-02-26 09:08:47 +00:00
|
|
|
coverage-frontend:
|
|
|
|
extends:
|
|
|
|
- .default-retry
|
2020-05-15 15:08:04 +00:00
|
|
|
- .yarn-cache
|
2020-04-24 18:09:46 +00:00
|
|
|
- .frontend:rules:ee-mr-and-master-only
|
2020-02-26 09:08:47 +00:00
|
|
|
needs: ["jest"]
|
|
|
|
stage: post-test
|
|
|
|
before_script:
|
2020-10-08 18:08:32 +00:00
|
|
|
- *yarn-install
|
2020-02-26 09:08:47 +00:00
|
|
|
script:
|
2020-06-02 12:08:33 +00:00
|
|
|
- run_timed_command "yarn node scripts/frontend/merge_coverage_frontend.js"
|
2020-07-08 15:09:24 +00:00
|
|
|
coverage: '/^Statements\s*:\s*?(\d+(?:\.\d+)?)%/'
|
2020-02-26 09:08:47 +00:00
|
|
|
artifacts:
|
|
|
|
name: coverage-frontend
|
|
|
|
expire_in: 31d
|
|
|
|
paths:
|
|
|
|
- coverage-frontend/
|
2020-06-23 15:08:41 +00:00
|
|
|
reports:
|
|
|
|
cobertura: coverage-frontend/cobertura-coverage.xml
|
2020-02-26 09:08:47 +00:00
|
|
|
|
2019-08-26 20:41:55 +00:00
|
|
|
.qa-frontend-node:
|
|
|
|
extends:
|
|
|
|
- .default-retry
|
2020-06-02 12:08:33 +00:00
|
|
|
- .yarn-cache
|
2020-02-18 15:08:51 +00:00
|
|
|
- .frontend:rules:qa-frontend-node
|
2019-10-16 18:08:01 +00:00
|
|
|
stage: test
|
2019-08-26 20:41:55 +00:00
|
|
|
dependencies: []
|
2019-04-12 08:56:38 +00:00
|
|
|
script:
|
2020-10-08 18:08:32 +00:00
|
|
|
- *yarn-install
|
|
|
|
- run_timed_command "retry yarn run webpack-prod"
|
2019-04-12 08:56:38 +00:00
|
|
|
|
|
|
|
qa-frontend-node:10:
|
2019-08-26 20:41:55 +00:00
|
|
|
extends: .qa-frontend-node
|
2019-07-22 17:05:17 +00:00
|
|
|
image: node:dubnium
|
2019-04-12 08:56:38 +00:00
|
|
|
|
|
|
|
qa-frontend-node:latest:
|
2020-05-07 09:09:51 +00:00
|
|
|
extends:
|
|
|
|
- .qa-frontend-node
|
|
|
|
- .frontend:rules:qa-frontend-node-latest
|
2019-07-22 17:05:17 +00:00
|
|
|
image: node:latest
|
2019-09-11 16:36:18 +00:00
|
|
|
|
|
|
|
webpack-dev-server:
|
|
|
|
extends:
|
|
|
|
- .default-retry
|
2020-06-02 12:08:33 +00:00
|
|
|
- .yarn-cache
|
2020-02-18 15:08:51 +00:00
|
|
|
- .frontend:rules:default-frontend-jobs
|
2019-10-16 18:08:01 +00:00
|
|
|
stage: test
|
2020-04-23 21:09:31 +00:00
|
|
|
needs: []
|
2019-09-11 16:36:18 +00:00
|
|
|
variables:
|
|
|
|
WEBPACK_MEMORY_TEST: "true"
|
2019-12-17 09:07:48 +00:00
|
|
|
WEBPACK_VENDOR_DLL: "true"
|
2019-09-11 16:36:18 +00:00
|
|
|
script:
|
2020-10-08 18:08:32 +00:00
|
|
|
- *yarn-install
|
2020-06-02 12:08:33 +00:00
|
|
|
- run_timed_command "retry yarn webpack-vendor"
|
|
|
|
- run_timed_command "node --expose-gc node_modules/.bin/webpack-dev-server --config config/webpack.config.js"
|
2019-12-04 15:11:23 +00:00
|
|
|
artifacts:
|
|
|
|
name: webpack-dev-server
|
|
|
|
expire_in: 31d
|
|
|
|
paths:
|
|
|
|
- webpack-dev-server.json
|
2020-05-20 18:08:00 +00:00
|
|
|
|
|
|
|
bundle-size-review:
|
|
|
|
extends:
|
|
|
|
- .default-retry
|
|
|
|
- .frontend:rules:bundle-size-review
|
|
|
|
image: registry.gitlab.com/gitlab-org/gitlab-build-images:danger
|
|
|
|
stage: test
|
2020-06-02 12:08:33 +00:00
|
|
|
needs: ["compile-production-assets"]
|
2020-05-20 18:08:00 +00:00
|
|
|
script:
|
|
|
|
- mkdir -p bundle-size-review
|
|
|
|
- cp webpack-report/index.html bundle-size-review/bundle-report.html
|
|
|
|
- yarn global add https://gitlab.com/gitlab-org/frontend/playground/webpack-memory-metrics.git
|
|
|
|
- danger --dangerfile=danger/bundle_size/Dangerfile --fail-on-errors=true --verbose --danger_id=bundle-size-review
|
|
|
|
artifacts:
|
|
|
|
when: always
|
|
|
|
name: bundle-size-review
|
|
|
|
expire_in: 31d
|
|
|
|
paths:
|
|
|
|
- bundle-size-review
|