diff --git a/.drone.yml b/.drone.yml index 483a08a..f80a718 100644 --- a/.drone.yml +++ b/.drone.yml @@ -14,93 +14,48 @@ trigger: - push steps: - - name: compute cache key + - name: setup 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 + - mix local.hex --force + - mix local.rebar --force + - mix deps.get - - name: restore-cache - image: drillster/drone-volume-cache - settings: - restore: true - mount: - - ./deps - - ./_build - ttl: 30 - volumes: - - name: cache - path: /cache + - name: build + image: docker.io/library/elixir:1.18.3-otp-27 + depends_on: + - setup + commands: + - mix local.hex --force + - mix local.rebar --force + - mix compile --warnings-as-errors - name: lint image: docker.io/library/elixir:1.18.3-otp-27 + depends_on: + - build 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 local.rebar --force - 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: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 image: docker.io/library/elixir:1.18.3-otp-27 + depends_on: + - setup 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 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 + - mix local.rebar --force + - mix test --max-cases 16 --- kind: pipeline