WIP: speed-up drone #272

Draft
simon wants to merge 4 commits from speed-up-drone into main

View file

@ -14,93 +14,48 @@ trigger:
- push - push
steps: steps:
- name: compute cache key - name: setup
image: docker.io/library/elixir:1.18.3-otp-27 image: docker.io/library/elixir:1.18.3-otp-27
commands: commands:
- mix_lock_hash=$(sha256sum mix.lock | cut -d ' ' -f 1) - mix local.hex --force
- echo "$DRONE_REPO_OWNER/$DRONE_REPO_NAME/$mix_lock_hash" >> .cache_key - mix local.rebar --force
# Print cache key for debugging - mix deps.get
- cat .cache_key
- name: restore-cache - name: build
image: drillster/drone-volume-cache image: docker.io/library/elixir:1.18.3-otp-27
settings: depends_on:
restore: true - setup
mount: commands:
- ./deps - mix local.hex --force
- ./_build - mix local.rebar --force
ttl: 30 - mix compile --warnings-as-errors
volumes:
- name: cache
path: /cache
- name: lint - name: lint
image: docker.io/library/elixir:1.18.3-otp-27 image: docker.io/library/elixir:1.18.3-otp-27
depends_on:
- build
commands: commands:
# Install hex package manager
- mix local.hex --force - mix local.hex --force
# Fetch dependencies - mix local.rebar --force
- mix deps.get
# Check for compilation errors & warnings
- mix compile --warnings-as-errors
# Check formatting
- mix format --check-formatted - mix format --check-formatted
# Security checks
- mix sobelow --config - mix sobelow --config
# Check dependencies for known vulnerabilities
- mix deps.audit - mix deps.audit
# Check for dependencies that are not maintained anymore
- mix hex.audit - mix hex.audit
# Provide hints for improving code quality
- mix credo - mix credo
# Check that translations are up to date
- mix gettext.extract --check-up-to-date - mix gettext.extract --check-up-to-date
- name: wait_for_postgres
image: docker.io/library/postgres:17.6
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 - name: test
image: docker.io/library/elixir:1.18.3-otp-27 image: docker.io/library/elixir:1.18.3-otp-27
depends_on:
- setup
environment: environment:
MIX_ENV: test MIX_ENV: test
TEST_POSTGRES_HOST: postgres TEST_POSTGRES_HOST: postgres
TEST_POSTGRES_PORT: 5432 TEST_POSTGRES_PORT: 5432
commands: commands:
# Install hex package manager
- mix local.hex --force - mix local.hex --force
# Fetch dependencies - mix local.rebar --force
- mix deps.get - mix test --max-cases 16
# Run 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 kind: pipeline