chore(ci): Add setup-elixir composite action (#4067)

Pulled out of #4049
This commit is contained in:
Jamil
2024-03-12 12:41:06 -07:00
committed by GitHub
parent 9836c74ea5
commit 1a348b2ada
2 changed files with 54 additions and 174 deletions

44
.github/actions/setup-elixir/action.yml vendored Normal file
View File

@@ -0,0 +1,44 @@
name: "Setup Elixir"
description: "Sets up the correct Elixir version and installs deps"
inputs:
mix_env:
description: "Limit deps to mix env"
type: string
required: true
runs:
using: "composite"
steps:
- name: Tool Versions
id: versions
uses: marocchino/tool-versions-action@v1.2.0
- uses: erlef/setup-beam@v1
id: setup-beam
with:
otp-version: ${{ steps.versions.outputs.erlang }}
elixir-version: ${{ steps.versions.outputs.elixir }}
- uses: actions/cache/restore@v4
name: Restore Elixir Deps Cache
id: cache
with:
path: |
elixir/deps
elixir/_build/${{ inputs.mix_env }}
key: ${{ runner.os }}-${{ inputs.mix_env }}-${{ steps.setup-beam.outputs.elixir-version }}-${{ hashFiles('elixir/mix.lock') }}
- name: Install Dependencies
if: ${{ steps.cache.outputs.cache-hit != 'true' }}
shell: bash
working-directory: ./elixir
run: mix deps.get --only ${{ inputs.mix_env }}
- name: Compile Dependencies
if: ${{ steps.cache.outputs.cache-hit != 'true' }}
shell: bash
working-directory: ./elixir
run: mix deps.compile --skip-umbrella-children
- uses: actions/cache/save@v4
name: Save Elixir Deps Cache
if: ${{ steps.cache.outputs.cache-hit != 'true' }}
with:
path: |
elixir/deps
elixir/_build/${{ inputs.mix_env }}
key: ${{ steps.cache.outputs.cache-primary-key }}

View File

@@ -27,40 +27,9 @@ jobs:
--health-retries 5
steps:
- uses: actions/checkout@v4
- name: Tool Versions
id: versions
uses: marocchino/tool-versions-action@v1.2.0
- uses: erlef/setup-beam@v1
id: setup-beam
- uses: ./.github/actions/setup-elixir
with:
otp-version: ${{ steps.versions.outputs.erlang }}
elixir-version: ${{ steps.versions.outputs.elixir }}
- uses: actions/cache/restore@v4
name: Restore Elixir Deps Cache
id: cache
env:
cache-name: elixir-deps-${{ env.MIX_ENV }}
with:
path: |
elixir/deps
elixir/_build/${{ env.MIX_ENV }}
key: ubuntu-22.04-${{ runner.arch }}-${{ steps.setup-beam.outputs.elixir-version }}-${{ env.cache-name }}-${{ hashFiles('elixir/mix.lock') }}
- name: Install Dependencies
if: ${{ steps.cache.outputs.cache-hit != 'true' }}
run: mix deps.get --only $MIX_ENV
- name: Compile Dependencies
if: ${{ steps.cache.outputs.cache-hit != 'true' }}
run: mix deps.compile --skip-umbrella-children
- uses: actions/cache/save@v4
name: Save Elixir Deps Cache
if: ${{ github.ref_name == 'main' }}
env:
cache-name: elixir-deps-${{ env.MIX_ENV }}
with:
path: |
elixir/deps
elixir/_build/${{ env.MIX_ENV }}
key: ubuntu-22.04-${{ runner.arch }}-${{ steps.setup-beam.outputs.elixir-version }}-${{ env.cache-name }}-${{ hashFiles('elixir/mix.lock') }}
mix_env: ${{ env.MIX_ENV }}
- name: Compile Application
run: mix compile --warnings-as-errors
- name: Setup Database
@@ -93,40 +62,9 @@ jobs:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
steps:
- uses: actions/checkout@v4
- name: Tool Versions
id: versions
uses: marocchino/tool-versions-action@v1.2.0
- uses: erlef/setup-beam@v1
id: setup-beam
- uses: ./.github/actions/setup-elixir
with:
otp-version: ${{ steps.versions.outputs.erlang }}
elixir-version: ${{ steps.versions.outputs.elixir }}
- uses: actions/cache/restore@v4
name: Restore Elixir Deps Cache
id: cache
env:
cache-name: elixir-deps-${{ env.MIX_ENV }}
with:
path: |
elixir/deps
elixir/_build/${{ env.MIX_ENV }}
key: ubuntu-22.04-${{ runner.arch }}-${{ steps.setup-beam.outputs.elixir-version }}-${{ env.cache-name }}-${{ hashFiles('elixir/mix.lock') }}
- name: Install Dependencies
if: ${{ steps.cache.outputs.cache-hit != 'true' }}
run: mix deps.get --only $MIX_ENV
- name: Compile Dependencies
if: ${{ steps.cache.outputs.cache-hit != 'true' }}
run: mix deps.compile --skip-umbrella-children
- uses: actions/cache/save@v4
name: Save Elixir Deps Cache
if: ${{ github.ref_name == 'main' }}
env:
cache-name: elixir-deps-${{ env.MIX_ENV }}
with:
path: |
elixir/deps
elixir/_build/${{ env.MIX_ENV }}
key: ubuntu-22.04-${{ runner.arch }}-${{ steps.setup-beam.outputs.elixir-version }}-${{ env.cache-name }}-${{ hashFiles('elixir/mix.lock') }}
mix_env: ${{ env.MIX_ENV }}
- name: Compile Application
run: mix compile --warnings-as-errors
- uses: actions/cache/restore@v4
@@ -160,40 +98,9 @@ jobs:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
steps:
- uses: actions/checkout@v4
- name: Tool Versions
id: versions
uses: marocchino/tool-versions-action@v1.2.0
- uses: erlef/setup-beam@v1
id: setup-beam
- uses: ./.github/actions/setup-elixir
with:
otp-version: ${{ steps.versions.outputs.erlang }}
elixir-version: ${{ steps.versions.outputs.elixir }}
- uses: actions/cache/restore@v4
name: Restore Elixir Deps Cache
id: cache
env:
cache-name: elixir-deps-${{ env.MIX_ENV }}
with:
path: |
elixir/deps
elixir/_build/${{ env.MIX_ENV }}
key: ubuntu-22.04-${{ runner.arch }}-${{ steps.setup-beam.outputs.elixir-version }}-${{ env.cache-name }}-${{ hashFiles('elixir/mix.lock') }}
- name: Install Dependencies
if: ${{ steps.cache.outputs.cache-hit != 'true' }}
run: mix deps.get --only $MIX_ENV
- name: Compile Dependencies
if: ${{ steps.cache.outputs.cache-hit != 'true' }}
run: mix deps.compile --skip-umbrella-children
- uses: actions/cache/save@v4
name: Save Elixir Deps Cache
if: ${{ github.ref_name == 'main' }}
env:
cache-name: elixir-deps-${{ env.MIX_ENV }}
with:
path: |
elixir/deps
elixir/_build/${{ env.MIX_ENV }}
key: ubuntu-22.04-${{ runner.arch }}-${{ steps.setup-beam.outputs.elixir-version }}-${{ env.cache-name }}-${{ hashFiles('elixir/mix.lock') }}
mix_env: ${{ env.MIX_ENV }}
- name: Compile Application
run: mix compile --force --warnings-as-errors
- name: Check Formatting
@@ -232,46 +139,9 @@ jobs:
--health-retries 5
steps:
- uses: actions/checkout@v4
- name: Install package dependencies
run: |
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
wget -qO- https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo tee /etc/apt/trusted.gpg.d/pgdg.asc &>/dev/null
sudo apt update
sudo apt-get install -q -y postgresql-client
- name: Tool Versions
id: versions
uses: marocchino/tool-versions-action@v1.2.0
- uses: erlef/setup-beam@v1
id: setup-beam
- uses: ./.github/actions/setup-elixir
with:
otp-version: ${{ steps.versions.outputs.erlang }}
elixir-version: ${{ steps.versions.outputs.elixir }}
- uses: actions/cache/restore@v4
name: Restore Elixir Deps Cache
id: cache
env:
cache-name: elixir-deps-${{ env.MIX_ENV }}
with:
path: |
elixir/deps
elixir/_build/${{ env.MIX_ENV }}
key: ubuntu-22.04-${{ runner.arch }}-${{ steps.setup-beam.outputs.elixir-version }}-${{ env.cache-name }}-${{ hashFiles('elixir/mix.lock') }}
- name: Install Dependencies
if: ${{ steps.cache.outputs.cache-hit != 'true' }}
run: mix deps.get --only $MIX_ENV
- name: Compile Dependencies
if: ${{ steps.cache.outputs.cache-hit != 'true' }}
run: mix deps.compile --skip-umbrella-children
- uses: actions/cache/save@v4
name: Save Elixir Deps Cache
if: ${{ github.ref_name == 'main' }}
env:
cache-name: elixir-deps-${{ env.MIX_ENV }}
with:
path: |
elixir/deps
elixir/_build/${{ env.MIX_ENV }}
key: ubuntu-22.04-${{ runner.arch }}-${{ steps.setup-beam.outputs.elixir-version }}-${{ env.cache-name }}-${{ hashFiles('elixir/mix.lock') }}
mix_env: ${{ env.MIX_ENV }}
- name: Compile
run: mix compile --warnings-as-errors
- name: Create Database
@@ -334,44 +204,10 @@ jobs:
export DISPLAY=:99
chromedriver --url-base=/wd/hub &
sudo Xvfb -ac :99 -screen 0 1280x1024x24 > /dev/null 2>&1 &
- name: Tool Versions
id: versions
uses: marocchino/tool-versions-action@v1.2.0
- uses: erlef/setup-beam@v1
id: setup-beam
- uses: ./.github/actions/setup-elixir
with:
otp-version: ${{ steps.versions.outputs.erlang }}
elixir-version: ${{ steps.versions.outputs.elixir }}
mix_env: ${{ env.MIX_ENV }}
- uses: ./.github/actions/setup-node
with:
node-version: ${{ steps.versions.outputs.nodejs }}
# Elixir cache
- uses: actions/cache/restore@v4
name: Restore Elixir Deps Cache
id: cache
env:
cache-name: elixir-deps-${{ env.MIX_ENV }}
with:
path: |
elixir/deps
elixir/_build/${{ env.MIX_ENV }}
key: ubuntu-22.04-${{ runner.arch }}-${{ steps.setup-beam.outputs.elixir-version }}-${{ env.cache-name }}-${{ hashFiles('elixir/mix.lock') }}
- name: Install Dependencies
if: ${{ steps.cache.outputs.cache-hit != 'true' }}
run: mix deps.get --only $MIX_ENV
- name: Compile Dependencies
if: ${{ steps.cache.outputs.cache-hit != 'true' }}
run: mix deps.compile --skip-umbrella-children
- uses: actions/cache/save@v4
name: Save Elixir Deps Cache
if: ${{ github.ref_name == 'main' }}
env:
cache-name: elixir-deps-${{ env.MIX_ENV }}
with:
path: |
elixir/deps
elixir/_build/${{ env.MIX_ENV }}
key: ubuntu-22.04-${{ runner.arch }}-${{ steps.setup-beam.outputs.elixir-version }}-${{ env.cache-name }}-${{ hashFiles('elixir/mix.lock') }}
- name: Compile Application
run: mix compile --warnings-as-errors
# Front-End deps cache