Skip to content

Commit 74744e3

Browse files
authored
Create compute-rocm-dkmd-afar-trigger.yml (llvm#512)
1 parent 40e6180 commit 74744e3

File tree

1 file changed

+78
-0
lines changed

1 file changed

+78
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
name: Trigger compute-rocm-dkms-afar job on push
2+
3+
on:
4+
push: # This triggers the workflow on push events
5+
branches:
6+
- amd-staging
7+
workflow_dispatch: # This allows manual triggering of the workflow
8+
9+
jobs:
10+
trigger_jenkins:
11+
runs-on: self-hosted
12+
13+
steps:
14+
- name: Set environment variable for container image
15+
run: |
16+
echo "CONTAINER_IMAGE=${{ secrets.JENKINS_TRIGGER_DOCKER_IMAGE }}" >> $GITHUB_ENV
17+
echo "CONTAINER_NAME=my_container_${{ github.run_id }}" >> $GITHUB_ENV
18+
19+
- name: Pull container image
20+
run: docker pull "${{env.CONTAINER_IMAGE}}"
21+
22+
- name: Run container
23+
run: |
24+
docker run -d --name "${{env.CONTAINER_NAME}}" $CONTAINER_IMAGE sleep infinity
25+
docker exec "${{env.CONTAINER_NAME}}" /bin/bash -c "echo 'Running commands inside the container'"
26+
27+
- name: Trigger compute-rocm-dkms-afar job
28+
run: |
29+
docker exec "${{env.CONTAINER_NAME}}" /bin/bash -c "python -c \"
30+
import requests
31+
import time
32+
from requests.auth import HTTPBasicAuth
33+
34+
jenkins_user = '${{ secrets.CI_JENKINS_USER }}'
35+
jenkins_token = '${{ secrets.ROCM_JENKINS_CI_TOKEN }}'
36+
jenkins_host = '${{ secrets.ROCM_JENKINS_HOST }}'
37+
jenkins_job = '${{ secrets.ROCM_JENKINS_OSDB_JOB }}'
38+
39+
jenkins_url = f'{jenkins_host}/job/{jenkins_job}/buildWithParameters'
40+
41+
response = requests.post(jenkins_url, auth=HTTPBasicAuth(jenkins_user, jenkins_token))
42+
43+
if response.status_code == 201:
44+
print('Jenkins job triggered successfully!')
45+
queue_url = response.headers.get('Location')
46+
if queue_url:
47+
print(f'Queue URL: {queue_url}')
48+
print(f'Getting build URL(max 5 attempts with 10seconds interval)...')
49+
# Poll the queue item to get the build number, limited to 5 attempts
50+
max_attempts = 5
51+
attempts = 0
52+
while attempts < max_attempts:
53+
queue_response = requests.get(queue_url + 'api/json', auth=HTTPBasicAuth(jenkins_user, jenkins_token))
54+
queue_data = queue_response.json()
55+
if 'executable' in queue_data:
56+
build_number = queue_data['executable']['number']
57+
build_url = f'{jenkins_host}/job/{jenkins_job}/{build_number}/'
58+
print(f'Build URL: {build_url}')
59+
break
60+
attempts += 1
61+
time.sleep(10) # Wait for 10 seconds before polling again
62+
else:
63+
print('Exceeded maximum attempts to get the build URL. The trigger happened, so not failing the workflow')
64+
else:
65+
print('Build URL not found in the response headers.')
66+
67+
elif response.status_code == 200:
68+
print('Request was successful, but check the response content for details.')
69+
print(response.text)
70+
else:
71+
print(f'Failed to trigger Jenkins job. Status code: {response.status_code}')
72+
\""
73+
74+
- name: Stop and remove container
75+
if: always()
76+
run: |
77+
docker stop "${{env.CONTAINER_NAME}}"
78+
docker rm "${{env.CONTAINER_NAME}}"

0 commit comments

Comments
 (0)