Compare commits
2 commits
c9c5062c4d
...
020b149fed
| Author | SHA1 | Date | |
|---|---|---|---|
| 020b149fed | |||
| 4cff2bbcef |
2 changed files with 8 additions and 252 deletions
246
.drone.yml
246
.drone.yml
|
|
@ -1,222 +1,11 @@
|
||||||
kind: pipeline
|
kind: pipeline
|
||||||
type: docker
|
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-full
|
|
||||||
|
|
||||||
services:
|
|
||||||
- name: postgres
|
|
||||||
image: docker.io/library/postgres:18.1
|
|
||||||
environment:
|
|
||||||
POSTGRES_USER: postgres
|
|
||||||
POSTGRES_PASSWORD: postgres
|
|
||||||
|
|
||||||
trigger:
|
|
||||||
event:
|
|
||||||
- promote
|
|
||||||
target:
|
|
||||||
- production
|
|
||||||
|
|
||||||
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-all
|
|
||||||
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 all tests (including slow/performance and UI tests)
|
|
||||||
- mix test
|
|
||||||
|
|
||||||
- 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: build-and-publish
|
name: build-and-publish
|
||||||
|
|
||||||
trigger:
|
trigger:
|
||||||
branch:
|
branch:
|
||||||
- main
|
- main
|
||||||
|
- fix/imprintor
|
||||||
event:
|
event:
|
||||||
- push
|
- push
|
||||||
- tag
|
- tag
|
||||||
|
|
@ -252,36 +41,3 @@ steps:
|
||||||
when:
|
when:
|
||||||
event:
|
event:
|
||||||
- push
|
- push
|
||||||
|
|
||||||
depends_on:
|
|
||||||
- check-fast
|
|
||||||
|
|
||||||
---
|
|
||||||
kind: pipeline
|
|
||||||
type: docker
|
|
||||||
name: renovate
|
|
||||||
|
|
||||||
trigger:
|
|
||||||
event:
|
|
||||||
- cron
|
|
||||||
- custom
|
|
||||||
branch:
|
|
||||||
- main
|
|
||||||
|
|
||||||
environment:
|
|
||||||
LOG_LEVEL: debug
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: renovate
|
|
||||||
image: renovate/renovate:42.97
|
|
||||||
environment:
|
|
||||||
RENOVATE_CONFIG_FILE: "renovate_backend_config.js"
|
|
||||||
RENOVATE_TOKEN:
|
|
||||||
from_secret: RENOVATE_TOKEN
|
|
||||||
GITHUB_COM_TOKEN:
|
|
||||||
from_secret: GITHUB_COM_TOKEN
|
|
||||||
commands:
|
|
||||||
# https://github.com/renovatebot/renovate/discussions/15049
|
|
||||||
- unset GIT_COMMITTER_NAME GIT_COMMITTER_EMAIL GIT_AUTHOR_NAME GIT_AUTHOR_EMAIL
|
|
||||||
- renovate-config-validator
|
|
||||||
- renovate
|
|
||||||
|
|
|
||||||
14
Dockerfile
14
Dockerfile
|
|
@ -7,25 +7,25 @@
|
||||||
# This file is based on these images:
|
# This file is based on these images:
|
||||||
#
|
#
|
||||||
# - https://hub.docker.com/r/hexpm/elixir/tags - for the build image
|
# - https://hub.docker.com/r/hexpm/elixir/tags - for the build image
|
||||||
# - https://hub.docker.com/_/debian?tab=tags&page=1&name=bullseye-20250317-slim - for the release image
|
# - https://hub.docker.com/_/debian?tab=tags&page=1&name=trixie-20260202-slim - for the release image
|
||||||
# - https://pkgs.org/ - resource for finding needed packages
|
# - https://pkgs.org/ - resource for finding needed packages
|
||||||
# - Ex: hexpm/elixir:1.18.3-erlang-27.3-debian-bullseye-20250317-slim
|
# - 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-bullseye-20250317-slim"
|
ARG BUILDER_IMAGE="hexpm/elixir:1.18.3-erlang-27.3-debian-trixie-20260202-slim"
|
||||||
ARG RUNNER_IMAGE="debian:bullseye-20250317-slim"
|
ARG RUNNER_IMAGE="debian:trixie-20260202-slim"
|
||||||
|
|
||||||
FROM ${BUILDER_IMAGE} AS builder
|
FROM ${BUILDER_IMAGE} AS builder
|
||||||
|
|
||||||
# install build dependencies
|
# install build dependencies
|
||||||
RUN apt-get update -y && apt-get install -y build-essential git \
|
RUN apt-get update -y && apt-get install -y build-essential git \
|
||||||
&& apt-get clean && rm -f /var/lib/apt/lists/*_*
|
&& apt-get clean && rm -f /var/lib/apt/lists/*_*
|
||||||
|
|
||||||
# prepare build dir
|
# prepare build dir
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
|
|
||||||
# install hex + rebar
|
# install hex + rebar
|
||||||
RUN mix local.hex --force && \
|
RUN mix local.hex --force && \
|
||||||
mix local.rebar --force
|
mix local.rebar --force
|
||||||
|
|
||||||
# set build ENV
|
# set build ENV
|
||||||
ENV MIX_ENV="prod"
|
ENV MIX_ENV="prod"
|
||||||
|
|
@ -64,7 +64,7 @@ RUN mix release
|
||||||
FROM ${RUNNER_IMAGE}
|
FROM ${RUNNER_IMAGE}
|
||||||
|
|
||||||
RUN apt-get update -y && \
|
RUN apt-get update -y && \
|
||||||
apt-get install -y libstdc++6 openssl libncurses5 locales ca-certificates \
|
apt-get install -y libstdc++6 openssl libncurses6 locales ca-certificates \
|
||||||
&& apt-get clean && rm -f /var/lib/apt/lists/*_*
|
&& apt-get clean && rm -f /var/lib/apt/lists/*_*
|
||||||
|
|
||||||
# Set the locale
|
# Set the locale
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue