Skip to content

Work pages

Work pages #173

Workflow file for this run

name: CI
on:
push:
branches: [main]
pull_request:
branches: [main]
env:
MIX_ENV: test
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
jobs:
deps:
name: Dependencies
runs-on: ubuntu-latest
strategy:
matrix:
elixir: [1.14.5]
otp: [25]
steps:
- name: Cancel Previous Runs
uses: styfle/[email protected]
with:
access_token: ${{ github.token }}
- name: Checkout
uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Setup
uses: erlef/setup-beam@v1
with:
elixir-version: ${{ matrix.elixir }}
otp-version: ${{ matrix.otp }}
# - name: Authorize Oban
# run: |
# mix hex.repo add oban https://getoban.pro/repo \
# --fetch-public-key ${{secrets.OBAN_KEY_FINGERPRINT}} \
# --auth-key ${{secrets.OBAN_LICENSE_KEY}}
- name: Retrieve Cached Dependencies
uses: actions/cache@v2
id: mix-cache
with:
path: |
deps
_build
priv/plts
key: ${{ runner.os }}-${{ matrix.otp }}-${{ matrix.elixir }}-${{ hashFiles('mix.lock') }}
- name: Install Dependencies
if: steps.mix-cache.outputs.cache-hit != 'true'
run: |
mkdir -p priv/plts
mix local.rebar --force
mix local.hex --force
mix deps.get
mix deps.compile
mix dialyzer --plt
static_code_analysis:
name: Static Code Analysis
needs: deps
runs-on: ubuntu-latest
strategy:
matrix:
elixir: [1.14.5]
otp: [25]
steps:
- name: Cancel Previous Runs
uses: styfle/[email protected]
with:
access_token: ${{ github.token }}
- name: Checkout
uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Setup
uses: erlef/setup-beam@v1
with:
elixir-version: ${{ matrix.elixir }}
otp-version: ${{ matrix.otp }}
- name: Retrieve Cached Dependencies
uses: actions/cache@v2
id: mix-cache
with:
path: |
deps
_build
priv/plts
key: ${{ runner.os }}-${{ matrix.otp }}-${{ matrix.elixir }}-${{ hashFiles('mix.lock') }}
- name: Check Code Format
run: mix format --check-formatted
- name: Run Credo
run: mix credo
# This thing is too slow and too flaky. Maybe some day.
# - name: Run Dialyzer
# run: mix dialyzer --no-check
unit_tests:
name: Unit Tests
needs: deps
runs-on: ubuntu-latest
services:
postgres:
image: postgres:13
env:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
POSTGRES_DB: banchan_test
ports:
- 5432:5432
options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5
strategy:
fail-fast: false
matrix:
elixir: [1.14.5]
otp: [25]
steps:
- name: Cancel Previous Runs
uses: styfle/[email protected]
with:
access_token: ${{ github.token }}
- name: Checkout
uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Setup
uses: erlef/setup-beam@v1
with:
elixir-version: ${{ matrix.elixir }}
otp-version: ${{ matrix.otp }}
- name: Retrieve Cached Dependencies
uses: actions/cache@v2
id: mix-cache
with:
path: |
deps
_build
priv/plts
key: ${{ runner.os }}-${{ matrix.otp }}-${{ matrix.elixir }}-${{ hashFiles('mix.lock') }}
- name: Install FFmpeg
uses: FedericoCarboni/setup-ffmpeg@v3
- name: Run test
run: mix coveralls.github --trace --slowest 10
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
get_current_tag:
name: Get Current Tag
runs-on: ubuntu-latest
outputs:
tag: ${{ steps.get_tag.outputs.tag }}
steps:
- name: Checkout
uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Get Tag
id: get_tag
run: echo "tag=$(git tag --points-at HEAD | head -n 1)" >> "$GITHUB_OUTPUT"
publish:
name: Publish release
runs-on: ubuntu-latest
needs: [unit_tests, static_code_analysis, get_current_tag]
if: needs.get_current_tag.outputs.tag != ''
permissions:
contents: write
steps:
- name: Checkout
uses: actions/checkout@v3
with:
ref: refs/tags/${{ needs.get_current_tag.outputs.tag }}
- name: Publish release
uses: ghalactic/github-release-from-tag@v5
with:
token: ${{ secrets.RELEASE_PAT }}