name: Bazel Build and Test on: push: branches: [ main ] workflow_dispatch: # Ensure that only a single job or workflow using the same # concurrency group will run at a time. This would cancel # any in-progress jobs in the same github workflow and github # ref (e.g. refs/heads/main or refs/pull//merge). concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true jobs: ubuntu-build: name: ubuntu-x86_64 runs-on: ubuntu-latest steps: - name: Checkout torch-mlir uses: actions/checkout@v3 # We fetch the submodules sequentially to prevent multiple threads from # trampling the index.lock file. - name: Fetch submodules run: git submodule update --init --force --depth=1 --jobs 1 # Continually update cache even if there's a "hit" during # restore to avoid the cache going stale over time # https://github.com/actions/cache/blob/main/workarounds.md#update-a-cache - name: Setup cache for bazel uses: actions/cache@v3 with: path: ~/.cache/bazel key: torch_mlir-bazel-build-cache-${{ runner.os }}-${{ github.sha }} restore-keys: | torch_mlir-bazel-build-cache-${{ runner.os }} # Change bazel cache directory to root ownership # to allow writing to it from within the docker container. # If no cache hits, this directory is not present # so don't run chown (will error otherwise). - name: Set bazel cache permissions run: | if [ -d "${HOME}/.cache/bazel" ]; then sudo chown -R root:root "${HOME}/.cache/bazel" fi - name: Build docker image run: | docker build -f utils/bazel/docker/Dockerfile \ -t torch-mlir:ci \ . - name: Bazel build torch-mlir run: | docker run --rm \ -v "$(pwd)":"/opt/src/torch-mlir" \ -v "${HOME}/.cache/bazel":"/root/.cache/bazel" \ torch-mlir:ci \ bazel build @torch-mlir//:torch-mlir-opt - name: Bazel test torch-mlir (lit tests) run: | docker run --rm \ -v "$(pwd)":"/opt/src/torch-mlir" \ -v "${HOME}/.cache/bazel":"/root/.cache/bazel" \ torch-mlir:ci \ bazel test @torch-mlir//test/... - name: Verify buildifier was run (bazel lint) run: | docker run --rm \ -v "$(pwd)":"/opt/src/torch-mlir" \ -v "${HOME}/.cache/bazel":"/root/.cache/bazel" \ torch-mlir:ci \ bazel run @torch-mlir//:buildifier if [ -n "$(git status --porcelain)" ]; then echo "Please 'bazel run @torch-mlir//:buildifier' and commit changes." exit 1 fi # Switch back bazel cache directory to user ownership # to allow GHA post-cache step to save cache without # permissions issue. - name: Switch bazel cache permissions run: | if [ -d "${HOME}/.cache/bazel" ]; then sudo chown -R "$USER":"$USER" "${HOME}/.cache/bazel" fi - name: Send mail if: failure() uses: dawidd6/action-send-mail@v3 with: server_address: ${{ secrets.SMTP_SERVER }} server_port: ${{ secrets.SMTP_PORT }} username: ${{ secrets.SMTP_USERNAME }} password: ${{ secrets.SMTP_PASSWORD }} subject: GitHub Action Bazel Build and Test failed! body: Bazel Build job failed! See https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }} for more information. to: ${{ secrets.MAIL_RECEIVER }} from: Torch-MLIR Bazel Build GitHub Actions