Skip to content

Feature/mvp

Feature/mvp #74

Workflow file for this run

name: CI / PR Validation
on:
pull_request:
branches: [ main ]
push:
branches: [ main ]
permissions:
contents: read
issues: write
actions: read
env:
CARGO_TERM_COLOR: always
RUSTFLAGS: "-D warnings"
jobs:
# Job 1: Formatação (Rápido)
fmt:
name: Rustfmt
runs-on: ubuntu-latest
container: rust:latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
with:
components: rustfmt
- run: cargo fmt --all -- --check
# Job 2: Linter (Médio)
clippy:
name: Clippy
runs-on: ubuntu-latest
container: rust:latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
with:
components: clippy
- uses: Swatinem/rust-cache@v2
- run: cargo clippy --all-targets --all-features
# Job 3: Segurança (Rápido)
audit:
name: Security Audit
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: rustsec/audit-check@v2.0.0
with:
token: ${{ secrets.GITHUB_TOKEN }}
# Job 4: Testes (Pesado)
test:
name: Run Tests
runs-on: ubuntu-latest
container: rust:latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
- run: cargo test --all-features --workspace
# Job 5: Build Release e Docs (Pesado)
build_and_docs:
name: Build and Docs
runs-on: ubuntu-latest
container: rust:latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
- run: cargo build --release
- run: cargo doc --no-deps --all-features
report-status:
if: always()
needs: [fmt, clippy, audit, test, build_and_docs]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Report job status
uses: ./.github/actions/ci-issue-manager
with:
workflow_name: "CI / PR Validation"
job_results: ${{ toJSON(needs) }}
repo_token: ${{ secrets.GITHUB_TOKEN }}
repository: ${{ github.repository }}
server_url: ${{ github.server_url }}
run_id: ${{ github.run_id }}
ref_name: ${{ github.ref_name }}
sha: ${{ github.sha }}