]> Untitled Git - lemmy.git/blob - .woodpecker.yml
Delete migrations_testing folder (#3751)
[lemmy.git] / .woodpecker.yml
1 # TODO: The when: platform conditionals aren't working currently
2 # See https://github.com/woodpecker-ci/woodpecker/issues/1677
3
4 variables:
5   - &muslrust_image "clux/muslrust:1.70.0"
6
7 # Broken for cron jobs currently, see
8 # https://github.com/woodpecker-ci/woodpecker/issues/1716
9 # clone:
10 #   git:
11 #     image: woodpeckerci/plugin-git
12 #     settings:
13 #       recursive: true
14 #       submodule_update_remote: true
15
16 pipeline:
17   prepare_repo:
18     image: alpine:3
19     commands:
20       - apk add git
21       - git submodule init
22       - git submodule update
23
24   prettier_check:
25     image: tmknom/prettier:3.0.0
26     commands:
27       - prettier -c . '!**/volumes' '!**/dist' '!target' '!**/translations'
28
29   restore-cache:
30     image: meltwater/drone-cache:v1
31     pull: true
32     settings:
33       restore: true
34       endpoint:
35         from_secret: MINIO_ENDPOINT
36       access-key:
37         from_secret: MINIO_WRITE_USER
38       secret-key:
39         from_secret: MINIO_WRITE_PASSWORD
40       bucket:
41         from_secret: MINIO_BUCKET
42       region: us-east-1
43       cache_key: "rust-cache"
44       path-style: true
45       mount:
46         - ".cargo"
47         - "target"
48         - "api_tests/node_modules"
49     secrets:
50       [MINIO_ENDPOINT, MINIO_WRITE_USER, MINIO_WRITE_PASSWORD, MINIO_BUCKET]
51     when:
52       path: ["crates", "src", "Cargo.toml", "migrations", "api_tests"]
53
54   toml_fmt:
55     image: tamasfe/taplo:0.8.1
56     commands:
57       - taplo format --check
58
59   cargo_fmt:
60     image: *muslrust_image
61     environment:
62       # store cargo data in repo folder so that it gets cached between steps
63       CARGO_HOME: .cargo
64     commands:
65       # need make existing toolchain available
66       - cp -n ~/.cargo . -r
67       - rustup toolchain install nightly-2023-07-10
68       - rustup component add rustfmt --toolchain nightly-2023-07-10
69       - cargo +nightly-2023-07-10 fmt -- --check
70
71   # make sure api builds with default features (used by other crates relying on lemmy api)
72   check_api_common_default_features:
73     image: *muslrust_image
74     environment:
75       CARGO_HOME: .cargo
76     commands:
77       - cargo check --package lemmy_api_common
78     when:
79       path: ["crates", "src", "Cargo.toml", "migrations"]
80
81   lemmy_api_common_doesnt_depend_on_diesel:
82     image: *muslrust_image
83     environment:
84       CARGO_HOME: .cargo
85     commands:
86       - "! cargo tree -p lemmy_api_common --no-default-features -i diesel"
87     when:
88       path: ["crates", "src", "Cargo.toml", "migrations"]
89
90   lemmy_api_common_works_with_wasm:
91     image: *muslrust_image
92     environment:
93       CARGO_HOME: .cargo
94     commands:
95       - "rustup target add wasm32-unknown-unknown"
96       - "cargo check --target wasm32-unknown-unknown -p lemmy_api_common"
97     when:
98       path: ["crates", "src", "Cargo.toml", "migrations"]
99
100   check_defaults_hjson_updated:
101     image: *muslrust_image
102     environment:
103       CARGO_HOME: .cargo
104     commands:
105       - export LEMMY_CONFIG_LOCATION=./config/config.hjson
106       - ./scripts/update_config_defaults.sh config/defaults_current.hjson
107       - diff config/defaults.hjson config/defaults_current.hjson
108     when:
109       path: ["crates", "src", "Cargo.toml", "migrations"]
110
111   check_diesel_schema:
112     image: willsquire/diesel-cli
113     environment:
114       CARGO_HOME: .cargo
115       DATABASE_URL: postgres://lemmy:password@database:5432/lemmy
116     commands:
117       - diesel migration run
118       - diesel print-schema --config-file=diesel.toml > tmp.schema
119       - diff tmp.schema crates/db_schema/src/schema.rs
120     when:
121       path: ["crates", "src", "Cargo.toml", "migrations"]
122
123   check_diesel_migration_revertable:
124     image: willsquire/diesel-cli
125     environment:
126       CARGO_HOME: .cargo
127       DATABASE_URL: postgres://lemmy:password@database:5432/lemmy
128     commands:
129       - diesel migration run
130       - diesel migration redo
131     when:
132       path: ["crates", "src", "Cargo.toml", "migrations"]
133
134   cargo_clippy:
135     image: *muslrust_image
136     environment:
137       CARGO_HOME: .cargo
138     commands:
139       # when adding new clippy lints, make sure to also add them in scripts/fix-clippy.sh
140       - rustup component add clippy
141       - cargo clippy --workspace --tests --all-targets --features console --
142         -D warnings -D deprecated -D clippy::perf -D clippy::complexity
143         -D clippy::style -D clippy::correctness -D clippy::suspicious
144         -D clippy::dbg_macro -D clippy::inefficient_to_string
145         -D clippy::items-after-statements -D clippy::implicit_clone
146         -D clippy::cast_lossless -D clippy::manual_string_new
147         -D clippy::redundant_closure_for_method_calls
148         -D clippy::unused_self
149         -A clippy::uninlined_format_args
150         -D clippy::get_first
151         -D clippy::explicit_into_iter_loop
152         -D clippy::explicit_iter_loop
153         -D clippy::needless_collect
154         -D clippy::unwrap_used
155         -D clippy::indexing_slicing
156     when:
157       path: ["crates", "src", "Cargo.toml", "migrations"]
158
159   cargo_test:
160     image: *muslrust_image
161     environment:
162       LEMMY_DATABASE_URL: postgres://lemmy:password@database:5432/lemmy
163       RUST_BACKTRACE: "1"
164       CARGO_HOME: .cargo
165     commands:
166       - export LEMMY_CONFIG_LOCATION=../../config/config.hjson
167       - cargo test --workspace --no-fail-fast
168     when:
169       path: ["crates", "src", "Cargo.toml", "migrations"]
170
171   cargo_build:
172     image: *muslrust_image
173     environment:
174       CARGO_HOME: .cargo
175     commands:
176       - cargo build
177       - mv target/x86_64-unknown-linux-musl/debug/lemmy_server target/lemmy_server
178     when:
179       path: ["crates", "src", "Cargo.toml", "migrations", "api_tests"]
180
181   run_federation_tests:
182     image: node:alpine
183     environment:
184       LEMMY_DATABASE_URL: postgres://lemmy:password@database:5432
185       DO_WRITE_HOSTS_FILE: "1"
186     commands:
187       - apk add bash curl postgresql-client
188       - bash api_tests/prepare-drone-federation-test.sh
189       - cd api_tests/
190       - yarn
191       - yarn api-test
192     when:
193       path: ["crates", "src", "Cargo.toml", "migrations", "api_tests"]
194
195   rebuild-cache:
196     image: meltwater/drone-cache:v1
197     pull: true
198     settings:
199       rebuild: true
200       endpoint:
201         from_secret: MINIO_ENDPOINT
202       access-key:
203         from_secret: MINIO_WRITE_USER
204       secret-key:
205         from_secret: MINIO_WRITE_PASSWORD
206       bucket:
207         from_secret: MINIO_BUCKET
208       cache_key: "rust-cache"
209       region: us-east-1
210       path-style: true
211       mount:
212         - ".cargo"
213         - "target"
214         - "api_tests/node_modules"
215     secrets:
216       [MINIO_ENDPOINT, MINIO_WRITE_USER, MINIO_WRITE_PASSWORD, MINIO_BUCKET]
217     when:
218       path: ["crates", "src", "Cargo.toml", "migrations", "api_tests"]
219
220   publish_release_docker:
221     image: woodpeckerci/plugin-docker-buildx
222     secrets: [docker_username, docker_password]
223     settings:
224       repo: dessalines/lemmy
225       dockerfile: docker/Dockerfile
226       platforms: linux/amd64
227       build_args:
228         - RUST_RELEASE_MODE=release
229       auto_tag: true
230     when:
231       event: tag
232
233   nightly_build:
234     image: woodpeckerci/plugin-docker-buildx
235     secrets: [docker_username, docker_password]
236     settings:
237       repo: dessalines/lemmy
238       dockerfile: docker/Dockerfile
239       platforms: linux/amd64
240       build_args:
241         - RUST_RELEASE_MODE=release
242       tag: dev
243     when:
244       event: cron
245
246   notify_on_failure:
247     image: alpine:3
248     commands:
249       - apk add curl
250       - "curl -d'Lemmy CI build failed: ${CI_BUILD_LINK}' ntfy.sh/lemmy_drone_ci"
251     when:
252       status: [failure]
253
254   notify_on_tag_deploy:
255     image: alpine:3
256     commands:
257       - apk add curl
258       - "curl -d'lemmy:${CI_COMMIT_TAG} deployed' ntfy.sh/lemmy_drone_ci"
259     when:
260       event: tag
261
262 services:
263   database:
264     image: postgres:15.2-alpine
265     environment:
266       POSTGRES_USER: lemmy
267       POSTGRES_PASSWORD: password