Allow TSMs to start upstream if enabled. #256
Workflow file for this run
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 (and publish) python wheels | |
| on: | |
| push: | |
| workflow_dispatch: | |
| permissions: | |
| contents: read | |
| jobs: | |
| check_skip: | |
| runs-on: ubuntu-latest | |
| outputs: | |
| skip: ${{ steps.check_skip.outputs.skip }} | |
| steps: | |
| - name: Checkout pushed code | |
| uses: actions/checkout@v4 | |
| - name: Check if workflow should be skipped | |
| id: check_skip | |
| run: | | |
| git fetch --tags | |
| TAG=$(git tag -l 'py_lib_tsalign-v*' | sort -V | tail -n 1 || true) | |
| if [ -z "$TAG" ]; then | |
| echo "No matching release tag found." | |
| echo "skip=true" >> $GITHUB_OUTPUT | |
| else | |
| TAG_COMMIT=$(git rev-list -n 1 "$TAG") | |
| echo "Latest tag: $TAG at commit $TAG_COMMIT" | |
| CURRENT_COMMIT=$(git rev-parse HEAD) | |
| echo "Current commit: $CURRENT_COMMIT" | |
| if [ "$TAG_COMMIT" = "$CURRENT_COMMIT" ]; then | |
| echo "This is a release tag, continuing." | |
| echo "skip=false" >> $GITHUB_OUTPUT | |
| else | |
| echo "Not a release tag, skipping." | |
| echo "skip=true" >> $GITHUB_OUTPUT | |
| fi | |
| fi | |
| linux: | |
| runs-on: ${{ matrix.platform.runner }} | |
| needs: check_skip | |
| if: ${{ needs.check_skip.outputs.skip != 'true' }} | |
| strategy: | |
| matrix: | |
| platform: | |
| - runner: ubuntu-22.04 | |
| target: x86_64 | |
| - runner: ubuntu-22.04 | |
| target: aarch64 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: actions/setup-python@v5 | |
| with: | |
| python-version: 3.x | |
| - name: Build wheels | |
| uses: PyO3/maturin-action@v1 | |
| with: | |
| working-directory: python_bindings | |
| target: ${{ matrix.platform.target }} | |
| args: --release --out dist --find-interpreter | |
| sccache: ${{ !startsWith(github.ref, 'refs/tags/') }} | |
| manylinux: auto | |
| - name: Upload wheels | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: wheels-linux-${{ matrix.platform.target }} | |
| path: python_bindings/dist | |
| windows: | |
| runs-on: ${{ matrix.platform.runner }} | |
| needs: check_skip | |
| if: ${{ needs.check_skip.outputs.skip != 'true' }} | |
| strategy: | |
| matrix: | |
| platform: | |
| - runner: windows-latest | |
| target: x64 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: actions/setup-python@v5 | |
| with: | |
| python-version: 3.x | |
| architecture: ${{ matrix.platform.target }} | |
| - name: Build wheels | |
| uses: PyO3/maturin-action@v1 | |
| with: | |
| working-directory: python_bindings | |
| target: ${{ matrix.platform.target }} | |
| args: --release --out dist --find-interpreter | |
| sccache: ${{ !startsWith(github.ref, 'refs/tags/') }} | |
| - name: Upload wheels | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: wheels-windows-${{ matrix.platform.target }} | |
| path: python_bindings/dist | |
| macos: | |
| runs-on: ${{ matrix.platform.runner }} | |
| needs: check_skip | |
| if: ${{ needs.check_skip.outputs.skip != 'true' }} | |
| strategy: | |
| matrix: | |
| platform: | |
| - runner: macos-latest | |
| target: x86_64 | |
| - runner: macos-latest | |
| target: aarch64 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: actions/setup-python@v5 | |
| with: | |
| python-version: 3.x | |
| - name: Build wheels | |
| uses: PyO3/maturin-action@v1 | |
| with: | |
| working-directory: python_bindings | |
| target: ${{ matrix.platform.target }} | |
| args: --release --out dist --find-interpreter | |
| sccache: ${{ !startsWith(github.ref, 'refs/tags/') }} | |
| - name: Upload wheels | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: wheels-macos-${{ matrix.platform.target }} | |
| path: python_bindings/dist | |
| sources: | |
| runs-on: ubuntu-latest | |
| needs: check_skip | |
| if: ${{ needs.check_skip.outputs.skip != 'true' }} | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Build sdist | |
| uses: PyO3/maturin-action@v1 | |
| with: | |
| working-directory: python_bindings | |
| command: sdist | |
| args: --out dist | |
| - name: Upload sdist | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: wheels-sdist | |
| path: python_bindings/dist | |
| release: | |
| name: Release | |
| needs: [check_skip, linux, windows, macos, sources] | |
| if: ${{ needs.check_skip.outputs.skip == 'false' }} | |
| runs-on: ubuntu-latest | |
| permissions: | |
| id-token: write | |
| contents: write | |
| attestations: write | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Check Versions | |
| id: versions | |
| shell: bash | |
| run: | | |
| git fetch --tags | |
| TAG=$(git tag -l 'py_lib_tsalign-v*' | sort -V | tail -n 1) | |
| tag_version="${TAG#*-v}" | |
| echo "Tag is $TAG with version $tag_version" | |
| cargo_version=$(grep '^version' python_bindings/Cargo.toml | head -1 | sed 's/version = "\(.*\)"/\1/') | |
| echo "Cargo.toml version is $cargo_version" | |
| if [ "$cargo_version" != "$tag_version" ]; then | |
| echo "Versions mismatch: tag specifies $tag_version, but crate has version $cargo_version" | |
| exit 1 | |
| fi | |
| - name: Get artifacts | |
| uses: actions/download-artifact@v4 | |
| - name: Generate artifact attestation | |
| uses: actions/attest-build-provenance@v2 | |
| with: | |
| subject-path: 'wheels-*/*' | |
| - name: Publish to PyPI | |
| env: | |
| TWINE_PASSWORD: ${{ secrets.PYPI_API_TOKEN }} | |
| run: | | |
| pip install twine | |
| twine upload \ | |
| --non-interactive \ | |
| --username __token__ \ | |
| --repository pypi \ | |
| wheels-*/* |