tests: Switch from Travis to GitHub Actions (faster)

Primary motivation for this is speed: GitHub Actions doesn't limit the
number of concurrent jobs to 4, and also provides a docker registry
(GitHub Packages) that we can use to cache the image (building the image
takes cca 5 minutes, fetching it would take less than 10 seconds). This
is done in another commit.

The workflow definition is a bit more complicated because coveralls
support for GitHub Actions is less mature than for Travis CI, so we need
to manually tell coveralls that all parallel builds have finished and
that it can publish the combined result.
This commit is contained in:
Tomas Janousek 2020-07-04 18:27:58 +02:00 committed by Tomas Babej
parent 3b72535707
commit 4e8b01e6e2
5 changed files with 47 additions and 24 deletions

36
.github/workflows/tests.yaml vendored Normal file
View file

@ -0,0 +1,36 @@
name: tests
on: [push, pull_request]
jobs:
tests:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
include:
- TASK_VERSION: v2.4.0
- TASK_VERSION: v2.4.1
- TASK_VERSION: v2.4.2
- TASK_VERSION: v2.4.3
- TASK_VERSION: v2.4.4
- TASK_VERSION: v2.5.0
- TASK_VERSION: v2.5.1
continue-on-error: ${{ matrix.continue-on-error == true }}
steps:
- uses: actions/checkout@v2
- name: Prepare docker image
run: docker-compose build --build-arg TASK_VERSION=${{ matrix.TASK_VERSION }} tests
- name: Test
run: make test PYTEST_FLAGS="-n8"
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
COVERALLS_PARALLEL: true
coveralls-finished:
needs: tests
runs-on: ubuntu-latest
steps:
- name: Finished
uses: coverallsapp/github-action@v1.1.1
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
parallel-finished: true

View file

@ -1,17 +0,0 @@
language: minimal
env:
- TASK_VERSION=v2.4.0
- TASK_VERSION=v2.4.1
- TASK_VERSION=v2.4.2
- TASK_VERSION=v2.4.3
- TASK_VERSION=v2.4.4
- TASK_VERSION=v2.5.0
- TASK_VERSION=v2.5.1
services:
- docker
install:
# Build the docker container
- pushd $TRAVIS_BUILD_DIR
- docker-compose build --build-arg TASK_VERSION=$TASK_VERSION tests
script:
- make test PYTEST_FLAGS="-n8"

View file

@ -10,7 +10,7 @@ pytest:
cover-pytest: PYTEST_FLAGS += --cov=taskwiki
cover-pytest: pytest
if [ "$$TRAVIS" ]; then coveralls; fi
if [ "$$GITHUB_ACTIONS" ]; then coveralls || :; fi
xvfb-%:
xvfb-run --server-args=-noreset $(MAKE) $*

View file

@ -3,7 +3,7 @@
_Proper project management in vim.
Standing on the shoulders of vimwiki and Taskwarrior_
[![Travis build status](https://travis-ci.org/tbabej/taskwiki.svg?branch=master)](https://travis-ci.org/tbabej/taskwiki)
[![GitHub Actions build status](https://github.com/tbabej/taskwiki/workflows/tests/badge.svg?branch=master)](https://github.com/tbabej/taskwiki/actions)
[![Coverage Status](https://coveralls.io/repos/tbabej/taskwiki/badge.svg?branch=master)](https://coveralls.io/r/tbabej/taskwiki?branch=master)
[![Code Health](https://landscape.io/github/tbabej/taskwiki/master/landscape.svg?style=flat)](https://landscape.io/github/tbabej/taskwiki/master)
[![Chat with developers](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/tbabej/taskwiki)
@ -295,7 +295,7 @@ need to install and enable either the `en_US` or `en_GB` locale. For example:
LANG=en_US python -m pytest
Finally you might want to have a look at [the travis configuration](.travis.yml)
Finally you might want to have a look at [the CI configuration](.github/workflows/tests.yaml)
and consider using a virtual machine or [Xvfb](https://www.x.org/releases/X11R7.6/doc/man/man1/Xvfb.1.xhtml).
#### Known issues

View file

@ -9,8 +9,12 @@ services:
- label=type:container_runtime_t
tty: true
environment:
COVERALLS_PARALLEL:
GITHUB_ACTIONS:
GITHUB_HEAD_REF:
GITHUB_REF:
GITHUB_RUN_ID:
GITHUB_RUN_NUMBER:
GITHUB_SHA:
GITHUB_TOKEN:
PYTEST_FLAGS: "-o cache_dir=/tmp/pytest-cache ${PYTEST_FLAGS:-}"
TRAVIS:
TRAVIS_JOB_ID:
TRAVIS_BRANCH:
TRAVIS_PULL_REQUEST: