|
48 | 48 | - name: Setup Environment
|
49 | 49 | uses: ./.github/actions/setup-environment
|
50 | 50 |
|
| 51 | + - name: Set shared functions |
| 52 | + id: shared-functions |
| 53 | + uses: actions/github-script@v7 |
| 54 | + with: |
| 55 | + script: | |
| 56 | + core.exportVariable('GET_CONSOLE_LINK', ` |
| 57 | + function getConsoleLink(prNumber) { |
| 58 | + return ' [Control Plane Console for Review App with PR #' + prNumber + '](' + |
| 59 | + 'https://console.cpln.io/org/' + process.env.CPLN_ORG + '/workloads/' + process.env.APP_NAME + ')'; |
| 60 | + } |
| 61 | + `); |
| 62 | +
|
| 63 | + - name: Initialize Delete |
| 64 | + id: init-delete |
| 65 | + uses: actions/github-script@v7 |
| 66 | + with: |
| 67 | + script: | |
| 68 | + eval(process.env.GET_CONSOLE_LINK); |
| 69 | +
|
| 70 | + async function getWorkflowUrl(runId) { |
| 71 | + // Get the current job ID |
| 72 | + const jobs = await github.rest.actions.listJobsForWorkflowRun({ |
| 73 | + owner: context.repo.owner, |
| 74 | + repo: context.repo.repo, |
| 75 | + run_id: runId |
| 76 | + }); |
| 77 | + |
| 78 | + const currentJob = jobs.data.jobs.find(job => job.status === 'in_progress'); |
| 79 | + const jobId = currentJob?.id; |
| 80 | + |
| 81 | + if (!jobId) { |
| 82 | + console.log('Warning: Could not find current job ID'); |
| 83 | + return `${process.env.GITHUB_SERVER_URL}/${context.repo.owner}/${context.repo.repo}/actions/runs/${runId}`; |
| 84 | + } |
| 85 | + |
| 86 | + return `${process.env.GITHUB_SERVER_URL}/${context.repo.owner}/${context.repo.repo}/actions/runs/${runId}/job/${jobId}`; |
| 87 | + } |
| 88 | + |
| 89 | + const workflowUrl = await getWorkflowUrl(context.runId); |
| 90 | + |
| 91 | + const comment = await github.rest.issues.createComment({ |
| 92 | + issue_number: process.env.PR_NUMBER, |
| 93 | + owner: context.repo.owner, |
| 94 | + repo: context.repo.repo, |
| 95 | + body: [ |
| 96 | + ' Starting app deletion...', |
| 97 | + '', |
| 98 | + ' [View Delete Logs](' + workflowUrl + ')', |
| 99 | + '', |
| 100 | + getConsoleLink(process.env.PR_NUMBER) |
| 101 | + ].join('\n') |
| 102 | + }); |
| 103 | + |
| 104 | + return { |
| 105 | + commentId: comment.data.id, |
| 106 | + workflowUrl |
| 107 | + }; |
| 108 | +
|
| 109 | + - name: Set workflow URL |
| 110 | + run: | |
| 111 | + echo "WORKFLOW_URL=${{ fromJSON(steps.init-delete.outputs.result).workflowUrl }}" >> $GITHUB_ENV |
| 112 | +
|
51 | 113 | - name: Create Initial Delete Comment
|
52 | 114 | id: init-delete
|
53 | 115 | uses: actions/github-script@v7
|
@@ -81,28 +143,28 @@ jobs:
|
81 | 143 | uses: actions/github-script@v7
|
82 | 144 | with:
|
83 | 145 | script: |
|
| 146 | + eval(process.env.GET_CONSOLE_LINK); |
| 147 | + |
84 | 148 | const success = '${{ job.status }}' === 'success';
|
85 | 149 | const prNumber = process.env.PR_NUMBER;
|
86 |
| - const cpConsoleUrl = `https://console.cpln.io/org/${process.env.CPLN_ORG}/workloads/${process.env.APP_NAME}`; |
87 | 150 |
|
88 |
| - let message; |
89 |
| - if (success) { |
90 |
| - message = '✅ Review app for PR #' + prNumber + ' was successfully deleted'; |
91 |
| - if ('${{ github.event_name }}' === 'pull_request') { |
92 |
| - const merged = '${{ github.event.pull_request.merged }}' === 'true'; |
93 |
| - message += merged ? ' after merge' : ' after PR was closed'; |
94 |
| - } |
95 |
| - } else { |
96 |
| - message = [ |
97 |
| - '❌ Review app for PR #' + prNumber + ' failed to be deleted', |
98 |
| - '', |
99 |
| - '🎮 [Control Plane Console for Review App with PR #' + prNumber + '](' + cpConsoleUrl + ')' |
100 |
| - ].join('\n'); |
101 |
| - } |
| 151 | + const successMessage = [ |
| 152 | + '✅ Review app for PR #' + prNumber + ' was successfully deleted', |
| 153 | + '', |
| 154 | + ' [View Completed Delete Logs](' + process.env.WORKFLOW_URL + ')' |
| 155 | + ].join('\n'); |
| 156 | + |
| 157 | + const failureMessage = [ |
| 158 | + '❌ Review app for PR #' + prNumber + ' failed to be deleted', |
| 159 | + '', |
| 160 | + ' [View Delete Logs with Errors](' + process.env.WORKFLOW_URL + ')', |
| 161 | + '', |
| 162 | + getConsoleLink(prNumber) |
| 163 | + ].join('\n'); |
102 | 164 |
|
103 | 165 | await github.rest.issues.updateComment({
|
104 | 166 | owner: context.repo.owner,
|
105 | 167 | repo: context.repo.repo,
|
106 | 168 | comment_id: ${{ fromJSON(steps.init-delete.outputs.result).commentId }},
|
107 |
| - body: message |
| 169 | + body: success ? successMessage : failureMessage |
108 | 170 | });
|
0 commit comments