]> Untitled Git - lemmy.git/blob - .drone.yml
Temporarily disable arm tests (#1895)
[lemmy.git] / .drone.yml
1 ---
2 kind: pipeline
3 name: amd64
4
5 platform:
6   os: linux
7   arch: amd64
8
9 steps:
10
11   - name: prepare repo
12     image: clux/muslrust:1.56.0
13     user: root
14     commands:
15       - chown 1000:1000 . -R
16       - git fetch --tags
17
18   - name: check formatting
19     image: rustdocker/rust:nightly
20     commands:
21       - /root/.cargo/bin/cargo fmt -- --check
22
23   - name: cargo clippy
24     image: clux/muslrust:1.56.0
25     commands:
26       - rustup component add clippy
27       - cargo clippy --workspace --tests --all-targets --all-features -- -D warnings -D deprecated -D clippy::perf -D clippy::complexity -D clippy::dbg_macro
28       - cargo clippy --workspace -- -D clippy::unwrap_used
29
30   - name: cargo test
31     image: clux/muslrust:1.56.0
32     environment:
33       LEMMY_DATABASE_URL: postgres://lemmy:password@database:5432/lemmy
34       LEMMY_CONFIG_LOCATION: ../../config/config.hjson
35       RUST_BACKTRACE: 1
36       RUST_TEST_THREADS: 1
37     commands:
38       - apt-get update
39       - apt-get -y install --no-install-recommends postgresql-client
40       - cargo test --workspace --no-fail-fast
41
42   - name: check defaults.hjson updated
43     image: clux/muslrust:1.56.0
44     commands:
45       - ./scripts/update_config_defaults.sh config/defaults_current.hjson
46       - diff config/defaults.hjson config/defaults_current.hjson
47
48   - name: cargo build
49     image: clux/muslrust:1.56.0
50     commands:
51       - cargo build
52       - mv target/x86_64-unknown-linux-musl/debug/lemmy_server target/lemmy_server
53
54   - name: run federation tests
55     image: node:alpine
56     environment:
57       LEMMY_DATABASE_URL: postgres://lemmy:password@database:5432
58       DO_WRITE_HOSTS_FILE: 1
59     commands:
60       - apk add bash curl postgresql-client
61       - bash api_tests/prepare-drone-federation-test.sh
62       - cd api_tests/
63       - yarn
64       - yarn api-test
65
66   - name: publish release docker image
67     image: plugins/docker
68     settings:
69       dockerfile: docker/prod/Dockerfile
70       username:
71         from_secret: docker_username
72       password:
73         from_secret: docker_password
74       repo: dessalines/lemmy
75       auto_tag: true
76       auto_tag_suffix: linux-amd64
77     when:
78       ref:
79         - refs/tags/*
80
81   - name: publish release docker manifest
82     image: plugins/manifest
83     settings: 
84       username:
85         from_secret: docker_username
86       password:
87         from_secret: docker_password
88       target: "dessalines/lemmy:${DRONE_TAG}"
89       template: "dessalines/lemmy:${DRONE_TAG}-OS-ARCH"
90       platforms:
91         - linux/amd64
92         - linux/arm64
93       ignore_missing: true
94     when:
95       ref:
96         - refs/tags/*
97
98   # using https://github.com/pksunkara/cargo-workspaces
99   - name: publish to crates.io
100     image: rustlang/rust:nightly
101     environment:
102       CARGO_TOKEN:
103         from_secret: cargo_api_token
104     commands:
105       - cargo install cargo-workspaces
106       - cp -r migrations crates/db_schema/
107       - cargo login "$CARGO_TOKEN"
108       - cargo workspaces publish --from-git --allow-dirty --allow-branch "${DRONE_TAG}" --yes custom "${DRONE_TAG}"
109     when:
110       ref:
111         - refs/tags/*
112
113 services:
114   - name: database
115     image: postgres:12-alpine
116     environment:
117       POSTGRES_USER: lemmy
118       POSTGRES_PASSWORD: password
119
120 ---
121 kind: pipeline
122 name: arm64
123
124 platform:
125   os: linux
126   arch: arm64
127
128 steps:
129
130   - name: prepare repo
131     image: rust:1.56-slim
132     user: root
133     commands:
134       - chown 1000:1000 . -R
135       - apt update
136       - apt install --no-install-recommends --yes git
137       - git fetch --tags
138
139   # TODO temporarily disable arm tests
140   # - name: cargo test
141   #   image: rust:1.56-slim
142   #   environment:
143   #     LEMMY_DATABASE_URL: postgres://lemmy:password@database:5432/lemmy
144   #     LEMMY_CONFIG_LOCATION: ../../config/config.hjson
145   #     RUST_BACKTRACE: 1
146   #     RUST_TEST_THREADS: 1
147   #   commands:
148   #     - apt-get update
149   #     - apt-get -y install --no-install-recommends postgresql-client libssl-dev pkg-config libpq-dev
150   #     - cargo test --workspace --no-fail-fast
151   #     - cargo build
152
153   # TODO temporarily disable arm tests
154   # Using Debian here because there seems to be no official Alpine-based Rust docker image for ARM.
155   # - name: cargo build
156   #   image: rust:1.56-slim
157   #   commands:
158   #     - apt-get update
159   #     - apt-get -y install --no-install-recommends libssl-dev pkg-config libpq-dev
160   #     - cargo build
161   #     - mv target/debug/lemmy_server target/lemmy_server
162
163   # TODO temporarily disable arm tests
164   # - name: run federation tests
165   #   image: node:16-slim
166   #   environment:
167   #     LEMMY_DATABASE_URL: postgres://lemmy:password@database:5432
168   #     DO_WRITE_HOSTS_FILE: 1
169   #   commands:
170   #     - mkdir -p /usr/share/man/man1 /usr/share/man/man7
171   #     - apt-get update
172   #     - apt-get -y install --no-install-recommends bash curl libssl-dev pkg-config libpq-dev postgresql-client libc6-dev
173   #     - bash api_tests/prepare-drone-federation-test.sh
174   #     - cd api_tests/
175   #     - yarn
176   #     - yarn api-test
177
178   - name: publish release docker image
179     image: plugins/docker
180     settings:
181       dockerfile: docker/prod/Dockerfile.arm
182       username:
183         from_secret: docker_username
184       password:
185         from_secret: docker_password
186       repo: dessalines/lemmy
187       auto_tag: true
188       auto_tag_suffix: linux-arm64
189     when:
190       ref:
191         - refs/tags/*
192
193   - name: publish release docker manifest
194     image: plugins/manifest
195     settings: 
196       username:
197         from_secret: docker_username
198       password:
199         from_secret: docker_password
200       target: "dessalines/lemmy:${DRONE_TAG}"
201       template: "dessalines/lemmy:${DRONE_TAG}-OS-ARCH"
202       platforms:
203         - linux/amd64
204         - linux/arm64
205       ignore_missing: true
206     when:
207       ref:
208         - refs/tags/*
209
210 # TODO temporarily disable arm tests
211 # services:
212 #   - name: database
213 #     image: postgres:12-alpine
214 #     environment:
215 #       POSTGRES_USER: lemmy
216 #       POSTGRES_PASSWORD: password