Move redact_ex to GHA #6
Workflow file for this run
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: CI | |
on: | |
push: | |
branches: | |
- master | |
pull_request: | |
branches: | |
- master | |
jobs: | |
test: | |
# runs-on: [self-hosted, k8s-medium] | |
runs-on: ubuntu-latest | |
env: | |
MIX_ENV: test | |
strategy: | |
# Specify the OTP and Elixir versions to use when building | |
# and running the workflow steps. | |
matrix: | |
otp: ['25.0.4'] # Define the OTP version [required] | |
elixir: ['1.14.3'] # Define the elixir version [required] | |
steps: | |
# Check out the code. | |
- name: Checkout | |
uses: actions/checkout@v3 | |
# Define how to cache deps. Restores existing cache if present. | |
- name: Cache deps | |
id: cache-deps | |
uses: actions/cache@v3 | |
env: | |
cache-name: cache-elixir-deps | |
with: | |
path: deps | |
key: ${{ runner.os }}-mix-${{ env.cache-name }}-${{ hashFiles('**/mix.lock') }} | |
restore-keys: | | |
${{ runner.os }}-mix-${{ env.cache-name }}- | |
- name: Setup Elixir | |
uses: erlef/setup-beam@v1 | |
with: | |
otp-version: ${{matrix.otp}} | |
elixir-version: ${{matrix.elixir}} | |
# Define how to cache the `_build` directory. After the first run, | |
# this speeds up tests runs a lot. This includes not re-compiling our | |
# project's downloaded deps every run. | |
- name: Cache compiled build | |
id: cache-build | |
uses: actions/cache@v3 | |
env: | |
cache-name: cache-compiled-build | |
with: | |
path: _build | |
key: ${{ runner.os }}-mix-${{ env.cache-name }}-${{ hashFiles('**/mix.lock') }} | |
restore-keys: | | |
${{ runner.os }}-mix-${{ env.cache-name }}- | |
${{ runner.os }}-mix- | |
# Get dependencies | |
- name: Deps get | |
run: mix deps.get | |
- name: Dependencies Check | |
run: mix deps.unlock --check-unused | |
# Experimental: compile without warnings (throw it away if macro magic creates problems) | |
- name: Compiles without warnings | |
run: mix compile --warnings-as-errors | |
# Check Format | |
- name: Check Formatting | |
run: mix format --check-formatted | |
- name: Credo | |
run: mix credo -a --strict | |
- name: Test | |
run: mix test | |
- name: Dialyzer | |
run: mix dialyzer | |
publish: | |
name: Publish to hex.pm | |
needs: test | |
if: github.ref_type == 'tag' | |
runs-on: ubuntu-latest | |
steps: | |
- name: Setup Elixir | |
uses: erlef/setup-beam@v1 | |
# TODO optimize here to be in sync with the matrix above? | |
with: | |
otp-version: 25.0.4 | |
elixir-version: 1.14.3 | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: setup hex | |
run: | | |
mix mix local.hex --force | |
mix local.rebar --force | |
- name: get deps | |
run: mix deps.get | |
- name: get tag | |
run: | | |
REDACT_EX_VERSION_REPO=$(grep -m1 version mix.exs | cut -d'"' -f2) | |
echo "REDACT_EX_VERSION_REPO=$REDACT_EX_VERSION_REPO" >> $GITHUB_ENV | |
- name: check tags | |
if: github.ref_tag != ${{ env.REDACT_EX_VERSION_REPO }} | |
run: | | |
echo "Github ref tag [${{ github.ref_tag }}] is different from mix.exs version [${{ env.REDACT_EX_VERSION_REPO }}]" | |
exit 1 | |
- name: Login to hex.pm | |
run: | | |
mix hex.config api_key "$HEX_AUTH_KEY" | |
env: | |
HEX_AUTH_KEY: ${{ secrets.HEX_AUTH_KEY }} | |
- name: Publish | |
run: mix hex.publish --yes | |
alls-green: | |
if: always() | |
needs: | |
- test | |
- publish | |
# runs-on: [self-hosted, k8s-small] | |
runs-on: ubuntu-latest | |
container: | |
image: public.ecr.aws/prima/python:3.9.10-3 | |
steps: | |
- name: Decide whether the needed jobs succeeded or failed | |
uses: re-actors/alls-green@release/v1 | |
with: | |
jobs: ${{ toJSON(needs) }} |