brokecrew/.gitlab-ci.yml
katR 147d3fb481 Add GitLab CI pipeline
Runs fmt, clippy, and tests on the default branch, then builds release
artifacts. Tag builds attach binaries to a release. Same shape as the
GitHub Actions workflow, ported to shared runners.
2026-09-27 20:52:56 +05:30

68 lines
1.2 KiB
YAML

stages:
- check
- build
variables:
CARGO_TERM_COLOR: always
RUST_BACKTRACE: "1"
cache:
key:
files:
- Cargo.lock
prefix: cargo
paths:
- target/
fmt:
stage: check
image: rust:latest
script:
- rustup component add rustfmt
- cargo fmt --check
rules:
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
clippy:
stage: check
image: rust:latest
before_script:
- rustup component add clippy
script:
- cargo clippy --all-targets -- --deny warnings
rules:
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
allow_failure: true
test:
stage: check
image: rust:latest
script:
- cargo test --locked
rules:
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
build:
stage: build
image: rust:latest
script:
- cargo build --release --locked
artifacts:
name: "brokecream-linux-x86_64"
paths:
- target/release/brokecrew
expire_in: 30 days
# Only on tags, so routine pushes don't eat the free CI minutes.
release:
stage: build
image: rust:latest
rules:
- if: $CI_COMMIT_TAG
script:
- cargo build --release --locked
artifacts:
name: "brokecrew-$CI_COMMIT_TAG"
paths:
- target/release/brokecrew
expire_in: 90 days