diff --git a/.drone.yml b/.drone.yml index 35f10ed..ad02fba 100644 --- a/.drone.yml +++ b/.drone.yml @@ -1,107 +1,107 @@ -# kind: pipeline -# type: docker -# name: check-fast -# -# services: -# - name: postgres -# image: docker.io/library/postgres:18.1 -# environment: -# POSTGRES_USER: postgres -# POSTGRES_PASSWORD: postgres -# -# #trigger: -# # event: -# # - push -# -# steps: -# - name: compute cache key -# image: docker.io/library/elixir:1.18.3-otp-27 -# commands: -# - mix_lock_hash=$(sha256sum mix.lock | cut -d ' ' -f 1) -# - echo "$DRONE_REPO_OWNER/$DRONE_REPO_NAME/$mix_lock_hash" >> .cache_key -# # Print cache key for debugging -# - cat .cache_key -# -# - name: restore-cache -# image: drillster/drone-volume-cache -# settings: -# restore: true -# mount: -# - ./deps -# - ./_build -# ttl: 30 -# volumes: -# - name: cache -# path: /cache -# -# - name: lint -# image: docker.io/library/elixir:1.18.3-otp-27 -# commands: -# # Install hex package manager -# - mix local.hex --force -# # Fetch dependencies -# - mix deps.get -# # Check for compilation errors & warnings -# - mix compile --warnings-as-errors -# # Check formatting -# - mix format --check-formatted -# # Security checks -# - mix sobelow --config -# # Check dependencies for known vulnerabilities -# - mix deps.audit -# # Check for dependencies that are not maintained anymore -# - mix hex.audit -# # Provide hints for improving code quality -# - mix credo -# # Check that translations are up to date -# - mix gettext.extract --check-up-to-date -# -# - name: wait_for_postgres -# image: docker.io/library/postgres:18.1 -# commands: -# # Wait for postgres to become available -# - | -# for i in {1..20}; do -# if pg_isready -h postgres -U postgres; then -# exit 0 -# else -# true -# fi -# sleep 2 -# done -# echo "Postgres did not become available, aborting." -# exit 1 -# -# - name: test-fast -# image: docker.io/library/elixir:1.18.3-otp-27 -# environment: -# MIX_ENV: test -# TEST_POSTGRES_HOST: postgres -# TEST_POSTGRES_PORT: 5432 -# commands: -# # Install hex package manager -# - mix local.hex --force -# # Fetch dependencies -# - mix deps.get -# # Run fast tests (excludes slow/performance and UI tests) -# - mix test --exclude slow --exclude ui --max-cases 2 -# -# - name: rebuild-cache -# image: drillster/drone-volume-cache -# settings: -# rebuild: true -# mount: -# - ./deps -# - ./_build -# volumes: -# - name: cache -# path: /cache -# -# volumes: -# - name: cache -# host: -# path: /tmp/drone_cache -# +kind: pipeline +type: docker +name: check-fast + +services: + - name: postgres + image: docker.io/library/postgres:18.1 + environment: + POSTGRES_USER: postgres + POSTGRES_PASSWORD: postgres + +#trigger: +# event: +# - push + +steps: + - name: compute cache key + image: docker.io/library/elixir:1.18.3-otp-27 + commands: + - mix_lock_hash=$(sha256sum mix.lock | cut -d ' ' -f 1) + - echo "$DRONE_REPO_OWNER/$DRONE_REPO_NAME/$mix_lock_hash" >> .cache_key + # Print cache key for debugging + - cat .cache_key + + - name: restore-cache + image: drillster/drone-volume-cache + settings: + restore: true + mount: + - ./deps + - ./_build + ttl: 30 + volumes: + - name: cache + path: /cache + + - name: lint + image: docker.io/library/elixir:1.18.3-otp-27 + commands: + # Install hex package manager + - mix local.hex --force + # Fetch dependencies + - mix deps.get + # Check for compilation errors & warnings + - mix compile --warnings-as-errors + # Check formatting + - mix format --check-formatted + # Security checks + - mix sobelow --config + # Check dependencies for known vulnerabilities + - mix deps.audit + # Check for dependencies that are not maintained anymore + - mix hex.audit + # Provide hints for improving code quality + - mix credo + # Check that translations are up to date + - mix gettext.extract --check-up-to-date + + - name: wait_for_postgres + image: docker.io/library/postgres:18.1 + commands: + # Wait for postgres to become available + - | + for i in {1..20}; do + if pg_isready -h postgres -U postgres; then + exit 0 + else + true + fi + sleep 2 + done + echo "Postgres did not become available, aborting." + exit 1 + + - name: test-fast + image: docker.io/library/elixir:1.18.3-otp-27 + environment: + MIX_ENV: test + TEST_POSTGRES_HOST: postgres + TEST_POSTGRES_PORT: 5432 + commands: + # Install hex package manager + - mix local.hex --force + # Fetch dependencies + - mix deps.get + # Run fast tests (excludes slow/performance and UI tests) + - mix test --exclude slow --exclude ui --max-cases 2 + + - name: rebuild-cache + image: drillster/drone-volume-cache + settings: + rebuild: true + mount: + - ./deps + - ./_build + volumes: + - name: cache + path: /cache + +volumes: + - name: cache + host: + path: /tmp/drone_cache + # --- # kind: pipeline # type: docker diff --git a/Dockerfile b/Dockerfile index 80757de..c58685d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -11,7 +11,7 @@ # - https://pkgs.org/ - resource for finding needed packages # - Ex: hexpm/elixir:1.18.3-erlang-27.3-debian-trixie-20260202-slim # -ARG BUILDER_IMAGE="hexpm/elixir:1.18.3-erlang-27.3-debian-trixie-20260202-slim" +ARG BUILDER_IMAGE="hexpm/elixir:1.18.3-erlang-27.3-debian-trixie-20260202-slim ARG RUNNER_IMAGE="debian:trixie-20260202-slim" FROM ${BUILDER_IMAGE} AS builder