-
Notifications
You must be signed in to change notification settings - Fork 2
144 lines (133 loc) · 4.66 KB
/
ci.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
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.8", "3.9", "3.10"]
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Miniconda
# ! change action https://github.com/mamba-org/setup-micromamba
uses: conda-incubator/setup-miniconda@v3
with:
miniforge-variant: Mambaforge
# miniforge-version: latest
use-mamba: true
channel-priority: disabled
python-version: ${{ matrix.python-version }}
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: test-r-kernel-imports
# run: |
# Rscript -e "library(stringi)"
# Rscript -e "library(stringr)"
# Rscript -e "library(reshape2)"
- 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/
environment.yml
environment_w_versions.yml
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.8", "3.9", "3.10", "3.11", "3.12"]
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: install pimms
run: python -m pip install .
- name: Install pytest
run: python -m pip install pytest pytest-cov
- name: Run pytest
run: pytest .
- name: Install papermill
run: python -m 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 }}