deps(elixir): bump phoenix from 1.8.1 to 1.8.3 in /apps/query-service #74
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: CI | |
| on: | |
| push: | |
| branches: [main, develop] | |
| pull_request: | |
| branches: [main, develop] | |
| workflow_dispatch: | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.ref }} | |
| cancel-in-progress: true | |
| env: | |
| CARGO_TERM_COLOR: always | |
| RUST_BACKTRACE: 1 | |
| FORCE_COLOR: 1 | |
| jobs: | |
| # ============================================================================ | |
| # Version Consistency Check | |
| # ============================================================================ | |
| version-check: | |
| name: Version Consistency | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Check version consistency | |
| run: | | |
| chmod +x scripts/check-versions.sh | |
| ./scripts/check-versions.sh | |
| # ============================================================================ | |
| # Change Detection - Determine which services need to be tested | |
| # ============================================================================ | |
| changes: | |
| name: Detect Changes | |
| runs-on: ubuntu-latest | |
| outputs: | |
| rust: ${{ steps.filter.outputs.rust }} | |
| go: ${{ steps.filter.outputs.go }} | |
| web: ${{ steps.filter.outputs.web }} | |
| elixir: ${{ steps.filter.outputs.elixir }} | |
| mcp: ${{ steps.filter.outputs.mcp }} | |
| workflows: ${{ steps.filter.outputs.workflows }} | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: dorny/paths-filter@v3 | |
| id: filter | |
| with: | |
| filters: | | |
| rust: | |
| - 'apps/core/**' | |
| - 'Cargo.lock' | |
| go: | |
| - 'apps/control-plane/**' | |
| web: | |
| - 'apps/web/**' | |
| - 'packages/ui/**' | |
| - 'package.json' | |
| - 'bun.lock' | |
| elixir: | |
| - 'apps/query-service/**' | |
| mcp: | |
| - 'apps/mcp-server-elixir/**' | |
| workflows: | |
| - '.github/workflows/**' | |
| # ============================================================================ | |
| # Rust Quality Gates (Core Service) | |
| # ============================================================================ | |
| rust-quality: | |
| name: Rust Quality Gates | |
| needs: changes | |
| if: needs.changes.outputs.rust == 'true' || needs.changes.outputs.workflows == 'true' | |
| runs-on: ubuntu-latest | |
| defaults: | |
| run: | |
| working-directory: apps/core | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Install Rust toolchain | |
| uses: dtolnay/rust-toolchain@nightly | |
| with: | |
| components: rustfmt, clippy | |
| - name: Cache Rust dependencies | |
| uses: Swatinem/rust-cache@v2 | |
| with: | |
| workspaces: "apps/core -> target" | |
| cache-on-failure: true | |
| - name: Install cargo-sort | |
| uses: taiki-e/install-action@v2 | |
| with: | |
| tool: cargo-sort | |
| - name: Check formatting | |
| run: cargo fmt --check | |
| - name: Check Cargo.toml sorting | |
| run: cargo sort --check | |
| - name: Run Clippy | |
| run: cargo clippy --locked --all-targets --all-features -- -D warnings | |
| - name: Run tests | |
| run: cargo test --locked --lib --all-features | |
| - name: Build release | |
| run: cargo build --locked --lib --release | |
| - name: Check documentation | |
| run: cargo doc --no-deps --document-private-items | |
| env: | |
| RUSTDOCFLAGS: "-D warnings" | |
| # ============================================================================ | |
| # Go Quality Gates (Control Plane) | |
| # ============================================================================ | |
| go-quality: | |
| name: Go Quality Gates | |
| needs: changes | |
| if: needs.changes.outputs.go == 'true' || needs.changes.outputs.workflows == 'true' | |
| runs-on: ubuntu-latest | |
| defaults: | |
| run: | |
| working-directory: apps/control-plane | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Set up Go | |
| uses: actions/setup-go@v5 | |
| with: | |
| go-version: "1.22" | |
| cache-dependency-path: apps/control-plane/go.sum | |
| - name: Download dependencies | |
| run: go mod download | |
| - name: Verify dependencies | |
| run: go mod verify | |
| - name: Check formatting | |
| run: | | |
| if [ -n "$(gofmt -l .)" ]; then | |
| echo "Go code is not formatted:" | |
| gofmt -d . | |
| exit 1 | |
| fi | |
| - name: Run go vet | |
| run: go vet ./... | |
| - name: Install staticcheck | |
| run: go install honnef.co/go/tools/cmd/staticcheck@latest | |
| - name: Run staticcheck | |
| run: staticcheck ./... | |
| - name: Run golangci-lint | |
| uses: golangci/golangci-lint-action@v7 | |
| with: | |
| version: v2.1.6 | |
| working-directory: apps/control-plane | |
| args: --timeout=5m | |
| - name: Run tests | |
| run: go test -v -race -coverprofile=coverage.out -covermode=atomic ./... | |
| - name: Upload coverage | |
| uses: codecov/codecov-action@v4 | |
| if: github.event_name != 'pull_request' | |
| with: | |
| files: apps/control-plane/coverage.out | |
| flags: control-plane | |
| fail_ci_if_error: false | |
| - name: Build binary | |
| run: CGO_ENABLED=0 go build -ldflags="-s -w" -o control-plane . | |
| # ============================================================================ | |
| # Elixir Quality Gates (Query Service) | |
| # ============================================================================ | |
| elixir-query-quality: | |
| name: Elixir Query Service Quality Gates | |
| needs: changes | |
| if: needs.changes.outputs.elixir == 'true' || needs.changes.outputs.workflows == 'true' | |
| runs-on: ubuntu-latest | |
| defaults: | |
| run: | |
| working-directory: apps/query-service | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Set up Elixir | |
| uses: erlef/setup-beam@v1 | |
| with: | |
| elixir-version: "1.17" | |
| otp-version: "27" | |
| - name: Cache deps | |
| uses: actions/cache@v4 | |
| with: | |
| path: | | |
| apps/query-service/deps | |
| apps/query-service/_build | |
| key: elixir-query-${{ runner.os }}-${{ hashFiles('apps/query-service/mix.lock') }} | |
| restore-keys: | | |
| elixir-query-${{ runner.os }}- | |
| - name: Install dependencies | |
| run: mix deps.get | |
| - name: Check formatting | |
| run: mix format --check-formatted | |
| - name: Compile with warnings as errors | |
| run: mix compile --warnings-as-errors | |
| - name: Run Credo (static analysis) | |
| run: mix credo --strict || true | |
| - name: Run tests | |
| run: mix test | |
| # ============================================================================ | |
| # Summary Gate - All Quality Checks Must Pass | |
| # ============================================================================ | |
| quality-gate: | |
| name: Quality Gate | |
| runs-on: ubuntu-latest | |
| needs: | |
| - version-check | |
| - changes | |
| - rust-quality | |
| - go-quality | |
| - elixir-query-quality | |
| if: always() | |
| steps: | |
| - name: Check quality gates | |
| run: | | |
| echo "## Quality Gate Summary" >> $GITHUB_STEP_SUMMARY | |
| echo "" >> $GITHUB_STEP_SUMMARY | |
| # Check each job result | |
| FAILED=false | |
| check_job() { | |
| local name=$1 | |
| local result=$2 | |
| local required=$3 | |
| if [ "$required" == "false" ]; then | |
| echo "- ⏭️ **$name**: Skipped (no changes)" >> $GITHUB_STEP_SUMMARY | |
| elif [ "$result" == "success" ]; then | |
| echo "- ✅ **$name**: Passed" >> $GITHUB_STEP_SUMMARY | |
| elif [ "$result" == "skipped" ]; then | |
| echo "- ⏭️ **$name**: Skipped" >> $GITHUB_STEP_SUMMARY | |
| else | |
| echo "- ❌ **$name**: Failed" >> $GITHUB_STEP_SUMMARY | |
| FAILED=true | |
| fi | |
| } | |
| check_job "Version Check" "${{ needs.version-check.result }}" "true" | |
| check_job "Rust Quality" "${{ needs.rust-quality.result }}" "${{ needs.changes.outputs.rust == 'true' || needs.changes.outputs.workflows == 'true' }}" | |
| check_job "Go Quality" "${{ needs.go-quality.result }}" "${{ needs.changes.outputs.go == 'true' || needs.changes.outputs.workflows == 'true' }}" | |
| check_job "Elixir Query" "${{ needs.elixir-query-quality.result }}" "${{ needs.changes.outputs.elixir == 'true' || needs.changes.outputs.workflows == 'true' }}" | |
| echo "" >> $GITHUB_STEP_SUMMARY | |
| if [ "$FAILED" == "true" ]; then | |
| echo "### ❌ Quality Gate Failed" >> $GITHUB_STEP_SUMMARY | |
| exit 1 | |
| else | |
| echo "### ✅ All Quality Gates Passed" >> $GITHUB_STEP_SUMMARY | |
| fi |