name: Automated tests - publish results on: workflow_run: workflows: - Automated tests types: - completed - requested env: isCompleted: ${{ github.event.workflow_run.status == 'completed' }} jobs: get-pr-data: runs-on: ubuntu-latest concurrency: group: github-api-request cancel-in-progress: false if: ${{ github.event.workflow_run.event == 'pull_request' }} outputs: pr-number: ${{ steps.pr.outputs.result || steps.set-env.outputs.pr-number }} workflow-id: ${{ github.event.workflow_run.id || steps.set-env.outputs.workflow-id }} steps: - name: Find associated pull request if: ${{ !fromJson(env.isCompleted) }} id: pr uses: actions/github-script@v7 with: script: | const response = await github.rest.search.issuesAndPullRequests({ q: 'repo:${{ github.repository }} is:pr sha:${{ github.event.workflow_run.head_sha }}', per_page: 1, }) const items = response.data.items if (items.length < 1) { console.error('No PRs found') return } const pullRequestNumber = items[0].number return pullRequestNumber - name: Download PR artifact if: ${{ fromJson(env.isCompleted) }} uses: actions/github-script@v7 with: script: | try { let allArtifacts = await github.rest.actions.listWorkflowRunArtifacts({ owner: context.repo.owner, repo: context.repo.repo, run_id: context.payload.workflow_run.id, }); let matchArtifact = allArtifacts.data.artifacts.filter((artifact) => { return artifact.name == "pr-comment-data" })[0]; let download = await github.rest.actions.downloadArtifact({ owner: context.repo.owner, repo: context.repo.repo, artifact_id: matchArtifact.id, archive_format: 'zip', }); let fs = require('fs'); fs.writeFileSync(`${process.env.GITHUB_WORKSPACE}/pr-comment-data.zip`, Buffer.from(download.data)); } catch (error) { console.log('No artifact found'); } - name: Unzip artifact if: ${{ fromJson(env.isCompleted) }} run: unzip pr-comment-data.zip - name: Set env variables from artifact if: ${{ fromJson(env.isCompleted) }} id: set-env run: | echo "pr-number=$(cat ./pr_number)" >> $GITHUB_OUTPUT echo "workflow-id=$(cat ./workflow_id)" >> $GITHUB_OUTPUT comment-pr: runs-on: ubuntu-latest permissions: pull-requests: write needs: get-pr-data steps: - name: Find Comment uses: peter-evans/find-comment@v3 id: fc with: issue-number: ${{ needs.get-pr-data.outputs.pr-number }} comment-author: "github-actions[bot]" body-includes: Automated tests Summary - name: Remove previous comment if: steps.fc.outputs.comment-id != '' uses: actions/github-script@v7 with: script: | github.rest.issues.deleteComment({ owner: context.repo.owner, repo: context.repo.repo, comment_id: ${{ steps.fc.outputs.comment-id }} }) - name: In progress tests comment if: ${{ !fromJson(env.isCompleted) }} uses: peter-evans/create-or-update-comment@v4 with: issue-number: ${{ needs.get-pr-data.outputs.pr-number }} body: |