chore(main): release 8.27.1 (#3245) #7303
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: | |
- main | |
pull_request: | |
concurrency: | |
# Cancel concurrent flows on PRs | |
group: ci-${{ github.head_ref || github.run_id }} | |
cancel-in-progress: true | |
jobs: | |
formatting: | |
permissions: | |
contents: read # for actions/checkout to fetch code | |
pull-requests: write # for marocchino/sticky-pull-request-comment to create or update PR comment | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: mamba-org/setup-micromamba@v1 | |
with: | |
environment-name: black | |
create-args: black | |
cache-environment: false | |
- name: Check formatting | |
shell: bash -el {0} | |
run: black --check --diff . | |
- name: Comment PR | |
if: github.event_name == 'pull_request' && failure() | |
uses: marocchino/[email protected] | |
with: | |
message: "Please format your code with [black](https://black.readthedocs.io): `black snakemake tests/*.py`." | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
testing: | |
strategy: | |
matrix: | |
test_group: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] | |
py_ver: ["3.11", "3.12"] | |
runs-on: ubuntu-latest | |
needs: formatting | |
env: | |
AWS_AVAILABLE: "${{ secrets.AWS_ACCESS_KEY_ID }}" | |
GCP_AVAILABLE: "${{ secrets.GCP_SA_KEY }}" | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Modify python version in test env | |
shell: bash -el {0} | |
run: | | |
cp test-environment.yml test-environment-${{ matrix.py_ver }}.yml | |
sed -E -i 's/- python.+/- python =${{ matrix.py_ver }}/' test-environment-${{ matrix.py_ver }}.yml | |
- name: Setup snakemake environment | |
uses: conda-incubator/setup-miniconda@v3 | |
with: | |
miniforge-version: latest | |
environment-file: test-environment-${{ matrix.py_ver }}.yml | |
environment-name: snakemake | |
auto-update-conda: true | |
- name: Install snakemake from source | |
shell: bash -el {0} | |
run: | | |
conda config --set channel_priority strict | |
pip install -e . | |
# - name: Configure fast APT mirror | |
# uses: vegardit/[email protected] | |
- name: Setup apt dependencies | |
run: | | |
sudo add-apt-repository -y ppa:apptainer/ppa | |
sudo apt-get update | |
sudo apt install -y stress git wget openmpi-bin libopenmpi-dev apptainer | |
# See https://github.com/apptainer/apptainer/pull/2262 | |
- name: Disable apparmor namespace restrictions for apptainer | |
run: | | |
sudo sh -c 'echo kernel.apparmor_restrict_unprivileged_userns=0 \ | |
>/etc/sysctl.d/90-disable-userns-restrictions.conf' | |
sudo sysctl -p /etc/sysctl.d/90-disable-userns-restrictions.conf | |
- name: Test local | |
env: | |
CI: true | |
ZENODO_SANDBOX_PAT: "${{ secrets.ZENODO_SANDBOX_PAT }}" | |
#PYTHONTRACEMALLOC: 10 | |
shell: bash -el {0} | |
run: | | |
pytest -v -x --show-capture=stderr \ | |
--splits 10 --group ${{ matrix.test_group }} --splitting-algorithm=least_duration \ | |
tests/tests.py \ | |
tests/test_expand.py \ | |
tests/test_io.py \ | |
tests/test_schema.py \ | |
tests/test_linting.py \ | |
tests/test_executor_test_suite.py \ | |
tests/test_api.py \ | |
tests/test_internals.py | |
- name: Run tests/test_report/Snakefile to generate report | |
shell: bash -el {0} | |
run: | | |
cd tests/test_report | |
snakemake --use-conda --cores 1 --report report.zip | |
- name: List directory structure | |
run: | | |
ls -R | |
- name: Upload report | |
if: ${{ matrix.test_group == 1 }} | |
uses: actions/upload-artifact@v4 | |
with: | |
name: report-${{ matrix.py_ver }}.zip | |
path: tests/test_report/report.zip | |
build-container-image: | |
runs-on: ubuntu-latest | |
needs: testing | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Build container image | |
run: docker build . | |
testing-windows: | |
strategy: | |
matrix: | |
test_group: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] | |
runs-on: windows-latest | |
needs: formatting | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Remove unix-only dependencies | |
shell: python | |
run: | | |
import fileinput | |
excluded_on_win = ["environment-modules", "cwltool", "cwl-utils", "apptainer", "squashfuse"] | |
for line in fileinput.input("test-environment.yml", inplace=True): | |
if all(pkg not in line for pkg in excluded_on_win): | |
print(line, end="") | |
- name: Setup snakemake environment | |
uses: conda-incubator/setup-miniconda@v3 | |
with: | |
miniforge-version: latest | |
environment-file: test-environment.yml | |
environment-name: snakemake | |
auto-update-conda: true | |
- name: Install snakemake from source | |
run: | | |
pip install . | |
- name: Run tests | |
env: | |
CI: true | |
ZENODO_SANDBOX_PAT: "${{ secrets.ZENODO_SANDBOX_PAT }}" | |
run: | | |
python -m pytest --show-capture=stderr -v -x --splits 10 --group ${{ matrix.test_group }} --splitting-algorithm=least_duration tests/tests.py |