Run the test suite using GitHub Actions

Using GitHub Actions has a few advantages over using Travis CI:

* More jobs can be run in parallel
* All CONSUL repositories on GitHub will be configured automatically

Besides, Travis have recently changed their policy twice. First, they
announced their site for free software projects would be shut down but
free software projects could still use their site for private projects.
And then, they limited the usage of their services for free software
projects.

Just like we used to do with Travis, we're enabling builds for pull
requests but not for pushed branches.

We're also building the master branch. Even if we never push to the
master branch directly, we're aware other CONSUL repositories do, so
we're running the tests for this case.
This commit is contained in:
Javi Martín
2020-11-21 19:48:08 +01:00
parent 64205ab15f
commit 375134ea04
10 changed files with 49 additions and 32 deletions

View File

@@ -3,7 +3,7 @@ Tests that fail randomly are called "flakies", this one seems to be one:
**Randomized seed:** FILL_WITH_RANDOM_SEED **Randomized seed:** FILL_WITH_RANDOM_SEED
**Travis failed build:** FILL_WITH_TRAVIS_FAILED_BUILD_LINK **Failed action:** FILL_WITH_A_LINK_WHERE_THE_FAILURE_IS_SHOWN
**Failure:** **Failure:**
@@ -26,7 +26,7 @@ do
done done
``` ```
You can also try running a single spec in Travis: You can also try running a single spec:
Add option `:focus` to the spec and push your branch to Github, for example: Add option `:focus` to the spec and push your branch to Github, for example:
```ruby ```ruby
scenario 'Show', :focus do scenario 'Show', :focus do

View File

@@ -1,6 +1,6 @@
## References ## References
> Related Issues/Pull Requests/Travis Builds/Rollbar errors/etc... > Related Issues/Pull Requests/errors/etc...
## Objectives ## Objectives

40
.github/workflows/tests.yml vendored Normal file
View File

