diff --git a/.github/workflows/review_app_prompt.yml b/.github/workflows/review_app_prompt.yml deleted file mode 100644 index 9c795cfa9..000000000 --- a/.github/workflows/review_app_prompt.yml +++ /dev/null @@ -1,24 +0,0 @@ -name: Review app deploy prompt - -on: - pull_request: - types: [opened] - -jobs: - prompt: - name: Add review app deploy instructions - runs-on: ubuntu-latest - permissions: - pull-requests: write - - steps: - - name: Comment with deploy instructions - uses: actions/github-script@v7 - with: - script: | - await github.rest.issues.createComment({ - owner: context.repo.owner, - repo: context.repo.repo, - issue_number: context.issue.number, - body: 'To deploy a review app for this PR, comment `/deploy-review`.', - }); diff --git a/.github/workflows/review_pipeline.yml b/.github/workflows/review_pipeline.yml index 307aa0381..b31f81e23 100644 --- a/.github/workflows/review_pipeline.yml +++ b/.github/workflows/review_pipeline.yml @@ -1,84 +1,57 @@ name: Review app pipeline +concurrency: + group: review-${{ github.event.pull_request.number }} + on: - issue_comment: - types: [created] + pull_request: + types: + - opened + - synchronize + - reopened workflow_dispatch: - inputs: - pr_number: - required: true - type: string - description: "The number of the PR for which to deploy a review app. Note: this is NOT the ticket number" -permissions: {} +defaults: + run: + shell: bash jobs: - get_pr_details: - name: Get PR details - if: github.event_name == 'workflow_dispatch' || (github.event.issue.pull_request && startsWith(github.event.comment.body, '/deploy-review')) - runs-on: ubuntu-latest - outputs: - pr_number: ${{ steps.get_pr_details.outputs.pr_number }} - steps: - - name: Get PR number - id: get_pr_details - uses: actions/github-script@v7 - with: - script: | - if (context.eventName === 'workflow_dispatch') { - core.setOutput('pr_number', '${{ inputs.pr_number }}'); - } else { - core.setOutput('pr_number', context.issue.number.toString()); - } - infra: name: Deploy review app infrastructure - needs: [get_pr_details] uses: communitiesuk/submit-social-housing-lettings-and-sales-data-infrastructure/.github/workflows/create_review_app_infra.yml@main with: - key: ${{ needs.get_pr_details.outputs.pr_number }} + key: ${{ github.event.pull_request.number }} app_repo_role: arn:aws:iam::815624722760:role/core-application-repo permissions: id-token: write code: name: Deploy review app code - needs: [get_pr_details, infra] + needs: [infra] uses: ./.github/workflows/aws_deploy.yml with: aws_account_id: 837698168072 aws_role_prefix: core-dev - aws_task_prefix: core-review-${{ needs.get_pr_details.outputs.pr_number }} - concurrency_tag: ${{ needs.get_pr_details.outputs.pr_number }} + aws_task_prefix: core-review-${{ github.event.pull_request.number }} + concurrency_tag: ${{ github.event.pull_request.number }} environment: review permissions: id-token: write comment: name: Add link to PR - needs: [get_pr_details, code] + needs: [code] runs-on: ubuntu-latest permissions: + issues: write pull-requests: write steps: - name: Comment on PR with URL - uses: actions/github-script@v7 + uses: unsplash/comment-on-pr@v1.3.0 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: - script: | - const prNumber = ${{ needs.get_pr_details.outputs.pr_number }}; - const body = `Created review app at https://review.submit-social-housing-data.communities.gov.uk/${prNumber}. Note that the review app will be automatically deprovisioned after 30 days and will need the review app pipeline running again.`; - const { data: comments } = await github.rest.issues.listComments({ - owner: context.repo.owner, - repo: context.repo.repo, - issue_number: prNumber, - }); - const duplicate = comments.find(c => c.body.startsWith('Created review app at')); - if (!duplicate) { - await github.rest.issues.createComment({ - owner: context.repo.owner, - repo: context.repo.repo, - issue_number: prNumber, - body: body, - }); - } + msg: "Created review app at https://review.submit-social-housing-data.communities.gov.uk/${{ github.event.pull_request.number }}. Note that the review app will be automatically deprovisioned after 30 days and will need the review app pipeline running again." + check_for_duplicate_msg: true + duplicate_msg_pattern: Created review app at*