@@ -78,18 +78,11 @@ jobs:
7878 - name : Get PR info
7979 if : steps.check-both.outputs.both_passed == 'true'
8080 id : pr-info
81- env :
82- GH_TOKEN : ${{ secrets.GITHUB_TOKEN }}
8381 run : |
84- BRANCH="${{ github.event.workflow_run.head_branch }}"
85- REPO="${{ github.repository }}"
86- HEAD_OWNER="${{ github.event.workflow_run.head_repository.owner.login }}"
87-
88- PR_NUMBER=$(gh api "/repos/${REPO}/pulls?head=${HEAD_OWNER}:${BRANCH}&state=open" \
89- --jq '.[0].number // empty')
82+ PR_NUMBER="${{ github.event.workflow_run.pull_requests[0].number }}"
9083
9184 if [ -z "$PR_NUMBER" ]; then
92- echo "No open PR found for branch ${BRANCH} — skipping"
85+ echo "No open PR found — skipping"
9386 echo "has_pr=false" >> "$GITHUB_OUTPUT"
9487 else
9588 echo "has_pr=true" >> "$GITHUB_OUTPUT"
@@ -137,22 +130,68 @@ jobs:
137130 echo "skip=false" >> "$GITHUB_OUTPUT"
138131 fi
139132
133+ - name : Check if connector-relevant files changed
134+ if : steps.check-both.outputs.both_passed == 'true' && steps.pr-info.outputs.has_pr == 'true' && steps.check-skip.outputs.skip != 'true'
135+ id : path-check
136+ env :
137+ GH_TOKEN : ${{ secrets.GITHUB_TOKEN }}
138+ REPO : ${{ github.repository }}
139+ PR_NUMBER : ${{ steps.pr-info.outputs.pr_number }}
140+ run : |
141+ changed_files=$(gh api "repos/${REPO}/pulls/${PR_NUMBER}/files" \
142+ --paginate --jq '.[].filename')
143+
144+ # Filter to only metadata-ingestion changes
145+ mi_files=$(echo "$changed_files" | grep '^metadata-ingestion/' || true)
146+
147+ if [ -z "$mi_files" ]; then
148+ echo "No metadata-ingestion changes — skipping connector tests"
149+ echo "has_connector_changes=false" >> "$GITHUB_OUTPUT"
150+ exit 0
151+ fi
152+
153+ # Strip out files that cannot affect connectors
154+ connector_relevant_files=$(echo "$mi_files" | grep -v '^metadata-ingestion/tests/' | grep -v '\.md$' || true)
155+
156+ if [ -z "$connector_relevant_files" ]; then
157+ echo "All metadata-ingestion changes are tests or docs only — skipping connector tests"
158+ echo "has_connector_changes=false" >> "$GITHUB_OUTPUT"
159+ else
160+ echo "Connector-relevant changes detected:"
161+ echo "$connector_relevant_files"
162+ echo "has_connector_changes=true" >> "$GITHUB_OUTPUT"
163+ fi
164+
140165 - name : Create skipped check run
141- if : steps.check-both.outputs.both_passed == 'true' && steps.pr-info.outputs.has_pr == 'true' && steps.check-skip.outputs.skip == 'true'
166+ if : >-
167+ steps.check-both.outputs.both_passed == 'true' &&
168+ steps.pr-info.outputs.has_pr == 'true' &&
169+ (steps.check-skip.outputs.skip == 'true' || steps.path-check.outputs.has_connector_changes == 'false')
142170 env :
143171 GH_TOKEN : ${{ steps.app-token.outputs.token }}
144172 REPO : ${{ github.repository }}
145173 SHA : ${{ github.event.workflow_run.head_sha }}
146174 run : |
175+ if [ "${{ steps.check-skip.outputs.skip }}" = "true" ]; then
176+ REASON="Skipped via skip-connector-tests label on the PR."
177+ else
178+ REASON="Skipped because PR changes are limited to tests or docs in metadata-ingestion."
179+ fi
180+
147181 jq -nc \
148182 --arg sha "$SHA" \
149183 --arg completed_at "$(date -u +%Y-%m-%dT%H:%M:%SZ)" \
150- '{name: "connector-tests", head_sha: $sha, status: "completed", conclusion: "skipped", completed_at: $completed_at, output: {title: "Connector tests skipped", summary: "Skipped via skip-connector-tests label on the PR."}}' \
184+ --arg summary "$REASON" \
185+ '{name: "connector-tests", head_sha: $sha, status: "completed", conclusion: "skipped", completed_at: $completed_at, output: {title: "Connector tests skipped", summary: $summary}}' \
151186 | gh api "/repos/${REPO}/check-runs" --input -
152- echo "Created skipped check run"
187+ echo "Created skipped check run — ${REASON} "
153188
154189 - name : Create pending check run
155- if : steps.check-both.outputs.both_passed == 'true' && steps.pr-info.outputs.has_pr == 'true' && steps.check-skip.outputs.skip != 'true'
190+ if : >-
191+ steps.check-both.outputs.both_passed == 'true' &&
192+ steps.pr-info.outputs.has_pr == 'true' &&
193+ steps.check-skip.outputs.skip != 'true' &&
194+ steps.path-check.outputs.has_connector_changes != 'false'
156195 id : check-run
157196 env :
158197 GH_TOKEN : ${{ steps.app-token.outputs.token }}
@@ -168,7 +207,11 @@ jobs:
168207 echo "Created check run ${CHECK_RUN_ID}"
169208
170209 - name : Dispatch to connector-tests
171- if : steps.check-both.outputs.both_passed == 'true' && steps.pr-info.outputs.has_pr == 'true' && steps.check-skip.outputs.skip != 'true'
210+ if : >-
211+ steps.check-both.outputs.both_passed == 'true' &&
212+ steps.pr-info.outputs.has_pr == 'true' &&
213+ steps.check-skip.outputs.skip != 'true' &&
214+ steps.path-check.outputs.has_connector_changes != 'false'
172215 env :
173216 # Fine-grained PAT scoped to acryldata/connector-tests with Contents: R/W.
174217 # To rotate: generate a new token and update this repo secret.
0 commit comments