@@ -0,0 +1,40 @@
name: Test suite
on:
push:
branches:
- master
pull_request:
branches-ignore:
- i18n_master
jobs:
test:
runs-on: ubuntu-18.04
services:
postgres:
image: postgres:10.10
ports: ["5432:5432"]
options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5
env:
POSTGRES_USER: consul
POSTGRES_PASSWORD: ""
env:
PGUSER: consul
POSTGRES_HOST: postgres
RAILS_ENV: test
COVERALLS: true
steps:
- uses: actions/checkout@v2
- uses: ruby/setup-ruby@v1
with:
bundler-cache: true
- name: Setup NPM
uses: actions/setup-node@v1
- name: Copy secrets and database files
run: for i in config/*.example; do cp "$i" "${i/.example}"; done
- name: Setup database
run: bundle exec rake db:setup
- name: Compile assets
run: bundle exec rake assets:precompile > /dev/null 2>&1
- name: Run test suite
run: bin/rspec

View File

@@ -1,23 +0,0 @@
language: ruby
addons:
postgresql: "9.4"
chrome: stable
cache: bundler
bundler_args: --without development
before_script:
- for i in config/*.example; do cp "$i" "${i/.example}"; done
- bundle exec rake db:setup
script:
- "bundle exec rake assets:precompile RAILS_ENV=test > /dev/null 2>&1"
- "bin/knapsack_pro_rspec"
env:
global:
- KNAPSACK_PRO_FIXED_QUEUE_SPLIT=true
- KNAPSACK_PRO_LOG_LEVEL=info
- KNAPSACK_PRO_CI_NODE_TOTAL=5
matrix:
- KNAPSACK_PRO_CI_NODE_INDEX=0
- KNAPSACK_PRO_CI_NODE_INDEX=1
- KNAPSACK_PRO_CI_NODE_INDEX=2
- KNAPSACK_PRO_CI_NODE_INDEX=3
- KNAPSACK_PRO_CI_NODE_INDEX=4

View File

@@ -33,7 +33,7 @@ If you want to contribute code to solve an issue:
If you'd like us to review your pull request in good spirits, please follow our coding conventions: If you'd like us to review your pull request in good spirits, please follow our coding conventions:
* Include specs to test any changes you've made * Include specs to test any changes you've made
* Travis CI will check whether the rest of the application is still working properly; check its build and make sure all tests are passing * Our CI will check whether the rest of the application is still working properly; check its build and make sure all tests are passing
* Your pull request will be automatically reviewed by Hound CI; fix any issues it reports * Your pull request will be automatically reviewed by Hound CI; fix any issues it reports
* Follow [the seven rules of a great commit message](https://chris.beams.io/posts/git-commit/) * Follow [the seven rules of a great commit message](https://chris.beams.io/posts/git-commit/)

View File

@@ -33,7 +33,7 @@ Cuando quieras resolver una incidencia mediante código:
Si quieres que revisemos tu código con una sonrisa, por favor sigue nuestras convenciones: Si quieres que revisemos tu código con una sonrisa, por favor sigue nuestras convenciones:
* Incluye tests para los cambios que hayas hecho * Incluye tests para los cambios que hayas hecho
* Travis CI comprobará automáticamente que el resto de la aplicación sigue funcionando; asegúrate de que los tests pasan * Los tests se ejecutarán automáticamente para comprobar que el resto de la aplicación sigue funcionando; asegúrate de que los tests pasan
* Tus cambios serán revisados automáticamente por Hound CI; arregla los problemas de los que informa (si es que hay alguno) * Tus cambios serán revisados automáticamente por Hound CI; arregla los problemas de los que informa (si es que hay alguno)
* Sigue [las siete reglas para un gran mensaje de commit](https://chris.beams.io/posts/git-commit/) * Sigue [las siete reglas para un gran mensaje de commit](https://chris.beams.io/posts/git-commit/)

View File

@@ -10,7 +10,7 @@
Citizen Participation and Open Government Application Citizen Participation and Open Government Application
[![Build Status](https://travis-ci.com/consul/consul.svg?branch=master)](https://travis-ci.com/consul/consul) ![Build status](https://github.com/consul/consul/workflows/.github/workflows/tests.yml/badge.svg)
[![Code Climate](https://codeclimate.com/github/consul/consul/badges/gpa.svg)](https://codeclimate.com/github/consul/consul) [![Code Climate](https://codeclimate.com/github/consul/consul/badges/gpa.svg)](https://codeclimate.com/github/consul/consul)
[![Coverage Status](https://coveralls.io/repos/github/consul/consul/badge.svg)](https://coveralls.io/github/consul/consul?branch=master) [![Coverage Status](https://coveralls.io/repos/github/consul/consul/badge.svg)](https://coveralls.io/github/consul/consul?branch=master)
[![Crowdin](https://d322cqt584bo4o.cloudfront.net/consul/localized.svg)](https://crowdin.com/project/consul) [![Crowdin](https://d322cqt584bo4o.cloudfront.net/consul/localized.svg)](https://crowdin.com/project/consul)

View File

@@ -10,7 +10,7 @@
Aplicación de Participación Ciudadana y Gobierno Abierto Aplicación de Participación Ciudadana y Gobierno Abierto
[![Build Status](https://travis-ci.com/consul/consul.svg?branch=master)](https://travis-ci.com/consul/consul) ![Estado de los tests](https://github.com/consul/consul/workflows/.github/workflows/tests.yml/badge.svg)
[![Code Climate](https://codeclimate.com/github/consul/consul/badges/gpa.svg)](https://codeclimate.com/github/consul/consul) [![Code Climate](https://codeclimate.com/github/consul/consul/badges/gpa.svg)](https://codeclimate.com/github/consul/consul)
[![Coverage Status](https://coveralls.io/repos/github/consul/consul/badge.svg?branch=master)](https://coveralls.io/github/consul/consul?branch=master) [![Coverage Status](https://coveralls.io/repos/github/consul/consul/badge.svg?branch=master)](https://coveralls.io/github/consul/consul?branch=master)
[![Crowdin](https://d322cqt584bo4o.cloudfront.net/consul/localized.svg)](https://crowdin.com/project/consul) [![Crowdin](https://d322cqt584bo4o.cloudfront.net/consul/localized.svg)](https://crowdin.com/project/consul)

View File

@@ -1,5 +1,5 @@
ENV["RAILS_ENV"] ||= "test" ENV["RAILS_ENV"] ||= "test"
if ENV["TRAVIS"] if ENV["COVERALLS"]
require "coveralls" require "coveralls"
Coveralls.wear!("rails") Coveralls.wear!("rails")
end end

View File

@@ -171,5 +171,5 @@ RSpec.configure do |config|
config.expect_with(:rspec) { |c| c.syntax = :expect } config.expect_with(:rspec) { |c| c.syntax = :expect }
end end
# Parallel build helper configuration for travis # Parallel build helper configuration for CI
KnapsackPro::Adapters::RSpecAdapter.bind KnapsackPro::Adapters::RSpecAdapter.bind