rel: 0.19.2 #226
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: Build-Test-Deploy | |
on: | |
push: | |
branches: | |
- main | |
- master | |
- maint/* | |
tags: | |
- "*" | |
pull_request: | |
branches: | |
- main | |
- master | |
- maint/* | |
schedule: | |
# 8am EST / 9am EDT Mondays | |
- cron: "0 13 * * 1" | |
workflow_dispatch: | |
defaults: | |
run: | |
shell: bash | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
permissions: | |
contents: read | |
env: | |
# Force tox and pytest to use color | |
FORCE_COLOR: true | |
TEMPLATEFLOW_HOME: /tmp/templateflow | |
jobs: | |
build: | |
name: Build & verify package | |
runs-on: ubuntu-latest | |
permissions: | |
attestations: write | |
id-token: write | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
persist-credentials: false | |
# Note that we may need to revert to 2.9 if bugs are found in `uv build`, | |
# unless build-and-inspect-python-package lets us select build as a backend | |
# | |
# https://github.com/astral-sh/uv/issues/5450 | |
# or https://github.com/hynek/build-and-inspect-python-package/issues/155 | |
# | |
# If 2.9 is required, then we will need to pin to hatchling 1.26.x to avoid | |
# incompatibilities with twine and the package metadata emitted by hatchiling. | |
- uses: hynek/build-and-inspect-python-package@v2 | |
id: build-smriprep | |
with: | |
upload-name-suffix: -main | |
attest-build-provenance-github: ${{ github.event_name != 'pull_request' }} | |
- name: Clean up package build | |
run: rm -r ${{ steps.build-smriprep.outputs.dist }} | |
- uses: hynek/build-and-inspect-python-package@v2 | |
id: build-wrapper | |
with: | |
path: wrapper | |
upload-name-suffix: -wrapper | |
attest-build-provenance-github: ${{ github.event_name != 'pull_request' }} | |
- name: Clean up wrapper build | |
run: rm -r ${{ steps.build-wrapper.outputs.dist }} | |
test: | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
os: ["ubuntu-latest"] | |
python-version: ["3.10", "3.11", "3.12", "3.13"] | |
dependencies: [latest, pre] | |
include: | |
# Test minimum dependencies on oldest supported Python | |
- os: ubuntu-latest | |
python-version: "3.10" | |
dependencies: min | |
exclude: | |
# Do not test pre-releases for versions out of SPEC0 | |
- os: ubuntu-latest | |
python-version: "3.10" | |
dependencies: pre | |
env: | |
DEPENDS: ${{ matrix.dependencies }} | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
persist-credentials: false | |
- name: Install the latest version of uv | |
uses: astral-sh/setup-uv@v5 | |
- name: Set up Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Display Python version | |
run: python -c "import sys; print(sys.version)" | |
- name: Restore cached templateflow | |
id: tf-cache-restore | |
uses: actions/cache@v4 | |
with: | |
path: /tmp/templateflow | |
key: templateflow-v0 | |
# Use the following to fall back to and build on v0 when bumping to v1 | |
# If the cache need to be cleared, remove this when bumping key version | |
# restore-keys: | | |
# templateflow-v0 | |
- name: Initialize templateflow | |
if: steps.tf-cache-restore.outputs.cache-hit != 'true' | |
run: | | |
uvx templateflow update --no-overwrite | |
- name: Install tox | |
run: | | |
uv tool install tox --with=tox-uv --with=tox-gh-actions | |
- name: Show tox config | |
run: tox c | |
- name: Run tox | |
run: tox -v --exit-and-dump-after 1800 | |
- uses: codecov/codecov-action@v5 | |
with: | |
token: ${{ secrets.CODECOV_TOKEN }} | |
if: ${{ always() }} | |
test-packages: | |
runs-on: ${{ matrix.os }} | |
needs: [build] | |
strategy: | |
matrix: | |
os: ["ubuntu-latest"] | |
python-version: ["3.12"] | |
dependencies: ["latest"] | |
env: | |
DEPENDS: ${{ matrix.dependencies }} | |
steps: | |
- name: Download packages built by build-and-inspect-python-package | |
uses: actions/download-artifact@v4 | |
with: | |
pattern: Packages-* | |
path: dist | |
- run: ls -lR | |
- name: Install the latest version of uv | |
uses: astral-sh/setup-uv@v5 | |
- name: Set up Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Restore cached templateflow | |
id: tf-cache-restore | |
uses: actions/cache@v4 | |
with: | |
path: /tmp/templateflow | |
key: templateflow-v0 | |
# Use the following to fall back to and build on v0 when bumping to v1 | |
# If the cache need to be cleared, remove this when bumping key version | |
# restore-keys: | | |
# templateflow-v0 | |
- name: Check wrapper version | |
run: | | |
echo n | uvx --from=$( ls dist/*/smriprep_docker*.whl ) smriprep-docker --version | |
- name: Unpack sdist | |
run: | | |
tar --strip-components=1 -xzf dist/*/smriprep-*.tar.gz | |
- name: Install tox | |
run: | | |
uv tool install tox --with=tox-uv --with=tox-gh-actions | |
- name: Show tox config | |
run: tox c | |
- name: Run tox | |
run: tox -v --exit-and-dump-after 1800 | |
- uses: codecov/codecov-action@v5 | |
with: | |
token: ${{ secrets.CODECOV_TOKEN }} | |
if: ${{ always() }} | |
publish: | |
name: Publish released package to pypi.org | |
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags') | |
runs-on: ubuntu-latest | |
environment: PyPI | |
needs: [test, test-packages] | |
permissions: | |
attestations: write | |
id-token: write | |
steps: | |
- name: Download packages built by build-and-inspect-python-package | |
uses: actions/download-artifact@v4 | |
with: | |
pattern: Packages-* | |
path: dist | |
- name: Upload package to PyPI | |
uses: pypa/gh-action-pypi-publish@release/v1 | |
with: | |
packages-dir: dist/Packages-main/ | |
- name: Upload package to PyPI | |
uses: pypa/gh-action-pypi-publish@release/v1 | |
with: | |
packages-dir: dist/Packages-wrapper/ | |
checks: | |
runs-on: "ubuntu-latest" | |
continue-on-error: true | |
strategy: | |
matrix: | |
check: ["style", "spellcheck"] | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
persist-credentials: false | |
- name: Install the latest version of uv | |
uses: astral-sh/setup-uv@v5 | |
- name: Install tox | |
run: uv tool install tox --with=tox-uv | |
- name: Show tox config | |
run: tox c -e ${{ matrix.check }} | |
- name: Run check | |
run: tox -e ${{ matrix.check }} |