diff --git a/.github/actions/setup-elixir/action.yml b/.github/actions/setup-elixir/action.yml new file mode 100644 index 000000000..0aab41a22 --- /dev/null +++ b/.github/actions/setup-elixir/action.yml @@ -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 }} diff --git a/.github/workflows/_elixir.yml b/.github/workflows/_elixir.yml index 362bf4607..ae6e7d19e 100644 --- a/.github/workflows/_elixir.yml +++ b/.github/workflows/_elixir.yml @@ -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