Skip to content

Commit 15a6325

Browse files
authored
chore(ci): Add required checks job for Check Package.swift Diff (#6040)
1 parent 34ca22f commit 15a6325

File tree

2 files changed

+49
-5
lines changed

2 files changed

+49
-5
lines changed

.github/file-filters.yml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -311,6 +311,18 @@ run_build_for_prs: &run_build_for_prs # Build-related code
311311
- "Makefile" # Make commands used for CI build setup
312312
- "Brewfile*" # Dependency installation affects build environment
313313

314+
run_check_package_diff_for_prs: &run_check_package_diff_for_prs # Package.swift diff checking
315+
# GH Actions
316+
- ".github/workflows/check-package-diff.yml"
317+
- ".github/file-filters.yml"
318+
319+
# Package files
320+
- "Package*.swift"
321+
322+
# Other
323+
- "Makefile" # Make commands used for package diff checking
324+
- "Utils/expected_package_diff.patch"
325+
314326
run_codeql_analysis_for_prs: &run_codeql_analysis_for_prs # CodeQL security analysis
315327
- "Sources/**"
316328

.github/workflows/check-package-diff.yml

Lines changed: 37 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,17 +8,49 @@ on:
88
- main
99

1010
pull_request:
11-
paths:
12-
- ".github/workflows/check-package-diff.yml"
13-
- "Package*.swift"
14-
- "Makefile"
15-
- "Utils/expected_package_diff.patch"
1611

1712
jobs:
13+
files-changed:
14+
name: Detect File Changes
15+
runs-on: ubuntu-latest
16+
outputs:
17+
run_check_package_diff_for_prs: ${{ steps.changes.outputs.run_check_package_diff_for_prs }}
18+
steps:
19+
- uses: actions/checkout@v5
20+
- name: Get changed files
21+
id: changes
22+
uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
23+
with:
24+
token: ${{ github.token }}
25+
filters: .github/file-filters.yml
26+
1827
check:
28+
if: github.event_name != 'pull_request' || needs.files-changed.outputs.run_check_package_diff_for_prs == 'true'
29+
needs: files-changed
1930
name: Check Package.swift Diff
2031
runs-on: ubuntu-latest
2132
steps:
2233
- uses: actions/checkout@v5
2334
- name: Check Package.swift Diff
2435
run: make check-package-diff
36+
37+
# This check validates that either check-package-diff passed or was skipped, which allows us
38+
# to make check-package-diff a required check with only running the check-package-diff when required.
39+
# So, we don't have to run check-package-diff, for example, for unrelated changes.
40+
check_package_diff-required-check:
41+
needs:
42+
[
43+
files-changed,
44+
check,
45+
]
46+
name: Check Package.swift Diff
47+
# This is necessary since a failed/skipped dependent job would cause this job to be skipped
48+
if: always()
49+
runs-on: ubuntu-latest
50+
steps:
51+
# If any jobs we depend on fails gets cancelled or times out, this job will fail.
52+
# Skipped jobs are not considered failures.
53+
- name: Check for failures
54+
if: contains(needs.*.result, 'failure') || contains(needs.*.result, 'cancelled')
55+
run: |
56+
echo "One of the check-package-diff jobs has failed." && exit 1

0 commit comments

Comments
 (0)