deps(workflows): bump pypa/cibuildwheel from 2.19 to 2.20 #855
Workflow file for this run
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: Build | |
on: | |
push: | |
branches: | |
- main # allow to trigger the workflow with tag push event | |
pull_request: | |
paths: | |
- setup.py | |
- setup.cfg | |
- pyproject.toml | |
- MANIFEST.in | |
- CMakeLists.txt | |
- include/** | |
- src/** | |
- torchopt/version.py | |
- .github/workflows/build.yml | |
release: | |
types: | |
- published | |
# Allow to trigger the workflow manually | |
workflow_dispatch: | |
inputs: | |
task: | |
description: "Task type" | |
type: choice | |
options: | |
- build-only | |
- build-and-publish | |
required: true | |
permissions: | |
contents: read | |
concurrency: | |
group: "${{ github.workflow }}-${{ github.ref }}" | |
cancel-in-progress: ${{ github.event_name == 'pull_request' }} | |
env: | |
CUDA_VERSION: "12.1" | |
TEST_TORCH_SPECS: "cpu cu118" | |
jobs: | |
build: | |
name: Build sdist and pure-Python wheel | |
runs-on: ubuntu-latest | |
if: github.repository == 'metaopt/torchopt' && (github.event_name != 'push' || startsWith(github.ref, 'refs/tags/')) | |
timeout-minutes: 60 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
submodules: "recursive" | |
fetch-depth: 0 | |
- name: Set up Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: "3.8 - 3.12" # sync with requires-python in pyproject.toml | |
update-environment: true | |
- name: Install dependencies | |
run: python -m pip install --upgrade pip setuptools wheel build | |
- name: Set __release__ | |
if: | | |
startsWith(github.ref, 'refs/tags/') || | |
(github.event_name == 'workflow_dispatch' && github.event.inputs.task == 'build-and-publish') | |
run: | | |
python .github/workflows/set_release.py | |
- name: Print version | |
run: python setup.py --version | |
- name: Build sdist and pure-Python wheel | |
run: python -m build | |
env: | |
TORCHOPT_NO_EXTENSIONS: "true" | |
- name: Upload artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: build | |
path: dist/* | |
if-no-files-found: error | |
- name: Install dependencies | |
run: | | |
python -m pip install -r tests/requirements.txt | |
- name: Install TorchOpt | |
run: | | |
python -m pip install -vvv dist/*.whl | |
- name: Test with pytest | |
run: | | |
make pytest | |
build-wheels-py38: | |
name: Build wheels for Python ${{ matrix.python-version }} on ${{ matrix.os }} | |
runs-on: ${{ matrix.os }} | |
needs: [build] | |
if: github.repository == 'metaopt/torchopt' && (github.event_name != 'push' || startsWith(github.ref, 'refs/tags/')) | |
strategy: | |
matrix: | |
os: [ubuntu-latest] | |
python-version: ["3.8"] # sync with requires-python in pyproject.toml | |
fail-fast: false | |
timeout-minutes: 60 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
submodules: "recursive" | |
fetch-depth: 0 | |
- name: Set up Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python-version }} | |
update-environment: true | |
- name: Install dependencies | |
run: python -m pip install --upgrade pip setuptools wheel build | |
- name: Set __release__ | |
if: | | |
startsWith(github.ref, 'refs/tags/') || | |
(github.event_name == 'workflow_dispatch' && github.event.inputs.task == 'build-and-publish') | |
run: python .github/workflows/set_release.py | |
- name: Print version | |
run: python setup.py --version | |
- name: Set CIBW_BUILD | |
run: python .github/workflows/set_cibw_build.py | |
- name: Build wheels | |
uses: pypa/[email protected] | |
env: | |
CIBW_BUILD: ${{ env.CIBW_BUILD }} | |
with: | |
package-dir: . | |
output-dir: wheelhouse | |
config-file: "{package}/pyproject.toml" | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: wheels-${{ matrix.python-version }}-${{ matrix.os }} | |
path: wheelhouse/*.whl | |
if-no-files-found: error | |
build-wheels: | |
name: Build wheels for Python ${{ matrix.python-version }} on ${{ matrix.os }} | |
runs-on: ${{ matrix.os }} | |
needs: [build, build-wheels-py38] | |
if: github.repository == 'metaopt/torchopt' && (github.event_name != 'push' || startsWith(github.ref, 'refs/tags/')) | |
strategy: | |
matrix: | |
os: [ubuntu-latest] | |
python-version: ["3.9", "3.10", "3.11", "3.12"] # sync with requires-python in pyproject.toml | |
fail-fast: false | |
timeout-minutes: 60 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
submodules: "recursive" | |
fetch-depth: 0 | |
- name: Set up Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python-version }} | |
update-environment: true | |
- name: Install dependencies | |
run: python -m pip install --upgrade pip setuptools wheel build | |
- name: Set __release__ | |
if: | | |
startsWith(github.ref, 'refs/tags/') || | |
(github.event_name == 'workflow_dispatch' && github.event.inputs.task == 'build-and-publish') | |
run: python .github/workflows/set_release.py | |
- name: Print version | |
run: python setup.py --version | |
- name: Set CIBW_BUILD | |
run: python .github/workflows/set_cibw_build.py | |
- name: Build wheels | |
uses: pypa/[email protected] | |
env: | |
CIBW_BUILD: ${{ env.CIBW_BUILD }} | |
with: | |
package-dir: . | |
output-dir: wheelhouse | |
config-file: "{package}/pyproject.toml" | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: wheels-${{ matrix.python-version }}-${{ matrix.os }} | |
path: wheelhouse/*.whl | |
if-no-files-found: error | |
list-artifacts: | |
name: List artifacts | |
runs-on: ubuntu-latest | |
needs: [build, build-wheels-py38, build-wheels] | |
if: github.repository == 'metaopt/torchopt' && (github.event_name != 'push' || startsWith(github.ref, 'refs/tags/')) | |
timeout-minutes: 15 | |
steps: | |
- name: Download built sdist | |
uses: actions/download-artifact@v4 | |
with: | |
# unpacks default artifact into dist/ | |
# if `name: artifact` is omitted, the action will create extra parent dir | |
name: build | |
path: dist | |
- name: Download built wheels | |
uses: actions/download-artifact@v4 | |
with: | |
pattern: wheels-* | |
path: dist | |
merge-multiple: true | |
- name: List distributions | |
run: ls -lh dist/* | |
- name: Upload artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: artifacts | |
path: dist/* | |
if-no-files-found: error | |
publish: | |
runs-on: ubuntu-latest | |
needs: [list-artifacts] | |
if: | | |
github.repository == 'metaopt/torchopt' && github.event_name != 'pull_request' && | |
(github.event_name != 'workflow_dispatch' || github.event.inputs.task == 'build-and-publish') && | |
(github.event_name != 'push' || startsWith(github.ref, 'refs/tags/')) | |
timeout-minutes: 15 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
submodules: "recursive" | |
fetch-depth: 0 | |
- name: Set up Python | |
uses: actions/setup-python@v5 | |
if: startsWith(github.ref, 'refs/tags/') | |
with: | |
python-version: "3.8 - 3.12" # sync with requires-python in pyproject.toml | |
update-environment: true | |
- name: Install dependencies | |
run: python -m pip install --upgrade pip setuptools wheel build | |
- name: Set __release__ | |
if: startsWith(github.ref, 'refs/tags/') || github.event_name == 'workflow_dispatch' | |
run: | | |
python .github/workflows/set_release.py | |
- name: Print version | |
run: python setup.py --version | |
- name: Check consistency between the package version and release tag | |
if: startsWith(github.ref, 'refs/tags/') | |
run: | | |
PACKAGE_VER="v$(python setup.py --version)" | |
RELEASE_TAG="${GITHUB_REF#refs/*/}" | |
if [[ "${PACKAGE_VER}" != "${RELEASE_TAG}" ]]; then | |
echo "package ver. (${PACKAGE_VER}) != release tag. (${RELEASE_TAG})" | |
exit 1 | |
fi | |
- name: Download built artifacts | |
uses: actions/download-artifact@v4 | |
with: | |
# unpacks default artifact into dist/ | |
# if `name: artifact` is omitted, the action will create extra parent dir | |
name: artifacts | |
path: dist | |
- name: List distributions | |
run: ls -lh dist/* | |
- name: Publish to TestPyPI | |
if: startsWith(github.ref, 'refs/tags/') || github.event_name == 'workflow_dispatch' | |
uses: pypa/gh-action-pypi-publish@release/v1 | |
with: | |
user: __token__ | |
password: ${{ secrets.TESTPYPI_UPLOAD_TOKEN }} | |
repository-url: https://test.pypi.org/legacy/ | |
verbose: true | |
print-hash: true | |
skip-existing: true | |
- name: Publish to PyPI | |
if: startsWith(github.ref, 'refs/tags/') || github.event_name == 'workflow_dispatch' | |
uses: pypa/gh-action-pypi-publish@release/v1 | |
with: | |
user: __token__ | |
password: ${{ secrets.PYPI_UPLOAD_TOKEN }} | |
verbose: true | |
print-hash: true | |
skip-existing: true |