11name : CI
22permissions :
33 contents : read
4- pull-requests : write
54
65on :
76 pull_request :
@@ -26,16 +25,18 @@ jobs:
2625
2726 steps :
2827 - name : Checkout code
29- uses : actions/checkout@v6
28+ uses : actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
29+ with :
30+ persist-credentials : false
3031
3132 - name : Set up Rust
32- uses : dtolnay/rust-toolchain@stable
33- with :
34- toolchain : ${{ matrix.rust }}
35- components : rustfmt, clippy
33+ run : |
34+ rustup update ${{ matrix.rust }}
35+ rustup default ${{ matrix.rust }}
36+ rustup component add rustfmt clippy
3637
3738 - name : Cache Rust dependencies
38- uses : actions/cache@v5
39+ uses : actions/cache@cdf6c1fa76f9f475f3d7449005a359c84ca0f306 # v5.0.3
3940 with :
4041 path : |
4142 ~/.cargo/bin/
@@ -76,15 +77,18 @@ jobs:
7677
7778 steps :
7879 - name : Checkout code
79- uses : actions/checkout@v6
80+ uses : actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
81+ with :
82+ persist-credentials : false
8083
8184 - name : Set up Rust nightly
82- uses : dtolnay/rust-toolchain@nightly
83- with :
84- components : llvm-tools-preview
85+ run : |
86+ rustup update nightly
87+ rustup default nightly
88+ rustup component add llvm-tools-preview
8589
8690 - name : Cache Rust dependencies
87- uses : actions/cache@v5
91+ uses : actions/cache@cdf6c1fa76f9f475f3d7449005a359c84ca0f306 # v5.0.3
8892 with :
8993 path : |
9094 ~/.cargo/bin/
@@ -119,21 +123,21 @@ jobs:
119123
120124 steps :
121125 - name : Checkout code
122- uses : actions/checkout@v6
126+ uses : actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
127+ with :
128+ persist-credentials : false
123129
124130 - name : Set up Rust
125- uses : dtolnay/rust-toolchain@stable
126- with :
127- toolchain : stable
131+ run : rustup update stable && rustup default stable
128132
129133 - name : Set up Elixir
130- uses : erlef/setup-beam@v1
134+ uses : erlef/setup-beam@ee09b1e59bb240681c382eb1f0abc6a04af72764 # v1
131135 with :
132136 elixir-version : ${{ matrix.elixir }}
133137 otp-version : ${{ matrix.otp }}
134138
135139 - name : Cache Mix dependencies
136- uses : actions/cache@v5
140+ uses : actions/cache@cdf6c1fa76f9f475f3d7449005a359c84ca0f306 # v5.0.3
137141 with :
138142 path : |
139143 deps
@@ -176,21 +180,21 @@ jobs:
176180
177181 steps :
178182 - name : Checkout code
179- uses : actions/checkout@v6
183+ uses : actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
184+ with :
185+ persist-credentials : false
180186
181187 - name : Set up Rust
182- uses : dtolnay/rust-toolchain@stable
183- with :
184- toolchain : stable
188+ run : rustup update stable && rustup default stable
185189
186190 - name : Set up Elixir
187- uses : erlef/setup-beam@v1
191+ uses : erlef/setup-beam@ee09b1e59bb240681c382eb1f0abc6a04af72764 # v1
188192 with :
189193 elixir-version : ${{ matrix.elixir }}
190194 otp-version : ${{ matrix.otp }}
191195
192196 - name : Cache Mix dependencies
193- uses : actions/cache@v5
197+ uses : actions/cache@cdf6c1fa76f9f475f3d7449005a359c84ca0f306 # v5.0.3
194198 with :
195199 path : |
196200 deps
@@ -215,19 +219,21 @@ jobs:
215219
216220 steps :
217221 - name : Checkout code
218- uses : actions/checkout@v6
222+ uses : actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
223+ with :
224+ persist-credentials : false
219225
220226 - name : Set up Rust
221- uses : dtolnay/rust-toolchain@ stable
227+ run : rustup update stable && rustup default stable
222228
223229 - name : Set up Elixir
224- uses : erlef/setup-beam@v1
230+ uses : erlef/setup-beam@ee09b1e59bb240681c382eb1f0abc6a04af72764 # v1
225231 with :
226232 elixir-version : " 1.18.0"
227233 otp-version : " 27.0"
228234
229235 - name : Cache Mix dependencies
230- uses : actions/cache@v5
236+ uses : actions/cache@cdf6c1fa76f9f475f3d7449005a359c84ca0f306 # v5.0.3
231237 with :
232238 path : |
233239 deps
@@ -237,7 +243,7 @@ jobs:
237243 ${{ runner.os }}-integration-mix-
238244
239245 - name : Cache Rust dependencies
240- uses : actions/cache@v5
246+ uses : actions/cache@cdf6c1fa76f9f475f3d7449005a359c84ca0f306 # v5.0.3
241247 with :
242248 path : |
243249 ~/.cargo/bin/
@@ -286,16 +292,17 @@ jobs:
286292 turso-remote-tests :
287293 name : Turso Remote Database Tests
288294 runs-on : ubuntu-latest
295+ environment : test
289296 needs : [rust-checks, elixir-tests-latest, elixir-tests-compatibility]
290297 # Only run on PRs to main
291298 if : github.event_name == 'pull_request' && github.base_ref == 'main'
292- env :
293- TURSO_DB_URI : ${{ secrets.TURSO_DB_URI }}
294- TURSO_AUTH_TOKEN : ${{ secrets.TURSO_AUTH_TOKEN }}
295299
296300 steps :
297301 - name : Check if secrets are available
298302 id : check-secrets
303+ env :
304+ TURSO_DB_URI : ${{ secrets.TURSO_DB_URI }}
305+ TURSO_AUTH_TOKEN : ${{ secrets.TURSO_AUTH_TOKEN }}
299306 run : |
300307 if [ -z "$TURSO_DB_URI" ] || [ -z "$TURSO_AUTH_TOKEN" ]; then
301308 echo "Secrets not available, skipping tests"
@@ -307,22 +314,24 @@ jobs:
307314
308315 - name : Checkout code
309316 if : steps.check-secrets.outputs.skip != 'true'
310- uses : actions/checkout@v6
317+ uses : actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
318+ with :
319+ persist-credentials : false
311320
312321 - name : Set up Rust
313322 if : steps.check-secrets.outputs.skip != 'true'
314- uses : dtolnay/rust-toolchain@ stable
323+ run : rustup update stable && rustup default stable
315324
316325 - name : Set up Elixir
317326 if : steps.check-secrets.outputs.skip != 'true'
318- uses : erlef/setup-beam@v1
327+ uses : erlef/setup-beam@ee09b1e59bb240681c382eb1f0abc6a04af72764 # v1
319328 with :
320329 elixir-version : " 1.18.0"
321330 otp-version : " 27.0"
322331
323332 - name : Cache Mix dependencies
324333 if : steps.check-secrets.outputs.skip != 'true'
325- uses : actions/cache@v5
334+ uses : actions/cache@cdf6c1fa76f9f475f3d7449005a359c84ca0f306 # v5.0.3
326335 with :
327336 path : |
328337 deps
@@ -333,7 +342,7 @@ jobs:
333342
334343 - name : Cache Rust dependencies
335344 if : steps.check-secrets.outputs.skip != 'true'
336- uses : actions/cache@v5
345+ uses : actions/cache@cdf6c1fa76f9f475f3d7449005a359c84ca0f306 # v5.0.3
337346 with :
338347 path : |
339348 ~/.cargo/bin/
@@ -355,6 +364,9 @@ jobs:
355364
356365 - name : Run Turso remote tests
357366 if : steps.check-secrets.outputs.skip != 'true'
367+ env :
368+ TURSO_DB_URI : ${{ secrets.TURSO_DB_URI }}
369+ TURSO_AUTH_TOKEN : ${{ secrets.TURSO_AUTH_TOKEN }}
358370 run : mix test test/turso_remote_test.exs --trace
359371
360372 all-checks-pass :
@@ -374,21 +386,28 @@ jobs:
374386 steps :
375387 - name : Check if all jobs passed
376388 run : |
377- if [ "${{ needs.rust-checks.result } }" != "success" ] || \
378- [ "${{ needs.rust-fuzz.result } }" != "success" ] || \
379- [ "${{ needs.elixir-tests-latest.result } }" != "success" ] || \
380- [ "${{ needs.elixir-tests-compatibility.result } }" != "success" ] || \
381- [ "${{ needs.integration-test.result } }" != "success" ]; then
389+ if [ "${NEEDS_RUST_CHECKS_RESULT }" != "success" ] || \
390+ [ "${NEEDS_RUST_FUZZ_RESULT }" != "success" ] || \
391+ [ "${NEEDS_ELIXIR_TESTS_LATEST_RESULT }" != "success" ] || \
392+ [ "${NEEDS_ELIXIR_TESTS_COMPATIBILITY_RESULT }" != "success" ] || \
393+ [ "${NEEDS_INTEGRATION_TEST_RESULT }" != "success" ]; then
382394 echo "One or more checks failed"
383395 exit 1
384396 fi
385397 echo "All checks passed successfully!"
386398
387399 # Note: Turso remote tests are optional and don't block the build
388- if [ "${{ needs.turso-remote-tests.result } }" == "success" ]; then
400+ if [ "${NEEDS_TURSO_REMOTE_TESTS_RESULT }" == "success" ]; then
389401 echo "Turso remote tests also passed!"
390- elif [ "${{ needs.turso-remote-tests.result } }" == "skipped" ]; then
402+ elif [ "${NEEDS_TURSO_REMOTE_TESTS_RESULT }" == "skipped" ]; then
391403 echo "Turso remote tests were skipped (not on PR to main or credentials not available)"
392- elif [ "${{ needs.turso-remote-tests.result } }" == "failure" ]; then
404+ elif [ "${NEEDS_TURSO_REMOTE_TESTS_RESULT }" == "failure" ]; then
393405 echo "WARNING: Turso remote tests failed (but not blocking the build)"
394406 fi
407+ env :
408+ NEEDS_RUST_CHECKS_RESULT : ${{ needs.rust-checks.result }}
409+ NEEDS_RUST_FUZZ_RESULT : ${{ needs.rust-fuzz.result }}
410+ NEEDS_ELIXIR_TESTS_LATEST_RESULT : ${{ needs.elixir-tests-latest.result }}
411+ NEEDS_ELIXIR_TESTS_COMPATIBILITY_RESULT : ${{ needs.elixir-tests-compatibility.result }}
412+ NEEDS_INTEGRATION_TEST_RESULT : ${{ needs.integration-test.result }}
413+ NEEDS_TURSO_REMOTE_TESTS_RESULT : ${{ needs.turso-remote-tests.result }}
0 commit comments