Skip to content

Commit 8c24b20

Browse files
committed
Reworked CI job
* Checkout comes first to give us a .tool-versions * Use setup_beam's version-file input to read the CI environment's elixir / erlang * Switched cache keys to use the outputs from setup_beam to generate keys
1 parent 8a1e814 commit 8c24b20

File tree

1 file changed

+24
-33
lines changed

1 file changed

+24
-33
lines changed

.github/workflows/ci.yml

Lines changed: 24 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,6 @@ on:
66
branches:
77
- main
88

9-
env:
10-
DEFAULT_ELIXIR: 1.15.8-otp-25
11-
DEFAULT_OTP: 25.3.2.21
12-
139
permissions:
1410
contents: read
1511

@@ -30,21 +26,19 @@ jobs:
3026
- expert_credo
3127
- forge
3228
steps:
33-
# Step: Setup Elixir + Erlang image as the base
34-
- uses: extractions/setup-just@f8a3cce218d9f83db3a2ecd90e41ac3de6cdfd9b # v3.1.0
35-
- uses: erlef/setup-beam@e6d7c94229049569db56a7ad5a540c051a010af9 # v1.20.4
36-
with:
37-
otp-version: ${{ env.DEFAULT_OTP }}
38-
elixir-version: ${{ env.DEFAULT_ELIXIR }}
39-
version-type: "strict"
40-
41-
# Step: Check out the code.
4229
- name: Checkout code
4330
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
4431
with:
4532
persist-credentials: false
4633

47-
# Step: Define how to cache deps. Restores existing cache if present.
34+
- uses: extractions/setup-just@f8a3cce218d9f83db3a2ecd90e41ac3de6cdfd9b # v3.1.0
35+
- name: Set up Elixir
36+
id: setup-beam
37+
uses: erlef/setup-beam@e6d7c94229049569db56a7ad5a540c051a010af9 # v1.20.4
38+
with:
39+
version-file: ".tool-versiogns"
40+
version-type: "strict"
41+
4842
- name: Cache deps
4943
id: cache-deps
5044
uses: actions/cache@cdf6c1fa76f9f475f3d7449005a359c84ca0f306 # v5.0.3
@@ -53,9 +47,9 @@ jobs:
5347
apps/${{ matrix.project }}/deps
5448
apps/${{ matrix.project }}/_build
5549
56-
key: ${{ runner.os }}-mix-${{ matrix.project }}-${{ env.DEFAULT_ELIXIR }}-${{ env.DEFAULT_OTP }}-${{ hashFiles(format('apps/{0}/mix.lock', matrix.project)) }}
50+
key: ${{ runner.os }}-mix-${{ matrix.project }}-${{ steps.setup-beam.outputs.elixir-version }}-${{ steps.setup-beam.outputs.otp-version }}-${{ hashFiles(format('apps/{0}/mix.lock', matrix.project)) }}
5751
restore-keys: |
58-
${{ runner.os }}-mix-${{ matrix.project }}-${{ env.DEFAULT_ELIXIR }}-${{ env.DEFAULT_OTP }}-
52+
${{ runner.os }}-mix-${{ matrix.project }}-${{ steps.setup-beam.outputs.elixir-version }}-${{ steps.setup-beam.outputs.otp-version }}-
5953
6054
- name: Deps
6155
env:
@@ -88,21 +82,19 @@ jobs:
8882
- expert_credo
8983
- forge
9084
steps:
85+
- name: Checkout code
86+
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
87+
with:
88+
persist-credentials: false
89+
9190
- uses: extractions/setup-just@f8a3cce218d9f83db3a2ecd90e41ac3de6cdfd9b # v3.1.0
9291
- name: Set up Elixir
92+
id: setup-beam
9393
uses: erlef/setup-beam@e6d7c94229049569db56a7ad5a540c051a010af9 # v1.20.4
9494
with:
95-
otp-version: ${{ env.DEFAULT_OTP }}
96-
elixir-version: ${{ env.DEFAULT_ELIXIR }}
95+
version-file: ".tool-versions"
9796
version-type: "strict"
9897

