From 29c1f629fea4fee1d5c850e7c5d21e7409e415c8 Mon Sep 17 00:00:00 2001 From: Tomas Janousek Date: Sat, 4 Jul 2020 18:27:58 +0200 Subject: [PATCH] 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. Also, coveralls-python support is work-in-progress (https://github.com/coveralls-clients/coveralls-python/pull/227) so I've tagged a working snapshot of that PR in my fork. Once it's in a released version of coveralls-python I'll switch to it. --- .github/workflows/tests.yaml | 36 ++++++++++++++++++++++++++++++++++++ .travis.yml | 17 ----------------- Dockerfile | 3 ++- Makefile | 2 +- README.md | 4 ++-- docker-compose.yml | 12 ++++++++---- 6 files changed, 49 insertions(+), 25 deletions(-) create mode 100644 .github/workflows/tests.yaml delete mode 100644 .travis.yml diff --git a/.github/workflows/tests.yaml b/.github/workflows/tests.yaml new file mode 100644 index 000000000..e357c9432 --- /dev/null +++ b/.github/workflows/tests.yaml @@ -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 diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 2a805dd44..000000000 --- a/.travis.yml +++ /dev/null @@ -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" diff --git a/Dockerfile b/Dockerfile index 8cb483329..d66a0e9a1 100644 --- a/Dockerfile +++ b/Dockerfile @@ -80,7 +80,8 @@ RUN set -ex \ gcc \ musl-dev \ && pip install \ - coverage coveralls \ + coverage \ + https://github.com/liskin/coveralls-python/archive/ea93b7c62d7705e9cc593ae523c89015c4653905.zip \ pytest \ pytest-xdist \ https://github.com/liskin/vimrunner-python/archive/8c19ff88050c09236e7519425bfae33c687483df.zip \ diff --git a/Makefile b/Makefile index d295a036c..078674ffa 100644 --- a/Makefile +++ b/Makefile @@ -11,7 +11,7 @@ pytest: cover-pytest: pytest coverage combine coverage report - if [ "$$TRAVIS" ]; then coveralls; fi + if [ "$$GITHUB_ACTIONS" ]; then coveralls || :; fi xvfb-%: xvfb-run --server-args=-noreset $(MAKE) $* diff --git a/README.md b/README.md index 928250255..ebf0a9847 100644 --- a/README.md +++ b/README.md @@ -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 diff --git a/docker-compose.yml b/docker-compose.yml index 035e725fa..bc3fd263d 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -10,8 +10,12 @@ services: tty: true command: make xvfb-cover-pytest 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: