diff --git a/.github/github_workflows.ex b/.github/github_workflows.ex index c7c6fe621..cbe9b4de2 100644 --- a/.github/github_workflows.ex +++ b/.github/github_workflows.ex @@ -75,16 +75,16 @@ defmodule GithubWorkflows do defp ci_jobs do [ - compile: compile_job(), - credo: credo_job(), - deps_audit: deps_audit_job(), - dialyzer: dialyzer_job(), - format: format_job(), - hex_audit: hex_audit_job(), - prettier: prettier_job(), - sobelow: sobelow_job(), - test: test_job(), - unused_deps: unused_deps_job() + # compile: compile_job(), + # credo: credo_job(), + # deps_audit: deps_audit_job(), + # dialyzer: dialyzer_job(), + # format: format_job(), + # hex_audit: hex_audit_job(), + # prettier: prettier_job(), + # sobelow: sobelow_job(), + # test: test_job(), + # unused_deps: unused_deps_job() ] ++ test_scripts_jobs() end @@ -386,28 +386,29 @@ defmodule GithubWorkflows do env: [TZ: "America/New_York"], steps: [ - checkout_step() + checkout_step(), + [ + name: "Restore script result cache", + uses: "actions/cache@v3", + id: "result_cache", + with: [ + key: + "${{ runner.os }}-#{shell}-script-${{ hashFiles('test/scripts/script.exp') }}-${{ hashFiles('priv/static/#{os}.sh') }}", + path: "priv/static/#{os}.sh" + ] + ] ] ++ if(shell == "bash", do: [], else: [ [ name: "Install shell", + if: "steps.result_cache.outputs.cache-hit != 'true'", run: shell_install_command ] ] ) ++ [ - [ - name: "Restore script result cache", - uses: "actions/cache@v3", - id: "result_cache", - with: [ - key: - "${{ runner.os }}-#{shell}-script-${{ hashFiles('test/scripts/script.exp') }}-${{ hashFiles('priv/static/#{os}.sh') }}", - path: "priv/static/#{os}.sh" - ] - ], [ name: "Install expect tool", if: "steps.result_cache.outputs.cache-hit != 'true'", @@ -417,13 +418,13 @@ defmodule GithubWorkflows do name: "Test the script", if: "steps.result_cache.outputs.cache-hit != 'true'", run: "cd test/scripts && expect script.exp #{os}.sh", - shell: shell + shell: "/bin/#{shell} -l {0}" ], [ name: "Generate an app and start the server", if: "steps.result_cache.outputs.cache-hit != 'true'", run: "make -f test/scripts/Makefile serve", - shell: shell + shell: "/bin/#{shell} -l {0}" ], [ name: "Check HTTP status code", diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 5f6113893..e0b9a9467 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -6,262 +6,6 @@ on: - main jobs: - compile: - name: Install deps and compile - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v4 - - id: setup-beam - name: Set up Elixir - uses: erlef/setup-beam@v1 - with: - version-file: .tool-versions - version-type: strict - - uses: actions/cache@v3 - with: - path: | - _build - deps - key: ${{ runner.os }}-${{ steps.setup-beam.outputs.elixir-version }}-${{ steps.setup-beam.outputs.otp-version }}-mix-${{ github.sha }} - restore-keys: | - ${{ runner.os }}-${{ steps.setup-beam.outputs.elixir-version }}-${{ steps.setup-beam.outputs.otp-version }}-mix- - - name: Install Elixir dependencies - env: - MIX_ENV: test - run: mix deps.get - - name: Compile - env: - MIX_ENV: test - run: mix compile - credo: - needs: compile - name: Credo - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v4 - - id: setup-beam - name: Set up Elixir - uses: erlef/setup-beam@v1 - with: - version-file: .tool-versions - version-type: strict - - uses: actions/cache@v3 - with: - path: | - _build - deps - key: ${{ runner.os }}-${{ steps.setup-beam.outputs.elixir-version }}-${{ steps.setup-beam.outputs.otp-version }}-mix-${{ github.sha }} - restore-keys: | - ${{ runner.os }}-${{ steps.setup-beam.outputs.elixir-version }}-${{ steps.setup-beam.outputs.otp-version }}-mix- - - name: Check code style - env: - MIX_ENV: test - run: mix credo --strict - deps_audit: - needs: compile - name: Deps audit - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v4 - - id: setup-beam - name: Set up Elixir - uses: erlef/setup-beam@v1 - with: - version-file: .tool-versions - version-type: strict - - uses: actions/cache@v3 - with: - path: | - _build - deps - key: ${{ runner.os }}-${{ steps.setup-beam.outputs.elixir-version }}-${{ steps.setup-beam.outputs.otp-version }}-mix-${{ github.sha }} - restore-keys: | - ${{ runner.os }}-${{ steps.setup-beam.outputs.elixir-version }}-${{ steps.setup-beam.outputs.otp-version }}-mix- - - name: Check for vulnerable Mix dependencies - env: - MIX_ENV: test - run: mix deps.audit - dialyzer: - needs: compile - name: Dialyzer - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v4 - - id: setup-beam - name: Set up Elixir - uses: erlef/setup-beam@v1 - with: - version-file: .tool-versions - version-type: strict - - uses: actions/cache@v3 - with: - path: | - _build - deps - key: ${{ runner.os }}-${{ steps.setup-beam.outputs.elixir-version }}-${{ steps.setup-beam.outputs.otp-version }}-mix-${{ github.sha }} - restore-keys: | - ${{ runner.os }}-${{ steps.setup-beam.outputs.elixir-version }}-${{ steps.setup-beam.outputs.otp-version }}-mix- - - name: Restore PLT cache - uses: actions/cache@v3 - with: - path: priv/plts - key: ${{ runner.os }}-${{ steps.setup-beam.outputs.elixir-version }}-${{ steps.setup-beam.outputs.otp-version }}-plt-${{ github.sha }} - restore-keys: | - ${{ runner.os }}-${{ steps.setup-beam.outputs.elixir-version }}-${{ steps.setup-beam.outputs.otp-version }}-plt- - - name: Create PLTs - env: - MIX_ENV: test - run: mix dialyzer --plt - - name: Run dialyzer - env: - MIX_ENV: test - run: mix dialyzer - format: - needs: compile - name: Format - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v4 - - id: setup-beam - name: Set up Elixir - uses: erlef/setup-beam@v1 - with: - version-file: .tool-versions - version-type: strict - - uses: actions/cache@v3 - with: - path: | - _build - deps - key: ${{ runner.os }}-${{ steps.setup-beam.outputs.elixir-version }}-${{ steps.setup-beam.outputs.otp-version }}-mix-${{ github.sha }} - restore-keys: | - ${{ runner.os }}-${{ steps.setup-beam.outputs.elixir-version }}-${{ steps.setup-beam.outputs.otp-version }}-mix- - - name: Check Elixir formatting - env: - MIX_ENV: test - run: mix format --check-formatted - hex_audit: - needs: compile - name: Hex audit - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v4 - - id: setup-beam - name: Set up Elixir - uses: erlef/setup-beam@v1 - with: - version-file: .tool-versions - version-type: strict - - uses: actions/cache@v3 - with: - path: | - _build - deps - key: ${{ runner.os }}-${{ steps.setup-beam.outputs.elixir-version }}-${{ steps.setup-beam.outputs.otp-version }}-mix-${{ github.sha }} - restore-keys: | - ${{ runner.os }}-${{ steps.setup-beam.outputs.elixir-version }}-${{ steps.setup-beam.outputs.otp-version }}-mix- - - name: Check for retired Hex packages - env: - MIX_ENV: test - run: mix hex.audit - prettier: - name: Check formatting using Prettier - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v4 - - name: Restore npm cache - uses: actions/cache@v3 - id: npm-cache - with: - path: node_modules - key: ${{ runner.os }}-prettier - - name: Install Prettier - if: steps.npm-cache.outputs.cache-hit != 'true' - run: npm i -D prettier prettier-plugin-toml - - name: Run Prettier - run: npx prettier -c . - sobelow: - needs: compile - name: Security check - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v4 - - id: setup-beam - name: Set up Elixir - uses: erlef/setup-beam@v1 - with: - version-file: .tool-versions - version-type: strict - - uses: actions/cache@v3 - with: - path: | - _build - deps - key: ${{ runner.os }}-${{ steps.setup-beam.outputs.elixir-version }}-${{ steps.setup-beam.outputs.otp-version }}-mix-${{ github.sha }} - restore-keys: | - ${{ runner.os }}-${{ steps.setup-beam.outputs.elixir-version }}-${{ steps.setup-beam.outputs.otp-version }}-mix- - - name: Check for security issues using sobelow - env: - MIX_ENV: test - run: mix sobelow --config .sobelow-conf - test: - needs: compile - name: Test - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v4 - - id: setup-beam - name: Set up Elixir - uses: erlef/setup-beam@v1 - with: - version-file: .tool-versions - version-type: strict - - uses: actions/cache@v3 - with: - path: | - _build - deps - key: ${{ runner.os }}-${{ steps.setup-beam.outputs.elixir-version }}-${{ steps.setup-beam.outputs.otp-version }}-mix-${{ github.sha }} - restore-keys: | - ${{ runner.os }}-${{ steps.setup-beam.outputs.elixir-version }}-${{ steps.setup-beam.outputs.otp-version }}-mix- - - name: Run tests - env: - MIX_ENV: test - run: mix test --cover --warnings-as-errors - unused_deps: - needs: compile - name: Check unused deps - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v4 - - id: setup-beam - name: Set up Elixir - uses: erlef/setup-beam@v1 - with: - version-file: .tool-versions - version-type: strict - - uses: actions/cache@v3 - with: - path: | - _build - deps - key: ${{ runner.os }}-${{ steps.setup-beam.outputs.elixir-version }}-${{ steps.setup-beam.outputs.otp-version }}-mix-${{ github.sha }} - restore-keys: | - ${{ runner.os }}-${{ steps.setup-beam.outputs.elixir-version }}-${{ steps.setup-beam.outputs.otp-version }}-mix- - - name: Check for unused Mix dependencies - env: - MIX_ENV: test - run: mix deps.unlock --check-unused test_linux_bash: name: Test Linux script with bash shell runs-on: ubuntu-latest @@ -282,11 +26,11 @@ jobs: - name: Test the script if: steps.result_cache.outputs.cache-hit != 'true' run: cd test/scripts && expect script.exp Linux.sh - shell: bash + shell: /bin/bash -l {0} - name: Generate an app and start the server if: steps.result_cache.outputs.cache-hit != 'true' run: make -f test/scripts/Makefile serve - shell: bash + shell: /bin/bash -l {0} - name: Check HTTP status code if: steps.result_cache.outputs.cache-hit != 'true' uses: nick-fields/retry@v2 @@ -315,11 +59,11 @@ jobs: - name: Test the script if: steps.result_cache.outputs.cache-hit != 'true' run: cd test/scripts && expect script.exp macOS.sh - shell: bash + shell: /bin/bash -l {0} - name: Generate an app and start the server if: steps.result_cache.outputs.cache-hit != 'true' run: make -f test/scripts/Makefile serve - shell: bash + shell: /bin/bash -l {0} - name: Check HTTP status code if: steps.result_cache.outputs.cache-hit != 'true' uses: nick-fields/retry@v2 @@ -336,25 +80,26 @@ jobs: steps: - name: Checkout uses: actions/checkout@v4 - - name: Install shell - run: sudo apt-get update && sudo apt-get install -y fish - name: Restore script result cache uses: actions/cache@v3 id: result_cache with: key: ${{ runner.os }}-fish-script-${{ hashFiles('test/scripts/script.exp') }}-${{ hashFiles('priv/static/Linux.sh') }} path: priv/static/Linux.sh + - name: Install shell + if: steps.result_cache.outputs.cache-hit != 'true' + run: sudo apt-get update && sudo apt-get install -y fish - name: Install expect tool if: steps.result_cache.outputs.cache-hit != 'true' run: sudo apt-get update && sudo apt-get install -y expect - name: Test the script if: steps.result_cache.outputs.cache-hit != 'true' run: cd test/scripts && expect script.exp Linux.sh - shell: fish + shell: /bin/fish -l {0} - name: Generate an app and start the server if: steps.result_cache.outputs.cache-hit != 'true' run: make -f test/scripts/Makefile serve - shell: fish + shell: /bin/fish -l {0} - name: Check HTTP status code if: steps.result_cache.outputs.cache-hit != 'true' uses: nick-fields/retry@v2 @@ -371,25 +116,26 @@ jobs: steps: - name: Checkout uses: actions/checkout@v4 - - name: Install shell - run: brew install fish - name: Restore script result cache uses: actions/cache@v3 id: result_cache with: key: ${{ runner.os }}-fish-script-${{ hashFiles('test/scripts/script.exp') }}-${{ hashFiles('priv/static/macOS.sh') }} path: priv/static/macOS.sh + - name: Install shell + if: steps.result_cache.outputs.cache-hit != 'true' + run: brew install fish - name: Install expect tool if: steps.result_cache.outputs.cache-hit != 'true' run: brew install expect - name: Test the script if: steps.result_cache.outputs.cache-hit != 'true' run: cd test/scripts && expect script.exp macOS.sh - shell: fish + shell: /bin/fish -l {0} - name: Generate an app and start the server if: steps.result_cache.outputs.cache-hit != 'true' run: make -f test/scripts/Makefile serve - shell: fish + shell: /bin/fish -l {0} - name: Check HTTP status code if: steps.result_cache.outputs.cache-hit != 'true' uses: nick-fields/retry@v2 @@ -406,25 +152,26 @@ jobs: steps: - name: Checkout uses: actions/checkout@v4 - - name: Install shell - run: sudo apt-get update && sudo apt-get install -y zsh - name: Restore script result cache uses: actions/cache@v3 id: result_cache with: key: ${{ runner.os }}-zsh-script-${{ hashFiles('test/scripts/script.exp') }}-${{ hashFiles('priv/static/Linux.sh') }} path: priv/static/Linux.sh + - name: Install shell + if: steps.result_cache.outputs.cache-hit != 'true' + run: sudo apt-get update && sudo apt-get install -y zsh - name: Install expect tool if: steps.result_cache.outputs.cache-hit != 'true' run: sudo apt-get update && sudo apt-get install -y expect - name: Test the script if: steps.result_cache.outputs.cache-hit != 'true' run: cd test/scripts && expect script.exp Linux.sh - shell: zsh + shell: /bin/zsh -l {0} - name: Generate an app and start the server if: steps.result_cache.outputs.cache-hit != 'true' run: make -f test/scripts/Makefile serve - shell: zsh + shell: /bin/zsh -l {0} - name: Check HTTP status code if: steps.result_cache.outputs.cache-hit != 'true' uses: nick-fields/retry@v2 @@ -441,25 +188,26 @@ jobs: steps: - name: Checkout uses: actions/checkout@v4 - - name: Install shell - run: brew install zsh - name: Restore script result cache uses: actions/cache@v3 id: result_cache with: key: ${{ runner.os }}-zsh-script-${{ hashFiles('test/scripts/script.exp') }}-${{ hashFiles('priv/static/macOS.sh') }} path: priv/static/macOS.sh + - name: Install shell + if: steps.result_cache.outputs.cache-hit != 'true' + run: brew install zsh - name: Install expect tool if: steps.result_cache.outputs.cache-hit != 'true' run: brew install expect - name: Test the script if: steps.result_cache.outputs.cache-hit != 'true' run: cd test/scripts && expect script.exp macOS.sh - shell: zsh + shell: /bin/zsh -l {0} - name: Generate an app and start the server if: steps.result_cache.outputs.cache-hit != 'true' run: make -f test/scripts/Makefile serve - shell: zsh + shell: /bin/zsh -l {0} - name: Check HTTP status code if: steps.result_cache.outputs.cache-hit != 'true' uses: nick-fields/retry@v2 @@ -471,16 +219,6 @@ jobs: deploy_production_app: name: Deploy production app needs: - - compile - - credo - - deps_audit - - dialyzer - - format - - hex_audit - - prettier - - sobelow - - test - - unused_deps - test_linux_bash - test_macos_bash - test_linux_fish diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index d889e2dc5..cf995ff11 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -10,262 +10,6 @@ on: - synchronize jobs: - compile: - name: Install deps and compile - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v4 - - id: setup-beam - name: Set up Elixir - uses: erlef/setup-beam@v1 - with: - version-file: .tool-versions - version-type: strict - - uses: actions/cache@v3 - with: - path: | - _build - deps - key: ${{ runner.os }}-${{ steps.setup-beam.outputs.elixir-version }}-${{ steps.setup-beam.outputs.otp-version }}-mix-${{ github.sha }} - restore-keys: | - ${{ runner.os }}-${{ steps.setup-beam.outputs.elixir-version }}-${{ steps.setup-beam.outputs.otp-version }}-mix- - - name: Install Elixir dependencies - env: - MIX_ENV: test - run: mix deps.get - - name: Compile - env: - MIX_ENV: test - run: mix compile - credo: - needs: compile - name: Credo - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v4 - - id: setup-beam - name: Set up Elixir - uses: erlef/setup-beam@v1 - with: - version-file: .tool-versions - version-type: strict - - uses: actions/cache@v3 - with: - path: | - _build - deps - key: ${{ runner.os }}-${{ steps.setup-beam.outputs.elixir-version }}-${{ steps.setup-beam.outputs.otp-version }}-mix-${{ github.sha }} - restore-keys: | - ${{ runner.os }}-${{ steps.setup-beam.outputs.elixir-version }}-${{ steps.setup-beam.outputs.otp-version }}-mix- - - name: Check code style - env: - MIX_ENV: test - run: mix credo --strict - deps_audit: - needs: compile - name: Deps audit - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v4 - - id: setup-beam - name: Set up Elixir - uses: erlef/setup-beam@v1 - with: - version-file: .tool-versions - version-type: strict - - uses: actions/cache@v3 - with: - path: | - _build - deps - key: ${{ runner.os }}-${{ steps.setup-beam.outputs.elixir-version }}-${{ steps.setup-beam.outputs.otp-version }}-mix-${{ github.sha }} - restore-keys: | - ${{ runner.os }}-${{ steps.setup-beam.outputs.elixir-version }}-${{ steps.setup-beam.outputs.otp-version }}-mix- - - name: Check for vulnerable Mix dependencies - env: - MIX_ENV: test - run: mix deps.audit - dialyzer: - needs: compile - name: Dialyzer - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v4 - - id: setup-beam - name: Set up Elixir - uses: erlef/setup-beam@v1 - with: - version-file: .tool-versions - version-type: strict - - uses: actions/cache@v3 - with: - path: | - _build - deps - key: ${{ runner.os }}-${{ steps.setup-beam.outputs.elixir-version }}-${{ steps.setup-beam.outputs.otp-version }}-mix-${{ github.sha }} - restore-keys: | - ${{ runner.os }}-${{ steps.setup-beam.outputs.elixir-version }}-${{ steps.setup-beam.outputs.otp-version }}-mix- - - name: Restore PLT cache - uses: actions/cache@v3 - with: - path: priv/plts - key: ${{ runner.os }}-${{ steps.setup-beam.outputs.elixir-version }}-${{ steps.setup-beam.outputs.otp-version }}-plt-${{ github.sha }} - restore-keys: | - ${{ runner.os }}-${{ steps.setup-beam.outputs.elixir-version }}-${{ steps.setup-beam.outputs.otp-version }}-plt- - - name: Create PLTs - env: - MIX_ENV: test - run: mix dialyzer --plt - - name: Run dialyzer - env: - MIX_ENV: test - run: mix dialyzer - format: - needs: compile - name: Format - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v4 - - id: setup-beam - name: Set up Elixir - uses: erlef/setup-beam@v1 - with: - version-file: .tool-versions - version-type: strict - - uses: actions/cache@v3 - with: - path: | - _build - deps - key: ${{ runner.os }}-${{ steps.setup-beam.outputs.elixir-version }}-${{ steps.setup-beam.outputs.otp-version }}-mix-${{ github.sha }} - restore-keys: | - ${{ runner.os }}-${{ steps.setup-beam.outputs.elixir-version }}-${{ steps.setup-beam.outputs.otp-version }}-mix- - - name: Check Elixir formatting - env: - MIX_ENV: test - run: mix format --check-formatted - hex_audit: - needs: compile - name: Hex audit - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v4 - - id: setup-beam - name: Set up Elixir - uses: erlef/setup-beam@v1 - with: - version-file: .tool-versions - version-type: strict - - uses: actions/cache@v3 - with: - path: | - _build - deps - key: ${{ runner.os }}-${{ steps.setup-beam.outputs.elixir-version }}-${{ steps.setup-beam.outputs.otp-version }}-mix-${{ github.sha }} - restore-keys: | - ${{ runner.os }}-${{ steps.setup-beam.outputs.elixir-version }}-${{ steps.setup-beam.outputs.otp-version }}-mix- - - name: Check for retired Hex packages - env: - MIX_ENV: test - run: mix hex.audit - prettier: - name: Check formatting using Prettier - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v4 - - name: Restore npm cache - uses: actions/cache@v3 - id: npm-cache - with: - path: node_modules - key: ${{ runner.os }}-prettier - - name: Install Prettier - if: steps.npm-cache.outputs.cache-hit != 'true' - run: npm i -D prettier prettier-plugin-toml - - name: Run Prettier - run: npx prettier -c . - sobelow: - needs: compile - name: Security check - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v4 - - id: setup-beam - name: Set up Elixir - uses: erlef/setup-beam@v1 - with: - version-file: .tool-versions - version-type: strict - - uses: actions/cache@v3 - with: - path: | - _build - deps - key: ${{ runner.os }}-${{ steps.setup-beam.outputs.elixir-version }}-${{ steps.setup-beam.outputs.otp-version }}-mix-${{ github.sha }} - restore-keys: | - ${{ runner.os }}-${{ steps.setup-beam.outputs.elixir-version }}-${{ steps.setup-beam.outputs.otp-version }}-mix- - - name: Check for security issues using sobelow - env: - MIX_ENV: test - run: mix sobelow --config .sobelow-conf - test: - needs: compile - name: Test - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v4 - - id: setup-beam - name: Set up Elixir - uses: erlef/setup-beam@v1 - with: - version-file: .tool-versions - version-type: strict - - uses: actions/cache@v3 - with: - path: | - _build - deps - key: ${{ runner.os }}-${{ steps.setup-beam.outputs.elixir-version }}-${{ steps.setup-beam.outputs.otp-version }}-mix-${{ github.sha }} - restore-keys: | - ${{ runner.os }}-${{ steps.setup-beam.outputs.elixir-version }}-${{ steps.setup-beam.outputs.otp-version }}-mix- - - name: Run tests - env: - MIX_ENV: test - run: mix test --cover --warnings-as-errors - unused_deps: - needs: compile - name: Check unused deps - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v4 - - id: setup-beam - name: Set up Elixir - uses: erlef/setup-beam@v1 - with: - version-file: .tool-versions - version-type: strict - - uses: actions/cache@v3 - with: - path: | - _build - deps - key: ${{ runner.os }}-${{ steps.setup-beam.outputs.elixir-version }}-${{ steps.setup-beam.outputs.otp-version }}-mix-${{ github.sha }} - restore-keys: | - ${{ runner.os }}-${{ steps.setup-beam.outputs.elixir-version }}-${{ steps.setup-beam.outputs.otp-version }}-mix- - - name: Check for unused Mix dependencies - env: - MIX_ENV: test - run: mix deps.unlock --check-unused test_linux_bash: name: Test Linux script with bash shell runs-on: ubuntu-latest @@ -286,11 +30,11 @@ jobs: - name: Test the script if: steps.result_cache.outputs.cache-hit != 'true' run: cd test/scripts && expect script.exp Linux.sh - shell: bash + shell: /bin/bash -l {0} - name: Generate an app and start the server if: steps.result_cache.outputs.cache-hit != 'true' run: make -f test/scripts/Makefile serve - shell: bash + shell: /bin/bash -l {0} - name: Check HTTP status code if: steps.result_cache.outputs.cache-hit != 'true' uses: nick-fields/retry@v2 @@ -319,11 +63,11 @@ jobs: - name: Test the script if: steps.result_cache.outputs.cache-hit != 'true' run: cd test/scripts && expect script.exp macOS.sh - shell: bash + shell: /bin/bash -l {0} - name: Generate an app and start the server if: steps.result_cache.outputs.cache-hit != 'true' run: make -f test/scripts/Makefile serve - shell: bash + shell: /bin/bash -l {0} - name: Check HTTP status code if: steps.result_cache.outputs.cache-hit != 'true' uses: nick-fields/retry@v2 @@ -340,25 +84,26 @@ jobs: steps: - name: Checkout uses: actions/checkout@v4 - - name: Install shell - run: sudo apt-get update && sudo apt-get install -y fish - name: Restore script result cache uses: actions/cache@v3 id: result_cache with: key: ${{ runner.os }}-fish-script-${{ hashFiles('test/scripts/script.exp') }}-${{ hashFiles('priv/static/Linux.sh') }} path: priv/static/Linux.sh + - name: Install shell + if: steps.result_cache.outputs.cache-hit != 'true' + run: sudo apt-get update && sudo apt-get install -y fish - name: Install expect tool if: steps.result_cache.outputs.cache-hit != 'true' run: sudo apt-get update && sudo apt-get install -y expect - name: Test the script if: steps.result_cache.outputs.cache-hit != 'true' run: cd test/scripts && expect script.exp Linux.sh - shell: fish + shell: /bin/fish -l {0} - name: Generate an app and start the server if: steps.result_cache.outputs.cache-hit != 'true' run: make -f test/scripts/Makefile serve - shell: fish + shell: /bin/fish -l {0} - name: Check HTTP status code if: steps.result_cache.outputs.cache-hit != 'true' uses: nick-fields/retry@v2 @@ -375,25 +120,26 @@ jobs: steps: - name: Checkout uses: actions/checkout@v4 - - name: Install shell - run: brew install fish - name: Restore script result cache uses: actions/cache@v3 id: result_cache with: key: ${{ runner.os }}-fish-script-${{ hashFiles('test/scripts/script.exp') }}-${{ hashFiles('priv/static/macOS.sh') }} path: priv/static/macOS.sh + - name: Install shell + if: steps.result_cache.outputs.cache-hit != 'true' + run: brew install fish - name: Install expect tool if: steps.result_cache.outputs.cache-hit != 'true' run: brew install expect - name: Test the script if: steps.result_cache.outputs.cache-hit != 'true' run: cd test/scripts && expect script.exp macOS.sh - shell: fish + shell: /bin/fish -l {0} - name: Generate an app and start the server if: steps.result_cache.outputs.cache-hit != 'true' run: make -f test/scripts/Makefile serve - shell: fish + shell: /bin/fish -l {0} - name: Check HTTP status code if: steps.result_cache.outputs.cache-hit != 'true' uses: nick-fields/retry@v2 @@ -410,25 +156,26 @@ jobs: steps: - name: Checkout uses: actions/checkout@v4 - - name: Install shell - run: sudo apt-get update && sudo apt-get install -y zsh - name: Restore script result cache uses: actions/cache@v3 id: result_cache with: key: ${{ runner.os }}-zsh-script-${{ hashFiles('test/scripts/script.exp') }}-${{ hashFiles('priv/static/Linux.sh') }} path: priv/static/Linux.sh + - name: Install shell + if: steps.result_cache.outputs.cache-hit != 'true' + run: sudo apt-get update && sudo apt-get install -y zsh - name: Install expect tool if: steps.result_cache.outputs.cache-hit != 'true' run: sudo apt-get update && sudo apt-get install -y expect - name: Test the script if: steps.result_cache.outputs.cache-hit != 'true' run: cd test/scripts && expect script.exp Linux.sh - shell: zsh + shell: /bin/zsh -l {0} - name: Generate an app and start the server if: steps.result_cache.outputs.cache-hit != 'true' run: make -f test/scripts/Makefile serve - shell: zsh + shell: /bin/zsh -l {0} - name: Check HTTP status code if: steps.result_cache.outputs.cache-hit != 'true' uses: nick-fields/retry@v2 @@ -445,25 +192,26 @@ jobs: steps: - name: Checkout uses: actions/checkout@v4 - - name: Install shell - run: brew install zsh - name: Restore script result cache uses: actions/cache@v3 id: result_cache with: key: ${{ runner.os }}-zsh-script-${{ hashFiles('test/scripts/script.exp') }}-${{ hashFiles('priv/static/macOS.sh') }} path: priv/static/macOS.sh + - name: Install shell + if: steps.result_cache.outputs.cache-hit != 'true' + run: brew install zsh - name: Install expect tool if: steps.result_cache.outputs.cache-hit != 'true' run: brew install expect - name: Test the script if: steps.result_cache.outputs.cache-hit != 'true' run: cd test/scripts && expect script.exp macOS.sh - shell: zsh + shell: /bin/zsh -l {0} - name: Generate an app and start the server if: steps.result_cache.outputs.cache-hit != 'true' run: make -f test/scripts/Makefile serve - shell: zsh + shell: /bin/zsh -l {0} - name: Check HTTP status code if: steps.result_cache.outputs.cache-hit != 'true' uses: nick-fields/retry@v2 @@ -475,16 +223,6 @@ jobs: deploy_preview_app: name: Deploy preview app needs: - - compile - - credo - - deps_audit - - dialyzer - - format - - hex_audit - - prettier - - sobelow - - test - - unused_deps - test_linux_bash - test_macos_bash - test_linux_fish