From 0dbfb67139da8357683b81ee76a882912ef13be0 Mon Sep 17 00:00:00 2001 From: "Christopher J. Markiewicz" Date: Sun, 4 Sep 2022 15:35:17 -0400 Subject: [PATCH 1/5] CI: Update action versions --- .github/workflows/misc.yml | 6 +++--- .github/workflows/pre-release.yml | 6 +++--- .github/workflows/stable.yml | 6 +++--- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/.github/workflows/misc.yml b/.github/workflows/misc.yml index 11ed7ee4d8..5317b3d811 100644 --- a/.github/workflows/misc.yml +++ b/.github/workflows/misc.yml @@ -35,12 +35,12 @@ jobs: EXTRA_PIP_FLAGS: ${{ matrix.pip-flags }} steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 with: submodules: recursive fetch-depth: 0 - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v2 + uses: actions/setup-python@v4 with: python-version: ${{ matrix.python-version }} architecture: ${{ matrix.architecture }} @@ -63,7 +63,7 @@ jobs: run: tools/ci/submit_coverage.sh if: ${{ always() }} - name: Upload pytest test results - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v3 with: name: pytest-results-${{ matrix.os }}-${{ matrix.python-version }} path: for_testing/test-results.xml diff --git a/.github/workflows/pre-release.yml b/.github/workflows/pre-release.yml index 6f5c2a1aa0..4979713fe0 100644 --- a/.github/workflows/pre-release.yml +++ b/.github/workflows/pre-release.yml @@ -56,12 +56,12 @@ jobs: EXTRA_PIP_FLAGS: ${{ matrix.pip-flags }} steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 with: submodules: recursive fetch-depth: 0 - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v2 + uses: actions/setup-python@v4 with: python-version: ${{ matrix.python-version }} architecture: ${{ matrix.architecture }} @@ -84,7 +84,7 @@ jobs: run: tools/ci/submit_coverage.sh if: ${{ always() }} - name: Upload pytest test results - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v3 with: name: pytest-results-${{ matrix.os }}-${{ matrix.python-version }} path: for_testing/test-results.xml diff --git a/.github/workflows/stable.yml b/.github/workflows/stable.yml index dfc9649710..56a71b44f4 100644 --- a/.github/workflows/stable.yml +++ b/.github/workflows/stable.yml @@ -103,12 +103,12 @@ jobs: EXTRA_PIP_FLAGS: ${{ matrix.pip-flags }} steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 with: submodules: recursive fetch-depth: 0 - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v2 + uses: actions/setup-python@v4 with: python-version: ${{ matrix.python-version }} architecture: ${{ matrix.architecture }} @@ -131,7 +131,7 @@ jobs: run: tools/ci/submit_coverage.sh if: ${{ always() }} - name: Upload pytest test results - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v3 with: name: pytest-results-${{ matrix.os }}-${{ matrix.python-version }} path: for_testing/test-results.xml From f1678f86bf7c69f6435c92744e9d4c14744bf408 Mon Sep 17 00:00:00 2001 From: "Christopher J. Markiewicz" Date: Sun, 4 Sep 2022 20:05:16 -0400 Subject: [PATCH 2/5] CI: Build, test and deploy packages --- .github/workflows/stable.yml | 67 ++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) diff --git a/.github/workflows/stable.yml b/.github/workflows/stable.yml index 56a71b44f4..fbf76a4124 100644 --- a/.github/workflows/stable.yml +++ b/.github/workflows/stable.yml @@ -23,6 +23,59 @@ defaults: shell: bash jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + with: + fetch-depth: 0 + - uses: actions/setup-python@v4 + with: + python-version: 3 + - run: pip install --upgrade build twine + - name: Build sdist and wheel + run: python -m build + - run: twine check dist/* + - name: Build git archive + run: git archive -v -o dist/nibabel-archive.tgz HEAD + - uses: actions/upload-artifact@v3 + with: + name: dist + path: dist/ + + test-package: + runs-on: ubuntu-latest + needs: [build] + strategy: + matrix: + package: ['wheel', 'sdist', 'archive'] + steps: + - uses: actions/download-artifact@v3 + with: + name: dist + path: dist/ + - uses: actions/setup-python@v4 + with: + python-version: 3 + - name: Display Python version + run: python -c "import sys; print(sys.version)" + - name: Update pip + run: pip install --upgrade pip + - name: Install wheel + run: pip install dist/nibabel-*.whl + if: matrix.package == 'wheel' + - name: Install sdist + run: pip install dist/nibabel-*.tar.gz + if: matrix.package == 'sdist' + - name: Install archive + run: pip install dist/nibabel-archive.tgz + if: matrix.package == 'archive' + - run: python -c 'import nibabel; print(nibabel.__version__)' + - name: Install test extras + run: pip install nibabel[test] + - name: Run tests + run: pytest --doctest-modules --doctest-plus -v --pyargs nibabel + stable: # Check each OS, all supported Python, minimum versions and latest releases runs-on: ${{ matrix.os }} @@ -136,3 +189,17 @@ jobs: name: pytest-results-${{ matrix.os }}-${{ matrix.python-version }} path: for_testing/test-results.xml if: ${{ always() && matrix.check == 'test' }} + + publish: + runs-on: ubuntu-latest + needs: [stable, test-package] + if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/') + steps: + - uses: actions/download-artifact@v3 + with: + name: dist + path: dist/ + - uses: pypa/gh-action-pypi-publish@release/v1 + with: + user: __token__ + password: ${{ secrets.PYPI_API_TOKEN }} From ae0441bf7f19c2e83365e87639719def05d7f356 Mon Sep 17 00:00:00 2001 From: "Christopher J. Markiewicz" Date: Sun, 4 Sep 2022 20:33:13 -0400 Subject: [PATCH 3/5] CI: Drop old wheel/sdist/archive tests --- .github/workflows/stable.yml | 22 ---------------------- 1 file changed, 22 deletions(-) diff --git a/.github/workflows/stable.yml b/.github/workflows/stable.yml index fbf76a4124..8ad47eb0b1 100644 --- a/.github/workflows/stable.yml +++ b/.github/workflows/stable.yml @@ -121,28 +121,6 @@ jobs: check: skiptests pip-flags: '' depends: '' - # Check all installation methods - - os: ubuntu-latest - python-version: "3.10" - install: wheel - check: test - pip-flags: '' - depends: REQUIREMENTS - optional-depends: DEFAULT_OPT_DEPENDS - - os: ubuntu-latest - python-version: "3.10" - install: sdist - check: test - pip-flags: '' - depends: REQUIREMENTS - optional-depends: DEFAULT_OPT_DEPENDS - - os: ubuntu-latest - python-version: "3.10" - install: archive - check: test - pip-flags: '' - depends: REQUIREMENTS - optional-depends: DEFAULT_OPT_DEPENDS exclude: - os: ubuntu-latest architecture: x86 From 28ccfc404c2751b842fdbd5af5d82a25fa30e503 Mon Sep 17 00:00:00 2001 From: "Christopher J. Markiewicz" Date: Tue, 6 Sep 2022 10:08:54 -0400 Subject: [PATCH 4/5] CI: Run on tags --- .github/workflows/stable.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/stable.yml b/.github/workflows/stable.yml index 8ad47eb0b1..c7fc86ad22 100644 --- a/.github/workflows/stable.yml +++ b/.github/workflows/stable.yml @@ -11,6 +11,8 @@ on: branches: - master - maint/* + tags: + - "*" pull_request: branches: - master From bc8e0c75111e883e732eaedca590b8e8092c213a Mon Sep 17 00:00:00 2001 From: "Christopher J. Markiewicz" Date: Tue, 6 Sep 2022 10:23:36 -0400 Subject: [PATCH 5/5] CI: Use package deployment environment to insert a manual review stage --- .github/workflows/stable.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/stable.yml b/.github/workflows/stable.yml index c7fc86ad22..9086dab9d9 100644 --- a/.github/workflows/stable.yml +++ b/.github/workflows/stable.yml @@ -172,6 +172,7 @@ jobs: publish: runs-on: ubuntu-latest + environment: "Package deployment" needs: [stable, test-package] if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/') steps: