diff --git a/.woodpecker.yml b/.woodpecker.yml index 8f7c2c00e2..623d026b5a 100644 --- a/.woodpecker.yml +++ b/.woodpecker.yml @@ -42,7 +42,7 @@ steps: group: format image: tmknom/prettier:3.0.0 commands: - - prettier -c . '!**/volumes' '!**/dist' '!target' '!**/translations' '!.cargo_home' + - prettier -c . '!**/volumes' '!**/dist' '!target' '!**/translations' toml_fmt: group: format @@ -84,11 +84,8 @@ steps: - IGNORED=$(git ls-files --cached -i --exclude-standard) - if [[ "$IGNORED" ]]; then echo "Ignored files present:\n$IGNORED\n"; exit 1; fi - # Restore build cache. This must run even when `*slow_check_paths` is not fulfilled, because otherwise - # rebuild-cache throws an error on missing files, and `when` conditions are always combined with *and*, - # so there is no way to rebuild cache only on main branch *and* slow_check_paths. + # restore cache unconditionally to avoid failures in rebuild-cache restore-cache: - group: format image: meltwater/drone-cache:v1 pull: true settings: @@ -112,6 +109,83 @@ steps: exit_code: true secrets: [MINIO_ENDPOINT, MINIO_WRITE_USER, MINIO_WRITE_PASSWORD, MINIO_BUCKET] + when: *slow_check_paths + + # make sure api builds with default features (used by other crates relying on lemmy api) + check_api_common_default_features: + image: *rust_image + environment: + CARGO_HOME: .cargo_home + commands: + - cargo check --package lemmy_api_common + when: *slow_check_paths + + lemmy_api_common_doesnt_depend_on_diesel: + image: *rust_image + environment: + CARGO_HOME: .cargo_home + commands: + - "! cargo tree -p lemmy_api_common --no-default-features -i diesel" + when: *slow_check_paths + + lemmy_api_common_works_with_wasm: + image: *rust_image + environment: + CARGO_HOME: .cargo_home + commands: + - "rustup target add wasm32-unknown-unknown" + - "cargo check --target wasm32-unknown-unknown -p lemmy_api_common" + when: *slow_check_paths + + check_defaults_hjson_updated: + image: *rust_image + environment: + CARGO_HOME: .cargo_home + commands: + - export LEMMY_CONFIG_LOCATION=./config/config.hjson + - ./scripts/update_config_defaults.sh config/defaults_current.hjson + - diff config/defaults.hjson config/defaults_current.hjson + when: *slow_check_paths + + check_diesel_schema: + image: willsquire/diesel-cli + environment: + CARGO_HOME: .cargo_home + DATABASE_URL: postgres://lemmy:password@database:5432/lemmy + commands: + - diesel migration run + - diesel print-schema --config-file=diesel.toml > tmp.schema + - diff tmp.schema crates/db_schema/src/schema.rs + when: *slow_check_paths + + check_diesel_migration_revertable: + image: willsquire/diesel-cli + environment: + CARGO_HOME: .cargo_home + DATABASE_URL: postgres://lemmy:password@database:5432/lemmy + commands: + - diesel migration run + - diesel migration redo + when: *slow_check_paths + + cargo_clippy: + image: *rust_image + environment: + CARGO_HOME: .cargo_home + commands: + # when adding new clippy lints, make sure to also add them in scripts/lint.sh + - rustup component add clippy + - cargo clippy --workspace --tests --all-targets --features console -- -D warnings + when: *slow_check_paths + + cargo_build: + image: *rust_image + environment: + CARGO_HOME: .cargo_home + commands: + - cargo build + - mv target/debug/lemmy_server target/lemmy_server + when: *slow_check_paths cargo_test: group: tests @@ -123,7 +197,20 @@ steps: commands: - export LEMMY_CONFIG_LOCATION=../../config/config.hjson - cargo test --workspace --no-fail-fast - - ls -la ".cargo_home" "target" "api_tests/node_modules" + when: *slow_check_paths + + run_federation_tests: + group: tests + image: node:20-bookworm-slim + environment: + LEMMY_DATABASE_URL: postgres://lemmy:password@database:5432 + DO_WRITE_HOSTS_FILE: "1" + commands: + - apt update && apt install -y bash curl postgresql-client + - bash api_tests/prepare-drone-federation-test.sh + - cd api_tests/ + - yarn + - yarn api-test when: *slow_check_paths rebuild-cache: @@ -142,7 +229,7 @@ steps: cache_key: "rust-cache" region: us-east-1 path-style: true - backend_operation_timeout: 60m + backend_operation_timeout: 30m compression_level: 0 mount: - ".cargo_home" @@ -151,9 +238,9 @@ steps: exit_code: true secrets: [MINIO_ENDPOINT, MINIO_WRITE_USER, MINIO_WRITE_PASSWORD, MINIO_BUCKET] - #when: - # - event: push - # branch: main + when: + - event: push + branch: main publish_release_docker: image: woodpeckerci/plugin-docker-buildx