name: Elixir Library on: push: jobs: deps: name: mix deps.get runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - uses: team-alembic/staple-actions/actions/install-elixir@main - uses: team-alembic/staple-actions/actions/mix-deps-get@main with: git-token: ${{ secrets.JIMSY_ACCESS_TOKEN }} auditor: name: mix hex.audit runs-on: ubuntu-latest needs: deps steps: - uses: actions/checkout@v3 - uses: team-alembic/staple-actions/actions/install-elixir@main - uses: team-alembic/staple-actions/actions/mix-deps-get@main with: git-token: ${{ secrets.JIMSY_ACCESS_TOKEN }} - run: mix hex.audit build-test: name: MIX_ENV=test mix.compile runs-on: ubuntu-latest needs: deps steps: - uses: actions/checkout@v3 - uses: team-alembic/staple-actions/actions/install-elixir@main - uses: team-alembic/staple-actions/actions/mix-deps-get@main with: git-token: ${{ secrets.JIMSY_ACCESS_TOKEN }} - uses: team-alembic/staple-actions/actions/mix-compile@main with: mix-env: test formatter: name: mix format --check-formatted runs-on: ubuntu-latest env: MIX_ENV: test needs: build-test steps: - uses: actions/checkout@v3 - uses: team-alembic/staple-actions/actions/install-elixir@main - uses: team-alembic/staple-actions/actions/mix-deps-get@main with: git-token: ${{ secrets.JIMSY_ACCESS_TOKEN }} - uses: team-alembic/staple-actions/actions/mix-compile@main with: mix-env: ${{ env.MIX_ENV }} - run: mix format --check-formatted credo: name: mix credo --strict runs-on: ubuntu-latest env: MIX_ENV: test needs: build-test steps: - uses: actions/checkout@v3 - uses: team-alembic/staple-actions/actions/install-elixir@main - uses: team-alembic/staple-actions/actions/mix-deps-get@main with: git-token: ${{ secrets.JIMSY_ACCESS_TOKEN }} - uses: team-alembic/staple-actions/actions/mix-compile@main with: mix-env: ${{ env.MIX_ENV }} - run: mix credo --strict doctor: name: mix doctor --full --raise runs-on: ubuntu-latest env: MIX_ENV: test needs: build-test steps: - uses: actions/checkout@v3 - uses: team-alembic/staple-actions/actions/install-elixir@main - uses: team-alembic/staple-actions/actions/mix-deps-get@main with: git-token: ${{ secrets.JIMSY_ACCESS_TOKEN }} - uses: team-alembic/staple-actions/actions/mix-compile@main with: mix-env: ${{ env.MIX_ENV }} - run: mix doctor --full --raise test: name: mix test runs-on: ubuntu-latest env: MIX_ENV: test needs: build-test services: postgres: image: postgres env: POSTGRES_HOST_AUTH_METHOD: trust options: >- --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5 ports: - 5432:5432 steps: - uses: actions/checkout@v3 - uses: team-alembic/staple-actions/actions/install-elixir@main - uses: team-alembic/staple-actions/actions/mix-deps-get@main with: git-token: ${{ secrets.JIMSY_ACCESS_TOKEN }} - uses: team-alembic/staple-actions/actions/mix-compile@main with: mix-env: ${{ env.MIX_ENV }} - run: mix test env: MIX_ENV: test PGUSER: postgres PGPASS: postgres PGHOST: postgres dialyzer: name: mix dialyzer runs-on: ubuntu-latest env: MIX_ENV: test needs: build-test steps: - uses: actions/checkout@v3 - uses: team-alembic/staple-actions/actions/install-elixir@main - uses: team-alembic/staple-actions/actions/mix-deps-get@main - uses: team-alembic/staple-actions/actions/mix-compile@main with: mix-env: ${{ env.MIX_ENV }} - uses: team-alembic/staple-actions/actions/mix-dialyzer-plt@main with: mix-env: ${{ env.MIX_ENV }} - run: mix dialyzer --format github build-dev: name: MIX_ENV=dev mix.compile runs-on: ubuntu-latest needs: - credo - doctor - formatter - auditor - test - dialyzer if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/main' }} steps: - uses: actions/checkout@v3 - uses: team-alembic/staple-actions/actions/install-elixir@main - uses: team-alembic/staple-actions/actions/mix-deps-get@main with: git-token: ${{ secrets.JIMSY_ACCESS_TOKEN }} - uses: team-alembic/staple-actions/actions/mix-compile@main with: mix-env: dev build-docs: name: mix docs runs-on: ubuntu-latest needs: build-dev env: MIX_ENV: dev steps: - uses: actions/checkout@v3 - uses: team-alembic/staple-actions/actions/install-elixir@main - uses: team-alembic/staple-actions/actions/mix-deps-get@main with: git-token: ${{ secrets.JIMSY_ACCESS_TOKEN }} - uses: team-alembic/staple-actions/actions/mix-compile@main with: mix-env: ${{ env.MIX_ENV }} - run: mix docs - uses: actions/upload-pages-artifact@v1 with: path: doc/ deploy-docs: name: Deploy docs to GitHub pages. runs-on: ubuntu-latest needs: build-docs permissions: pages: write id-token: write environment: name: github-pages url: ${{ steps.deployment.outputs.page_url }} steps: - name: Deploy to GitHub pages id: deployment uses: actions/deploy-pages@v1 git-ops: name: mix git-ops.release runs-on: ubuntu-latest needs: build-dev env: MIX_ENV: dev steps: - uses: actions/checkout@v3 with: fetch-depth: 0 - uses: team-alembic/staple-actions/actions/install-elixir@main - uses: team-alembic/staple-actions/actions/mix-deps-get@main with: git-token: ${{ secrets.JIMSY_ACCESS_TOKEN }} - uses: team-alembic/staple-actions/actions/mix-compile@main with: mix-env: ${{ env.MIX_ENV }} - uses: team-alembic/staple-actions/actions/git-ops@main