54 lines
1.8 KiB
YAML
54 lines
1.8 KiB
YAML
name: Cross version test runner
|
|
on:
|
|
issue_comment:
|
|
types: [created]
|
|
|
|
defaults:
|
|
run:
|
|
shell: bash
|
|
|
|
permissions: {}
|
|
|
|
jobs:
|
|
run:
|
|
runs-on: ubuntu-slim
|
|
timeout-minutes: 10
|
|
if: >
|
|
github.event.issue.pull_request &&
|
|
startsWith(github.event.comment.body, '/cvt') &&
|
|
contains(fromJson('["OWNER", "MEMBER", "COLLABORATOR"]'), github.event.issue.author_association) &&
|
|
contains(fromJson('["OWNER", "MEMBER", "COLLABORATOR"]'), github.event.comment.author_association)
|
|
permissions:
|
|
pull-requests: write
|
|
actions: write
|
|
steps:
|
|
- name: Dispatch cross-version tests
|
|
env:
|
|
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
GH_REPO: ${{ github.repository }}
|
|
PR_NUMBER: ${{ github.event.issue.number }}
|
|
COMMENT_BODY: ${{ github.event.comment.body }}
|
|
run: |
|
|
flavors=$(printf '%s' "$COMMENT_BODY" | sed -nE '1 s|^/cvt[[:space:]]+(.+)$|\1|p')
|
|
if [ -z "$flavors" ]; then
|
|
echo "No flavors specified; skipping."
|
|
exit 0
|
|
fi
|
|
|
|
pr_json=$(gh api "repos/$GH_REPO/pulls/$PR_NUMBER")
|
|
base_ref=$(jq -r .base.ref <<< "$pr_json")
|
|
merge_sha=$(jq -r .merge_commit_sha <<< "$pr_json")
|
|
|
|
payload=$(jq -n \
|
|
--arg ref "$base_ref" \
|
|
--arg merge_sha "$merge_sha" \
|
|
--arg flavors "$flavors" \
|
|
--arg repo_full "$GH_REPO" \
|
|
'{ref: $ref, return_run_details: true, inputs: {repository: $repo_full, ref: $merge_sha, flavors: $flavors}}')
|
|
|
|
run_url=$(printf '%s' "$payload" | gh api -X POST \
|
|
"repos/$GH_REPO/actions/workflows/cross-version-tests.yml/dispatches" \
|
|
--input - --jq .html_url)
|
|
|
|
gh pr comment "$PR_NUMBER" --body "Cross-version test run started: $run_url"
|