Publish package #12
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Elixir CI Checks | |
env: | |
SHA: ${{ github.sha }} | |
JOB_URL: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }} | |
DEBIAN_FRONTEND: noninteractive | |
REPOSITORY: libcluster | |
ELIXIR_VERSION: 1.13.0 # Elixir version used during package publishing | |
OTP_VERSION: 23.3.4.7 # OTP version used during package publishing | |
RUNNER_OS: ubuntu22 # Must match Elixir/OTP version in described in action erlef/setup-beam@v1 | |
RELEVANT_FILES: "mix.lock mix.exs lib config test" # Important, this controls the caching, make sure to keep this right | |
DEPENDENCY_FILE: mix.lock | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
on: | |
push: | |
branches: | |
- master | |
pull_request: | |
types: | |
- synchronize | |
- opened | |
- reopened | |
jobs: | |
static: | |
name: Static Checks (Elixir ${{ matrix.versions.elixir-version }}) | |
runs-on: runs-on,runner=4cpu-linux-x64 | |
outputs: | |
HASH: ${{ steps.prepare.outputs.HASH }} | |
strategy: | |
fail-fast: false | |
matrix: | |
versions: | |
- { elixir-version: 1.16.2, otp-version: 26.2.5, runner-os: 'ubuntu22' } | |
steps: | |
- name: Checkout and compile dependencies | |
id: prepare | |
uses: surgeventures/platform-tribe-actions/elixir/precompile@main | |
with: | |
repository: ${{ env.REPOSITORY }} | |
dependency-file: ${{ env.DEPENDENCY_FILE }} | |
sha: ${{ env.SHA }} | |
token: ${{ secrets.GITHUB_TOKEN }} | |
hex-token: ${{ secrets.HEX_ORGANIZATION_KEY }} | |
mix-env: dev | |
relevant-files: ${{ env.RELEVANT_FILES }} | |
elixir-version: ${{ matrix.versions.elixir-version }} | |
otp-version: ${{ matrix.versions.otp-version }} | |
runner-os: ${{ matrix.versions.runner-os }} | |
- name: Compile the application | |
id: compile | |
uses: surgeventures/platform-tribe-actions/elixir/compile@main | |
with: | |
build-hash: ${{ steps.prepare.outputs.HASH }} | |
warnings-as-errors: 'true' | |
elixir-version: ${{ matrix.versions.elixir-version }} | |
otp-version: ${{ matrix.versions.otp-version }} | |
- name: Run Static Checks | |
uses: surgeventures/platform-tribe-actions/elixir/static-check@main | |
id: static | |
with: | |
dialyzer: true | |
hex-token: ${{ secrets.HEX_ORGANIZATION_WRITE_KEY }} | |
test: | |
name: Unit Tests (Elixir ${{ matrix.versions.elixir-version }}) | |
runs-on: runs-on,runner=1cpu-linux-x64 | |
strategy: | |
fail-fast: false | |
matrix: | |
versions: | |
- { elixir-version: 1.16.2, otp-version: 26.2.5, runner-os: 'ubuntu22' } | |
steps: | |
- name: Checkout and compile dependencies | |
id: prepare | |
uses: surgeventures/platform-tribe-actions/elixir/precompile@main | |
with: | |
repository: ${{ env.REPOSITORY }} | |
dependency-file: ${{ env.DEPENDENCY_FILE }} | |
sha: ${{ env.SHA }} | |
token: ${{ secrets.GITHUB_TOKEN }} | |
hex-token: ${{ secrets.HEX_ORGANIZATION_KEY }} | |
mix-env: test | |
relevant-files: ${{ env.RELEVANT_FILES }} | |
elixir-version: ${{ matrix.versions.elixir-version }} | |
otp-version: ${{ matrix.versions.otp-version }} | |
runner-os: ${{ matrix.versions.runner-os }} | |
- name: Compile the application | |
id: compile | |
uses: surgeventures/platform-tribe-actions/elixir/compile@main | |
with: | |
build-hash: ${{ steps.prepare.outputs.HASH }} | |
mix-env: test | |
elixir-version: ${{ matrix.versions.elixir-version }} | |
otp-version: ${{ matrix.versions.otp-version }} | |
- name: Run Unit Tests | |
uses: surgeventures/platform-tribe-actions/elixir/test@main | |
id: test | |
permit: | |
name: Permit Package Publishing | |
needs: [static, test] | |
runs-on: runs-on,runner=1cpu-linux-x64 | |
outputs: | |
PUBLISH: ${{ steps.permit.outputs.PUBLISH }} | |
steps: | |
- name: Verify elibility for publishing the package | |
uses: surgeventures/platform-tribe-actions/elixir/permit@main | |
id: permit | |
with: | |
repository: ${{ env.REPOSITORY }} | |
sha: ${{ env.SHA }} | |
relevant-files: ${{ env.RELEVANT_FILES}} | |
publish: | |
name: Publish Hex Package | |
needs: [permit] | |
runs-on: runs-on,runner=2cpu-linux-x64 | |
if: needs.permit.outputs.PUBLISH == 'true' && github.event_name == 'push' | |
steps: | |
- name: Publish Package | |
uses: surgeventures/platform-tribe-actions/elixir/publish@main | |
with: | |
repository: ${{ env.REPOSITORY }} | |
sha: ${{ env.SHA }} | |
token: ${{ secrets.GITHUB_TOKEN }} | |
hex-token: ${{ secrets.HEX_ORGANIZATION_WRITE_KEY }} | |
elixir-version: ${{ env.ELIXIR_VERSION }} | |
otp-version: ${{ env.OTP_VERSION }} | |
runner-os: ${{ env.RUNNER_OS }} |