From c0819a77a28070b45c873717d67f9c02b6134d45 Mon Sep 17 00:00:00 2001 From: James Harton Date: Tue, 25 Oct 2022 11:24:10 +1300 Subject: [PATCH] chore: add github actions. --- .github/dependabot.yml | 10 ++ .github/workflows/elixir_lib.yml | 154 +++++++++++++++++++++++++++++++ 2 files changed, 164 insertions(+) create mode 100644 .github/dependabot.yml create mode 100644 .github/workflows/elixir_lib.yml diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000..5923f30 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,10 @@ +version: 2 +updates: +- package-ecosystem: docker + directory: "/.devcontainer" + schedule: + interval: "daily" +- package-ecosystem: mix + directory: "/" + schedule: + interval: "daily" diff --git a/.github/workflows/elixir_lib.yml b/.github/workflows/elixir_lib.yml new file mode 100644 index 0000000..23284f1 --- /dev/null +++ b/.github/workflows/elixir_lib.yml @@ -0,0 +1,154 @@ +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 + + 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 + + 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/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 + steps: + - uses: actions/checkout@v3 + with: + fetch-depth: 0 + - uses: team-alembic/staple-actions/actions/git-ops@main + with: + mix-env: dev