Skip to content

Commit 2e2e518

Browse files
committed
feat(ci): advanced triggers for ci-core
1 parent b0dc7f0 commit 2e2e518

1 file changed

Lines changed: 70 additions & 70 deletions

File tree

.github/workflows/ci-core.yml

Lines changed: 70 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -24,77 +24,77 @@ jobs:
2424
pull-requests: read
2525
outputs:
2626
affected-modules: ${{ steps.changed-modules.outputs.modules-json }}
27-
# Runs on workflow changes, any deployment change, or any (non-ignored) core change
28-
should-run-deployment-tests: >-
29-
${{
30-
steps.match-some.outputs.workflow == 'true' ||
31-
steps.match-some.outputs.deployment == 'true' ||
32-
steps.match-every.outputs.core-non-ignored == 'true' ||
33-
github.event_name == 'schedule' ||
34-
github.event_name == 'workflow_dispatch'
35-
}}
36-
# Runs on workflow changes, and any (non-ignored) core changes
37-
should-run-core-tests: >-
38-
${{
39-
steps.match-some.outputs.workflow == 'true' ||
40-
steps.match-every.outputs.core-non-ignored == 'true' ||
41-
github.event_name == 'schedule' ||
42-
github.event_name == 'workflow_dispatch'
43-
}}
27+
core-tests: ${{ steps.triggers.outputs.core-tests }}
28+
core-fuzz-tests: ${{ steps.triggers.outputs.core-fuzz-tests }}
29+
core-race-tests: ${{ steps.triggers.outputs.core-race-tests }}
30+
core-integ-tests: ${{ steps.triggers.outputs.core-integration-tests }}
31+
deployment-tests: ${{ steps.triggers.outputs.deployment-tests }}
4432
runs-on: ubuntu-latest
4533
steps:
4634
- name: Checkout the repo
47-
uses: actions/checkout@v4
35+
uses: actions/checkout@v6
4836
with:
4937
persist-credentials: false
5038
repository: smartcontractkit/chainlink
51-
- uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
52-
id: match-some
53-
with:
54-
# "if any changed file matches one or more of the conditions" (https://github.com/dorny/paths-filter/issues/225)
55-
predicate-quantifier: some
56-
# deployment - any changes in the deployment module
57-
# workflow - any changes that could affect this workflow definition
58-
# - Assume any repository action changes affect this workflow
59-
filters: |
60-
deployment:
61-
- 'deployment/**'
62-
workflow:
63-
- '.github/workflows/ci-core.yml'
64-
- '.github/actions/**'
65-
- uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
66-
id: match-every
39+
40+
- name: Advanced Triggers
41+
id: triggers
42+
uses: smartcontractkit/.github/actions/advanced-triggers@advanced-triggers/v1
6743
with:
68-
# "if any changed file match all of the conditions" (https://github.com/dorny/paths-filter/issues/225)
69-
# - Enables listing of files matching each filter.
70-
# - Paths to files will be available in `${FILTER_NAME}_files` output variable.
71-
# - Paths will be formatted as JSON array
72-
predicate-quantifier: every
73-
# core-non-ignored - all changes except for paths which do not affect core module
74-
# - This is opt-in on purpose. To be safe, new files are assumed to have an affect on core unless listed here specifically.
75-
# - For example: core module does not depend on deployment or integration-tests module.
76-
# all - changes in any directory
77-
# - This is used resolve all affected modules based on changed files
78-
list-files: json
79-
filters: |
80-
core-non-ignored:
81-
- '**'
82-
- '!deployment/**'
83-
- '!integration-tests/**'
84-
- '!tools/secrets/**'
85-
- '!tools/docker/**'
86-
- '!tools/benchmark/**'
87-
- '!**/README.md'
88-
- '!**/CHANGELOG.md'
89-
- '!*.nix'
90-
- '!sonar-project.properties'
91-
- '!nix.conf'
92-
- '!nix-darwin-shell-hook.sh'
93-
- '!LICENSE'
94-
- '!.github/**'
95-
- '!core/scripts/cre/environment/examples/workflows/**'
96-
all:
97-
- '**'
44+
file-sets: |
45+
go-files:
46+
- "**/*.go"
47+
- "**/go.mod"
48+
- "**/go.sum"
49+
core-files:
50+
- "core/**"
51+
all-test-files:
52+
- "**/testdata/**"
53+
- "**/*_test.go"
54+
core-test-files:
55+
- "testdata/**.go"
56+
- "core/**/testdata/**"
57+
- "core/**_test.go"
58+
e2e-tests-files:
59+
- "system-tests/**"
60+
- "integration-tests/**"
61+
workflow-files:
62+
- ".github/workflows/ci-core.yml"
63+
- ".github/actions/**/*.y*ml"
64+
deployment-files:
65+
- "deployment/**"
66+
# Note:
67+
# - pull_request, merge_group, and push events will resolve to true if any changed files match the path/glob patterns
68+
# - exclusion-sets/negations are applied first, and therefore filter all changed files before inclusion sets are applied
69+
# - by default these will resolve to true for schedule, and workflow_dispatch events
70+
triggers: |
71+
core-tests:
72+
exclusion-sets: [ e2e-tests-files, deployment-files ]
73+
inclusion-sets: [ go-files, core-files, all-test-files, workflow-files ]
74+
paths:
75+
- "tools/bin/go_core_tests"
76+
core-fuzz-tests:
77+
exclusion-sets: [ e2e-tests-files, deployment-files ]
78+
inclusion-sets: [ go-files, core-files, all-test-files, workflow-files ]
79+
paths:
80+
- "!**/testdata/**"
81+
- "**/fuzz/**"
82+
- "tools/bin/go_core_fuzz"
83+
core-race-tests:
84+
exclusion-sets: [ e2e-tests-files, deployment-files ]
85+
inclusion-sets: [ go-files, core-files, all-test-files, workflow-files ]
86+
paths:
87+
- "tools/bin/go_core_race_tests"
88+
core-integration-tests:
89+
exclusion-sets: [ e2e-tests-files, deployment-files ]
90+
inclusion-sets: [ go-files, core-files, all-test-files, workflow-files ]
91+
paths:
92+
- "tools/bin/go_core_tests_integration"
93+
deployment-tests:
94+
exclusion-sets: [ e2e-tests-files, core-test-files ]
95+
inclusion-sets: [ go-files, core-files, deployment-files, workflow-files ]
96+
paths:
97+
- "tools/bin/go_core_ccip_deployment_tests"
9898
9999
- name: Changed modules
100100
id: changed-modules
@@ -207,27 +207,27 @@ jobs:
207207
type:
208208
- cmd: go_core_tests
209209
os: runs-on=${{ github.run_id }}-unit/cpu=48/ram=96/family=c6i/spot=false/image=ubuntu24-full-x64/extras=s3-cache+tmpfs
210-
should-run: ${{ needs.filter.outputs.should-run-core-tests }}
210+
should-run: ${{ needs.filter.outputs.core-tests }}
211211
trunk-auto-quarantine: "true"
212212

