From af7b7f35971493d67a9c1cdfb496c3b11f8a6ffe Mon Sep 17 00:00:00 2001 From: jNullj <15849761+jNullj@users.noreply.github.com> Date: Sat, 22 Jul 2023 22:18:18 +0300 Subject: [PATCH] devops: automate bug report tests (#9386) * devops: automate bug report tests Devs run `npm run badge` often when getting a bug report for shields.io service. This PR automates this tests so the maintainer can get test results automaticly when getting into a new ticket. Add test-bug-run-badge.yml workflow for github actions automation. Will only run if bug has the 'qeustion' label added by bug reporting template. And will only setup enviorment and perform the test if the link provided in the issue is valid and the issue is related to shields.io. Link to job results is sent as a new comment on the issue. Resolves #9351 * remove secrets to avoid secret leak * change stage name * remove unused id --- .github/workflows/test-bug-run-badge.yml | 67 ++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 .github/workflows/test-bug-run-badge.yml diff --git a/.github/workflows/test-bug-run-badge.yml b/.github/workflows/test-bug-run-badge.yml new file mode 100644 index 0000000000..fe07e95f55 --- /dev/null +++ b/.github/workflows/test-bug-run-badge.yml @@ -0,0 +1,67 @@ +name: Test new bug report badge +run-name: Test bug report on issue ${{ github.event.issue.number }} +on: + issues: + types: [opened] +jobs: + extract-bug-badge-url: + if: ${{ contains(github.event.issue.labels.*.name, 'question') }} + runs-on: ubuntu-latest + outputs: + runBadgeTest: ${{ steps.testCondition.outputs.runNext }} + link: ${{ steps.testCondition.outputs.link }} + steps: + - name: Test badge test run conditions + id: testCondition + run: | + product=$(echo "${{ github.event.issue.body }}" | grep -A2 "Are you experiencing an issue with.*" | tail -n 1) + link=$(echo "${{ github.event.issue.body }}" | grep -A2 "Link to the badge.*" | tail -n 1) + + if [[ "$product" == "shields.io" && "$link" == "https://img.shields.io"* ]]; then + echo "runNext=true" >> "$GITHUB_OUTPUT" + echo "link=$link" >> "$GITHUB_OUTPUT" + else + echo "Conditions not met. Skipping the workflow..." + echo "runNext=false" >> "$GITHUB_OUTPUT" + fi + + run-bug-badge-url-test: + needs: extract-bug-badge-url + if: needs.extract-bug-badge-url.outputs.runBadgeTest == 'true' + permissions: + issues: write + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v3 + + - name: Setup + uses: ./.github/actions/setup + with: + node-version: 16 + cypress: false + + - name: Output debug info + env: + TEST_BADGE_LINK: '${{ needs.extract-bug-badge-url.outputs.link }}' + run: npm run badge $TEST_BADGE_LINK + + - name: Add Comment to Issue + uses: actions/github-script@v6 + with: + script: | + const issueNumber = context.issue.number; + const owner = context.repo.owner; + const repo = context.repo.repo; + const runId = context.runId; + const jobUrl = `https://github.com/${owner}/${repo}/actions/runs/${runId}`; + const issueComment = ` + Badge tested using \`npm run badge ${{ needs.extract-bug-badge-url.outputs.link }}\` + Output is available [here](${jobUrl}) + `; + github.rest.issues.createComment({ + issue_number: issueNumber, + owner: owner, + repo: repo, + body: issueComment + }); -- GitLab