85 lines
1.9 KiB
YAML
85 lines
1.9 KiB
YAML
# Woodpecker CI Pipeline
|
|
# Equivalent to GitHub Actions CI workflow
|
|
# Generated by dev-system/ci
|
|
|
|
when:
|
|
event: [push, pull_request, manual]
|
|
branch:
|
|
- main
|
|
- develop
|
|
|
|
steps:
|
|
# === LINTING ===
|
|
|
|
lint-rust:
|
|
image: rust:latest
|
|
commands:
|
|
- curl --proto '=https' --tlsv1.2 -sSf https://just.systems/install.sh | bash -s -- --to /usr/local/bin
|
|
- rustup component add clippy
|
|
- cargo fmt --all -- --check
|
|
- cargo clippy --all-targets -- -D warnings
|
|
|
|
lint-bash:
|
|
image: koalaman/shellcheck-alpine:stable
|
|
commands:
|
|
- apk add --no-cache curl bash
|
|
- find . -name '*.sh' -type f ! -path './target/*' -exec shellcheck {} +
|
|
|
|
lint-nickel:
|
|
image: rust:latest
|
|
commands:
|
|
- cargo install nickel-lang-cli --locked
|
|
- find . -name '*.ncl' -type f ! -path './target/*' -exec nickel typecheck {} \;
|
|
|
|
lint-nushell:
|
|
image: rust:latest
|
|
commands:
|
|
- cargo install nu --locked
|
|
- find . -name '*.nu' -type f ! -path './target/*' -exec nu --ide-check 100 {} \;
|
|
|
|
lint-markdown:
|
|
image: node:alpine
|
|
commands:
|
|
- npm install -g markdownlint-cli2
|
|
- markdownlint-cli2 '**/*.md' '#node_modules' '#target'
|
|
|
|
# === TESTING ===
|
|
|
|
test:
|
|
image: rust:latest
|
|
commands:
|
|
- cargo test --workspace --all-features
|
|
depends_on:
|
|
- lint-rust
|
|
- lint-bash
|
|
- lint-nickel
|
|
- lint-nushell
|
|
- lint-markdown
|
|
|
|
# === BUILD ===
|
|
|
|
build:
|
|
image: rust:latest
|
|
commands:
|
|
- cargo build --release
|
|
depends_on:
|
|
- test
|
|
|
|
# === SECURITY ===
|
|
|
|
security-audit:
|
|
image: rust:latest
|
|
commands:
|
|
- cargo install cargo-audit --locked
|
|
- cargo audit --deny warnings
|
|
depends_on:
|
|
- lint-rust
|
|
|
|
license-check:
|
|
image: rust:latest
|
|
commands:
|
|
- cargo install cargo-deny --locked
|
|
- cargo deny check licenses advisories
|
|
depends_on:
|
|
- lint-rust
|