11name : Delete Review App
22
33on :
4- pull_request :
5- types : [closed]
64 issue_comment :
75 types : [created]
86
@@ -15,17 +13,33 @@ permissions:
1513env :
1614 CPLN_ORG : ${{ secrets.CPLN_ORG }}
1715 CPLN_TOKEN : ${{ secrets.CPLN_TOKEN }}
18- APP_NAME : qa-react-webpack-rails-tutorial-pr-${{ github.event.pull_request.number || github.event. issue.number }}
19- PR_NUMBER : ${{ github.event.pull_request.number || github.event. issue.number }}
16+ APP_NAME : qa-react-webpack-rails-tutorial-pr-${{ github.event.issue.number }}
17+ PR_NUMBER : ${{ github.event.issue.number }}
2018
2119jobs :
20+ debug-trigger :
21+ if : always()
22+ runs-on : ubuntu-latest
23+ steps :
24+ - name : Debug Trigger Conditions
25+ env :
26+ EVENT_NAME : ${{ github.event_name }}
27+ IS_PR : ${{ toJSON(github.event.issue.pull_request) }}
28+ COMMENT : ${{ github.event.comment.body }}
29+ run : |
30+ echo "Debug information for delete-review-app command:"
31+ echo "Event name: $EVENT_NAME"
32+ echo "Is PR (raw): $IS_PR"
33+ echo "Comment body: $COMMENT"
34+ echo "Raw event payload:"
35+ echo '${{ toJSON(github.event) }}'
36+
2237 Process-Delete-Command :
38+ needs : debug-trigger
2339 if : |
24- (github.event_name == 'issue_comment' &&
25- github.event.issue.pull_request &&
26- github.event.comment.body == '/delete-review-app') ||
27- (github.event_name == 'pull_request' &&
28- github.event.action == 'closed')
40+ github.event_name == 'issue_comment' &&
41+ github.event.issue.pull_request &&
42+ github.event.comment.body == '/delete-review-app'
2943 runs-on : ubuntu-latest
3044
3145 steps :
@@ -41,91 +55,23 @@ jobs:
4155 done
4256
4357 if [ ${#missing_secrets[@]} -ne 0 ]; then
44- echo "Required secrets are not set: ${missing_secrets[*]}"
58+ echo " Required secrets are not set: ${missing_secrets[*]}"
4559 exit 1
4660 fi
4761
4862 - name : Setup Environment
4963 uses : ./.github/actions/setup-environment
5064
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-
11365 - name : Create Initial Delete Comment
11466 id : init-delete
11567 uses : actions/github-script@v7
11668 with :
11769 script : |
118- let message = '🗑️ Starting app deletion';
119- if ('${{ github.event_name }}' === 'pull_request') {
120- const merged = '${{ github.event.pull_request.merged }}' === 'true';
121- message += merged ? ' (PR merged)' : ' (PR closed)';
122- }
123-
12470 const comment = await github.rest.issues.createComment({
12571 issue_number: process.env.PR_NUMBER,
12672 owner: context.repo.owner,
12773 repo: context.repo.repo,
128- body: message
74+ body: ' Starting app deletion...'
12975 });
13076 return { commentId: comment.data.id };
13177
@@ -143,28 +89,21 @@ jobs:
14389 uses : actions/github-script@v7
14490 with :
14591 script : |
146- eval(process.env.GET_CONSOLE_LINK);
147-
14892 const success = '${{ job.status }}' === 'success';
14993 const prNumber = process.env.PR_NUMBER;
94+ const cpConsoleUrl = `https://console.cpln.io/org/${process.env.CPLN_ORG}/workloads/${process.env.APP_NAME}`;
15095
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');
96+ const message = success
97+ ? ' Review app for PR #' + prNumber + ' was successfully deleted'
98+ : [
99+ ' Review app for PR #' + prNumber + ' failed to be deleted',
100+ '',
101+ '[Control Plane Console for Review App with PR #' + prNumber + '](' + cpConsoleUrl + ')'
102+ ].join('\n');
164103
165104 await github.rest.issues.updateComment({
166105 owner: context.repo.owner,
167106 repo: context.repo.repo,
168107 comment_id: ${{ fromJSON(steps.init-delete.outputs.result).commentId }},
169- body: success ? successMessage : failureMessage
108+ body: message
170109 });
0 commit comments