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/mix-deps-get@main auditor: name: mix hex.audit runs-on: ubuntu-latest needs: deps steps: - uses: actions/checkout@v3 - uses: team-alembic/staple-actions/actions/mix-hex-audit@main 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-compile@main with: mix-env: test formatter: name: mix format --check-formatted runs-on: ubuntu-latest needs: build-test steps: - uses: actions/checkout@v3 - uses: team-alembic/staple-actions/actions/mix-format@main with: mix-env: test spark-formatter: name: mix spark.formatter --check runs-on: ubuntu-latest needs: build-test steps: - uses: actions/checkout@v3 - uses: team-alembic/staple-actions/actions/mix-task@main with: mix-env: test task: spark.formatter --check credo: name: mix credo --strict runs-on: ubuntu-latest needs: build-test steps: - uses: actions/checkout@v3 - uses: team-alembic/staple-actions/actions/mix-credo@main with: mix-env: test doctor: name: mix doctor --full --raise runs-on: ubuntu-latest needs: build-test steps: - uses: actions/checkout@v3 - uses: team-alembic/staple-actions/actions/mix-doctor@main with: mix-env: test test: name: mix test runs-on: ubuntu-latest 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/mix-test@main with: mix-env: test env: PGUSER: postgres PGPASS: postgres PGHOST: postgres dialyzer: name: mix dialyzer runs-on: ubuntu-latest needs: build-test steps: - uses: actions/checkout@v3 - uses: team-alembic/staple-actions/actions/mix-dialyzer@main with: mix-env: test conventional-commit: name: mix git_ops.check_message runs-on: ubuntu-latest needs: build-test steps: - uses: actions/checkout@v3 - uses: team-alembic/staple-actions/actions/conventional-commit@main with: mix-env: test sobelow: name: mix sobelow --config runs-on: ubuntu-latest needs: build-test steps: - uses: actions/checkout@v3 - uses: team-alembic/staple-actions/actions/mix-sobelow@main with: mix-env: test unused-deps: name: mix deps.unlock --check-unused runs-on: ubuntu-latest needs: build-test steps: - uses: actions/checkout@v3 - uses: team-alembic/staple-actions/actions/mix-deps-unlock@main with: mix-env: test spark-cheat-sheets: name: mix spark.cheat_sheets --check runs-on: ubuntu-latest needs: build-test steps: - uses: actions/checkout@v3 - uses: team-alembic/staple-actions/actions/mix-task@main with: mix-env: test task: spark.cheat_sheets --check generate-migrations: name: mix ash_postgres.generate_migrations --check runs-on: ubuntu-latest needs: build-test steps: - uses: actions/checkout@v3 - uses: team-alembic/staple-actions/actions/mix-task@main with: mix-env: test task: ash_postgres.generate_migrations --check build-dev: name: MIX_ENV=dev mix.compile runs-on: ubuntu-latest needs: - credo - doctor - formatter - spark-formatter - auditor - test - dialyzer - sobelow - unused-deps - spark-cheat-sheets - generate-migrations - conventional-commit if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/main' }} steps: - uses: actions/checkout@v3 - 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 steps: - uses: actions/checkout@v3 - uses: team-alembic/staple-actions/actions/mix-docs@main with: mix-env: dev - 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 if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/main' }} steps: - uses: actions/checkout@v3 with: fetch-depth: 0 - uses: team-alembic/staple-actions/actions/git-ops@main with: mix-env: dev no-major: true release-token: ${{ secrets.JIMSY_ACCESS_TOKEN }}