mirror of
https://github.com/Nutomic/ibis.git
synced 2024-12-23 18:31:23 +00:00
114 lines
3.3 KiB
YAML
114 lines
3.3 KiB
YAML
variables:
|
|
- &rust_image "rust:1.81"
|
|
- &install_binstall "wget https://github.com/cargo-bins/cargo-binstall/releases/latest/download/cargo-binstall-x86_64-unknown-linux-musl.tgz && tar -xvf cargo-binstall-x86_64-unknown-linux-musl.tgz && cp cargo-binstall /usr/local/cargo/bin"
|
|
- &install_cargo_leptos "cargo-binstall -y cargo-leptos@0.2.24"
|
|
|
|
steps:
|
|
cargo_fmt:
|
|
image: rustlang/rust:nightly
|
|
environment:
|
|
# store cargo data in repo folder so that it gets cached between steps
|
|
CARGO_HOME: .cargo_home
|
|
commands:
|
|
- rustup component add rustfmt
|
|
- cargo +nightly fmt -- --check
|
|
|
|
leptos_fmt:
|
|
image: *rust_image
|
|
commands:
|
|
- *install_binstall
|
|
- cargo binstall -y leptosfmt
|
|
- leptosfmt -c .leptosfmt.toml --check src
|
|
|
|
toml_fmt:
|
|
image: tamasfe/taplo:0.9.3
|
|
commands:
|
|
- taplo format --check
|
|
|
|
ignored_files:
|
|
image: alpine:3
|
|
commands:
|
|
- apk add git
|
|
- IGNORED=$(git ls-files --cached -i --exclude-standard)
|
|
- if [[ "$IGNORED" ]]; then echo "Ignored files present:\n$IGNORED\n"; exit 1; fi
|
|
|
|
cargo_shear:
|
|
image: *rust_image
|
|
commands:
|
|
- *install_binstall
|
|
- cargo binstall -y cargo-shear
|
|
- cargo shear
|
|
|
|
check_diesel_schema:
|
|
image: willsquire/diesel-cli
|
|
environment:
|
|
DATABASE_URL: postgres://ibis:password@database:5432/ibis
|
|
commands:
|
|
- diesel migration run
|
|
- diesel print-schema --config-file=diesel.toml > tmp.schema
|
|
- diff tmp.schema src/backend/database/schema.rs
|
|
|
|
cargo_clippy:
|
|
image: *rust_image
|
|
environment:
|
|
CARGO_HOME: .cargo_home
|
|
commands:
|
|
- rustup component add clippy
|
|
- cargo clippy --tests --all-targets --all-features
|
|
|
|
check_config_defaults_updated:
|
|
image: *rust_image
|
|
environment:
|
|
CARGO_HOME: .cargo_home
|
|
commands:
|
|
- cargo run -- --print-config > config/defaults_current.toml
|
|
- diff config/defaults.toml config/defaults_current.toml
|
|
|
|
cargo_test:
|
|
image: *rust_image
|
|
environment:
|
|
CARGO_HOME: .cargo_home
|
|
commands:
|
|
- apt-get update
|
|
- apt-get install postgresql sudo -y --no-install-recommends --no-install-suggests
|
|
# dbinit (used by tests to create temp db) refuses to run as root so we need to setup another user
|
|
- adduser testuser
|
|
- cp /usr/local/rustup /home/testuser/.rustup -r
|
|
- chown testuser:testuser . -R
|
|
- chown testuser:testuser /home/testuser -R
|
|
- export PATH="/usr/lib/postgresql/15/bin:/usr/local/cargo/bin:$PATH"
|
|
- sudo -u testuser env "PATH=$PATH" "CARGO_HOME=$CARGO_HOME" cargo test --no-fail-fast
|
|
|
|
build_release:
|
|
image: *rust_image
|
|
environment:
|
|
CARGO_HOME: .cargo_home
|
|
commands:
|
|
- apt-get update
|
|
- apt-get install npm -y --no-install-recommends --no-install-suggests
|
|
- npm install
|
|
- *install_binstall
|
|
- rustup target add wasm32-unknown-unknown
|
|
- *install_cargo_leptos
|
|
- export PATH="$PATH:$(pwd)/.cargo_home/bin/"
|
|
- ./scripts/build_release.sh
|
|
when:
|
|
- event: tag
|
|
|
|
publish_release:
|
|
image: woodpeckerci/plugin-release
|
|
settings:
|
|
files:
|
|
- ibis.gz
|
|
title: ${CI_COMMIT_TAG##v}
|
|
api-key:
|
|
from_secret: github_token
|
|
when:
|
|
- event: tag
|
|
|
|
services:
|
|
database:
|
|
image: postgres:16-alpine
|
|
environment:
|
|
POSTGRES_USER: ibis
|
|
POSTGRES_PASSWORD: password
|