Skip to content

Commit e5139b6

Browse files
Update CI.yml
1 parent 5614c82 commit e5139b6

File tree

1 file changed

+58
-22
lines changed

1 file changed

+58
-22
lines changed

.github/workflows/CI.yml

Lines changed: 58 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -2,47 +2,83 @@ name: Jenkins CI Regression
22

33
on:
44
push:
5-
branches: [ main ]
65
pull_request:
76

87
jobs:
98
trigger-jenkins:
109
runs-on: ubuntu-latest
10+
1111
steps:
12-
- name: Trigger Jenkins Build
12+
- name: Trigger Jenkins Job
1313
id: trigger
1414
run: |
15-
echo "Triggering Jenkins job..."
16-
RESPONSE=$(curl -s -X POST \
15+
echo "🚀 Triggering Jenkins job..."
16+
# Send trigger and extract the queue URL from the Location header
17+
QUEUE_URL=$(curl -s -X POST -D - \
1718
-u "${{ secrets.JENKINS_USER }}:${{ secrets.JENKINS_TOKEN }}" \
18-
"${{ secrets.JENKINS_URL }}/job/${{ secrets.JENKINS_JOB }}/buildWithParameters?token=${{ secrets.JENKINS_TRIGGER }}" -i)
19-
echo "$RESPONSE"
19+
"${{ secrets.JENKINS_URL }}/job/${{ secrets.JENKINS_JOB }}/build?token=${{ secrets.JENKINS_TRIGGER }}" \
20+
| grep -i Location | awk '{print $2}' | tr -d '\r\n')
21+
22+
echo "Queue URL: $QUEUE_URL"
23+
echo "queue_url=${QUEUE_URL}" >> $GITHUB_OUTPUT
24+
25+
- name: Wait for Jenkins to Start (Get Build Number)
26+
id: wait_for_start
27+
run: |
28+
echo "⏳ Waiting for Jenkins to assign build number..."
29+
ATTEMPTS=0
30+
BUILD_NUMBER=""
31+
QUEUE_URL="${{ steps.trigger.outputs.queue_url }}api/json"
32+
33+
until [ -n "$BUILD_NUMBER" ] && [ "$BUILD_NUMBER" != "null" ]; do
34+
sleep 10
35+
ATTEMPTS=$((ATTEMPTS + 1))
36+
BUILD_NUMBER=$(curl -s -u "${{ secrets.JENKINS_USER }}:${{ secrets.JENKINS_TOKEN }}" "$QUEUE_URL" | jq -r '.executable.number')
37+
echo "[$ATTEMPTS] Build number: $BUILD_NUMBER"
38+
if [ $ATTEMPTS -gt 30 ]; then
39+
echo "❌ Timed out waiting for Jenkins to start."
40+
exit 1
41+
fi
42+
done
43+
44+
BUILD_URL="${{ secrets.JENKINS_URL }}/job/${{ secrets.JENKINS_JOB }}/${BUILD_NUMBER}/"
45+
echo "✅ Jenkins build started: #$BUILD_NUMBER"
46+
echo "🔗 Jenkins console: ${BUILD_URL}console"
47+
echo "build_number=$BUILD_NUMBER" >> $GITHUB_OUTPUT
48+
echo "build_url=$BUILD_URL" >> $GITHUB_OUTPUT
2049
21-
- name: Wait for Jenkins Build to Complete
22-
id: wait
50+
- name: Wait for Jenkins Build to Finish
51+
id: wait_for_finish
2352
run: |
24-
echo "Polling Jenkins for completion..."
53+
echo "Polling Jenkins for build completion..."
2554
ATTEMPTS=0
2655
BUILD_STATUS="PENDING"
56+
BUILD_NUMBER="${{ steps.wait_for_start.outputs.build_number }}"
57+
BUILD_URL="${{ steps.wait_for_start.outputs.build_url }}"
58+
2759
until [ "$BUILD_STATUS" = "SUCCESS" ] || [ "$BUILD_STATUS" = "FAILURE" ]; do
2860
sleep 30
29-
BUILD_STATUS=$(curl -s -u "${{ secrets.JENKINS_USER }}:${{ secrets.JENKINS_TOKEN }}" \
30-
"${{ secrets.JENKINS_URL }}/job/${{ secrets.JENKINS_JOB }}/lastBuild/api/json" \
31-
| jq -r '.result')
32-
echo "[$ATTEMPTS] Current status: $BUILD_STATUS"
3361
ATTEMPTS=$((ATTEMPTS + 1))
62+
BUILD_STATUS=$(curl -s -u "${{ secrets.JENKINS_USER }}:${{ secrets.JENKINS_TOKEN }}" \
63+
"${BUILD_URL}api/json" | jq -r '.result')
64+
echo "[$ATTEMPTS] Jenkins build status: $BUILD_STATUS"
3465
if [ $ATTEMPTS -gt 60 ]; then
35-
echo "Timed out after 30 minutes."
66+
echo "Timed out after 30 minutes waiting for Jenkins build #$BUILD_NUMBER"
3667
exit 1
3768
fi
3869
done
39-
echo "Final Jenkins status: $BUILD_STATUS"
40-
echo "status=${BUILD_STATUS}" >> $GITHUB_OUTPUT
4170
42-
- name: Mark PR Failed if Jenkins Failed
43-
if: steps.wait.outputs.status == 'FAILURE'
44-
run: exit 1
71+
echo "🏁 Final Jenkins status for build #$BUILD_NUMBER: $BUILD_STATUS"
72+
echo "status=$BUILD_STATUS" >> $GITHUB_OUTPUT
73+
74+
- name: Mark Failed if Jenkins Failed
75+
if: steps.wait_for_finish.outputs.status == 'FAILURE'
76+
run: |
77+
echo "❌ Jenkins build failed."
78+
exit 1
4579
46-
- name: Jenkins Build Succeeded
47-
if: steps.wait.outputs.status == 'SUCCESS'
48-
run: echo "✅ Jenkins Regression Passed Successfully"
80+
- name: Jenkins Build Successful
81+
if: steps.wait_for_finish.outputs.status == 'SUCCESS'
82+
run: |
83+
echo "✅ Jenkins Regression Passed Successfully"
84+
echo "🔗 Build link: ${{ steps.wait_for_start.outputs.build_url }}"

0 commit comments

Comments
 (0)