Run unit tests, integration tests, and publish package if tagged #658
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: Run unit tests, integration tests, and publish package if tagged | |
on: | |
push: | |
branches: [main, dev] | |
pull_request: | |
branches: [main, dev] | |
release: | |
types: [published] | |
schedule: | |
- cron: '0 2 * * 3,6' | |
jobs: | |
run-unit-and-integration-tests-with-conda-install: | |
runs-on: ${{ matrix.os }} | |
defaults: | |
run: | |
shell: bash -el {0} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: ["ubuntu-latest", | |
"macos-13", | |
# "windows-latest" # rrcovNA cannot be build from source on windows-server | |
] | |
python-version: ["3.9", "3.10", "3.11", "3.12"] | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Set up Miniconda | |
uses: conda-incubator/setup-miniconda@v3 | |
with: | |
python-version: ${{ matrix.python-version }} | |
channel-priority: strict | |
environment-file: snakemake_env.yml | |
activate-environment: snakemake | |
auto-activate-base: true | |
auto-update-conda: true | |
- name: inspect-conda-environment | |
run: | | |
conda info | |
conda list | |
conda env export --from-history --no-builds > environment.yml | |
conda env export --no-builds | |
conda env export --no-builds > environment_w_versions.yml | |
- name: Dry-Run demo workflow (integration test) | |
run: | | |
cd project | |
snakemake -p -c1 --configfile config/single_dev_dataset/example/config.yaml --use-conda -n | |
- name: Run demo workflow (integration test) | |
continue-on-error: true | |
run: | | |
cd project | |
snakemake -p -c4 -k --configfile config/single_dev_dataset/example/config.yaml --use-conda | |
- name: Run demo workflow again (in case of installation issues) | |
continue-on-error: true | |
run: | | |
cd project | |
snakemake -p -c4 -k --configfile config/single_dev_dataset/example/config.yaml --use-conda | |
- name: Run demo workflow again (in case of installation issues) - one thread | |
run: | | |
cd project | |
snakemake -p -c1 --configfile config/single_dev_dataset/example/config.yaml --use-conda | |
- name: Archive results | |
# https://github.com/actions/upload-artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ${{ matrix.os }}-${{ matrix.python-version }}-example-workflow-results | |
path: | | |
project/runs/example/ | |
snakemake_env | |
project/.snakemake/conda/ | |
run-unit-local-pip-installation: | |
runs-on: ${{ matrix.os }} | |
name: test-pip-installation | |
strategy: | |
fail-fast: false | |
matrix: | |
os: ["ubuntu-latest", "macos-latest", "windows-latest"] | |
python-version: ["3.9", "3.10", "3.11", "3.12"] | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-tags: true | |
fetch-depth: 0 | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: install pimms | |
run: pip install . | |
- name: Install pytest | |
run: pip install pytest pytest-cov | |
- name: Run pytest | |
run: pytest . | |
- name: Install papermill | |
run: pip install papermill ipykernel | |
- name: View papermill help message for notebooks (as scripts) | |
run: | | |
cd project | |
papermill 01_0_split_data.ipynb --help-notebook | |
papermill 01_1_train_VAE.ipynb --help-notebook | |
papermill 01_1_train_DAE.ipynb --help-notebook | |
papermill 01_1_train_CF.ipynb --help-notebook | |
- name: Run tutorial notebooks | |
run: | | |
cd project | |
mkdir runs | |
papermill 04_1_train_pimms_models.ipynb runs/04_1_train_pimms_models.ipynb | |
papermill 04_1_train_pimms_models.ipynb runs/04_1_train_pimms_models_no_val.ipynb -p sample_splits False | |
publish: | |
name: Publish package | |
if: startsWith(github.ref, 'refs/tags') | |
needs: | |
- run-unit-and-integration-tests-with-conda-install | |
- run-unit-local-pip-installation | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: "3.8" | |
- name: Install twine and build | |
run: python -m pip install --upgrade twine build | |
- name: Build | |
run: python -m build | |
- uses: pypa/gh-action-pypi-publish@release/v1 | |
with: | |
user: __token__ | |
password: ${{ secrets.PYPI_API_TOKEN }} |