# See https://github.com/woodpecker-ci/woodpecker/issues/1677
variables:
- - &muslrust_image 'clux/muslrust:1.67.0'
+ - &muslrust_image "clux/muslrust:1.70.0"
-clone:
- git:
- image: woodpeckerci/plugin-git
- settings:
- recursive: true
- submodule_update_remote: true
+# Broken for cron jobs currently, see
+# https://github.com/woodpecker-ci/woodpecker/issues/1716
+# clone:
+# git:
+# image: woodpeckerci/plugin-git
+# settings:
+# recursive: true
+# submodule_update_remote: true
pipeline:
+ prepare_repo:
+ image: alpine:3
+ commands:
+ - apk add git
+ #- git fetch --tags
+ - git submodule init
+ - git submodule update
+
+ prettier_check:
+ image: tmknom/prettier:3.0.0
+ commands:
+ - prettier -c . '!**/volumes' '!**/dist' '!target' '!**/translations'
+
# use minimum supported rust version for most steps
cargo_fmt:
image: *muslrust_image
# when:
# platform: linux/amd64
- # check each package to make sure they compile with default features.
- # this is required for crates.io
- cargo_check:
+ cargo_clippy:
image: *muslrust_image
environment:
CARGO_HOME: .cargo
commands:
- - cargo check --package lemmy_utils
- - cargo check --package lemmy_db_schema
- - cargo check --package lemmy_db_views
- - cargo check --package lemmy_db_views_actor
- - cargo check --package lemmy_db_views_moderator
- - cargo check --package lemmy_api_common
- - cargo check --package lemmy_api
- - cargo check --package lemmy_api_crud
- - cargo check --package lemmy_apub
- - cargo check --package lemmy_routes
- - cargo check --workspace
- - cargo check --workspace --features console
- # disabled because it takes too long with pict-rs
- #- cargo check --workspace --all-features
+ # latest rust for clippy to get extra checks
+ # when adding new clippy lints, make sure to also add them in scripts/fix-clippy.sh
+ - rustup component add clippy
+ - cargo clippy --workspace --tests --all-targets --features console --
+ -D warnings -D deprecated -D clippy::perf -D clippy::complexity
+ -D clippy::style -D clippy::correctness -D clippy::suspicious
+ -D clippy::dbg_macro -D clippy::inefficient_to_string
+ -D clippy::items-after-statements -D clippy::implicit_clone
+ -D clippy::cast_lossless -D clippy::manual_string_new
+ -D clippy::redundant_closure_for_method_calls
+ -D clippy::unused_self
+ -A clippy::uninlined_format_args
+ -D clippy::get_first
+ -D clippy::explicit_into_iter_loop
+ -D clippy::explicit_iter_loop
+ -D clippy::needless_collect
+ - cargo clippy --workspace --features console --
+ -D clippy::unwrap_used
+ -D clippy::indexing_slicing
# when:
# platform: linux/amd64
- cargo_clippy:
+ # make sure api builds with default features (used by other crates relying on lemmy api)
+ cargo_check:
image: *muslrust_image
environment:
CARGO_HOME: .cargo
commands:
- # latest rust for clippy to get extra checks
- # when adding new clippy lints, make sure to also add them in scripts/fix-clippy.sh
- - rustup component add clippy
- - cargo clippy --workspace --tests --all-targets --features console --
- -D warnings -D deprecated -D clippy::perf -D clippy::complexity
- -D clippy::style -D clippy::correctness -D clippy::suspicious
- -D clippy::dbg_macro -D clippy::inefficient_to_string
- -D clippy::items-after-statements -D clippy::implicit_clone
- -D clippy::wildcard_imports -D clippy::cast_lossless
- -D clippy::manual_string_new -D clippy::redundant_closure_for_method_calls
- -D clippy::unused_self
- -A clippy::uninlined_format_args
- -D clippy::get_first
- - cargo clippy --workspace --features console --
- -D clippy::unwrap_used
- -D clippy::indexing_slicing
+ - cargo check --package lemmy_api_common
# when:
# platform: linux/amd64
# platform: linux/amd64
check_diesel_schema:
- image: jameshiew/diesel-cli
+ image: willsquire/diesel-cli
environment:
CARGO_HOME: .cargo
DATABASE_URL: postgres://lemmy:password@database:5432/lemmy
# when:
# platform: linux/amd64
- nightly_build:
- image: woodpeckerci/plugin-docker-buildx
- settings:
- repo: dessalines/lemmy
- dockerfile: docker/Dockerfile
- platforms: linux/amd64
- build_args: RUST_RELEASE_MODE=release
- username:
- from_secret: docker_username
- password:
- from_secret: docker_password
- # add_host: github.com:140.82.112.3,static.crates.io:18.154.227.73,crates.io:108.138.64.68,dl-cdn.alpinelinux.org:146.75.30.133
- tag: dev
- when:
- event:
- - cron
- #platform: linux/amd64
-
- publish_release_docker_image_amd:
+ publish_release_docker:
image: woodpeckerci/plugin-docker-buildx
+ secrets: [docker_username, docker_password]
settings:
repo: dessalines/lemmy
dockerfile: docker/Dockerfile
platforms: linux/amd64
- build_args: RUST_RELEASE_MODE=release
- username:
- from_secret: docker_username
- password:
- from_secret: docker_password
- # add_host: github.com:140.82.112.3,static.crates.io:18.154.227.73,crates.io:108.138.64.68,dl-cdn.alpinelinux.org:146.75.30.133
+ build_args:
+ - RUST_RELEASE_MODE=release
auto_tag: true
- # auto_tag_suffix: linux-amd64
when:
event: tag
- #platform: linux/amd64
- publish_release_docker_image_arm:
+ nightly_build:
image: woodpeckerci/plugin-docker-buildx
+ secrets: [docker_username, docker_password]
settings:
repo: dessalines/lemmy
dockerfile: docker/Dockerfile
- platforms: linux/arm64
- build_args: RUST_RELEASE_MODE=release
- username:
- from_secret: docker_username
- password:
- from_secret: docker_password
- # add_host: github.com:140.82.112.3,static.crates.io:18.154.227.73,crates.io:108.138.64.68,dl-cdn.alpinelinux.org:146.75.30.133
- auto_tag: true
- # auto_tag_suffix: linux-arm64
+ platforms: linux/amd64
+ build_args:
+ - RUST_RELEASE_MODE=release
+ tag: dev
when:
- event: tag
- #platform: linux/arm64
-
- #publish_release_docker_manifest:
- # image: plugins/manifest
- # settings:
- # username:
- # from_secret: docker_username
- # password:
- # from_secret: docker_password
- # target: "dessalines/lemmy:${CI_COMMIT_TAG}"
- # template: "dessalines/lemmy:${CI_COMMIT_TAG}-OS-ARCH"
- # platforms:
- # - linux/amd64
- # - linux/arm64
- # ignore_missing: true
- # when:
- # event: tag
-
- #publish_latest_release_docker_manifest:
- # image: plugins/manifest
- # settings:
- # username:
- # from_secret: docker_username
- # password:
- # from_secret: docker_password
- # target: "dessalines/lemmy:latest"
- # template: "dessalines/lemmy:${CI_COMMIT_TAG}-OS-ARCH"
- # platforms:
- # - linux/amd64
- # - linux/arm64
- # ignore_missing: true
- # when:
- # event: tag
- # #platform: linux/amd64
+ event: cron
# using https://github.com/pksunkara/cargo-workspaces
publish_to_crates_io:
image: *muslrust_image
commands:
+ - 'echo "pub const VERSION: &str = \"$(git describe --tag)\";" > "crates/utils/src/version.rs"'
- cargo install cargo-workspaces
- cp -r migrations crates/db_schema/
- cargo login "$CARGO_API_TOKEN"
notify_on_failure:
image: alpine:3
- commands:
+ commands:
- apk add curl
- - "curl -d'Drone build failed: ${CI_BUILD_LINK}' ntfy.sh/lemmy_drone_ci"
+ - "curl -d'Lemmy CI build failed: ${CI_BUILD_LINK}' ntfy.sh/lemmy_drone_ci"
when:
- status: [ failure ]
+ status: [failure]
notify_on_tag_deploy:
image: alpine:3
- commands:
+ commands:
- apk add curl
- "curl -d'lemmy:${CI_COMMIT_TAG} deployed' ntfy.sh/lemmy_drone_ci"
when:
services:
database:
- image: postgres:15-alpine
+ image: postgres:15.2-alpine
environment:
POSTGRES_USER: lemmy
POSTGRES_PASSWORD: password