]> Untitled Git - lemmy.git/commitdiff
Add drone CI for arm
authorFelix Ableitner <me@nutomic.com>
Tue, 22 Dec 2020 12:13:51 +0000 (13:13 +0100)
committerFelix Ableitner <me@nutomic.com>
Fri, 15 Jan 2021 14:24:48 +0000 (15:24 +0100)
.drone.yml
docker/prod/Dockerfile.arm [new file with mode: 0644]

index b9d68a586f94c12619ecb132446d1f21d56b264b..9b111a4069003619678ed35b7a4a998a6bbfc7a9 100644 (file)
@@ -1,5 +1,10 @@
+---
 kind: pipeline
-name: default
+name: amd64
+
+platform:
+  os: linux
+  arch: amd64
 
 steps:
   - name: fetch git submodules
@@ -54,7 +59,6 @@ steps:
       LEMMY_DATABASE_URL: postgres://lemmy:password@database:5432
       DO_WRITE_HOSTS_FILE: 1
     commands:
-      - ls -la target/lemmy_server
       - apk add bash curl postgresql-client
       - bash api_tests/prepare-drone-federation-test.sh
       - cd api_tests/
@@ -62,7 +66,7 @@ steps:
       - yarn api-test
 
   - name: create docker tags
-    image: ekidd/rust-musl-builder:1.47.0
+    image: node:15-alpine3.12
     commands:
       - echo "$(git describe),latest" > .tags
     when:
@@ -90,6 +94,75 @@ services:
       POSTGRES_USER: lemmy
       POSTGRES_PASSWORD: password
 
-volumes:
-  - name: dieselcli
-    temp: {}
+---
+kind: pipeline
+name: arm64
+
+platform:
+  os: linux
+  arch: arm64
+
+steps:
+
+  - name: cargo test
+    image: rust:1.47-slim-buster
+    environment:
+      LEMMY_DATABASE_URL: postgres://lemmy:password@database:5432/lemmy
+      RUST_BACKTRACE: 1
+      RUST_TEST_THREADS: 1
+    commands:
+      - apt-get update
+      - apt-get -y install --no-install-recommends espeak postgresql-client libssl-dev pkg-config libpq-dev
+      - cargo test --workspace --no-fail-fast
+      - cargo build
+
+  # Using Debian here because there seems to be no official Alpine-based Rust docker image for ARM.
+  - name: cargo build
+    image: rust:1.47-slim-buster
+    commands:
+      - apt-get update
+      - apt-get -y install --no-install-recommends libssl-dev pkg-config libpq-dev
+      - cargo build
+      - mv target/debug/lemmy_server target/lemmy_server
+
+  - name: run federation tests
+    image: node:15-buster-slim
+    environment:
+      LEMMY_DATABASE_URL: postgres://lemmy:password@database:5432
+      DO_WRITE_HOSTS_FILE: 1
+    commands:
+      - mkdir -p /usr/share/man/man1 /usr/share/man/man7
+      - apt-get update
+      - apt-get -y install --no-install-recommends bash curl libssl-dev pkg-config libpq-dev postgresql-client libc6-dev
+      - bash api_tests/prepare-drone-federation-test.sh
+      - cd api_tests/
+      - yarn
+      - yarn api-test
+
+  - name: create docker tags
+    image: node:15-buster-slim
+    commands:
+      - echo "$(git describe),latest" > .tags
+    when:
+      ref:
+        - refs/tags/*
+
+  - name: make release build and push to docker hub
+    image: plugins/docker
+    settings:
+      dockerfile: docker/prod/Dockerfile.arm
+      username:
+        from_secret: docker_username
+      password:
+        from_secret: docker_password
+      repo: dessalines/lemmy
+    when:
+      ref:
+        - refs/tags/*
+
+services:
+  - name: database
+    image: postgres:12-alpine
+    environment:
+      POSTGRES_USER: lemmy
+      POSTGRES_PASSWORD: password
\ No newline at end of file
diff --git a/docker/prod/Dockerfile.arm b/docker/prod/Dockerfile.arm
new file mode 100644 (file)
index 0000000..675b19b
--- /dev/null
@@ -0,0 +1,48 @@
+ARG RUST_BUILDER_IMAGE=rust:1.47-slim-buster
+
+# Build Lemmy
+FROM $RUST_BUILDER_IMAGE as builder
+
+# Install compilation dependencies
+RUN apt-get update \
+ && apt-get -y install --no-install-recommends libssl-dev pkg-config libpq-dev \
+ && rm -rf /var/lib/apt/lists/*
+
+WORKDIR /app
+
+COPY ./ ./
+
+RUN cargo build --release
+
+# reduce binary size
+RUN strip ./target/release/lemmy_server
+
+RUN cp ./target/release/lemmy_server /app/lemmy_server
+
+# Build the docs
+FROM $RUST_BUILDER_IMAGE as docs
+WORKDIR /app
+RUN cargo install --debug mdbook
+COPY docs ./docs
+RUN mdbook build docs/
+
+# The Debian runner
+FROM debian:buster-slim as lemmy
+
+# Install libpq for postgres and espeak for captchas
+RUN apt-get update \
+ && apt-get -y install --no-install-recommends espeak postgresql-client libc6 libssl1.1 \
+ && rm -rf /var/lib/apt/lists/*
+
+RUN addgroup --gid 1000 lemmy
+RUN adduser --no-create-home --shell /bin/sh --uid 1000 --gid 1000 lemmy
+
+# Copy resources
+COPY --chown=lemmy:lemmy config/defaults.hjson /config/defaults.hjson
+COPY --chown=lemmy:lemmy --from=builder /app/lemmy_server /app/lemmy
+COPY --chown=lemmy:lemmy --from=docs /app/docs/book/ /app/documentation/
+
+RUN chown lemmy:lemmy /app/lemmy
+USER lemmy
+EXPOSE 8536
+CMD ["/app/lemmy"]