1717
1818 strategy :
1919 matrix :
20- elixir : [1.18.1]
21- otp : [27.0]
20+ include :
21+ - elixir : 1.18
22+ otp : 27
23+ - elixir : 1.18
24+ otp : 26
2225
2326 steps :
2427 - name : Checkout code
@@ -31,14 +34,14 @@ jobs:
3134 otp-version : ${{ matrix.otp }}
3235
3336 - name : Cache Elixir deps
34- uses : actions/cache@v1
37+ uses : actions/cache@v4
3538 id : deps-cache
3639 with :
3740 path : deps
3841 key : ${{ runner.os }}-mix-${{ env.MIX_ENV }}-${{ hashFiles(format('{0}{1}', github.workspace, '/mix.lock')) }}
3942
4043 - name : Cache Elixir _build
41- uses : actions/cache@v1
44+ uses : actions/cache@v4
4245 id : build-cache
4346 with :
4447 path : _build
@@ -64,16 +67,19 @@ jobs:
6467 - name : Run Credo
6568 run : mix credo --strict
6669
67- static-analisys :
70+ static-analysis :
6871 runs-on : ubuntu-latest
6972
7073 env :
7174 MIX_ENV : test
7275
7376 strategy :
7477 matrix :
75- elixir : [1.18.1]
76- otp : [27.0]
78+ include :
79+ - elixir : 1.18
80+ otp : 27
81+ - elixir : 1.18
82+ otp : 26
7783
7884 steps :
7985 - name : Checkout code
@@ -86,14 +92,14 @@ jobs:
8692 otp-version : ${{ matrix.otp }}
8793
8894 - name : Cache Elixir deps
89- uses : actions/cache@v1
95+ uses : actions/cache@v4
9096 id : deps-cache
9197 with :
9298 path : deps
9399 key : ${{ runner.os }}-mix-${{ env.MIX_ENV }}-${{ hashFiles(format('{0}{1}', github.workspace, '/mix.lock')) }}
94100
95101 - name : Cache Elixir _build
96- uses : actions/cache@v1
102+ uses : actions/cache@v4
97103 id : build-cache
98104 with :
99105 path : _build
@@ -110,29 +116,25 @@ jobs:
110116 if : steps.build-cache.outputs.cache-hit != 'true'
111117 run : mix deps.compile --warnings-as-errors
112118
113- # Don't cache PLTs based on mix.lock hash, as Dialyzer can incrementally update even old ones
114- # Cache key based on Elixir & Erlang version (also useful when running in matrix)
115- - name : Restore PLT cache
116- uses : actions/cache/restore@v3
119+ # Ensure PLTs directory exists
120+ - name : Create PLTs directory
121+ run : mkdir -p priv/plts
122+
123+ # Cache PLTs based on Elixir & Erlang version + mix.lock hash
124+ - name : Restore/Save PLT cache
125+ uses : actions/cache@v4
117126 id : plt_cache
118127 with :
119- key : ${{ runner.os }}-${{ matrix.otp }}-${{ matrix.elixir }}-plt
120- restore-keys : ${{ runner.os }}-${{ matrix.otp }}-${{ matrix.elixir }}-plt
121128 path : priv/plts
129+ key : plt-${{ runner.os }}-${{ matrix.otp }}-${{ matrix.elixir }}-${{ hashFiles('mix.lock') }}
130+ restore-keys : |
131+ plt-${{ runner.os }}-${{ matrix.otp }}-${{ matrix.elixir }}-
122132
123133 # Create PLTs if no cache was found
124134 - name : Create PLTs
125135 if : steps.plt_cache.outputs.cache-hit != 'true'
126136 run : mix dialyzer --plt
127137
128- - name : Save PLT cache
129- uses : actions/cache/save@v3
130- if : steps.plt_cache.outputs.cache-hit != 'true'
131- id : plt_cache_save
132- with :
133- key : ${{ runner.os }}-${{ matrix.otp }}-${{ matrix.elixir }}-plt
134- path : priv/plts
135-
136138 - name : Run dialyzer
137139 run : mix dialyzer --format github
138140
@@ -144,8 +146,11 @@ jobs:
144146
145147 strategy :
146148 matrix :
147- elixir : [1.18.1]
148- otp : [27.0]
149+ include :
150+ - elixir : 1.18
151+ otp : 27
152+ - elixir : 1.18
153+ otp : 26
149154
150155 steps :
151156 - name : Checkout code
@@ -158,14 +163,14 @@ jobs:
158163 otp-version : ${{ matrix.otp }}
159164
160165 - name : Cache Elixir deps
161- uses : actions/cache@v1
166+ uses : actions/cache@v4
162167 id : deps-cache
163168 with :
164169 path : deps
165170 key : ${{ runner.os }}-mix-${{ env.MIX_ENV }}-${{ hashFiles(format('{0}{1}', github.workspace, '/mix.lock')) }}
166171
167172 - name : Cache Elixir _build
168- uses : actions/cache@v1
173+ uses : actions/cache@v4
169174 id : build-cache
170175 with :
171176 path : _build
@@ -186,4 +191,4 @@ jobs:
186191 run : mix clean
187192
188193 - name : Run tests
189- run : mix test
194+ run : mix test --warnings-as-errors
0 commit comments