diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 5878567c02e..c520e7a2927 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -30,294 +30,16 @@ stages: - post-test - pages -# Prepare and merge knapsack tests -.knapsack-state: &knapsack-state - services: [] - variables: - SETUP_DB: "false" - USE_BUNDLE_INSTALL: "false" - cache: - key: "knapsack" - paths: - - knapsack/ - artifacts: - expire_in: 31d - paths: - - knapsack/ - -knapsack: - <<: *knapsack-state - stage: prepare - script: - - mkdir -p knapsack/ - - '[[ -f knapsack/rspec_report.json ]] || echo "{}" > knapsack/rspec_report.json' - - '[[ -f knapsack/spinach_report.json ]] || echo "{}" > knapsack/spinach_report.json' - -update-knapsack: - <<: *knapsack-state - stage: post-test - script: - - scripts/merge-reports knapsack/rspec_report.json knapsack/rspec_node_*.json - - scripts/merge-reports knapsack/spinach_report.json knapsack/spinach_node_*.json - - rm -f knapsack/*_node_*.json - only: - - master@gitlab-org/gitlab-ce - - master@gitlab-org/gitlab-ee - - master@gitlab/gitlabhq - - master@gitlab/gitlab-ee - .use-db: &use-db services: - mysql:latest - redis:alpine -setup-test-env: - <<: *use-db - stage: prepare - script: - - bundle exec rake assets:precompile 2>/dev/null - - bundle exec ruby -Ispec -e 'require "spec_helper" ; TestEnv.init' - artifacts: - expire_in: 7d - paths: - - public/assets - - tmp/tests - - -.rspec-knapsack: &rspec-knapsack - stage: test - <<: *use-db - script: - - JOB_NAME=( $CI_BUILD_NAME ) - - export CI_NODE_INDEX=${JOB_NAME[1]} - - export CI_NODE_TOTAL=${JOB_NAME[2]} - - export KNAPSACK_REPORT_PATH=knapsack/rspec_node_${CI_NODE_INDEX}_${CI_NODE_TOTAL}_report.json - - export KNAPSACK_GENERATE_REPORT=true - - cp knapsack/rspec_report.json ${KNAPSACK_REPORT_PATH} - - knapsack rspec "--color --format documentation" - artifacts: - expire_in: 31d - paths: - - knapsack/ - - coverage/ - -.spinach-knapsack: &spinach-knapsack - stage: test - <<: *use-db - script: - - JOB_NAME=( $CI_BUILD_NAME ) - - export CI_NODE_INDEX=${JOB_NAME[1]} - - export CI_NODE_TOTAL=${JOB_NAME[2]} - - export KNAPSACK_REPORT_PATH=knapsack/spinach_node_${CI_NODE_INDEX}_${CI_NODE_TOTAL}_report.json - - export KNAPSACK_GENERATE_REPORT=true - - cp knapsack/spinach_report.json ${KNAPSACK_REPORT_PATH} - - knapsack spinach "-r rerun" || retry '[[ -e tmp/spinach-rerun.txt ]] && bundle exec spinach -r rerun $(cat tmp/spinach-rerun.txt)' - artifacts: - expire_in: 31d - paths: - - knapsack/ - - coverage/ - -rspec 0 20: *rspec-knapsack -rspec 1 20: *rspec-knapsack -rspec 2 20: *rspec-knapsack -rspec 3 20: *rspec-knapsack -rspec 4 20: *rspec-knapsack -rspec 5 20: *rspec-knapsack -rspec 6 20: *rspec-knapsack -rspec 7 20: *rspec-knapsack -rspec 8 20: *rspec-knapsack -rspec 9 20: *rspec-knapsack -rspec 10 20: *rspec-knapsack -rspec 11 20: *rspec-knapsack -rspec 12 20: *rspec-knapsack -rspec 13 20: *rspec-knapsack -rspec 14 20: *rspec-knapsack -rspec 15 20: *rspec-knapsack -rspec 16 20: *rspec-knapsack -rspec 17 20: *rspec-knapsack -rspec 18 20: *rspec-knapsack -rspec 19 20: *rspec-knapsack - -spinach 0 10: *spinach-knapsack -spinach 1 10: *spinach-knapsack -spinach 2 10: *spinach-knapsack -spinach 3 10: *spinach-knapsack -spinach 4 10: *spinach-knapsack -spinach 5 10: *spinach-knapsack -spinach 6 10: *spinach-knapsack -spinach 7 10: *spinach-knapsack -spinach 8 10: *spinach-knapsack -spinach 9 10: *spinach-knapsack - -# Execute all testing suites against Ruby 2.1 -.ruby-21: &ruby-21 - image: "dev.gitlab.org:5005/gitlab/gitlab-build-images:ruby-2.1-git-2.7-phantomjs-2.1" - <<: *use-db - only: - - master@gitlab-org/gitlab-ce - - master@gitlab-org/gitlab-ee - - master@gitlab/gitlabhq - - master@gitlab/gitlab-ee - cache: - key: "ruby21" - paths: - - vendor/ruby - -.rspec-knapsack-ruby21: &rspec-knapsack-ruby21 - <<: *rspec-knapsack - <<: *ruby-21 - -.spinach-knapsack-ruby21: &spinach-knapsack-ruby21 - <<: *spinach-knapsack - <<: *ruby-21 - -rspec 0 20 ruby21: *rspec-knapsack-ruby21 -rspec 1 20 ruby21: *rspec-knapsack-ruby21 -rspec 2 20 ruby21: *rspec-knapsack-ruby21 -rspec 3 20 ruby21: *rspec-knapsack-ruby21 -rspec 4 20 ruby21: *rspec-knapsack-ruby21 -rspec 5 20 ruby21: *rspec-knapsack-ruby21 -rspec 6 20 ruby21: *rspec-knapsack-ruby21 -rspec 7 20 ruby21: *rspec-knapsack-ruby21 -rspec 8 20 ruby21: *rspec-knapsack-ruby21 -rspec 9 20 ruby21: *rspec-knapsack-ruby21 -rspec 10 20 ruby21: *rspec-knapsack-ruby21 -rspec 11 20 ruby21: *rspec-knapsack-ruby21 -rspec 12 20 ruby21: *rspec-knapsack-ruby21 -rspec 13 20 ruby21: *rspec-knapsack-ruby21 -rspec 14 20 ruby21: *rspec-knapsack-ruby21 -rspec 15 20 ruby21: *rspec-knapsack-ruby21 -rspec 16 20 ruby21: *rspec-knapsack-ruby21 -rspec 17 20 ruby21: *rspec-knapsack-ruby21 -rspec 18 20 ruby21: *rspec-knapsack-ruby21 -rspec 19 20 ruby21: *rspec-knapsack-ruby21 - -spinach 0 10 ruby21: *spinach-knapsack-ruby21 -spinach 1 10 ruby21: *spinach-knapsack-ruby21 -spinach 2 10 ruby21: *spinach-knapsack-ruby21 -spinach 3 10 ruby21: *spinach-knapsack-ruby21 -spinach 4 10 ruby21: *spinach-knapsack-ruby21 -spinach 5 10 ruby21: *spinach-knapsack-ruby21 -spinach 6 10 ruby21: *spinach-knapsack-ruby21 -spinach 7 10 ruby21: *spinach-knapsack-ruby21 -spinach 8 10 ruby21: *spinach-knapsack-ruby21 -spinach 9 10 ruby21: *spinach-knapsack-ruby21 - -# Other generic tests - -.ruby-static-analysis: &ruby-static-analysis - variables: - SIMPLECOV: "false" - SETUP_DB: "false" - USE_BUNDLE_INSTALL: "true" - -.exec: &exec - <<: *ruby-static-analysis - stage: test - script: - - bundle exec $CI_BUILD_NAME - -rubocop: *exec -rake haml_lint: *exec -rake scss_lint: *exec -rake brakeman: *exec -rake flay: *exec -license_finder: *exec -rake downtime_check: *exec -rake ee_compat_check: - <<: *exec - only: - - branches@gitlab-org/gitlab-ce - - branches@gitlab/gitlabhq - except: - - master - - tags - - /^[\d-]+-stable(-ee)?$/ - allow_failure: yes - cache: - key: "ruby231-ee_compat_check_repo" - paths: - - ee_compat_check/repo/ - - vendor/ruby - artifacts: - name: "${CI_BUILD_NAME}_${CI_BUILD_REF_NAME}_${CI_BUILD_REF}" - when: on_failure - expire_in: 10d - paths: - - ee_compat_check/patches/*.patch - -rake db:migrate:reset: - stage: test - <<: *use-db - script: - - rake db:migrate:reset - -rake db:seed_fu: - stage: test - <<: *use-db - variables: - SIZE: "1" - SETUP_DB: "false" - RAILS_ENV: "development" - script: - - git clone https://gitlab.com/gitlab-org/gitlab-test.git - /home/git/repositories/gitlab-org/gitlab-test.git - - bundle exec rake db:setup db:seed_fu - artifacts: - when: on_failure - expire_in: 1d - paths: - - log/development.log - -teaspoon: - stage: test - <<: *use-db - script: - - curl --silent --location https://deb.nodesource.com/setup_6.x | bash - - - apt-get install --assume-yes nodejs - - npm install --global istanbul - - rake teaspoon - artifacts: - name: coverage-javascript - expire_in: 31d - paths: - - coverage-javascript/default/ - -lint-doc: - stage: test - image: "phusion/baseimage:latest" - before_script: [] - script: - - scripts/lint-doc.sh - -bundler:check: - stage: test - <<: *ruby-static-analysis - script: - - bundle check - -bundler:audit: - stage: test - <<: *ruby-static-analysis - only: - - master@gitlab-org/gitlab-ce - - master@gitlab-org/gitlab-ee - - master@gitlab/gitlabhq - - master@gitlab/gitlab-ee - script: - - "bundle exec bundle-audit check --update --ignore OSVDB-115941" - migration paths: stage: test <<: *use-db variables: SETUP_DB: "false" - only: - - master@gitlab-org/gitlab-ce - - master@gitlab-org/gitlab-ee - - master@gitlab/gitlabhq - - master@gitlab/gitlab-ee script: - git checkout HEAD . - git fetch --tags @@ -329,88 +51,3 @@ migration paths: - git checkout $CI_BUILD_REF - source scripts/prepare_build.sh - rake db:migrate - -coverage: - stage: post-test - services: [] - variables: - SETUP_DB: "false" - USE_BUNDLE_INSTALL: "true" - script: - - bundle exec scripts/merge-simplecov - artifacts: - name: coverage - expire_in: 31d - paths: - - coverage/index.html - - coverage/assets/ - -lint-javascript: - stage: test - image: "node:latest" - before_script: - - npm install - script: - - npm run eslint - -# Trigger docs build -# https://gitlab.com/gitlab-com/doc-gitlab-com/blob/master/README.md#deployment-process -trigger_docs: - stage: post-test - image: "alpine" - before_script: - - apk update && apk add curl - variables: - GIT_STRATEGY: none - cache: {} - artifacts: {} - script: - - "curl -X POST -F token=${DOCS_TRIGGER_TOKEN} -F ref=master -F variables[PROJECT]=ce https://gitlab.com/api/v3/projects/1794617/trigger/builds" - only: - - master@gitlab-org/gitlab-ce - -# Notify slack in the end - -notify:slack: - stage: post-test - variables: - SETUP_DB: "false" - USE_BUNDLE_INSTALL: "false" - script: - - ./scripts/notify_slack.sh "#builds" "Build on \`$CI_BUILD_REF_NAME\` failed! Commit \`$(git log -1 --oneline)\` See " - when: on_failure - only: - - master@gitlab-org/gitlab-ce - - tags@gitlab-org/gitlab-ce - - master@gitlab-org/gitlab-ee - - tags@gitlab-org/gitlab-ee - -pages: - before_script: [] - stage: pages - dependencies: - - coverage - - teaspoon - script: - - mv public/ .public/ - - mkdir public/ - - mv coverage public/coverage-ruby - - mv coverage-javascript/default/ public/coverage-javascript/ - artifacts: - paths: - - public - only: - - master - -# Insurance in case a gem needed by one of our releases gets yanked from -# rubygems.org in the future. -cache gems: - only: - - tags - variables: - SETUP_DB: "false" - script: - - bundle package --all --all-platforms - artifacts: - paths: - - vendor/cache