Add experimental Gitlab CI integration

Based on the configuration recommended by Knapsack PRO [1] and Pronto
[2].

So far there are a few issues:

* Bundled gems don't seem to be cached
* The Ruby version can't be read from .ruby-version and needs to be set
  manually
* Tests are slower than when run on Github Actions or Travis CI
* There seem to be many flaky tests, maybe because tests are slower
  (this might actually help us fixing flaky bugs or performance
  bottlenecks)

An advantage of Gitlab CI is we can access the screenshots taken when a
system test fails.

[1] https://docs.knapsackpro.com/2019/how-to-run-parallel-jobs-for-rspec-tests-on-gitlab-ci-pipeline-and-speed-up-ruby-javascript-testing
[2] https://github.com/prontolabs/pronto/#gitlab-integration
This commit is contained in:
Javi Martín
2021-01-17 20:01:28 +01:00
parent c1cdcf25ba
commit de746b4004
2 changed files with 60 additions and 0 deletions

49
.gitlab-ci.yml Normal file
View File

@@ -0,0 +1,49 @@
stages:
- test
- lint
tests:
image: "ruby:2.6.6"
stage: test
services:
- postgres:10.10
cache:
key: consul
paths:
- vendor/
variables:
POSTGRES_USER: consul
RAILS_ENV: test
COVERALLS: 1
parallel: 5
script:
- apt-get update && apt-get install -y nodejs chromium
- for i in config/*.example; do cp "$i" "${i/.example}"; done
- for i in config/*.gitlab; do cp "$i" "${i/.gitlab}"; done
- bundle --without development
- bundle exec rake db:setup
- bundle exec rake assets:precompile > /dev/null 2>&1
- bin/knapsack_pro_rspec
artifacts:
when: on_failure
paths:
- tmp/screenshots/
# To make this job work, create a Personal Access Token with permissions
# to comment on your repository and add a variable named
# PRONTO_GITLAB_API_PRIVATE_TOKEN to your repository CI/CD settings
# giving it the value of the Personal Access Token
linters:
image: "ruby:2.6.6"
stage: lint
cache:
key: consul
paths:
- vendor/
only:
- merge_requests
script:
- apt-get update && apt-get install -y nodejs cmake pkg-config
- bundle --without test
- git fetch origin $CI_MERGE_REQUEST_TARGET_BRANCH_NAME
- bundle exec pronto run -f gitlab_mr -c origin/$CI_MERGE_REQUEST_TARGET_BRANCH_NAME

View File

@@ -0,0 +1,11 @@
default: &default
adapter: postgresql
encoding: unicode
host: postgres
pool: 5
username: consul
password:
test:
<<: *default
database: consul_test