From f40c04be629d06f6aba227c59ed7ac3c37f508a9 Mon Sep 17 00:00:00 2001 From: ammallya Date: Thu, 28 Aug 2025 09:50:11 -0700 Subject: [PATCH] Selective trigger of PSDB jobs (#783) * Selective trigger of PSDB jobs --- .azuredevops/rocm_ci_caller.yml | 69 ++++++++++++++++++++++++++------- 1 file changed, 55 insertions(+), 14 deletions(-) diff --git a/.azuredevops/rocm_ci_caller.yml b/.azuredevops/rocm_ci_caller.yml index 252eec3666..80e679daf3 100644 --- a/.azuredevops/rocm_ci_caller.yml +++ b/.azuredevops/rocm_ci_caller.yml @@ -3,12 +3,8 @@ pr: branches: include: - develop - paths: - include: - - projects/* - - shared/* drafts: false - + variables: - group: internal - name: REPOSITORY_NAME @@ -25,17 +21,46 @@ variables: value: 'pull_request' - name: GH_PAT value: '$(svc_acc_org_secret)' + jobs: -- job: Trigger_Pipeline - displayName: 'Trigger Pipeline' +- job: Determine_Changes + displayName: 'Check Changed Files' pool: rocm-ci-caller steps: - - checkout: none - - script: | + - checkout: self + - script: | + echo "## Detecting file changes in PR #$(PR_NUM)" + git fetch origin $(BASE_REF) + git diff --name-only origin/$(BASE_REF)...HEAD > changed_files.txt + echo "Changed files:" + cat changed_files.txt + + MATCH_FOUND=false + while read file; do + if [[ "$file" == projects/* || "$file" == shared/* ]]; then + MATCH_FOUND=true + break + fi + done < changed_files.txt + + echo "##vso[task.setvariable variable=match_found]$MATCH_FOUND" + displayName: Detect path changes + +- job: Trigger_Pipeline + displayName: 'Trigger Pipeline or Skip' + dependsOn: Determine_Changes + condition: succeeded() + pool: rocm-ci-caller + steps: + - checkout: none + + - ${{ if eq(dependencies.Determine_Changes.outputs['Determine_Changes.match_found'], 'true') }}: + - script: | rm -rf $(repo_name) git clone $(gh_repo) - displayName: Checkout Code - - script: | + displayName: Checkout Code + + - script: | set -e echo "Calling jenkins_api.py for PR #$(PR_NUM)" cd $(repo_name) @@ -57,6 +82,22 @@ jobs: -ghpat '$(GH_PAT)' \ -br '$(BASE_REF)' \ -et '$(EVENT_TYPE)'" > /dev/null 2>&1 - displayName: Invoke jenkins_api.py in Docker - env: - svc_acc_org_secret: $(svc_acc_org_secret) + displayName: Invoke jenkins_api.py in Docker + env: + svc_acc_org_secret: $(svc_acc_org_secret) + + - ${{ if ne(dependencies.Determine_Changes.outputs['Determine_Changes.match_found'], 'true') }}: + - script: | + echo "Changes outside monitored paths. Skipping Jenkins trigger." + echo "Sending success status for PSDB..." + gh api repos/$(REPOSITORY_NAME)/statuses/$(HEAD_SHA) \ + -H "Authorization: token $(GH_PAT)" \ + -f state=success \ + -f context="PSDB" \ + -f description="PSDB skipped" + gh api repos/$(REPOSITORY_NAME)/statuses/$(HEAD_SHA) \ + -H "Authorization: token $(GH_PAT)" \ + -f state=success \ + -f context="psdb-test" \ + -f description="psdb-test skipped" + displayName: Send Skipped Status