Skip to content

Commit 4d1f6af

Browse files
committed
.github/workflows: add slack and retest workflows
Importing this from the tektoncd/pipeline repsitory. Signed-off-by: Vincent Demeester <vdemeest@redhat.com>
1 parent 5482882 commit 4d1f6af

File tree

2 files changed

+122
-0
lines changed

2 files changed

+122
-0
lines changed
Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
# The _chatops_retest workflow reruns failed GHA for a PR
2+
#
3+
# This workflow is triggered by leaving a "/retest" comment on
4+
# a pull request. If the required preconditions are met, it will
5+
# rerun failed GitHub actions checks on that PR
6+
#
7+
# Condition for the "/retest" command are:
8+
# - either the issuer is a maintainer
9+
# - or the issuer is the owner the PR
10+
11+
name: Rerun Failed Actions
12+
on:
13+
repository_dispatch:
14+
types: [retest-command]
15+
16+
jobs:
17+
retest:
18+
name: Rerun Failed Actions
19+
runs-on: ubuntu-latest
20+
steps:
21+
- name: Show Environment Variables
22+
run: env
23+
- name: Show Github Object
24+
run: |
25+
cat <<'EOF'
26+
${{ toJson(github) }}
27+
EOF
28+
- name: Show Github Event Path Json
29+
run: 'cat $GITHUB_EVENT_PATH || true'
30+
- name: Rerun Failed Actions
31+
run: |
32+
echo '::group:: Get the PR commit sha'
33+
# Get the sha of the HEAD commit in the PR
34+
GITHUB_COMMIT_SHA=$(gh api $(echo ${GITHUB_PULL_URL#https://api.github.com/}) | \
35+
jq -r .head.sha)
36+
echo GITHUB_COMMIT_SHA=${GITHUB_COMMIT_SHA}
37+
echo '::endgroup::'
38+
39+
echo '::group:: Get the list of run IDs'
40+
# Get a list of run IDs
41+
RUN_IDS=$(gh api repos/${GITHUB_REPO}/commits/${GITHUB_COMMIT_SHA}/check-runs | \
42+
jq -r '.check_runs[] | select(.name != "Rerun Failed Actions") | .html_url | capture("/runs/(?<number>[0-9]+)/job") | .number' | \
43+
sort -u)
44+
echo RUN_IDS=${RUN_IDS}
45+
echo '::endgroup::'
46+
47+
echo '::group:: Rerun failed runs'
48+
# For each run, retrigger faild jobs
49+
for runid in ${RUN_IDS}; do
50+
echo Restarting run ${runid} for commit ${GITHUB_COMMIT_SHA}
51+
gh run \
52+
--repo ${GITHUB_REPO} \
53+
rerun ${runid} \
54+
--failed || true
55+
done
56+
echo '::endgroup::'
57+
env:
58+
GITHUB_TOKEN: ${{ secrets.CHATOPS_TOKEN }}
59+
GITHUB_REPO: ${{ github.event.client_payload.github.payload.repository.full_name }}
60+
GITHUB_PULL_URL: ${{ github.event.client_payload.github.payload.issue.pull_request.url }}
61+
62+
- name: Create comment
63+
if: ${{ failure() && steps.landStack.outcome == 'failure' }}
64+
uses: peter-evans/create-or-update-comment@v4
65+
with:
66+
token: ${{ secrets.CHATOPS_TOKEN }}
67+
repository: ${{ github.event.client_payload.github.payload.repository.full_name }}
68+
issue-number: ${{ github.event.client_payload.github.payload.issue.number }}
69+
body: |
70+
Something went wrong with your `/${{ github.event.client_payload.slash_command.command }}` command: [please check the logs][1].
71+
72+
[1]: ${{ steps.vars.outputs.run-url }}
73+
74+
- name: Add reaction
75+
if: ${{ success() }}
76+
uses: peter-evans/create-or-update-comment@v4
77+
with:
78+
token: ${{ secrets.CHATOPS_TOKEN }}
79+
repository: ${{ github.event.client_payload.github.payload.repository.full_name }}
80+
comment-id: ${{ github.event.client_payload.github.payload.comment.id }}
81+
reactions: hooray

.github/workflows/slash.yml

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
# The slash workflow handles slash commands
2+
#
3+
# Slash commands are given through comments on pull requests
4+
# and may be used only by individuals with "write" access to
5+
# the repository (i.e. maintainers).
6+
#
7+
# Slash commands must be placed at the very beginning of the
8+
# first line of a comment. More details are available in the
9+
# action docs: https://github.com/peter-evans/slash-command-dispatch/tree/main?tab=readme-ov-file#how-comments-are-parsed-for-slash-commands
10+
#
11+
# The workflow looks for and dispatches to another workflow
12+
# named <command>-command which must exist in the repository.
13+
#
14+
# Supported commands:
15+
# - /land: invokes the land-command workflow, to land (merge) PRs
16+
# stacked through ghstack
17+
#
18+
# When a command is recognised, the rocket and eyes emojis are added
19+
20+
name: Slash Command Routing
21+
on:
22+
issue_comment:
23+
types: [created]
24+
25+
jobs:
26+
check_comments:
27+
runs-on: ubuntu-latest
28+
steps:
29+
- name: route-land
30+
uses: peter-evans/slash-command-dispatch@v4
31+
with:
32+
token: ${{ secrets.CHATOPS_TOKEN }}
33+
config: >
34+
[
35+
{
36+
"command": "retest",
37+
"permission": "write",
38+
"issue_type": "pull-request",
39+
"repository": "tektoncd/pipeline"
40+
}
41+
]

0 commit comments

Comments
 (0)