Workflow file for this run
This file contains hidden or 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] | |
| pull_request: | |
| branches: [main] | |
| release: | |
| types: [published] | |
| schedule: | |
| - cron: "0 2 * * 3,6" | |
| # runner images: | |
| # https://github.com/actions/runner-images | |
| jobs: | |
| format: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: psf/black@stable | |
| with: | |
| src: pimmslearn | |
| - uses: isort/isort-action@v1 | |
| with: | |
| sortPaths: pimmslearn | |
| lint: | |
| name: Lint with ruff | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.11" | |
| - name: Install ruff | |
| run: | | |
| pip install ruff | |
| - name: Lint with ruff | |
| run: | | |
| # stop the build if there are Python syntax errors or undefined names | |
| ruff check pimmslearn | |
| 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-latest", | |
| # "windows-latest" # rrcovNA cannot be build from source on windows-server | |
| ] | |
| python-version: ["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-tests-local-pip-installation: | |
| runs-on: ${{ matrix.os }} | |
| name: test-pip-installation | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: [ | |
| "ubuntu-latest", | |
| "macos-latest", | |
| #"windows-latest" # tk/tcl issue in current runner images | |
| ] | |
| python-version: ["3.11", "3.12", "3.13"] | |
| 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-tests-local-pip-installation | |
| runs-on: ubuntu-latest | |
| permissions: | |
| id-token: write | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.10" | |
| - 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 }} |