@@ -24,7 +24,7 @@ concurrency:
2424 cancel-in-progress : true
2525
2626env :
27- APP_NAME : qa-react-webpack-rails-tutorial-pr -${{ github.event.pull_request.number || github.event.issue.number || github.event.inputs.pr_number }}
27+ APP_NAME : ${{ vars.REVIEW_APP_PREFIX }} -${{ github.event.pull_request.number || github.event.issue.number || github.event.inputs.pr_number }}
2828 CPLN_TOKEN : ${{ secrets.CPLN_TOKEN_STAGING }}
2929 CPLN_ORG : ${{ vars.CPLN_ORG_STAGING }}
3030 PR_NUMBER : ${{ github.event.pull_request.number || github.event.issue.number || github.event.inputs.pr_number }}
@@ -62,27 +62,61 @@ jobs:
6262 with :
6363 fetch-depth : 0
6464
65+ - name : Validate Required Secrets and Variables
66+ shell : bash
67+ run : |
68+ missing=()
69+
70+ # Check secrets
71+ if [ -z "${{ secrets.CPLN_TOKEN_STAGING }}" ]; then
72+ missing+=("Secret: CPLN_TOKEN_STAGING")
73+ fi
74+
75+ # Check variables
76+ if [ -z "${{ vars.CPLN_ORG_STAGING }}" ]; then
77+ missing+=("Variable: CPLN_ORG_STAGING")
78+ fi
79+
80+ if [ -z "${{ vars.REVIEW_APP_PREFIX }}" ]; then
81+ missing+=("Variable: REVIEW_APP_PREFIX")
82+ fi
83+
84+ if [ ${#missing[@]} -ne 0 ]; then
85+ echo "Required secrets/variables are not set: ${missing[*]}"
86+ exit 1
87+ fi
88+
6589 - name : Get PR HEAD Ref
6690 id : getRef
6791 env :
6892 GH_TOKEN : ${{ secrets.GITHUB_TOKEN }}
6993 run : |
70- if [[ "${{ github.event_name }}" == "workflow_dispatch" ]]; then
71- PR_NUMBER="${{ github.event.inputs.pr }}"
72- elif [[ "${{ github.event_name }}" == "issue_comment" ]]; then
73- PR_NUMBER="${{ github.event.issue.number }}"
74- elif [[ "${{ github.event_name }}" == "pull_request" ]]; then
75- PR_NUMBER="${{ github.event.pull_request.number }}"
76- elif [[ "${{ github.event_name }}" == "push" ]]; then
77- # For push events, find associated PR
78- PR_DATA=$(gh pr list --head "${{ github.ref_name }}" --json number --jq '.[0].number')
79- if [[ -n "$PR_DATA" ]]; then
80- PR_NUMBER="$PR_DATA"
81- else
82- echo "Error: No PR found for branch ${{ github.ref_name }}"
94+ # Get PR number based on event type
95+ case "${{ github.event_name }}" in
96+ "workflow_dispatch")
97+ PR_NUMBER="${{ github.event.inputs.pr_number }}"
98+ ;;
99+ "issue_comment")
100+ PR_NUMBER="${{ github.event.issue.number }}"
101+ ;;
102+ "pull_request")
103+ PR_NUMBER="${{ github.event.pull_request.number }}"
104+ ;;
105+ "push")
106+ # For push events, find associated PR
107+ PR_DATA=$(gh pr list --head "${{ github.ref_name }}" --json number --jq '.[0].number')
108+ if [[ -n "$PR_DATA" ]]; then
109+ PR_NUMBER="$PR_DATA"
110+ else
111+ echo "Error: No PR found for branch ${{ github.ref_name }}"
112+ exit 1
113+ fi
114+ ;;
115+ *)
116+ echo "Error: Unsupported event type ${{ github.event_name }}"
83117 exit 1
84- fi
85- fi
118+ ;;
119+ esac
86120
87121 if [[ -z "$PR_NUMBER" ]]; then
88122 echo "Error: Could not determine PR number"
91125
92126 # Set environment variables
93127 echo "PR_NUMBER=$PR_NUMBER" >> $GITHUB_ENV
94- echo "APP_NAME=qa-react-webpack-rails-tutorial-pr -$PR_NUMBER" >> $GITHUB_ENV
128+ echo "APP_NAME=${{ vars.REVIEW_APP_PREFIX }} -$PR_NUMBER" >> $GITHUB_ENV
95129
96130 # Get PR data using GitHub CLI
97131 PR_DATA=$(gh pr view $PR_NUMBER --repo shakacode/react-webpack-rails-tutorial --json headRefName,headRefOid)
@@ -150,6 +184,7 @@ jobs:
150184 - name : Create Initial Comment
151185 if : env.DO_DEPLOY != 'false'
152186 uses : actions/github-script@v7
187+ id : create-comment
153188 with :
154189 script : |
155190 const result = await github.rest.issues.createComment({
@@ -160,6 +195,26 @@ jobs:
160195 });
161196 core.setOutput('comment-id', result.data.id);
162197
198+ - name : Update Comment - Building
199+ if : env.DO_DEPLOY != 'false'
200+ uses : actions/github-script@v7
201+ with :
202+ script : |
203+ const buildingMessage = [
204+ `🏗️ Building Docker image for PR #${process.env.PR_NUMBER}, commit ${process.env.PR_SHA}`,
205+ '',
206+ `📝 [View Build Logs](${process.env.WORKFLOW_URL})`,
207+ '',
208+ process.env.CONSOLE_LINK
209+ ].join('\n');
210+
211+ await github.rest.issues.updateComment({
212+ owner: context.repo.owner,
213+ repo: context.repo.repo,
214+ comment_id: ${{ steps.create-comment.outputs.comment-id }},
215+ body: buildingMessage
216+ });
217+
163218 - name : Set Deployment URLs
164219 id : set-urls
165220 if : env.DO_DEPLOY != 'false'
@@ -180,7 +235,7 @@ jobs:
180235 core.exportVariable('WORKFLOW_URL', workflowUrl);
181236 core.exportVariable('CONSOLE_LINK',
182237 '🎮 [Control Plane Console](' +
183- 'https://console.cpln.io/console/org/' + process.env.CPLN_ORG_STAGING + '/gvc/' + process.env.APP_NAME + '/-info)'
238+ 'https://console.cpln.io/console/org/' + process.env.CPLN_ORG + '/gvc/' + process.env.APP_NAME + '/-info)'
184239 );
185240
186241 - name : Update Status - Building
@@ -189,7 +244,7 @@ jobs:
189244 with :
190245 script : |
191246 const buildingMessage = [
192- '🏗️ Building Docker image for PR #' + process.env.PR_NUMBER + ', commit ' + '${{ env.COMMIT_HASH }}' ,
247+ '🏗️ Building Docker image for PR #' + process.env.PR_NUMBER + ', commit ' + process. env.PR_SHA ,
193248 '',
194249 '📝 [View Build Logs](' + process.env.WORKFLOW_URL + ')',
195250 '',
@@ -212,8 +267,8 @@ jobs:
212267 uses : ./.github/actions/build-docker-image
213268 with :
214269 app_name : ${{ env.APP_NAME }}
215- org : ${{ env .CPLN_ORG_STAGING }}
216- commit : ${{ env.COMMIT_HASH }}
270+ org : ${{ vars .CPLN_ORG_STAGING }}
271+ commit : ${{ env.PR_SHA }}
217272 PR_NUMBER : ${{ env.PR_NUMBER }}
218273
219274 - name : Update Status - Deploying
@@ -243,7 +298,7 @@ jobs:
243298 uses : ./.github/actions/deploy-to-control-plane
244299 with :
245300 app_name : ${{ env.APP_NAME }}
246- org : ${{ env .CPLN_ORG_STAGING }}
301+ org : ${{ vars .CPLN_ORG_STAGING }}
247302 github_token : ${{ secrets.GITHUB_TOKEN }}
248303 wait_timeout : ${{ vars.WAIT_TIMEOUT || 900 }}
249304 cpln_token : ${{ secrets.CPLN_TOKEN_STAGING }}
@@ -276,7 +331,7 @@ jobs:
276331
277332 // Define messages based on deployment status
278333 const successMessage = [
279- '✅ Deployment complete for PR #' + prNumber + ', commit ' + '${{ env.COMMIT_HASH }}',
334+ '✅ Deployment complete for PR #' + prNumber + ', commit ' + '${{ env.PR_SHA }}',
280335 '',
281336 '🚀 [Review App for PR #' + prNumber + '](' + appUrl + ')',
282337 consoleLink,
@@ -285,7 +340,7 @@ jobs:
285340 ].join('\n');
286341
287342 const failureMessage = [
288- '❌ Deployment failed for PR #' + prNumber + ', commit ' + '${{ env.COMMIT_HASH }}',
343+ '❌ Deployment failed for PR #' + prNumber + ', commit ' + '${{ env.PR_SHA }}',
289344 '',
290345 consoleLink,
291346 '',
0 commit comments