Skip to content

Commit ba9ef83

Browse files
authored
ci: skip connector tests when PR only changes tests or docs (#16720)
1 parent fca72af commit ba9ef83

File tree

1 file changed

+57
-14
lines changed

1 file changed

+57
-14
lines changed

.github/workflows/connector-tests-trigger.yml

Lines changed: 57 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)