| # Copyright 2022 The IREE Authors |
| # |
| # Licensed under the Apache License v2.0 with LLVM Exceptions. |
| # See https://llvm.org/LICENSE.txt for license information. |
| # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception |
| # |
| # Workflow for building IREE. It is designed to be called from a parent workflow. |
| # The concurrency of this workflow is controlled by the caller's job. |
| |
| name: Build All |
| |
| on: |
| workflow_call: |
| inputs: |
| runner-group: |
| required: true |
| type: string |
| runner-env: |
| required: true |
| type: string |
| write-caches: |
| required: true |
| type: string |
| outputs: |
| install-dir: |
| description: Local install directory path. |
| value: ${{ jobs.build_all.outputs.install-dir }} |
| install-dir-archive: |
| description: Name of the zipped install directory. |
| value: ${{ jobs.build_all.outputs.install-dir-archive }} |
| install-dir-gcs-artifact: |
| description: GCS path to the uploaded install archive. |
| value: ${{ jobs.build_all.outputs.install-dir-gcs-artifact }} |
| |
| permissions: |
| contents: read |
| |
| env: |
| # This duplicates the variable from ci.yml. The variable needs to be in env |
| # instead of the outputs of setup because it contains the run attempt and we |
| # want that to be the current attempt, not whatever attempt the setup step |
| # last ran in. It therefore can't be passed in via inputs because the env |
| # context isn't available there. |
| GCS_DIR: gs://iree-github-actions-${{ github.event_name == 'pull_request' && 'presubmit' || 'postsubmit' }}-artifacts/${{ github.run_id }}/${{ github.run_attempt }} |
| |
| jobs: |
| build_all: |
| runs-on: |
| - self-hosted # must come first |
| - runner-group=${{ inputs.runner-group }} |
| - environment=${{ inputs.runner-env }} |
| - cpu |
| - os-family=Linux |
| env: |
| BUILD_DIR: full-build-dir |
| INSTALL_DIR: full-build-dir/install |
| outputs: |
| install-dir: ${{ env.INSTALL_DIR }} |
| # Pass the install directory as output for other jobs to use. |
| # TODO(#16203): replace this with iree-dist packages |
| # The install directory provides a similar set of files and existing |
| # jobs are already configured to use the build directory, so this is |
| # an intermediate step towards a fully package-based CI setup. |
| install-dir-archive: ${{ steps.install-archive.outputs.install-dir-archive }} |
| install-dir-gcs-artifact: ${{ steps.install-upload.outputs.install-dir-gcs-artifact }} |
| steps: |
| - name: "Checking out repository" |
| uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 |
| with: |
| submodules: true |
| - name: "Building IREE" |
| env: |
| IREE_WRITE_REMOTE_CCACHE: ${{ inputs.write-caches }} |
| run: | |
| ./build_tools/github_actions/docker_run.sh \ |
| --env "IREE_CCACHE_GCP_TOKEN=$(gcloud auth application-default print-access-token)" \ |
| --env "IREE_WRITE_REMOTE_CCACHE=${IREE_WRITE_REMOTE_CCACHE}" \ |
| --env "CCACHE_NAMESPACE=gcr.io/iree-oss/base@sha256:dc314b4fe30fc1315742512891357bffed4d1b62ffcb46258b1e0761c737b446" \ |
| --env "IREE_BUILD_SETUP_PYTHON_VENV=${BUILD_DIR}/.venv" \ |
| gcr.io/iree-oss/base@sha256:dc314b4fe30fc1315742512891357bffed4d1b62ffcb46258b1e0761c737b446 \ |
| ./build_tools/cmake/build_all.sh "${BUILD_DIR}" |
| # TODO(scotttodd): trim build/tests to exclude integration tests (tests/ folder, check tests) |
| # that coverage should move to a test_cpu job (matrix with test_gpu?) |
| - name: "Testing IREE" |
| run: | |
| ./build_tools/github_actions/docker_run.sh \ |
| gcr.io/iree-oss/base@sha256:dc314b4fe30fc1315742512891357bffed4d1b62ffcb46258b1e0761c737b446 \ |
| ./build_tools/cmake/ctest_all.sh "${BUILD_DIR}" |
| - name: "Testing iree-dialects" |
| run: | |
| ./build_tools/github_actions/docker_run.sh \ |
| gcr.io/iree-oss/base@sha256:dc314b4fe30fc1315742512891357bffed4d1b62ffcb46258b1e0761c737b446 \ |
| ./build_tools/cmake/test_iree_dialects.sh "${BUILD_DIR}" |
| |
| # TODO(#16203): If this (or iree-dist) is small enough, just use GitHub |
| # artifacts instead of `tar` commands and GCS |
| - name: "Creating install dir archive" |
| id: install-archive |
| env: |
| INSTALL_DIR_ARCHIVE: install_dir.tar.zst |
| run: | |
| tar -I 'zstd -T0' \ |
| -cf ${INSTALL_DIR_ARCHIVE} ${INSTALL_DIR} |
| echo "install-dir-archive=${INSTALL_DIR_ARCHIVE}" >> "${GITHUB_OUTPUT}" |
| - name: "Uploading install dir archive" |
| id: install-upload |
| env: |
| INSTALL_DIR_ARCHIVE: ${{ steps.install-archive.outputs.install-dir-archive }} |
| INSTALL_DIR_GCS_ARTIFACT: ${{ env.GCS_DIR }}/${{ steps.install-archive.outputs.install-dir-archive }} |
| run: | |
| gcloud storage cp "${INSTALL_DIR_ARCHIVE}" "${INSTALL_DIR_GCS_ARTIFACT}" |
| echo "install-dir-gcs-artifact=${INSTALL_DIR_GCS_ARTIFACT}" >> "${GITHUB_OUTPUT}" |