name: ci
on:
push:
branches: [master]
tags: ["v*"]
pull_request:
jobs:
test:
# Self-hosted ARC runners (same as ../angler). Swap for `ubuntu-latest`
# if you'd rather use GitHub-hosted runners. The Postgres service container
# requires the runner to support service containers (Docker/dind).
runs-on: arc-runner-set
env:
MIX_ENV: test
# Cap the test DB pool below the Postgres service's default
# max_connections (100); big CI runners otherwise scale pool to cores×2
# and exhaust connections.
POOL_SIZE: "40"
services:
postgres:
image: docker.io/postgres:16-alpine
env:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
ports:
- 5432:5432
options: >-
--health-cmd "pg_isready -U postgres"
--health-interval 5s
--health-timeout 3s
--health-retries 5
steps:
- uses: actions/checkout@v4
# ARC's default runner image is bare; install the toolchain needed to
# compile native deps.
- run: sudo apt-get update && sudo apt-get install -y --no-install-recommends make build-essential
- uses: erlef/setup-beam@v1
with:
# Match the build image in the Dockerfile.
elixir-version: "1.17.3"
otp-version: "27.2"
- uses: actions/cache@v4
with:
path: |
deps
_build
key: ${{ runner.os }}-mix-${{ hashFiles('**/mix.lock') }}
restore-keys: ${{ runner.os }}-mix-
- run: mix deps.get
# `mix precommit` = compile --warnings-as-errors, deps.unlock --unused,
# format, test (which creates + migrates the test DB).
- run: mix precommit
image:
needs: test
runs-on: arc-runner-set
permissions:
contents: read
packages: write
steps:
- uses: actions/checkout@v4
- uses: docker/setup-buildx-action@v3
# GHCR uses the built-in token. Docker Hub and Quay creds come from
# org-wide secrets (DOCKERHUB_USER/DOCKERHUB_TOKEN, QUAY_USERNAME/QUAY_TOKEN).
- name: Log in to GHCR
if: github.event_name != 'pull_request'
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Log in to Docker Hub
if: github.event_name != 'pull_request'
uses: docker/login-action@v3
with:
registry: docker.io
username: ${{ secrets.DOCKERHUB_USER }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Log in to Quay
if: github.event_name != 'pull_request'
uses: docker/login-action@v3
with:
registry: quay.io
username: ${{ secrets.QUAY_USERNAME }}
password: ${{ secrets.QUAY_TOKEN }}
- id: meta
uses: docker/metadata-action@v5
with:
images: |
ghcr.io/${{ github.repository }}
docker.io/neiam/diogramos
quay.io/neiam/diogramos
tags: |
type=ref,event=branch
type=ref,event=pr
type=semver,pattern={{version}}
type=semver,pattern={{major}}.{{minor}}
type=sha
type=raw,value=latest,enable={{is_default_branch}}
- uses: docker/build-push-action@v6
with:
context: .
platforms: linux/amd64
push: ${{ github.event_name != 'pull_request' }}
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
cache-from: type=gha
cache-to: type=gha,mode=max
neiam
/diogramos
diogramos
public · Issues · Pulls · Labels · Forks · Compare · Actions success · Badges · Packages
⭐
Log in to mark this repository.
3.6 KiB · text
History
106a19e