export multiple trees #2357
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: 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.80' # first to support Python 3.10 and 3.11 | |
- '' # latest | |
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@v4 | |
- name: Set cache key | |
run: echo "DATE=$(date +'%Y-%m-%d')" >> "$GITHUB_ENV" | |
# While it may be tempting to install Augur using Conda to avoid hardcoding | |
# the list of dependencies here, installing just the dependencies not | |
# available on PyPI allows us to test against dependencies installed by pip, | |
# which may have slightly different versions compared to Conda counterparts. | |
- name: Install dependencies from Conda | |
uses: mamba-org/setup-micromamba@v1 | |
with: | |
create-args: mafft raxml fasttree iqtree vcftools biopython=${{ matrix.biopython-version }} python=${{ matrix.python-version }} | |
condarc: | | |
channels: | |
- conda-forge | |
- bioconda | |
channel_priority: strict | |
cache-environment: true | |
cache-environment-key: ${{ env.DATE }} | |
environment-name: augur | |
# Replace the Conda Augur installation with the local 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 | |
# Only upload coverage for one job | |
- if: matrix.python-version == '3.11' && matrix.biopython-version == '' | |
uses: actions/upload-artifact@v4 | |
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: test_target } | |
- { pathogen: ebola } | |
- { pathogen: lassa } | |
- { 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: tb } | |
# Disable some pathogens until pathogen-repo-ci supports custom build directories | |
# See issue https://github.com/nextstrain/.github/issues/63 | |
# - { pathogen: mpox } | |
# - { pathogen: zika } | |
name: pathogen-repo-ci (${{ matrix.pathogen }}) | |
defaults: | |
run: | |
shell: bash -l {0} | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
path: ./augur | |
- name: Set cache key | |
run: echo "DATE=$(date +'%Y-%m-%d')" >> "$GITHUB_ENV" | |
# Set up a Conda environment that replicates Nextstrain's Conda runtime. | |
- name: Install nextstrain-base from Conda | |
uses: mamba-org/setup-micromamba@v1 | |
with: | |
create-args: nextstrain-base | |
condarc: | | |
channels: | |
- nextstrain | |
- conda-forge | |
- bioconda | |
channel_priority: strict | |
cache-environment: true | |
cache-environment-key: ${{ env.DATE }} | |
environment-name: augur | |
# Replace the Conda Augur installation with the local version. | |
- run: pip install ./augur | |
- uses: actions/checkout@v4 | |
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@v4 | |
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@v4 | |
- uses: actions/setup-python@v5 | |
- run: pip install coverage | |
- uses: actions/download-artifact@v4 | |
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] |