blob: 07cf61757d7b6b4b0e4a386f21b8593c80dd9d8a [file] [log] [blame]
# tests_entry.yml
# Entry point to the test suites
#
# - If neither ci:run, ci:run_full or ci:ready_to_merge labels are on PR, fail and exit.
# - If the PR comment body doesn't contain 'BUG=' fail and exit.
# - If ci:run or ci:run_full label is on PR, remove label and run the test scripts.
# - If ci:ready_to_merge is on the PR and the pull_request_target type is synchronize not triggered
# by the mergify[bot] user, remove label and fail job.
# - If ci:ready_to_merge label is on PR and pull_request_target type is labeled, run the test scripts.
#
# The end result is labeling ci:run or ci:ready_to_merge will run the test scripts,
# If Mergify merges to the PR, the test scripts will run. If anyone else tries to add
# a commit to the PR or merge , the script will fail and ci:ready_to_merge will be
# removed.
#
# This script runs the test scripts directly. Scheduled or manual runs use
# run_<scriptname>.yml as the entry point.
name: Tests Entry Point
on:
pull_request_target:
types:
- synchronize
- labeled
jobs:
no-labels:
runs-on: ubuntu-latest
steps:
- name: fail-without-labels
if: ${{ !(contains(github.event.pull_request.labels.*.name, 'ci:run') ||
contains(github.event.pull_request.labels.*.name, 'ci:ready_to_merge') ||
contains(github.event.pull_request.labels.*.name, 'ci:run_full')) }}
run: exit 1
ci-ready-to-merge:
runs-on: ubuntu-latest
needs: no-labels
steps:
- name: remove-ready-to-merge
if: ${{ (contains(github.event.pull_request.labels.*.name, 'ci:ready_to_merge') &&
(github.event.action == 'synchronize') &&
!(github.event.sender.login == 'mergify[bot]')) }}
uses: actions/github-script@v5
with:
github-token: ${{ secrets.TFLM_BOT_REPO_TOKEN }}
script: |
github.rest.issues.removeLabel({
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
name: 'ci:ready_to_merge'
})
- name: fail-on-bad-synch
if: ${{ (github.event.action == 'synchronize') && !(github.event.sender.login == 'mergify[bot]') }}
run: exit 1
ci-run:
runs-on: ubuntu-latest
needs: ci-ready-to-merge
steps:
- name: remove-cirun
if: ${{ contains(github.event.pull_request.labels.*.name, 'ci:run') }}
uses: actions/github-script@v5
with:
github-token: ${{ secrets.TFLM_BOT_REPO_TOKEN }}
script: |
github.rest.issues.removeLabel({
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
name: 'ci:run'
})
continue-on-error: true
ci-run-full:
runs-on: ubuntu-latest
needs: ci-run
steps:
- name: remove-cirun-full
if: ${{ contains(github.event.pull_request.labels.*.name, 'ci:run_full') }}
uses: actions/github-script@v5
with:
github-token: ${{ secrets.TFLM_BOT_REPO_TOKEN }}
script: |
github.rest.issues.removeLabel({
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
name: 'ci:run_full'
})
continue-on-error: true
pr-has-bug:
runs-on: ubuntu-latest
needs: ci-run-full
name: PR has Bug
steps:
- name: Check for BUG=
if: ${{ !contains(github.event.pull_request.body, 'BUG=') }}
run: |
echo "PR description requires a BUG= line with issue number."
echo "See https://testing.googleblog.com/2017/09/code-health-providing-context-with.html for additional context"
exit 1
call-ci:
needs: ci-run
uses: ./.github/workflows/ci.yml
with:
trigger-sha: ${{ github.event.pull_request.head.sha }}
call-hexagon:
needs: ci-run
uses: ./.github/workflows/hexagon.yml
with:
trigger-sha: ${{ github.event.pull_request.head.sha }}
secrets:
tflm-bot-token: ${{ secrets.TFLM_BOT_PACKAGE_READ_TOKEN }}
call-xtensa-presubmit:
needs: ci-run
uses: ./.github/workflows/xtensa_presubmit.yml
with:
trigger-sha: ${{ github.event.pull_request.head.sha }}
secrets:
tflm-bot-token: ${{ secrets.TFLM_BOT_PACKAGE_READ_TOKEN }}
call-check-tflite-files:
needs: ci-run
uses: ./.github/workflows/check_tflite_files.yml
with:
trigger-sha: ${{ github.event.pull_request.head.sha }}
pr-number: ${{ github.event.pull_request.number }}
pr-body: ${{ github.event.pull_request.body }}
secrets:
tflm-bot-token: ${{ secrets.TFLM_BOT_PACKAGE_READ_TOKEN }}