kind: pipeline type: docker name: default services: - name: postgres image: docker.io/library/postgres:17.2 environment: POSTGRES_USER: postgres POSTGRES_PASSWORD: postgres trigger: event: - push steps: - name: check 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 - name: wait_for_postgres image: docker.io/library/postgres:17.2 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 environment: MIX_ENV: test TEST_POSTGRES_HOST: postgres commands: # Install hex package manager - mix local.hex --force # Fetch dependencies - mix deps.get # Run tests - mix test