From 561b482a36f7400b0b8c7cc0194518aa49a6c639 Mon Sep 17 00:00:00 2001 From: Stuart Leeks Date: Fri, 25 Feb 2022 15:12:52 +0000 Subject: [PATCH] Fix ordering. Update to use PR merge ref (#1383) --- .github/workflows/pr_comment_bot.yml | 78 +++++++++++++++------------- 1 file changed, 42 insertions(+), 36 deletions(-) diff --git a/.github/workflows/pr_comment_bot.yml b/.github/workflows/pr_comment_bot.yml index 0a214d660..63fc00b98 100644 --- a/.github/workflows/pr_comment_bot.yml +++ b/.github/workflows/pr_comment_bot.yml @@ -71,19 +71,58 @@ jobs: echo "Showing help on PR ${PR_NUMBER}" gh pr comment ${PR_NUMBER} --repo $REPO --body "Hello

You can use the following commands:
/test - run tests on a PR
/force-approve - force approval of the PR (i.e. skip the deployment checks)
/help - show this help" + # Get PR commit details for running tests + - id: get_pr_details + name: Get PR details + if: ${{ steps.check_command.outputs.result == 'run-tests' }} + env: + PR_NUMBER: ${{ github.event.issue.number }} + REPO: ${{ github.event.repository.full_name }} + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + # Could look at moving this to GitHub Script action as well + + echo "Getting PR repo..." + pr_owner=$(gh pr view $PR_NUMBER --repo $REPO --json headRepositoryOwner | jq -r .headRepositoryOwner.login) + pr_repo=$(gh pr view $PR_NUMBER --repo $REPO --json headRepository | jq -r .headRepository.name) + echo -e "\tPR from $pr_owner/$pr_repo" + + echo "Getting PR ref..." + ref=$(gh pr view $PR_NUMBER --repo $REPO --json commits | jq -r ".[] | last | .oid") + echo -e "\tLatest commit ref: $ref" + # Get the prMergeCommit as this is what the pull_request trigger would build + prMergeRef=$(gh pr view $PR_NUMBER --repo $REPO --json potentialMergeCommit | jq -r .potentialMergeCommit.oid) + echo -e "\tprMergeRef: $prMergeRef" + echo + + echo "Setting outputs" + echo "::set-output name=prRef::${prMergeRef}" + echo "::set-output name=prRepo::${pr_owner}/${pr_repo}" + echo "Done" + + github_pr_ref="refs/pull/${PR_NUMBER}/merge" + echo "::set-output name=ciGitRef::${github_pr_ref}" + + REFID=$(echo ${github_pr_ref} | shasum | cut -c1-8) + echo "using id of: ${REFID} for GitHub Ref: ${github_pr_ref}" + echo "::set-output name=refid::${REFID}" + + # Check if the PR build/test needs to run - name: Checkout if: ${{ steps.check_command.outputs.result == 'run-tests' || steps.check_command.outputs.result == 'force-approve' }} uses: actions/checkout@v2 with: - repository: ${{ inputs.prRepo }} - ref: ${{ inputs.prRef }} + # repository: ${{ steps.get_pr_details.outputs.prRepo }} + ref: ${{ steps.get_pr_details.outputs.prRef }} persist-credentials: false - uses: dorny/paths-filter@v2 id: filter if: ${{ steps.check_command.outputs.result == 'run-tests' }} with: + base: main + ref: ${{ steps.get_pr_details.outputs.prRef }} filters: | not-md: # we need to check for changes in files other than *.md @@ -101,39 +140,6 @@ jobs: status: "completed" conclusion: "success" - # Get PR commit details for running tests - - id: get_pr_details - name: Get PR details - if: ${{ steps.check_command.outputs.result == 'run-tests' && steps.filter.outputs.not-md == 'true' }} - env: - PR_NUMBER: ${{ github.event.issue.number }} - REPO: ${{ github.event.repository.full_name }} - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: | - # Could look at moving this to GitHub Script action as well - - echo "Getting PR repo..." - pr_owner=$(gh pr view $PR_NUMBER --repo $REPO --json headRepositoryOwner | jq -r .headRepositoryOwner.login) - pr_repo=$(gh pr view $PR_NUMBER --repo $REPO --json headRepository | jq -r .headRepository.name) - echo -e "\tPR from $pr_owner/$pr_repo" - - echo "Getting PR ref..." - ref=$(gh pr view $PR_NUMBER --repo $REPO --json commits | jq -r ".[] | last | .oid") - echo -e "\tLatest commit ref: $ref" - echo - - echo "Setting outputs" - echo "::set-output name=prRef::${ref}" - echo "::set-output name=prRepo::${pr_owner}/${pr_repo}" - echo "Done" - - github_pr_ref="refs/pull/${PR_NUMBER}/merge" - echo "::set-output name=ciGitRef::${github_pr_ref}" - - REFID=$(echo ${github_pr_ref} | shasum | cut -c1-8) - echo "using id of: ${REFID} for GitHub Ref: ${github_pr_ref}" - echo "::set-output name=refid::${REFID}" - run_test: # Run the tests with the re-usable workflow needs: [pr_comment] @@ -142,7 +148,7 @@ jobs: uses: ./.github/workflows/deploy_tre_reusable.yml with: prRef: ${{ needs.pr_comment.outputs.prRef }} - prRepo: ${{ needs.pr_comment.outputs.prRepo }} + # prRepo: ${{ needs.pr_comment.outputs.prRepo }} ciGitRef: ${{ needs.pr_comment.outputs.ciGitRef }} secrets: AAD_TENANT_ID: ${{ secrets.AAD_TENANT_ID }}