update github ci

This commit is contained in:
Graham McIntire 2023-12-17 12:14:47 -06:00
parent 2a45b071c1
commit 8b28c57a74

View file

@ -6,9 +6,9 @@ name: Elixir CI
# different name for the main branch like "master" or "production". # different name for the main branch like "master" or "production".
on: on:
push: push:
branches: [ "main" ] # adapt branch for project branches: ["main"] # adapt branch for project
pull_request: pull_request:
branches: [ "main" ] # adapt branch for project branches: ["main"] # adapt branch for project
# Sets the ENV `MIX_ENV` to `test` for running tests # Sets the ENV `MIX_ENV` to `test` for running tests
env: env:
@ -24,8 +24,8 @@ jobs:
# Additional services can be defined here if required. # Additional services can be defined here if required.
services: services:
db: db:
image: postgres:12 image: postgres:15
ports: ['5432:5432'] ports: ["5432:5432"]
env: env:
POSTGRES_PASSWORD: postgres POSTGRES_PASSWORD: postgres
options: >- options: >-
@ -40,76 +40,76 @@ jobs:
# Specify the OTP and Elixir versions to use when building # Specify the OTP and Elixir versions to use when building
# and running the workflow steps. # and running the workflow steps.
matrix: matrix:
otp: ['25.2'] otp: ["26.2"]
elixir: ['1.14.3'] elixir: ["1.15.7"]
steps: steps:
# Step: Setup Elixir + Erlang image as the base. # Step: Setup Elixir + Erlang image as the base.
- name: Set up Elixir - name: Set up Elixir
uses: erlef/setup-beam@v1 uses: erlef/setup-beam@v1
with: with:
otp-version: ${{matrix.otp}} otp-version: ${{matrix.otp}}
elixir-version: ${{matrix.elixir}} elixir-version: ${{matrix.elixir}}
# Step: Check out the code. # Step: Check out the code.
- name: Checkout code - name: Checkout code
uses: actions/checkout@v3 uses: actions/checkout@v3
# Step: Define how to cache deps. Restores existing cache if present. # Step: Define how to cache deps. Restores existing cache if present.
- name: Cache deps - name: Cache deps
id: cache-deps id: cache-deps
uses: actions/cache@v3 uses: actions/cache@v3
env: env:
cache-name: cache-elixir-deps cache-name: cache-elixir-deps
with: with:
path: deps path: deps
key: ${{ runner.os }}-mix-${{ env.cache-name }}-${{ hashFiles('**/mix.lock') }} key: ${{ runner.os }}-mix-${{ env.cache-name }}-${{ hashFiles('**/mix.lock') }}
restore-keys: | restore-keys: |
${{ runner.os }}-mix-${{ env.cache-name }}- ${{ runner.os }}-mix-${{ env.cache-name }}-
# Step: Define how to cache the `_build` directory. After the first run, # Step: Define how to cache the `_build` directory. After the first run,
# this speeds up tests runs a lot. This includes not re-compiling our # this speeds up tests runs a lot. This includes not re-compiling our
# project's downloaded deps every run. # project's downloaded deps every run.
- name: Cache compiled build - name: Cache compiled build
id: cache-build id: cache-build
uses: actions/cache@v3 uses: actions/cache@v3
env: env:
cache-name: cache-compiled-build cache-name: cache-compiled-build
with: with:
path: _build path: _build
key: ${{ runner.os }}-mix-${{ env.cache-name }}-${{ hashFiles('**/mix.lock') }} key: ${{ runner.os }}-mix-${{ env.cache-name }}-${{ hashFiles('**/mix.lock') }}
restore-keys: | restore-keys: |
${{ runner.os }}-mix-${{ env.cache-name }}- ${{ runner.os }}-mix-${{ env.cache-name }}-
${{ runner.os }}-mix- ${{ runner.os }}-mix-
# Step: Conditionally bust the cache when job is re-run. # Step: Conditionally bust the cache when job is re-run.
# Sometimes, we may have issues with incremental builds that are fixed by # Sometimes, we may have issues with incremental builds that are fixed by
# doing a full recompile. In order to not waste dev time on such trivial # doing a full recompile. In order to not waste dev time on such trivial
# issues (while also reaping the time savings of incremental builds for # issues (while also reaping the time savings of incremental builds for
# *most* day-to-day development), force a full recompile only on builds # *most* day-to-day development), force a full recompile only on builds
# that are retried. # that are retried.
- name: Clean to rule out incremental build as a source of flakiness - name: Clean to rule out incremental build as a source of flakiness
if: github.run_attempt != '1' if: github.run_attempt != '1'
run: | run: |
mix deps.clean --all mix deps.clean --all
mix clean mix clean
shell: sh shell: sh
# Step: Download project dependencies. If unchanged, uses # Step: Download project dependencies. If unchanged, uses
# the cached version. # the cached version.
- name: Install dependencies - name: Install dependencies
run: mix deps.get run: mix deps.get
# Step: Compile the project treating any warnings as errors. # Step: Compile the project treating any warnings as errors.
# Customize this step if a different behavior is desired. # Customize this step if a different behavior is desired.
- name: Compiles without warnings - name: Compiles without warnings
run: mix compile --warnings-as-errors run: mix compile --warnings-as-errors
# Step: Check that the checked in code has already been formatted. # Step: Check that the checked in code has already been formatted.
# This step fails if something was found unformatted. # This step fails if something was found unformatted.
# Customize this step as desired. # Customize this step as desired.
- name: Check Formatting - name: Check Formatting
run: mix format --check-formatted run: mix format --check-formatted
# Step: Execute the tests. # Step: Execute the tests.
- name: Run tests - name: Run tests
run: mix test run: mix test