summaryrefslogtreecommitdiff
path: root/.gitlab-ci.yml
diff options
context:
space:
mode:
authorKamil Trzcinski <ayufan@ayufan.eu>2016-11-21 23:32:24 +0100
committerKamil Trzcinski <ayufan@ayufan.eu>2016-11-21 23:32:24 +0100
commit2b9ffbc6fed2395e1203b420a2a92c3b426916ac (patch)
tree1a868a8c12486c6e6a572abaf4c8bbf2e8f21125 /.gitlab-ci.yml
parent7c4e425cafd3d882a9c5f2b46660fe12b47eb346 (diff)
downloadgitlab-ce-2b9ffbc6fed2395e1203b420a2a92c3b426916ac.tar.gz
Revert "Test only migrations"
This reverts commit 23fc7875a838b072b8869efada6f68a3a19fc9a6.
Diffstat (limited to '.gitlab-ci.yml')
-rw-r--r--.gitlab-ci.yml363
1 files changed, 363 insertions, 0 deletions
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 84db51f1546..bb94fc41ad1 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -30,16 +30,294 @@ 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 fetch origin v8.5.9
- git checkout -f FETCH_HEAD
@@ -50,3 +328,88 @@ 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 <https://gitlab.com/gitlab-org/$(basename "$PWD")/commit/"$CI_BUILD_REF"/builds>"
+ 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