99-
# Step: Check out the code.
100-
- name: Checkout code
101-
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
102-
with:
103-
persist-credentials: false
104-
105-
# Step: Define how to cache deps. Restores existing cache if present.
10698
- name: Cache deps
10799
id: cache-deps
108100
uses: actions/cache@cdf6c1fa76f9f475f3d7449005a359c84ca0f306 # v5.0.3
@@ -111,19 +103,18 @@ jobs:
111103
apps/${{ matrix.project }}/deps
112104
apps/${{ matrix.project }}/_build
113105
114-
key: ${{ runner.os }}-mix-${{ matrix.project }}-${{ env.DEFAULT_ELIXIR }}-${{ env.DEFAULT_OTP }}-${{ hashFiles(format('apps/{0}/mix.lock', matrix.project)) }}
106+
key: ${{ runner.os }}-mix-${{ matrix.project }}-${{ steps.setup-beam.outputs.elixir-version }}-${{ steps.setup-beam.outputs.otp-version }}-${{ hashFiles(format('apps/{0}/mix.lock', matrix.project)) }}
115107
restore-keys: |
116-
${{ runner.os }}-mix-${{ matrix.project }}-${{ env.DEFAULT_ELIXIR }}-${{ env.DEFAULT_OTP }}-
108+
${{ runner.os }}-mix-${{ matrix.project }}-${{ steps.setup-beam.outputs.elixir-version }}-${{ steps.setup-beam.outputs.otp-version }}-
117109
118-
# Step: Create dialyzer .plt files if they're not present
119110
- name: Cache dialyzer plt files
120111
id: cache-plt
121112
uses: actions/cache@cdf6c1fa76f9f475f3d7449005a359c84ca0f306 # v5.0.3
122113
with:
123-
key: expert-plts-${{ env.DEFAULT_OTP }}-${{ env.DEFAULT_ELIXIR }}-${{ hashFiles(format('apps/{0}/mix.lock', matrix.project)) }}
114+
key: expert-plts-${{ steps.setup-beam.outputs.otp-version }}-${{ steps.setup-beam.outputs.elixir-version }}-${{ hashFiles(format('apps/{0}/mix.lock', matrix.project)) }}
124115
restore-keys: |
125-
expert-plts-${{ env.DEFAULT_OTP }}-${{ env.DEFAULT_ELIXIR }}-${{ hashFiles(format('apps/{0}/mix.lock', matrix.project)) }}-
126-
expert-plts-${{ env.DEFAULT_OTP }}-${{ env.DEFAULT_ELIXIR }}-
116+
expert-plts-${{ steps.setup-beam.outputs.otp-version }}-${{ steps.setup-beam.outputs.elixir-version }}-${{ hashFiles(format('apps/{0}/mix.lock', matrix.project)) }}-
117+
expert-plts-${{ steps.setup-beam.outputs.otp-version }}-${{ steps.setup-beam.outputs.elixir-version }}-
127118
path: "priv/plts"
128119

129120
- name: Deps
@@ -243,9 +234,9 @@ jobs:
243234
apps/${{ matrix.project }}/deps
244235
apps/${{ matrix.project }}/_build
245236
246-
key: ${{ runner.os }}-mix-${{ matrix.project }}-${{ env.DEFAULT_ELIXIR }}-${{ env.DEFAULT_OTP }}-${{ hashFiles(format('apps/{0}/mix.lock', matrix.project)) }}
237+
key: ${{ runner.os }}-mix-${{ matrix.project }}-${{ matrix.elixir }}-${{ matrix.otp }}-${{ hashFiles(format('apps/{0}/mix.lock', matrix.project)) }}
247238
restore-keys: |
248-
${{ runner.os }}-mix-${{ matrix.project }}-${{ env.DEFAULT_ELIXIR }}-${{ env.DEFAULT_OTP }}-
239+
${{ runner.os }}-mix-${{ matrix.project }}-${{ matrix.elixir }}-${{ matrix.otp }}-
249240
250241
- name: Deps
251242
env:

0 commit comments

Comments
 (0)