blob: 840f6f67cad755fc3bdc9492938e5408733ad0b8 [file] [log] [blame]
# 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
# Sets up a github workflow.
# It is designed to be called from a parent workflow.
# The concurrency of this workflow is controlled by the caller's job.
name: Setup
on:
workflow_call:
outputs:
enabled-jobs:
description: |
Which jobs should run.
value: ${{ jobs.setup.outputs.enabled-jobs }}
is-pr:
description: |
Whether the workflow has been triggered by a pull request.
value: ${{ jobs.setup.outputs.is-pr }}
runner-env:
description: |
The runner environment to use.
value: ${{ jobs.setup.outputs.runner-env }}
runner-group:
description: |
The runner group to use.
value: ${{ jobs.setup.outputs.runner-group }}
write-caches:
description: |
Whether to write to caches.
value: ${{ jobs.setup.outputs.write-caches }}
permissions:
contents: read
jobs:
setup:
runs-on: ubuntu-24.04
env:
# The commit being checked out is the merge commit for the PR. Its first
# parent will be the tip of main.
BASE_REF: HEAD^
outputs:
enabled-jobs: ${{ steps.configure.outputs.enabled-jobs }}
is-pr: ${{ steps.configure.outputs.is-pr }}
runner-env: ${{ steps.configure.outputs.runner-env }}
runner-group: ${{ steps.configure.outputs.runner-group }}
write-caches: ${{ steps.configure.outputs.write-caches }}
steps:
- name: "Checking out repository"
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
# We need the parent commit to do a diff
fetch-depth: 2
- name: "Fetching PR description"
# We fetch the latest pull request data (description, labels, ...) from
# API instead of using stale one from pull_request event. This makes it
# possible to update the trailers, labels on the pull request and re-run
# the workflow to make them take effect.
# This is majorly for triggering benchmarks without pushing new commits.
# See https://github.com/iree-org/iree/issues/10042#issuecomment-1449250094
# for more details.
id: fetch-pr
if: github.event_name == 'pull_request'
env:
PR_NUMBER: ${{ github.event.number }}
PR_JSON: pull_request.json
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
gh api "/repos/${GITHUB_REPOSITORY}/pulls/${PR_NUMBER}" > "${PR_JSON}"
# It requires delimiter to pass multiline strings through
# GITHUB_OUTPUT. Since these are already escaped JSON strings, pass
# the JSON strings and later use fromJSON to decode them.
echo "pr-title=$(jq '.title' ${PR_JSON})" >> "${GITHUB_OUTPUT}"
echo "pr-body=$(jq '.body' ${PR_JSON})" >> "${GITHUB_OUTPUT}"
echo "pr-branch=$(jq '.head.ref' ${PR_JSON})" >> "${GITHUB_OUTPUT}"
# Use --compact-output to avoid multiline JSON.
echo "pr-labels=$(jq --compact-output '.labels | map(.name)' \
${PR_JSON})" >> "${GITHUB_OUTPUT}"
- name: "Configuring CI options"
id: configure
env:
PR_TITLE: ${{ fromJSON(steps.fetch-pr.outputs.pr-title || '""') }}
PR_BODY: ${{ fromJSON(steps.fetch-pr.outputs.pr-body || '""') }}
PR_BRANCH: ${{ fromJSON(steps.fetch-pr.outputs.pr-branch || '""') }}
PR_LABELS: ${{ steps.fetch-pr.outputs.pr-labels || '[]' }}
ORIGINAL_PR_TITLE: ${{ github.event.pull_request.title }}
ORIGINAL_PR_BODY: ${{ github.event.pull_request.body }}
ORIGINAL_PR_LABELS: ${{ toJSON(github.event.pull_request.labels.*.name) }}
run: |
# Just informative logging. There should only be two commits in the
# history here, but limiting the depth helps when copying from a local
# repo instead of using checkout, e.g. with
# https://github.com/nektos/act where there will be more.
git log --oneline --graph --max-count=3
./build_tools/github_actions/configure_ci.py
- name: "Show enabled options"
env:
ENABLED_JOBS: ${{ join(fromJson(steps.configure.outputs.enabled-jobs)) || 'None' }}
run: |
echo ":green_circle: Enabled jobs: \`${ENABLED_JOBS}\`" \
>> "${GITHUB_STEP_SUMMARY}"