From 0218a56880b10d5705d5b4f471da6200f83eecef Mon Sep 17 00:00:00 2001 From: Timo Rothenpieler Date: Mon, 8 Jun 2020 22:45:59 +0200 Subject: [PATCH] Migrate to Github Actions --- .github/workflows/build-docker.yml | 4 ++- .github/workflows/run-tests.yml | 57 ++++++++++++++++++++++++++++++ ci/run_tests.sh | 42 ++++++++++++++++++++++ 3 files changed, 102 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/run-tests.yml create mode 100755 ci/run_tests.sh diff --git a/.github/workflows/build-docker.yml b/.github/workflows/build-docker.yml index 6f94df8e9..e29cdd2f4 100644 --- a/.github/workflows/build-docker.yml +++ b/.github/workflows/build-docker.yml @@ -1,3 +1,5 @@ +name: Build Docker-Image + on: push: branches: @@ -10,7 +12,7 @@ jobs: runs-on: ubuntu-latest name: Build Docker Image steps: - - uses: actions/checkout@v1 + - uses: actions/checkout@v2 - name: Build image id: build-image uses: OGGM/docker-build-and-push-action@v1 diff --git a/.github/workflows/run-tests.yml b/.github/workflows/run-tests.yml new file mode 100644 index 000000000..0aa4d4821 --- /dev/null +++ b/.github/workflows/run-tests.yml @@ -0,0 +1,57 @@ +name: Run Tests + +on: + push: + branches: + - master + pull_request: + branches: + - master + +jobs: + test: + name: Test + strategy: + fail-fast: false + matrix: + test-env: + - prepro + - numerics + - models + - benchmark + - utils + - vascaling + - workflow-single + - workflow-multi + - graphics-mpl + container: + - oggm/untested_base:20200323 + - oggm/untested_base:py36 + include: + - container: python:3.7-slim + test-env: minimal + runs-on: ubuntu-latest + container: ${{ matrix.container }} + continue-on-error: ${{ contains(matrix.container, 'py36') }} + steps: + - name: Install git + if: ${{ contains(matrix.container, 'slim') }} + run: apt-get -y update && apt-get -y install --no-install-recommends git + - name: Checkout + uses: actions/checkout@v2 + - name: Test + run: ./ci/run_tests.sh ${{ matrix.test-env }} + env: + DO_COVERALLS: ${{ !contains(matrix.container, 'py36') }} + COVERALLS_REPO_TOKEN: ${{ secrets.GITHUB_TOKEN }} + COVERALLS_PARALLEL: true + coveralls: + name: Coveralls Finished + needs: test + runs-on: ubuntu-latest + steps: + - name: Coveralls Finished + uses: coverallsapp/github-action@master + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + parallel-finished: true \ No newline at end of file diff --git a/ci/run_tests.sh b/ci/run_tests.sh new file mode 100755 index 000000000..ecfe683b6 --- /dev/null +++ b/ci/run_tests.sh @@ -0,0 +1,42 @@ +#!/bin/bash +set -e +set -x + +chown -R "$(id -u):$(id -g)" "$HOME" + +export OGGM_TEST_ENV="$1" +export OGGM_TEST_MODE=unset +export MPLBACKEND=agg + +if [[ $OGGM_TEST_ENV == *-* ]]; then + export OGGM_TEST_MODE="${OGGM_TEST_ENV/*-/}" + export OGGM_TEST_ENV="${OGGM_TEST_ENV/-*/}" +fi + +[[ $OGGM_TEST_MODE == single ]] && export OGGM_TEST_MULTIPROC=False +[[ $OGGM_TEST_MODE == multi ]] && export OGGM_TEST_MULTIPROC=True +[[ $OGGM_TEST_MODE == mpl ]] && export OGGM_MPL=--mpl + +if [[ $OGGM_TEST_ENV == minimal ]]; then + # Special Mode for minimal tests on minimal Python-Image + + export PIP=pip3 + $PIP install --upgrade pytest git+https://github.com/OGGM/pytest-mpl.git +fi + +[[ -d .git ]] || export SETUPTOOLS_SCM_PRETEND_VERSION="g$GITHUB_SHA" + +$PIP install --upgrade coveralls coverage git+https://github.com/fmaussion/salem.git +$PIP install -e . + +coverage erase --rcfile=.coveragerc + +coverage run --rcfile=.coveragerc --source=./oggm --parallel-mode --module \ + pytest --verbose --mpl-upload $OGGM_MPL --run-slow --run-test-env $OGGM_TEST_ENV oggm + +coverage combine --rcfile=.coveragerc +coverage report --skip-covered --rcfile=.coveragerc + +if [[ $DO_COVERALLS == true ]]; then + GITHUB_SHA="$GITHUB_RUN_ID" GITHUB_REF="" coveralls +fi