1818 # Run every Saturday morning: https://crontab.guru/#15_3_*_*_6
1919 - cron: '15 3 * * 6'
2020 pull_request:
21- paths:
22- - '.github/workflows/build.yaml'
23- - 'rust-toolchain.toml'
24- - '.dockerignore'
25- - 'deploy/**'
26- - '.cargo/**'
27- - 'docker/**'
28- - 'Cargo.*'
29- - '*.rs'
21+ # Do not limit by paths. This workflow contains a required job.
3022 merge_group:
3123
3224env:
3931 CARGO_TERM_COLOR: always
4032
4133jobs:
34+ # This workflow contains a "required job", and GitHub Actions isn't clever
35+ # enough to detect that it should be skipped, and therefore pass (like they
36+ # allow for skipping jobs in a workflow).
37+ # Therefore, we have to move path filters/globs down to an actual job, and
38+ # emit an output that can be used to skip irrelevant jobs.
39+ detect-changes:
40+ name: Detect relevant changed files
41+ runs-on: ubuntu-latest
42+ steps:
43+ - name: Checkout Repository
44+ uses: stackabletech/actions/detect-changes@babe44d7b1db87f8e7731c011151d22a8a374191 # v0.12.0
45+ with:
46+ persist-credentials: false
47+ fetch-depth: 0
48+
49+ - name: Check for changed files
50+ id: check
51+ uses: ./.github/actions/detect-changes
52+ with:
53+ patterns: |
54+ - '.github/workflows/build.yaml'
55+ - 'rust-toolchain.toml'
56+ - '.dockerignore'
57+ - 'deploy/**'
58+ - '.cargo/**'
59+ - 'docker/**'
60+ - 'Cargo.*'
61+ - '*.rs'
62+ outputs:
63+ detected: ${{ steps.check.outputs.detected }}
64+
4265 cargo-udeps:
4366 name: Run cargo-udeps
67+ if: needs.detect-changes.outputs.detected == 'true'
68+ needs: [detect-changes]
4469 runs-on: ubuntu-latest
4570 env:
4671 RUSTC_BOOTSTRAP: 1
76101
77102 build-container-image:
78103 name: Build/Publish ${{ matrix.runner.arch }} Image
79- if: github.event_name != 'merge_group'
104+ if: (github.event_name != 'merge_group') && needs.detect-changes.outputs.detected == 'true'
105+ needs: [detect-changes]
80106 permissions:
81107 id-token: write
82108 strategy:
@@ -140,15 +166,15 @@ jobs:
140166
141167 - name: Build Container Image
142168 id: build
143- uses: stackabletech/actions/build-container-image@29bea1b451c0c2e994bd495969286f95bf49ed6a # v0.11 .0
169+ uses: stackabletech/actions/build-container-image@babe44d7b1db87f8e7731c011151d22a8a374191 # v0.12 .0
144170 with:
145171 image-name: ${{ env.OPERATOR_NAME }}
146172 image-index-manifest-tag: ${{ steps.version.outputs.OPERATOR_VERSION }}
147173 build-arguments: VERSION=${{ steps.version.outputs.OPERATOR_VERSION }}
148174 container-file: docker/Dockerfile
149175
150176 - name: Publish Container Image
151- uses: stackabletech/actions/publish-image@29bea1b451c0c2e994bd495969286f95bf49ed6a # v0.11 .0
177+ uses: stackabletech/actions/publish-image@babe44d7b1db87f8e7731c011151d22a8a374191 # v0.12 .0
152178 with:
153179 image-registry-uri: oci.stackable.tech
154180 image-registry-username: robot$sdp+github-action-build
@@ -159,8 +185,9 @@ jobs:
159185
160186 publish-index-manifest:
161187 name: Publish/Sign ${{ needs.build-container-image.outputs.operator-version }} Index
162- if: github.event_name != 'merge_group'
188+ if: ( github.event_name != 'merge_group') && needs.detect-changes.outputs.detected == 'true '
163189 needs:
190+ - detect-changes
164191 - build-container-image
165192 permissions:
166193 id-token: write
@@ -172,7 +199,7 @@ jobs:
172199 persist-credentials: false
173200
174201 - name: Publish and Sign Image Index
175- uses: stackabletech/actions/publish-image-index-manifest@29bea1b451c0c2e994bd495969286f95bf49ed6a # v0.11 .0
202+ uses: stackabletech/actions/publish-image-index-manifest@babe44d7b1db87f8e7731c011151d22a8a374191 # v0.12 .0
176203 with:
177204 image-registry-uri: oci.stackable.tech
178205 image-registry-username: robot$sdp+github-action-build
@@ -182,8 +209,9 @@ jobs:
182209
183210 publish-helm-chart:
184211 name: Package/Publish ${{ needs.build-container-image.outputs.operator-version }} Helm Chart
185- if: github.event_name != 'merge_group'
212+ if: ( github.event_name != 'merge_group') && needs.detect-changes.outputs.detected == 'true '
186213 needs:
214+ - detect-changes
187215 - build-container-image
188216 permissions:
189217 id-token: write
@@ -196,7 +224,7 @@ jobs:
196224 submodules: recursive
197225
198226 - name: Package, Publish, and Sign Helm Chart
199- uses: stackabletech/actions/publish-helm-chart@29bea1b451c0c2e994bd495969286f95bf49ed6a # v0.11 .0
227+ uses: stackabletech/actions/publish-helm-chart@babe44d7b1db87f8e7731c011151d22a8a374191 # v0.12 .0
200228 with:
201229 chart-registry-uri: oci.stackable.tech
202230 chart-registry-username: robot$sdp-charts+github-action-build
@@ -208,8 +236,9 @@ jobs:
208236
209237 openshift-preflight-check:
210238 name: Run OpenShift Preflight Check for ${{ needs.build-container-image.outputs.operator-version }}-${{ matrix.arch }}
211- if: github.event_name != 'merge_group'
239+ if: ( github.event_name != 'merge_group') && needs.detect-changes.outputs.detected == 'true '
212240 needs:
241+ - detect-changes
213242 - build-container-image
214243 - publish-index-manifest
215244 strategy:
@@ -221,7 +250,7 @@ jobs:
221250 runs-on: ubuntu-latest
222251 steps:
223252 - name: Run OpenShift Preflight Check
224- uses: stackabletech/actions/run-openshift-preflight@29bea1b451c0c2e994bd495969286f95bf49ed6a # v0.11 .0
253+ uses: stackabletech/actions/run-openshift-preflight@babe44d7b1db87f8e7731c011151d22a8a374191 # v0.12 .0
225254 with:
226255 image-index-uri: oci.stackable.tech/sdp/${{ env.OPERATOR_NAME }}:${{ needs.build-container-image.outputs.operator-version }}
227256 image-architecture: ${{ matrix.arch }}
@@ -243,8 +272,9 @@ jobs:
243272
244273 notify:
245274 name: Failure Notification
246- if: (failure() || github.run_attempt > 1) && github.event_name != 'merge_group'
275+ if: (failure() || github.run_attempt > 1) && github.event_name != 'merge_group' && needs.detect-changes.outputs.detected == 'true'
247276 needs:
277+ - detect-changes
248278 - build-container-image
249279 - publish-index-manifest
250280 - publish-helm-chart
@@ -256,7 +286,7 @@ jobs:
256286 persist-credentials: false
257287
258288 - name: Send Notification
259- uses: stackabletech/actions/send-slack-notification@29bea1b451c0c2e994bd495969286f95bf49ed6a # v0.11 .0
289+ uses: stackabletech/actions/send-slack-notification@babe44d7b1db87f8e7731c011151d22a8a374191 # v0.12 .0
260290 with:
261291 publish-helm-chart-result: ${{ needs.publish-helm-chart.result }}
262292 publish-manifests-result: ${{ needs.publish-index-manifest.result }}
0 commit comments