Skip to content

CI

CI #1729

Workflow file for this run

name: CI
on:
push:
branches:
- master
# Routinely check that tests pass with new versions of dependencies.
schedule:
# Every day at 17:42 UTC / 9:42 Seattle (winter) / 10:42 Seattle (summer)
- cron: "42 17 * * *"
pull_request:
workflow_dispatch:
jobs:
pytest-cram:
name: test (python=${{ matrix.python-version }} biopython=${{ matrix.biopython-version || 'latest' }})
runs-on: ubuntu-latest
strategy:
matrix:
python-version:
- '3.8'
- '3.9'
- '3.10'
- '3.11'
biopython-version:
# list of Biopython versions with support for a new Python version
# from https://github.com/biopython/biopython/blob/master/NEWS.rst
- '1.76' # first to support Python 3.8
- '1.79' # first to support Python 3.9
- '1.80' # first to support Python 3.10 and 3.11
- '' # latest
exclude:
# some older Biopython versions are incompatible with later Python versions
- { biopython-version: '1.76', python-version: '3.9' }
- { biopython-version: '1.76', python-version: '3.10' }
- { biopython-version: '1.76', python-version: '3.11' }
- { biopython-version: '1.79', python-version: '3.10' }
- { biopython-version: '1.79', python-version: '3.11' }
defaults:
run:
shell: bash -l {0}
env:
COVERAGE_FILE: ${{ github.workspace }}/.coverage@python=${{ matrix.python-version }},biopython=${{ matrix.biopython-version || 'latest' }}
COVERAGE_RCFILE: ${{ github.workspace }}/.coveragerc
steps:
- uses: actions/checkout@v3
- uses: conda-incubator/setup-miniconda@v2
with:
python-version: ${{ matrix.python-version }}
miniforge-variant: Mambaforge
channels: conda-forge,bioconda
- run: |
mamba install \
mafft \
raxml \
fasttree \
iqtree \
vcftools \
biopython=${{ matrix.biopython-version }}
- run: pip install .[dev]
- run: conda info
- run: conda list
- run: pytest -c pytest.python3.ini --cov=augur
- run: cram tests/
env:
AUGUR: coverage run -a ${{ github.workspace }}/bin/augur
- run: bash tests/builds/runner.sh
- uses: actions/upload-artifact@v3
with:
name: coverage
path: "${{ env.COVERAGE_FILE }}"
# TODO: Use the central pathogen-repo-ci workflow¹. Currently, this is not
# possible because it only supports "stock" docker and conda runtimes.
# ¹ https://github.com/nextstrain/.github/blob/-/.github/workflows/pathogen-repo-ci.yaml
pathogen-repo-ci:
runs-on: ubuntu-latest
continue-on-error: true
env:
repodata_use_zst: true
strategy:
matrix:
include:
- { pathogen: avian-flu, build-args: auspice/flu_avian_h5n1_ha.json }
- { pathogen: ebola }
- { pathogen: lassa }
- { pathogen: monkeypox }
- { pathogen: mumps }
- {
pathogen: ncov,
build-args: all_regions -j 2 --profile nextstrain_profiles/nextstrain-ci,
}
- { pathogen: rsv }
- {
pathogen: seasonal-flu,
build-args: --configfile profiles/ci/builds.yaml -p,
}
- { pathogen: zika }
name: pathogen-repo-ci (${{ matrix.pathogen }})
defaults:
run:
shell: bash -l {0}
steps:
- uses: actions/checkout@v3
with:
path: ./augur
- uses: mamba-org/setup-micromamba@v1
with:
create-args: nextstrain-base
condarc: |
channels:
- nextstrain
- conda-forge
- bioconda
channel_priority: strict
cache-environment: true
environment-name: augur
- run: pip install ./augur
- uses: actions/checkout@v3
with:
repository: nextstrain/${{ matrix.pathogen }}
path: ./pathogen-repo
- name: Copy example data
working-directory: ./pathogen-repo
run: |
if [[ -d example_data ]]; then
mkdir -p data/
cp -r -v example_data/* data/
else
echo No example data to copy.
fi
- run: nextstrain build --ambient ./pathogen-repo ${{ matrix.build-args }}
- if: always()
uses: actions/upload-artifact@v3
with:
name: output-${{ matrix.pathogen }}
path: |
./pathogen-repo/auspice/
./pathogen-repo/results/
./pathogen-repo/benchmarks/
./pathogen-repo/logs/
./pathogen-repo/.snakemake/log/
codecov:
if: github.repository == 'nextstrain/augur'
needs: [pytest-cram]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-python@v4
- run: pip install coverage
- uses: actions/download-artifact@v3
with:
name: coverage
- run: coverage combine .coverage@*
- run: coverage xml
- uses: codecov/codecov-action@v3
with:
fail_ci_if_error: false
build-docs:
uses: nextstrain/.github/.github/workflows/docs-ci.yaml@master
with:
docs-directory: docs/
pip-install-target: .[dev]