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" 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 when: - event: pull_request leptos_fmt: image: *rust_image commands: - *install_binstall - cargo binstall -y leptosfmt - leptosfmt -c .leptosfmt.toml --check src when: - event: pull_request toml_fmt: image: tamasfe/taplo:0.8.1 commands: - taplo format --check when: - event: pull_request 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 when: - event: pull_request 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 when: - event: pull_request check_diesel_schema: image: willsquire/diesel-cli environment: CARGO_HOME: .cargo_home 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 when: - event: pull_request frontend_wasm_build: image: *rust_image environment: CARGO_HOME: .cargo_home commands: - "rustup target add wasm32-unknown-unknown" - "cargo check --target wasm32-unknown-unknown --features csr,hydrate --no-default-features" when: - event: pull_request cargo_clippy: image: *rust_image environment: CARGO_HOME: .cargo_home commands: - rustup component add clippy - cargo clippy --tests --all-targets --all-features when: - event: pull_request cargo_test: image: *rust_image environment: LEMMY_DATABASE_URL: postgres://ibis:password@database:5432/ibis 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 test --no-fail-fast when: - event: pull_request build_release: image: *rust_image environment: CARGO_HOME: .cargo_home commands: - 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 - rustup target add wasm32-unknown-unknown - ./cargo-binstall -y trunk - export PATH="$PATH:$(pwd)/.cargo_home/bin/" - ./scripts/build_release.sh when: - event: tag publish_release: image: woodpeckerci/plugin-github-release settings: files: - ibis.gz title: ${CI_COMMIT_TAG##v} api-key: from_secret: github_token when: - event: tag services: database: image: postgres:15.2-alpine environment: POSTGRES_USER: ibis POSTGRES_PASSWORD: password