Skip to content

Commit

Permalink
adding the PRT result and labels on github comment (#1114)
Browse files Browse the repository at this point in the history
(cherry picked from commit 5b7e0bd)

Co-authored-by: omkarkhatavkar <[email protected]>
  • Loading branch information
Satellite-QE and omkarkhatavkar authored Apr 9, 2024
1 parent 0172314 commit 5ce497e
Show file tree
Hide file tree
Showing 2 changed files with 133 additions and 0 deletions.
49 changes: 49 additions & 0 deletions .github/workflows/prt_labels.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
name: Remove the PRT label, for the new commit

on:
pull_request:
types: ["synchronize"]

jobs:
prt_labels_remover:
name: remove the PRT label when amendments or new commits added to PR
runs-on: ubuntu-latest
if: "(contains(github.event.pull_request.labels.*.name, 'PRT-Passed') || contains(github.event.pull_request.labels.*.name, 'PRT-Failed'))"
steps:
- name: Avoid the race condition as PRT result will be cleaned
run: |
echo "Avoiding the race condition if prt result will be cleaned" && sleep 60
- name: Fetch the PRT status
id: prt
uses: omkarkhatavkar/wait-for-status-checks@main
with:
ref: ${{ github.head_ref }}
context: 'Robottelo-Runner'
wait-interval: 2
count: 5

- name: remove the PRT Passed/Failed label, for new commit
if: always() && ${{steps.prt.outputs.result}} == 'not_found'
uses: actions/github-script@v7
with:
github-token: ${{ secrets.CHERRYPICK_PAT }}
script: |
const prNumber = '${{ github.event.number }}';
const issue = await github.rest.issues.get({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: prNumber,
});
const labelsToRemove = ['PRT-Failed', 'PRT-Passed'];
const labelsToRemoveFiltered = labelsToRemove.filter(label => issue.data.labels.some(({ name }) => name === label));
if (labelsToRemoveFiltered.length > 0) {
await Promise.all(labelsToRemoveFiltered.map(async label => {
await github.rest.issues.removeLabel({
issue_number: prNumber,
owner: context.repo.owner,
repo: context.repo.repo,
name: label
});
}));
}
84 changes: 84 additions & 0 deletions .github/workflows/prt_result.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
### The prt result workflow triggered through dispatch request from CI
name: post-prt-result

# Run on workflow dispatch from CI
on:
workflow_dispatch:
inputs:
pr_number:
type: string
description: pr number for PRT run
build_number:
type: string
description: build number for PRT run
pytest_result:
type: string
description: pytest summary result line
build_status:
type: string
description: status of jenkins build e.g. success, unstable or error
prt_comment:
type: string
description: prt pytest comment triggered the PRT checks


jobs:
post-the-prt-result:
runs-on: ubuntu-latest

steps:
- name: Add last PRT result into the github comment
id: add-prt-comment
if: ${{ always() && github.event.inputs.pytest_result != '' }}
uses: thollander/actions-comment-pull-request@v2
with:
message: |
**PRT Result**
```
Build Number: ${{ github.event.inputs.build_number }}
Build Status: ${{ github.event.inputs.build_status }}
PRT Comment: ${{ github.event.inputs.prt_comment }}
Test Result : ${{ github.event.inputs.pytest_result }}
```
pr_number: ${{ github.event.inputs.pr_number }}
GITHUB_TOKEN: ${{ secrets.CHERRYPICK_PAT }}

- name: Add the PRT passed/failed labels
id: prt-status
if: ${{ always() && github.event.inputs.build_status != '' }}
uses: actions/github-script@v7
with:
github-token: ${{ secrets.CHERRYPICK_PAT }}
script: |
const prNumber = ${{ github.event.inputs.pr_number }};
const buildStatus = "${{ github.event.inputs.build_status }}";
const labelToAdd = buildStatus === "SUCCESS" ? "PRT-Passed" : "PRT-Failed";
github.rest.issues.addLabels({
issue_number: prNumber,
owner: context.repo.owner,
repo: context.repo.repo,
labels: [labelToAdd]
});
- name: Remove failed label on test pass or vice-versa
if: ${{ always() && github.event.inputs.build_status != '' }}
uses: actions/github-script@v7
with:
github-token: ${{ secrets.CHERRYPICK_PAT }}
script: |
const prNumber = ${{ github.event.inputs.pr_number }};
const issue = await github.rest.issues.get({
owner: context.issue.owner,
repo: context.issue.repo,
issue_number: prNumber,
});
const buildStatus = "${{ github.event.inputs.build_status }}";
const labelToRemove = buildStatus === "SUCCESS" ? "PRT-Failed" : "PRT-Passed";
const labelExists = issue.data.labels.some(({ name }) => name === labelToRemove);
if (labelExists) {
github.rest.issues.removeLabel({
issue_number: prNumber,
owner: context.repo.owner,
repo: context.repo.repo,
name: [labelToRemove]
});
}

0 comments on commit 5ce497e

Please sign in to comment.