Skip to content

docs(plan): record grouped broker validation trigger #211

docs(plan): record grouped broker validation trigger

docs(plan): record grouped broker validation trigger #211

Workflow file for this run

name: Quality Gates
on:
pull_request:
push:
branches:
- main
permissions:
contents: read
env:
CARGO_TERM_COLOR: always
PUMAS_LIBRARY_REF: 66c0c11a57b8bfe8fb70d827efced0fbc442b156
jobs:
lint-no-new:
name: Critical lint and traceability
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install Node toolchain
uses: actions/setup-node@v4
with:
node-version-file: .node-version
cache: npm
- name: Install npm dependencies
run: npm ci --include=optional
- name: Run no-new-debt lint gate
run: npm run lint:no-new
typecheck:
name: TypeScript typecheck
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install Node toolchain
uses: actions/setup-node@v4
with:
node-version-file: .node-version
cache: npm
- name: Install npm dependencies
run: npm ci --include=optional
- name: Run TypeScript typecheck
run: npm run typecheck
frontend-tests:
name: Frontend tests
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install Node toolchain
uses: actions/setup-node@v4
with:
node-version-file: .node-version
cache: npm
- name: Install npm dependencies
run: npm ci --include=optional
- name: Run frontend tests
run: npm run test:frontend
dependency-audit:
name: Dependency audit
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install Node toolchain
uses: actions/setup-node@v4
with:
node-version-file: .node-version
cache: npm
- name: Install npm dependencies
run: npm ci --include=optional
- name: Block high severity production vulnerabilities
run: npm audit --omit=dev --audit-level=high
rust-check:
name: Rust workspace check
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install Ubuntu native desktop dependencies
run: |
sudo apt-get update
sudo apt-get install -y \
build-essential \
libayatana-appindicator3-dev \
libglib2.0-dev \
libgtk-3-dev \
libjavascriptcoregtk-4.1-dev \
librsvg2-dev \
libsoup-3.0-dev \
libssl-dev \
libwebkit2gtk-4.1-dev \
libxdo-dev \
pkg-config
- name: Checkout Pumas-Library
uses: actions/checkout@v4
with:
repository: MrScripty/Pumas-Library
ref: ${{ env.PUMAS_LIBRARY_REF }}
path: pumas-library-src
- name: Link sibling Pumas-Library checkout
run: |
rm -rf "$GITHUB_WORKSPACE/../Pumas-Library"
ln -s "$GITHUB_WORKSPACE/pumas-library-src" "$GITHUB_WORKSPACE/../Pumas-Library"
test -f "$GITHUB_WORKSPACE/../Pumas-Library/rust/crates/pumas-core/Cargo.toml"
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@1.92.0
- name: Cache Cargo
uses: Swatinem/rust-cache@v2
- name: Check workspace without default features
run: cargo check --workspace --no-default-features
- name: Check workspace with all features
run: cargo check --workspace --all-features
rust-tests:
name: Rust focused tests
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Checkout Pumas-Library
uses: actions/checkout@v4
with:
repository: MrScripty/Pumas-Library
ref: ${{ env.PUMAS_LIBRARY_REF }}
path: pumas-library-src
- name: Link sibling Pumas-Library checkout
run: |
rm -rf "$GITHUB_WORKSPACE/../Pumas-Library"
ln -s "$GITHUB_WORKSPACE/pumas-library-src" "$GITHUB_WORKSPACE/../Pumas-Library"
test -f "$GITHUB_WORKSPACE/../Pumas-Library/rust/crates/pumas-core/Cargo.toml"
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@1.92.0
- name: Cache Cargo
uses: Swatinem/rust-cache@v2
- name: Run node-engine tests
run: cargo test -p node-engine --lib
- name: Run workflow-nodes tests
run: cargo test -p workflow-nodes --lib
- name: Run workflow-service contract tests
run: cargo test -p pantograph-workflow-service --test contract
rust-doc-tests:
name: Rust doc tests
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Checkout Pumas-Library
uses: actions/checkout@v4
with:
repository: MrScripty/Pumas-Library
ref: ${{ env.PUMAS_LIBRARY_REF }}
path: pumas-library-src
- name: Link sibling Pumas-Library checkout
run: |
rm -rf "$GITHUB_WORKSPACE/../Pumas-Library"
ln -s "$GITHUB_WORKSPACE/pumas-library-src" "$GITHUB_WORKSPACE/../Pumas-Library"
test -f "$GITHUB_WORKSPACE/../Pumas-Library/rust/crates/pumas-core/Cargo.toml"
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@1.92.0
- name: Cache Cargo
uses: Swatinem/rust-cache@v2
- name: Run workspace doc tests
run: cargo test --workspace --doc --no-default-features
rustler-beam-smoke:
name: Rustler BEAM smoke
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Checkout Pumas-Library
uses: actions/checkout@v4
with:
repository: MrScripty/Pumas-Library
ref: ${{ env.PUMAS_LIBRARY_REF }}
path: pumas-library-src
- name: Link sibling Pumas-Library checkout
run: |
rm -rf "$GITHUB_WORKSPACE/../Pumas-Library"
ln -s "$GITHUB_WORKSPACE/pumas-library-src" "$GITHUB_WORKSPACE/../Pumas-Library"
test -f "$GITHUB_WORKSPACE/../Pumas-Library/rust/crates/pumas-core/Cargo.toml"
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@1.92.0
- name: Install BEAM toolchain
uses: erlef/setup-beam@v1
with:
otp-version: '27.0'
elixir-version: '1.16.3'
- name: Cache Cargo
uses: Swatinem/rust-cache@v2
- name: Run Rustler BEAM smoke harness
run: ./scripts/check-rustler-beam-smoke.sh
rust-format-audit:
name: Rust format audit
runs-on: ubuntu-latest
continue-on-error: true
outputs:
audit-result: ${{ steps.report-format-audit.outputs.result }}
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Checkout Pumas-Library
uses: actions/checkout@v4
with:
repository: MrScripty/Pumas-Library
ref: ${{ env.PUMAS_LIBRARY_REF }}
path: pumas-library-src
- name: Link sibling Pumas-Library checkout
run: |
rm -rf "$GITHUB_WORKSPACE/../Pumas-Library"
ln -s "$GITHUB_WORKSPACE/pumas-library-src" "$GITHUB_WORKSPACE/../Pumas-Library"
test -f "$GITHUB_WORKSPACE/../Pumas-Library/rust/crates/pumas-core/Cargo.toml"
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@1.92.0
- name: Run format audit
id: run-format-audit
continue-on-error: true
run: cargo fmt --all -- --check
- name: Record format audit result
id: report-format-audit
if: always()
run: |
result="${{ steps.run-format-audit.outcome }}"
if [ -z "$result" ]; then
result="${{ job.status }}"
fi
echo "result=$result" >> "$GITHUB_OUTPUT"
- name: Mark format audit as failed
if: steps.run-format-audit.outcome == 'failure'
run: exit 1
rust-clippy-audit:
name: Rust clippy warning audit
runs-on: ubuntu-latest
continue-on-error: true
outputs:
audit-result: ${{ steps.report-clippy-audit.outputs.result }}
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install Ubuntu native desktop dependencies
run: |
sudo apt-get update
sudo apt-get install -y \
build-essential \
libayatana-appindicator3-dev \
libglib2.0-dev \
libgtk-3-dev \
libjavascriptcoregtk-4.1-dev \
librsvg2-dev \
libsoup-3.0-dev \
libssl-dev \
libwebkit2gtk-4.1-dev \
libxdo-dev \
pkg-config
- name: Checkout Pumas-Library
uses: actions/checkout@v4
with:
repository: MrScripty/Pumas-Library
ref: ${{ env.PUMAS_LIBRARY_REF }}
path: pumas-library-src
- name: Link sibling Pumas-Library checkout
run: |
rm -rf "$GITHUB_WORKSPACE/../Pumas-Library"
ln -s "$GITHUB_WORKSPACE/pumas-library-src" "$GITHUB_WORKSPACE/../Pumas-Library"
test -f "$GITHUB_WORKSPACE/../Pumas-Library/rust/crates/pumas-core/Cargo.toml"
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@1.92.0
- name: Cache Cargo
uses: Swatinem/rust-cache@v2
- name: Run warning-deny clippy audit
id: run-clippy-audit
continue-on-error: true
run: cargo clippy --workspace --all-targets --all-features -- -D warnings
- name: Record clippy audit result
id: report-clippy-audit
if: always()
run: |
result="${{ steps.run-clippy-audit.outcome }}"
if [ -z "$result" ]; then
result="${{ job.status }}"
fi
echo "result=$result" >> "$GITHUB_OUTPUT"
- name: Mark clippy audit as failed
if: steps.run-clippy-audit.outcome == 'failure'
run: exit 1
lint-full:
name: Full lint
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install Node toolchain
uses: actions/setup-node@v4
with:
node-version-file: .node-version
cache: npm
- name: Install npm dependencies
run: npm ci --include=optional
- name: Run full lint
run: npm run lint:full
quality-summary:
name: Quality summary
runs-on: ubuntu-latest
if: always()
needs:
- lint-no-new
- typecheck
- frontend-tests
- dependency-audit
- rust-check
- rust-tests
- rust-doc-tests
- rustler-beam-smoke
- rust-format-audit
- rust-clippy-audit
- lint-full
steps:
- name: Summarize required gates
run: |
failed=0
for result in \
"lint-no-new:${{ needs.lint-no-new.result }}" \
"typecheck:${{ needs.typecheck.result }}" \
"lint-full:${{ needs.lint-full.result }}" \
"frontend-tests:${{ needs.frontend-tests.result }}" \
"dependency-audit:${{ needs.dependency-audit.result }}" \
"rust-check:${{ needs.rust-check.result }}" \
"rust-tests:${{ needs.rust-tests.result }}" \
"rust-doc-tests:${{ needs.rust-doc-tests.result }}" \
"rustler-beam-smoke:${{ needs.rustler-beam-smoke.result }}"
do
name="${result%%:*}"
status="${result#*:}"
echo "$name: $status"
if [ "$status" != "success" ]; then
failed=1
fi
done
echo "rust-format-audit: ${{ needs.rust-format-audit.outputs.audit-result }}"
echo "rust-clippy-audit: ${{ needs.rust-clippy-audit.outputs.audit-result }}"
exit "$failed"