.assets-compile-cache: cache: paths: - vendor/ruby/ - .yarn-cache/ - tmp/cache/assets/sprockets .gitlab:assets:compile-metadata: extends: - .default-tags - .default-retry - .default-only - .default-before_script - .assets-compile-cache - .only-code-qa-changes image: dev.gitlab.org:5005/gitlab/gitlab-build-images:ruby-2.6.3-git-2.22-chrome-73.0-node-12.x-yarn-1.16-graphicsmagick-1.3.33-docker-18.06.1 stage: test dependencies: ["setup-test-env"] needs: ["setup-test-env"] 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:v6" 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 only: variables: - $CI_SERVER_HOST == "gitlab.com" && $CI_PROJECT_NAMESPACE == "gitlab-org" - $CI_SERVER_HOST == "dev.gitlab.org" tags: - gitlab-org - docker gitlab:assets:compile: extends: .gitlab:assets:compile-metadata only: refs: - master cache: policy: pull-push gitlab:assets:compile pull-cache: extends: .gitlab:assets:compile-metadata except: refs: - master cache: policy: pull .compile-assets-metadata: extends: - .default-tags - .default-retry - .default-only - .default-before_script - .assets-compile-cache - .only-code-qa-changes - .use-pg 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: # we override the max_old_space_size to prevent OOM errors NODE_OPTIONS: --max_old_space_size=3584 cache: key: "assets-compile:test:vendor_ruby:.yarn-cache:tmp_cache_assets_sprockets:v6" artifacts: expire_in: 7d paths: - node_modules - public/assets compile-assets: extends: .compile-assets-metadata only: refs: - master cache: policy: pull-push compile-assets pull-cache: extends: .compile-assets-metadata except: refs: - master cache: policy: pull .only-code-frontend-job-base: extends: - .default-tags - .default-retry - .default-cache - .default-only - .default-before_script - .only-code-changes - .use-pg dependencies: ["compile-assets", "compile-assets pull-cache", "setup-test-env"] karma: extends: .only-code-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 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 jest: extends: .only-code-frontend-job-base script: - scripts/gitaly-test-spawn - date - bundle exec rake frontend:fixtures - date - yarn jest --ci --coverage artifacts: name: coverage-frontend expire_in: 31d when: always paths: - coverage-frontend/ - junit_jest.xml - tmp/tests/frontend/ reports: junit: junit_jest.xml cache: key: jest paths: - tmp/jest/jest/ policy: pull-push .qa-job-base: extends: - .default-tags - .default-retry - .default-cache - .default-only - .only-code-qa-changes dependencies: [] stage: test before_script: - cd qa/ - bundle install qa:internal: extends: .qa-job-base script: - bundle exec rspec qa:selectors: extends: .qa-job-base script: - bundle exec bin/qa Test::Sanity::Selectors .qa-frontend-node: extends: - .default-tags - .default-retry - .default-cache - .default-only - .only-code-changes 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 - .default-only - .only-code-changes dependencies: ["setup-test-env", "compile-assets", "compile-assets pull-cache"] variables: WEBPACK_MEMORY_TEST: "true" script: - node --version - node --expose-gc node_modules/.bin/webpack-dev-server --config config/webpack.config.js