6060 value : ${{ jobs.deploy.outputs.deployment-id }}
6161
6262jobs :
63- # Simple validation job
64- validate :
65- name : 🔍 Validate Inputs
63+ deploy :
64+ name : 🚀 Deploy to Magento Cloud
6665 runs-on : ubuntu-latest
66+ environment : ${{ inputs.environment }}
67+ env :
68+ MAGENTO_CLOUD_CLI_TOKEN : ${{ secrets.magento-cloud-cli-token }}
69+ outputs :
70+ deployment-url : ${{ steps.deploy-info.outputs.url }}
71+ deployment-id : ${{ steps.deploy-info.outputs.id }}
6772 steps :
6873 - name : Validate required inputs
6974 run : |
7075 if [ -z "${{ inputs.magento-cloud-project-id }}" ]; then
7176 echo "❌ Error: magento-cloud-project-id is required"
7277 exit 1
7378 fi
74-
79+
7580 if [ "${{ inputs.environment }}" != "integration" ] && [ "${{ inputs.environment }}" != "staging" ] && [ "${{ inputs.environment }}" != "production" ]; then
7681 echo "❌ Error: environment must be one of: integration, staging, production"
7782 exit 1
7883 fi
7984
8085 echo "✅ All required inputs validated"
8186
82- # Simple deploy to Magento Cloud
83- deploy :
84- name : 🚀 Deploy to Magento Cloud
85- runs-on : ubuntu-latest
86- needs : [validate, newrelic-start]
87- if : always() && needs.validate.result == 'success'
88- environment : ${{ inputs.environment }}
89- env :
90- MAGENTO_CLOUD_CLI_TOKEN : ${{ secrets.magento-cloud-cli-token }}
91- outputs :
92- deployment-url : ${{ steps.deploy-info.outputs.url }}
93- deployment-id : ${{ steps.deploy-info.outputs.id }}
94- steps :
87+ - name : Create NewRelic deployment marker (start)
88+ if : inputs.newrelic-app-id != '' && secrets.newrelic-api-key != ''
89+ run : |
90+ echo "📊 Creating NewRelic deployment marker (start)..."
91+
92+ curl -X POST "https://api.newrelic.com/v2/applications/${{ inputs.newrelic-app-id }}/deployments.json" \
93+ -H "X-Api-Key: ${{ secrets.newrelic-api-key }}" \
94+ -H "Content-Type: application/json" \
95+ -d '{
96+ "deployment": {
97+ "revision": "${{ github.sha }}",
98+ "changelog": "Magento Cloud deployment started",
99+ "description": "Deployment to ${{ inputs.environment }} environment",
100+ "user": "${{ github.actor }}"
101+ }
102+ }'
103+
104+ echo "✅ NewRelic deployment start marker created"
105+
95106 - name : Checkout code with full git history
96107 uses : actions/checkout@v4
97108 with :
@@ -103,7 +114,7 @@ jobs:
103114 curl -fsS https://accounts.magento.cloud/cli/installer | php
104115 export PATH=$HOME/.magento-cloud/bin:$PATH
105116 echo "$HOME/.magento-cloud/bin" >> $GITHUB_PATH
106-
117+
107118 # Verify installation
108119 magento-cloud --version
109120 echo "✅ Magento Cloud CLI installed successfully"
@@ -112,15 +123,15 @@ jobs:
112123 id : deployment
113124 run : |
114125 echo "🚀 Starting deployment to ${{ inputs.environment }}..."
115-
126+
116127 debug=""
117128 if [ "${{ inputs.debug }}" = "true" ]; then
118129 debug="--verbose"
119130 fi
120-
131+
121132 # Set project context
122133 magento-cloud project:set-remote "${{ inputs.magento-cloud-project-id }}"
123-
134+
124135 # Deploy based on environment type
125136 case "${{ inputs.environment }}" in
126137 "integration")
@@ -134,30 +145,23 @@ jobs:
134145 magento-cloud push --environment "${{ inputs.environment }}" --force --wait $debug
135146 ;;
136147 esac
137-
148+
138149 echo "✅ Deployment completed successfully"
150+ echo "deployment-success=true" >> $GITHUB_OUTPUT
139151
140152 - name : Get deployment information
141153 id : deploy-info
142154 run : |
143155 echo "📋 Retrieving deployment information..."
144-
156+
145157 # Get environment URL
146158 URL=$(magento-cloud url --environment "${{ inputs.environment }}" --project "${{ inputs.magento-cloud-project-id }}" --pipe | tr -d '[:space:]')
147- {
148- echo "url<<EOF"
149- echo "url=$URL"
150- echo "EOF"
151- } >> "$GITHUB_OUTPUT"
152-
159+ echo "url=$URL" >> "$GITHUB_OUTPUT"
160+
153161 # Get deployment ID
154162 DEPLOYMENT_ID=$(magento-cloud activity:list --environment "${{ inputs.environment }}" --type push --limit 1 --format csv --columns id --no-header | head -1)
155- {
156- echo "url<<EOF"
157- echo "id=$DEPLOYMENT_ID"
158- echo "EOF"
159- } >> "$GITHUB_OUTPUT"
160-
163+ echo "id=$DEPLOYMENT_ID" >> "$GITHUB_OUTPUT"
164+
161165 if [ "${{ inputs.debug }}" = "true" ]; then
162166 echo "🔍 Deployment information:"
163167 echo " URL: ${URL}"
@@ -177,7 +181,7 @@ jobs:
177181 echo "| **Git Commit** | ${{ github.sha }} |" >> $GITHUB_STEP_SUMMARY
178182 echo "| **Deployed By** | ${{ github.actor }} |" >> $GITHUB_STEP_SUMMARY
179183 echo "" >> $GITHUB_STEP_SUMMARY
180-
184+
181185 case "${{ inputs.environment }}" in
182186 "production")
183187 echo "### 🌍 Production Deployment" >> $GITHUB_STEP_SUMMARY
@@ -196,71 +200,30 @@ jobs:
196200 ;;
197201 esac
198202
199- # NewRelic Start Marker Job - runs before deployment
200- newrelic-start :
201- name : 📊 NewRelic Start
202- runs-on : ubuntu-latest
203- needs : [validate]
204- if : inputs.newrelic-app-id != ''
205- steps :
206- - name : Create NewRelic deployment marker (start)
207- run : |
208- if [ -z "${{ secrets.newrelic-api-key }}" ]; then
209- echo "⚠️ NewRelic API key not provided, skipping deployment marker"
210- exit 0
211- fi
212-
213- echo "📊 Creating NewRelic deployment marker (start)..."
214-
215- curl -X POST "https://api.newrelic.com/v2/applications/${{ inputs.newrelic-app-id }}/deployments.json" \
216- -H "X-Api-Key: ${{ secrets.newrelic-api-key }}" \
217- -H "Content-Type: application/json" \
218- -d '{
219- "deployment": {
220- "revision": "${{ github.sha }}",
221- "changelog": "Magento Cloud deployment started",
222- "description": "Deployment to ${{ inputs.environment }} environment",
223- "user": "${{ github.actor }}"
224- }
225- }'
226-
227- echo "✅ NewRelic deployment start marker created"
228-
229- # NewRelic Complete Marker Job - runs after deployment (success or failure)
230- newrelic-complete :
231- name : 📊 NewRelic Complete
232- runs-on : ubuntu-latest
233- needs : [deploy]
234- if : always() && inputs.newrelic-app-id != ''
235- steps :
236203 - name : Create NewRelic deployment marker (complete)
204+ if : always() && inputs.newrelic-app-id != '' && secrets.newrelic-api-key != ''
237205 run : |
238- if [ -z "${{ secrets.newrelic-api-key }}" ]; then
239- echo "⚠️ NewRelic API key not provided, skipping deployment marker"
240- exit 0
241- fi
242-
243206 echo "📊 Creating NewRelic deployment marker (complete)..."
244-
245- # Determine deployment status and set appropriate message
246- if [ "${{ needs.deploy.result }}" == "success" ]; then
207+
208+ # Determine deployment status based on previous step outcomes
209+ if [ "${{ steps.deployment.outcome }}" == "success" ]; then
247210 CHANGELOG="Magento Cloud deployment completed successfully"
248- DESCRIPTION="Deployment to ${{ inputs.environment }} completed at ${{ needs .deploy.outputs.deployment- url }}"
211+ DESCRIPTION="Deployment to ${{ inputs.environment }} completed at ${{ steps .deploy-info .outputs.url }}"
249212 echo "✅ Deployment was successful"
250- elif [ "${{ needs.deploy.result }}" == "failure" ]; then
213+ elif [ "${{ steps.deployment.outcome }}" == "failure" ]; then
251214 CHANGELOG="Magento Cloud deployment failed"
252215 DESCRIPTION="Deployment to ${{ inputs.environment }} failed - check workflow logs for details"
253216 echo "❌ Deployment failed"
254- elif [ "${{ needs.deploy.result }}" == "cancelled" ]; then
217+ elif [ "${{ steps.deployment.outcome }}" == "cancelled" ]; then
255218 CHANGELOG="Magento Cloud deployment cancelled"
256219 DESCRIPTION="Deployment to ${{ inputs.environment }} was cancelled by user"
257220 echo "⚠️ Deployment was cancelled"
258221 else
259- CHANGELOG="Magento Cloud deployment status: ${{ needs.deploy.result }}"
260- DESCRIPTION="Deployment to ${{ inputs.environment }} ended with status: ${{ needs.deploy.result }}"
261- echo "ℹ️ Deployment status: ${{ needs.deploy.result }}"
222+ CHANGELOG="Magento Cloud deployment status: ${{ steps.deployment.outcome }}"
223+ DESCRIPTION="Deployment to ${{ inputs.environment }} ended with status: ${{ steps.deployment.outcome }}"
224+ echo "ℹ️ Deployment status: ${{ steps.deployment.outcome }}"
262225 fi
263-
226+
264227 curl -X POST "https://api.newrelic.com/v2/applications/${{ inputs.newrelic-app-id }}/deployments.json" \
265228 -H "X-Api-Key: ${{ secrets.newrelic-api-key }}" \
266229 -H "Content-Type: application/json" \
@@ -272,39 +235,30 @@ jobs:
272235 \"user\": \"${{ github.actor }}\"
273236 }
274237 }"
275-
276- echo "✅ NewRelic deployment marker created with status: ${{ needs.deploy.result }}"
277238
278- # CST Reporting Job - runs in parallel with NewRelic complete after successful deployment
279- cst-report :
280- name : 📡 Report to CST
281- runs-on : ubuntu-latest
282- needs : [deploy]
283- if : needs.deploy.result == 'success'
284- steps :
285- - name : Checkout code
286- uses : actions/checkout@v4
239+ echo "✅ NewRelic deployment marker created with status: ${{ steps.deployment.outcome }}"
287240
288- - name : Report deployment to CST (Confidentiality and Security Team)
241+ - name : Report deployment to CST
242+ if : steps.deployment.outcome == 'success'
289243 run : |
290244 # Determine CST endpoint - input overrides workspace variable
291245 CST_ENDPOINT="${{ inputs.cst-endpoint }}"
292246 if [ -z "$CST_ENDPOINT" ]; then
293247 CST_ENDPOINT="${{ vars.CST_ENDPOINT }}"
294248 fi
295-
249+
296250 # Determine CST project key - input overrides workspace variable
297251 CST_PROJECT_KEY="${{ inputs.cst-project-key }}"
298252 if [ -z "$CST_PROJECT_KEY" ]; then
299253 CST_PROJECT_KEY="${{ vars.CST_PROJECT_KEY }}"
300254 fi
301-
255+
302256 # Determine CST reporting key - input overrides workspace secret
303257 CST_KEY="${{ secrets.cst-reporting-token }}"
304258 if [ -z "$CST_KEY" ]; then
305259 CST_KEY="${{ secrets.CST_REPORTING_TOKEN }}"
306260 fi
307-
261+
308262 # Check if we have all required CST configuration
309263 if [ -z "$CST_ENDPOINT" ] || [ -z "$CST_PROJECT_KEY" ] || [ -z "$CST_KEY" ]; then
310264 echo "ℹ️ CST reporting skipped (missing endpoint, project key, or auth key)"
@@ -313,19 +267,19 @@ jobs:
313267 echo " - Auth Key: $([ -n "$CST_KEY" ] && echo "✅ configured" || echo "❌ missing")"
314268 exit 0
315269 fi
316-
270+
317271 echo "📡 Reporting deployment to CST (Confidentiality and Security Team)..."
318-
272+
319273 # Construct full CST URL: endpoint/project_key/adobe-commerce
320274 CST_FULL_URL="${CST_ENDPOINT}/${CST_PROJECT_KEY}/adobe-commerce"
321-
275+
322276 # Send composer.lock file contents to CST endpoint
323277 if [ -f "composer.lock" ]; then
324278 curl -X POST "${CST_FULL_URL}" \
325279 -H "Authorization: Bearer ${CST_KEY}" \
326280 -H "Content-Type: application/octet-stream" \
327281 --data-binary @composer.lock
328-
282+
329283 echo "✅ Deployment reported to CST systems at ${CST_FULL_URL}"
330284 else
331285 echo "⚠️ composer.lock not found, skipping CST reporting"
0 commit comments