forked from Azure/azure-cli-extensions
-
Notifications
You must be signed in to change notification settings - Fork 0
95 lines (83 loc) · 3.68 KB
/
TriggerExtensionRelease.yml
File metadata and controls
95 lines (83 loc) · 3.68 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
name: Trigger ADO OneBranch Extension Release Pipeline
# Run this workflow every time a commit gets pushed to main
# This triggers the ADO OneBranch Extension Release Pipeline
on:
push:
branches:
- main
permissions:
contents: read
id-token: write
jobs:
build:
name: Trigger Extension Release Pipeline
runs-on: ubuntu-latest
steps:
- name: Harden Runner
uses: step-security/harden-runner@63c24ba6bd7ba022e95695ff85de572c04a18142 # v2.7.0
with:
egress-policy: audit
- name: Azure login
uses: azure/login@v2
with:
client-id: ${{ secrets.ADO_SP_ClientID }}
tenant-id: ${{ secrets.ADO_SP_TenantID }}
allow-no-subscriptions: true
- name: Trigger ADO Pipeline and Wait for Completion
uses: azure/cli@v2
env:
ado-org: ${{secrets.ADO_ORGANIZATION}}
ado-project: ${{secrets.ADO_PROJECT}}
ado-pipeline-id: ${{secrets.ADO_PIPELINE_ID}}
commit-id: ${{ github.sha }}
with:
inlineScript: |
# Trigger the pipeline and capture the build ID
echo "Triggering ADO pipeline..."
BUILD_RESULT=$(az pipelines build queue \
--definition-id ${{ env.ado-pipeline-id }} \
--organization ${{ env.ado-org }} \
--project ${{ env.ado-project }} \
--variables commit_id=${{ env.commit-id }} \
--output json)
BUILD_ID=$(echo $BUILD_RESULT | jq -r '.id')
echo "Pipeline triggered with Build ID: $BUILD_ID"
if [ "$BUILD_ID" = "null" ] || [ -z "$BUILD_ID" ]; then
echo "Failed to get build ID from pipeline trigger"
exit 1
fi
# Wait for the build to complete
echo "Waiting for build $BUILD_ID to complete..."
while true; do
BUILD_JSON=$(az pipelines build show \
--id $BUILD_ID \
--organization ${{ env.ado-org }} \
--project ${{ env.ado-project }} \
--output json)
BUILD_STATUS=$(echo "$BUILD_JSON" | jq -r '.status')
BUILD_RESULT_STATUS=$(echo "$BUILD_JSON" | jq -r '.result // "none"')
echo "Current status: $BUILD_STATUS, Result: $BUILD_RESULT_STATUS"
# Check if build is completed
if [ "$BUILD_STATUS" = "completed" ]; then
echo "Build completed with result: $BUILD_RESULT_STATUS"
# Check if the build was successful
if [ "$BUILD_RESULT_STATUS" = "succeeded" ]; then
echo "✅ ADO pipeline build succeeded!"
exit 0
elif [ "$BUILD_RESULT_STATUS" = "partiallySucceeded" ]; then
echo "⚠️ ADO pipeline build partially succeeded"
exit 1
else
echo "❌ ADO pipeline build failed with result: $BUILD_RESULT_STATUS"
exit 1
fi
fi
# Check for other terminal states
if [ "$BUILD_STATUS" = "cancelling" ] || [ "$BUILD_STATUS" = "cancelled" ]; then
echo "❌ ADO pipeline build was cancelled"
exit 1
fi
# Wait 60 seconds before checking again
echo "Build still running... waiting 60 seconds"
sleep 60
done