docs: Update projects #73
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
| # SPDX-FileCopyrightText: 2026 The RISE Project | |
| # SPDX-License-Identifier: MIT | |
| --- | |
| # Based on upstream's wheel builder: | |
| # https://github.com/tree-sitter/workflows/blob/main/.github/workflows/package-pypi.yml | |
| name: Build tree-sitter-swift wheels (riscv64) | |
| on: | |
| workflow_dispatch: | |
| inputs: | |
| version: | |
| description: 'Version glob to (re)build; empty builds every version of docs/packages/tree-sitter-swift.yaml not released yet' | |
| required: false | |
| default: '' | |
| pull_request: | |
| branches: [main] | |
| paths: | |
| - '.github/workflows/build-tree-sitter-swift.yml' | |
| - 'docs/packages/tree-sitter-swift.yaml' | |
| push: | |
| branches: [main] | |
| paths: | |
| - '.github/workflows/build-tree-sitter-swift.yml' | |
| - 'docs/packages/tree-sitter-swift.yaml' | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} | |
| cancel-in-progress: true | |
| permissions: | |
| contents: read # to fetch code (actions/checkout) | |
| env: | |
| MANYLINUX_RISCV64_IMAGE: quay.io/pypa/manylinux_2_39_riscv64 | |
| jobs: | |
| setup: | |
| uses: $/.github/workflows/_setup.yml | |
| with: | |
| package: tree-sitter-swift | |
| version: ${{ inputs.version }} | |
| generate_parser: | |
| needs: [setup] | |
| if: needs.setup.outputs.versions != '[]' | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| version: ${{ fromJSON(needs.setup.outputs.versions) }} | |
| # Unlike the other tree-sitter-* ports, alex-pinkus/tree-sitter-swift does not | |
| # commit the generated src/parser.c at its release tags (only at the separate | |
| # "<version>-with-generated-files" tags, which lag behind and carry a stale | |
| # pyproject.toml version). Upstream's own publish-pypi.yml regenerates it via | |
| # `tree-sitter generate` before building, so we do the same here, once on x86 | |
| # (generation is architecture-independent and the CLI has no riscv64 build), | |
| # then hand the completed checkout to the riscv64 job as a tarball. | |
| name: Generate tree-sitter-swift ${{ matrix.version }} parser | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: read | |
| env: | |
| TREE_SITTER_SWIFT_VERSION: ${{ matrix.version }} | |
| steps: | |
| - name: Checkout tree-sitter-swift ${{ env.TREE_SITTER_SWIFT_VERSION }} | |
| uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 | |
| with: | |
| repository: alex-pinkus/tree-sitter-swift | |
| ref: ${{ env.TREE_SITTER_SWIFT_VERSION }} | |
| persist-credentials: false | |
| - uses: tree-sitter/setup-action/cli@49f8c1f20b60102eae8c033bb7c7f6cd056f6086 # v2 | |
| - name: Regenerate parser | |
| run: tree-sitter generate | |
| env: | |
| TREE_SITTER_ABI_VERSION: 15 | |
| - name: Archive checkout | |
| run: tar czf /tmp/tree-sitter-swift.tar.gz --exclude=.git . | |
| - name: Upload checkout artifact | |
| uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 | |
| with: | |
| name: tree-sitter-swift-${{ env.TREE_SITTER_SWIFT_VERSION }}-generated | |
| path: /tmp/tree-sitter-swift.tar.gz | |
| if-no-files-found: error | |
| build_wheels: | |
| needs: [setup, generate_parser] | |
| if: needs.setup.outputs.versions != '[]' | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| version: ${{ fromJSON(needs.setup.outputs.versions) }} | |
| name: Build tree-sitter-swift ${{ matrix.version }} cp38-abi3-manylinux_riscv64 | |
| runs-on: ubuntu-24.04-riscv | |
| timeout-minutes: 120 | |
| env: | |
| TREE_SITTER_SWIFT_VERSION: ${{ matrix.version }} | |
| steps: | |
| - name: Download checkout artifact | |
| uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 | |
| with: | |
| name: tree-sitter-swift-${{ env.TREE_SITTER_SWIFT_VERSION }}-generated | |
| - name: Extract checkout | |
| run: tar xzf tree-sitter-swift.tar.gz | |
| - uses: pypa/cibuildwheel@1828c10ab37f080699c7b81cea34097c684a7074 # v4.2.0 | |
| env: | |
| CIBW_ARCHS: riscv64 | |
| CIBW_BUILD: cp312-manylinux_riscv64 cp313-manylinux_riscv64 cp314-manylinux_riscv64 | |
| CIBW_MANYLINUX_RISCV64_IMAGE: ${{ env.MANYLINUX_RISCV64_IMAGE }} | |
| CIBW_TEST_EXTRAS: core | |
| CIBW_TEST_SOURCES: bindings/python/tests | |
| CIBW_TEST_COMMAND: python -m unittest discover -v -s bindings/python/tests | |
| - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 | |
| with: | |
| name: tree-sitter-swift-${{ env.TREE_SITTER_SWIFT_VERSION }}-cp38-abi3-manylinux_riscv64 | |
| path: ./wheelhouse/*.whl | |
| if-no-files-found: error | |
| publish: | |
| name: Publish tree-sitter-swift ${{ matrix.version }} | |
| needs: [setup, build_wheels] | |
| if: needs.setup.outputs.versions != '[]' | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| version: ${{ fromJSON(needs.setup.outputs.versions) }} | |
| permissions: | |
| contents: write | |
| pull-requests: write | |
| uses: $/.github/workflows/_publish-wheel.yml | |
| secrets: | |
| app-private-key: ${{ secrets.RISEPROJECT_APP_PRIVATE_KEY }} | |
| with: | |
| artifact-pattern: tree-sitter-swift-${{ matrix.version }}-*-manylinux_riscv64 |