| # Publishes a draft snapshot, after performing validation to make sure all linux | |
| # packages are stable. | |
| name: Validate and Publish Release | |
| on: | |
| workflow_dispatch: | |
| inputs: | |
| release_id: | |
| description: "Release id to publish" | |
| required: true | |
| package_version: | |
| description: "Version of the package" | |
| required: true | |
| build_run_id: | |
| description: "Run ID for the build_package.yml workflow that triggered this workflow" | |
| required: true | |
| jobs: | |
| validate_packages: | |
| name: "Validate packages" | |
| # TODO(jennik): Look into testing windows and macos builds. | |
| runs-on: ubuntu-24.04 | |
| steps: | |
| - name: Download packages | |
| id: download_packages | |
| uses: dawidd6/action-download-artifact@5e780fc7bbd0cac69fc73271ed86edf5dcb72d67 # v2.26.0 | |
| with: | |
| github_token: ${{secrets.WRITE_ACCESS_TOKEN}} | |
| workflow: build_package.yml | |
| run_id: ${{ github.event.inputs.build_run_id }} | |
| - name: Extract and display downloaded files | |
| run: | | |
| tar -xf wheels-linux-x86_64-main-dist-linux/iree-dist-${{ github.event.inputs.package_version }}-linux-x86_64.tar.xz | |
| pwd | |
| ls -R | |
| - name: Set up python | |
| id: set_up_python | |
| uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b # v5.3.0 | |
| with: | |
| python-version: "3.9" | |
| - name: Install python packages | |
| id: install_python_packages | |
| run: | | |
| python -m pip install -f file://$PWD/wheels-linux-x86_64-py-compiler-pkg/ iree-base-compiler[onnx] | |
| python -m pip install -f file://$PWD/wheels-linux-x86_64-py-runtime-pkg/ iree-base-runtime | |
| python -m pip install -f file://$PWD/wheels-linux-x86_64-py-tf-compiler-tools-pkg/ iree-tools-tflite iree-tools-tf | |
| - name: Validate IREE Compiler Package | |
| id: validate_compiler_package | |
| run: | | |
| echo "Testing compiler package:" | |
| python -m iree.compiler._package_test | |
| - name: Validate IREE Runtime Package | |
| id: validate_runtime_package | |
| run: | | |
| echo "Testing default runtime:" | |
| python -m iree.runtime._package_test | |
| echo "Testing tracy runtime:" | |
| # GH runners don't expose the TSC but we want to make sure the basic packaging | |
| # works, so override the check with TRACY_NO_INVARIANT_CHECK=1 (per instructions | |
| # if this is left off). | |
| TRACY_NO_INVARIANT_CHECK=1 IREE_PY_RUNTIME=tracy \ | |
| python -m iree.runtime._package_test | |
| # Binaries from the tarball | |
| - name: Run iree-benchmark-executable | |
| id: run_iree_benchmark_executable | |
| run: ./bin/iree-benchmark-executable --help | |
| - name: Run iree-benchmark-module | |
| id: run_iree_benchmark_module | |
| run: ./bin/iree-benchmark-module --help | |
| - name: Run iree-dump-module | |
| id: run_iree_dump_module | |
| run: ./bin/iree-dump-module --help | |
| - name: Run iree-cpuinfo | |
| id: run_iree_cpuinfo | |
| run: ./bin/iree-cpuinfo | |
| - name: Run iree-flatcc-cli | |
| id: run_iree_flatcc_cli | |
| run: ./bin/iree-flatcc-cli --help | |
| - name: Run iree-opt | |
| id: run_iree_opt | |
| run: ./bin/iree-opt --help | |
| - name: Run iree-run-mlir | |
| id: run_iree_run_mlir | |
| run: ./bin/iree-run-mlir --help | |
| - name: Run iree-run-module | |
| id: run_iree_run_module | |
| run: ./bin/iree-run-module --help | |
| - name: Run iree-tblgen | |
| id: run_iree_tblgen | |
| run: ./bin/iree-tblgen --help | |
| - name: Run iree-compile | |
| id: run_iree-compile | |
| run: ./bin/iree-compile --help | |
| # Console scripts from the wheels. | |
| - name: Py iree-run-module | |
| id: py_iree-run-module | |
| run: iree-run-module --help | |
| - name: Py iree-benchmark-executable | |
| id: py_iree_benchmark_executable | |
| run: iree-benchmark-executable --help | |
| - name: Py iree-benchmark-module | |
| id: py_iree_benchmark_module | |
| run: iree-benchmark-module --help | |
| - name: Py iree-dump-module | |
| id: py_iree_dump_module | |
| run: iree-dump-module --help | |
| - name: Py iree-cpuinfo | |
| id: py_iree_cpuinfo | |
| run: iree-cpuinfo | |
| publish_release: | |
| name: "Publish release" | |
| needs: validate_packages | |
| runs-on: ubuntu-24.04 | |
| steps: | |
| - name: Publish Release | |
| id: publish_release | |
| uses: eregon/publish-release@46913fa2b3f7edc7345ae3c17f6d1b093a54916d # v1.0.5 | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.WRITE_ACCESS_TOKEN }} | |
| with: | |
| release_id: ${{ github.event.inputs.release_id }} | |
| - name: Checking out repository | |
| uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
| with: | |
| token: ${{ secrets.WRITE_ACCESS_TOKEN }} | |
| # Get all history. Otherwise the latest-snapshot branch can't be | |
| # fast-forwarded. | |
| fetch-depth: 0 | |
| - name: Set up python | |
| uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b # v5.3.0 | |
| with: | |
| python-version: "3.9" | |
| - name: Check for patch release | |
| run: | | |
| python -m pip install packaging | |
| is_patch_release="$(python -c "from packaging.version import Version;print('true' if Version('${{ github.event.inputs.package_version }}').micro !=0 else 'false')")" | |
| echo "is_patch_release=${is_patch_release}" >> $GITHUB_ENV | |
| - name: Updating latest-snapshot branch | |
| # Do not update the branch if the release is a patch release | |
| if: ${{ env.is_patch_release == 'false'}} | |
| uses: ad-m/github-push-action@d91a481090679876dfc4178fef17f286781251df # v0.8.0 | |
| with: | |
| github_token: ${{ secrets.WRITE_ACCESS_TOKEN }} | |
| branch: latest-snapshot | |
| force: true |