set run-tests only if condition is true #354
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Python tests | |
# This workflow is triggered on pushes and PRs to the repository. | |
# Only run if we changed a Python file | |
on: | |
push: | |
branches: | |
- dev | |
paths-ignore: | |
- "docs/**" | |
- "CHANGELOG.md" | |
pull_request: | |
paths-ignore: | |
- "docs/**" | |
- "CHANGELOG.md" | |
release: | |
types: [published] | |
# Cancel if a newer run is started | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} | |
cancel-in-progress: true | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
jobs: | |
setup: | |
runs-on: ["ubuntu-latest"] | |
strategy: | |
matrix: | |
python-version: ["3.8", "3.12"] | |
runner: ["ubuntu-latest"] | |
include: | |
- runner: "ubuntu-20.04" | |
python-version: "3.8" | |
steps: | |
- name: Check conditions | |
id: conditions | |
run: echo "run-tests=${{ github.ref == 'refs/heads/master' || (matrix.runner == 'ubuntu-20.04' && matrix.python-version == '3.8') }}" >> $GITHUB_ENV | |
outputs: | |
python-version: ${{ matrix.python-version }} | |
runner: ${{ matrix.runner }} | |
run-tests: ${{ github.ref == 'refs/heads/master' || (matrix.runner == 'ubuntu-20.04' && matrix.python-version == '3.8') }} | |
test: | |
name: Test with Python ${{ needs.setup.outputs.python-version }} on ${{ needs.setup.outputs.runner }} | |
needs: setup | |
if: ${{ needs.setup.outputs.run-tests == 'true' }} | |
runs-on: ${{ needs.setup.outputs.runner }} | |
steps: | |
- uses: actions/checkout@v2 | |
name: Check out source-code repository | |
- name: Set up Python ${{ needs.setup.outputs.python-version }} | |
uses: actions/setup-python@v2 | |
with: | |
python-version: ${{ needs.setup.outputs.python-version }} | |
cache: "pip" | |
- name: Install dependencies | |
run: | | |
python -m pip install --upgrade pip -r requirements-dev.txt | |
pip install -e . | |
- name: Downgrade git to the Ubuntu official repository's version | |
if: ${{ needs.setup.outputs.runner == 'ubuntu-20.04' && needs.setup.outputs.python-version == '3.8' }} | |
run: | | |
sudo apt update | |
sudo apt remove -y git git-man | |
sudo add-apt-repository --remove ppa:git-core/ppa | |
sudo apt install -y git | |
- name: Get current date | |
id: date | |
run: echo "date=$(date +'%Y-%m')" >> $GITHUB_ENV | |
- name: Install Nextflow | |
uses: nf-core/setup-nextflow@v1 | |
with: | |
version: "latest-everything" | |
- name: Cache nf-test installation | |
id: cache-software | |
uses: actions/cache@v3 | |
with: | |
path: | | |
/usr/local/bin/nf-test | |
/home/runner/.nf-test/nf-test.jar | |
key: ${{ runner.os }}-nftest-${{ env.date }} | |
- name: Install nf-test | |
if: steps.cache-software.outputs.cache-hit != 'true' | |
run: | | |
wget -qO- https://code.askimed.com/install/nf-test | bash | |
sudo mv nf-test /usr/local/bin/ | |
- name: Test with pytest | |
run: python3 -m pytest tests/ --color=yes --cov-report=xml --cov-config=.github/.coveragerc --cov=nf_core | |
- uses: codecov/codecov-action@v1 | |
name: Upload code coverage report | |
with: | |
if: success() | |
token: ${{ secrets.CODECOV_TOKEN }} |