synq-core-os/.gitlab-ci.yml
2026-05-07 19:28:50 -07:00

66 lines
1.5 KiB
YAML
Executable file

stages:
- check
- test
- build
variables:
CARGO_HOME: $CI_PROJECT_DIR/.cargo
RUST_BACKTRACE: 1
RUST_LOG: info
cache:
paths:
- .cargo/
- target/
check:
stage: check
image: rust:1.85-slim
services:
- postgres:16-alpine
variables:
POSTGRES_DB: synq_core_test
POSTGRES_USER: synq
POSTGRES_PASSWORD: synq_test_pass
DATABASE_URL: postgres://synq:synq_test_pass@postgres/synq_core_test
before_script:
- apt-get update && apt-get install -y libssl-dev pkg-config postgresql-client
- rustup component add clippy rustfmt
- cargo install sqlx-cli --no-default-features --features native-tls,postgres
- sqlx migrate run
script:
- cargo fmt --check
- cargo clippy --all-targets --all-features -- -D warnings
- cargo check --all
test:
stage: test
image: rust:1.85-slim
services:
- postgres:16-alpine
variables:
POSTGRES_DB: synq_core_test
POSTGRES_USER: synq
POSTGRES_PASSWORD: synq_test_pass
DATABASE_URL: postgres://synq:synq_test_pass@postgres/synq_core_test
before_script:
- apt-get update && apt-get install -y libssl-dev pkg-config postgresql-client
- cargo install sqlx-cli --no-default-features --features native-tls,postgres
- sqlx migrate run
script:
- cargo test --all -- --test-threads=1
artifacts:
reports:
junit: target/junit-report.xml
build-release:
stage: build
image: rust:1.85-slim
script:
- cargo build --release --all
artifacts:
paths:
- target/release/
only:
- main
- tags