213213
- cmd: go_core_tests_integration
214214
os: runs-on=${{ github.run_id }}-integ/cpu=48/ram=96/family=c6i/spot=false/image=ubuntu24-full-x64/extras=s3-cache+tmpfs
215-
should-run: ${{ needs.filter.outputs.should-run-core-tests }}
215+
should-run: ${{ needs.filter.outputs.core-integ-tests }}
216216
trunk-auto-quarantine: "true"
217217
setup-solana: "true"
218218
install-loopps: "true"
219219

220220
- cmd: go_core_fuzz
221221
os: runs-on=${{ github.run_id}}-fuzz/cpu=8/ram=32/family=m6id+m6idn/spot=false/image=ubuntu24-full-x64/extras=s3-cache
222-
should-run: ${{ needs.filter.outputs.should-run-core-tests }}
222+
should-run: ${{ needs.filter.outputs.core-fuzz-tests }}
223223

224224
- cmd: go_core_race_tests
225225
os: runs-on=${{ github.run_id}}-race/cpu=64/ram=128/family=c7i/volume=80gb/spot=false/image=ubuntu24-full-x64/extras=s3-cache
226-
should-run: ${{ needs.filter.outputs.should-run-core-tests }}
226+
should-run: ${{ needs.filter.outputs.core-race-tests }}
227227

228228
- cmd: go_core_ccip_deployment_tests
229229
os: runs-on=${{ github.run_id }}-deployment/cpu=64/ram=128/family=c6i+c7i/spot=false/image=ubuntu24-full-x64/extras=s3-cache+tmpfs
230-
should-run: ${{ needs.filter.outputs.should-run-deployment-tests }}
230+
should-run: ${{ needs.filter.outputs.deployment-tests }}
231231
trunk-auto-quarantine: "true"
232232
go-mod-directory: "deployment/"
233233
setup-solana: "true"
@@ -408,7 +408,7 @@ jobs:
408408
name: test-scripts
409409
needs: [filter]
410410
runs-on: ubuntu-latest
411-
if: ${{ needs.filter.outputs.should-run-core-tests == 'true' }}
411+
if: ${{ needs.filter.outputs.core-tests == 'true' }}
412412
steps:
413413
- name: Checkout
414414
uses: actions/checkout@v4

0 commit comments

Comments
 (0)