Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
95 changes: 95 additions & 0 deletions .github/workflows/TestTriggerExtensionRelease.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,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: 396380
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 30 seconds before checking again
echo "Build still running... waiting 30 seconds"
sleep 30
done
Loading