From 5b3be5c1021557abcc48aff10021087a37b6f218 Mon Sep 17 00:00:00 2001 From: Dessalines Date: Tue, 9 Nov 2021 17:16:59 -0500 Subject: [PATCH 1/2] Updating rust musl images --- .drone.yml | 21 ++++++++++--------- docker/dev/Dockerfile | 47 ++++++++++++++---------------------------- docker/prod/Dockerfile | 10 ++------- 3 files changed, 28 insertions(+), 50 deletions(-) diff --git a/.drone.yml b/.drone.yml index a4e44b338..87f123b1b 100644 --- a/.drone.yml +++ b/.drone.yml @@ -9,7 +9,7 @@ platform: steps: - name: prepare repo - image: ekidd/rust-musl-builder:1.51.0 + image: clux/muslrust:1.56.0 user: root commands: - chown 1000:1000 . -R @@ -21,31 +21,32 @@ steps: - /root/.cargo/bin/cargo fmt -- --check - name: cargo clippy - image: ekidd/rust-musl-builder:1.51.0 + image: clux/muslrust:1.56.0 commands: + - rustup component add clippy - cargo clippy --workspace --tests --all-targets --all-features -- -D warnings -D deprecated -D clippy::perf -D clippy::complexity -D clippy::dbg_macro - cargo clippy --workspace -- -D clippy::unwrap_used - name: cargo test - image: ekidd/rust-musl-builder:1.51.0 + image: clux/muslrust:1.56.0 environment: LEMMY_DATABASE_URL: postgres://lemmy:password@database:5432/lemmy LEMMY_CONFIG_LOCATION: ../../config/config.hjson RUST_BACKTRACE: 1 RUST_TEST_THREADS: 1 commands: - - sudo apt-get update - - sudo apt-get -y install --no-install-recommends postgresql-client + - apt-get update + - apt-get -y install --no-install-recommends postgresql-client - cargo test --workspace --no-fail-fast - name: check defaults.hjson updated - image: ekidd/rust-musl-builder:1.51.0 + image: clux/muslrust:1.56.0 commands: - ./scripts/update_config_defaults.sh config/defaults_current.hjson - diff config/defaults.hjson config/defaults_current.hjson - name: cargo build - image: ekidd/rust-musl-builder:1.51.0 + image: clux/muslrust:1.56.0 commands: - cargo build - mv target/x86_64-unknown-linux-musl/debug/lemmy_server target/lemmy_server @@ -129,7 +130,7 @@ steps: - name: prepare repo # Not sure why, but rust ARM64 builds are failing on drone for rust:1.54 and later: # https://discourse.drone.io/t/arm-build-stalls-out-on-cloud-drone-io-ram-issue/9701 - image: rust:1.51-slim + image: rust:1.56-slim user: root commands: - chown 1000:1000 . -R @@ -138,7 +139,7 @@ steps: - git fetch --tags - name: cargo test - image: rust:1.51-slim + image: rust:1.56-slim environment: LEMMY_DATABASE_URL: postgres://lemmy:password@database:5432/lemmy LEMMY_CONFIG_LOCATION: ../../config/config.hjson @@ -152,7 +153,7 @@ steps: # Using Debian here because there seems to be no official Alpine-based Rust docker image for ARM. - name: cargo build - image: rust:1.51-slim + image: rust:1.56-slim commands: - apt-get update - apt-get -y install --no-install-recommends libssl-dev pkg-config libpq-dev diff --git a/docker/dev/Dockerfile b/docker/dev/Dockerfile index 732f9068d..95329c015 100644 --- a/docker/dev/Dockerfile +++ b/docker/dev/Dockerfile @@ -1,43 +1,31 @@ -ARG RUST_BUILDER_IMAGE=ekidd/rust-musl-builder:1.51.0 +ARG RUST_BUILDER_IMAGE=clux/muslrust:1.56.0 + +FROM $RUST_BUILDER_IMAGE as chef +USER root +RUN cargo install cargo-chef +WORKDIR /app # Cargo chef plan -FROM $RUST_BUILDER_IMAGE as planner -WORKDIR /app -RUN cargo install cargo-chef +FROM chef as planner # Copy dirs -COPY ./ ./ +COPY . . -RUN sudo chown -R rust:rust . RUN cargo chef prepare --recipe-path recipe.json -# Cargo chef cache dependencies -FROM $RUST_BUILDER_IMAGE as cacher -ARG CARGO_BUILD_TARGET=x86_64-unknown-linux-musl -WORKDIR /app -RUN cargo install cargo-chef -COPY --from=planner /app/recipe.json ./recipe.json -RUN sudo chown -R rust:rust . -RUN cargo chef cook --target ${CARGO_BUILD_TARGET} --recipe-path recipe.json - -# Build the project -FROM $RUST_BUILDER_IMAGE as builder - +FROM chef as builder ARG CARGO_BUILD_TARGET=x86_64-unknown-linux-musl ARG RUSTRELEASEDIR="debug" -WORKDIR /app - -# Copy over the cached dependencies -COPY --from=cacher /app/target target -COPY --from=cacher /home/rust/.cargo /home/rust/.cargo +COPY --from=planner /app/recipe.json ./recipe.json +RUN cargo chef cook --recipe-path recipe.json --target ${CARGO_BUILD_TARGET} # Copy the rest of the dirs -COPY ./ ./ +COPY . . -RUN sudo chown -R rust:rust . +# Build the project RUN echo "pub const VERSION: &str = \"$(git describe --tag)\";" > "crates/utils/src/version.rs" -RUN cargo build +RUN cargo build --target ${CARGO_BUILD_TARGET} # reduce binary size RUN strip ./target/$CARGO_BUILD_TARGET/$RUSTRELEASEDIR/lemmy_server @@ -50,13 +38,8 @@ FROM alpine:3 as lemmy # Install libpq for postgres RUN apk add libpq -RUN addgroup -g 1000 lemmy -RUN adduser -D -s /bin/sh -u 1000 -G lemmy lemmy - # Copy resources -COPY --chown=lemmy:lemmy --from=builder /app/lemmy_server /app/lemmy +COPY --from=builder /app/lemmy_server /app/lemmy -RUN chown lemmy:lemmy /app/lemmy -USER lemmy EXPOSE 8536 CMD ["/app/lemmy"] diff --git a/docker/prod/Dockerfile b/docker/prod/Dockerfile index 2f3d278a9..7257e868b 100644 --- a/docker/prod/Dockerfile +++ b/docker/prod/Dockerfile @@ -1,5 +1,5 @@ # Build the project -FROM ekidd/rust-musl-builder:1.51.0 as builder +FROM clux/muslrust:1.56.0 as builder ARG CARGO_BUILD_TARGET=x86_64-unknown-linux-musl ARG RUSTRELEASEDIR="release" @@ -8,7 +8,6 @@ WORKDIR /app COPY ./ ./ -RUN sudo chown -R rust:rust . RUN echo "pub const VERSION: &str = \"$(git describe --tag)\";" > "crates/utils/src/version.rs" RUN cargo build --release @@ -23,13 +22,8 @@ FROM alpine:3 as lemmy # Install libpq for postgres RUN apk add libpq -RUN addgroup -g 1000 lemmy -RUN adduser -D -s /bin/sh -u 1000 -G lemmy lemmy - # Copy resources -COPY --chown=lemmy:lemmy --from=builder /app/lemmy_server /app/lemmy +COPY --from=builder /app/lemmy_server /app/lemmy -RUN chown lemmy:lemmy /app/lemmy -USER lemmy EXPOSE 8536 CMD ["/app/lemmy"] From f035af37383677ef9a4a5a9e48eb320c1cfa0573 Mon Sep 17 00:00:00 2001 From: Dessalines Date: Tue, 9 Nov 2021 17:31:28 -0500 Subject: [PATCH 2/2] Fixing clippy --- crates/apub_lib/src/object_id.rs | 2 +- crates/apub_lib_derive/src/lib.rs | 2 +- src/main.rs | 2 +- src/scheduled_tasks.rs | 7 ++++--- 4 files changed, 7 insertions(+), 6 deletions(-) diff --git a/crates/apub_lib/src/object_id.rs b/crates/apub_lib/src/object_id.rs index 546430685..cf5dfaa1e 100644 --- a/crates/apub_lib/src/object_id.rs +++ b/crates/apub_lib/src/object_id.rs @@ -25,7 +25,7 @@ lazy_static! { static ref CLIENT: Client = Client::builder() .user_agent(build_user_agent(&Settings::get())) .build() - .unwrap(); + .expect("Couldn't build client"); } /// We store Url on the heap because it is quite large (88 bytes). diff --git a/crates/apub_lib_derive/src/lib.rs b/crates/apub_lib_derive/src/lib.rs index 72e00fe2b..d548af4c4 100644 --- a/crates/apub_lib_derive/src/lib.rs +++ b/crates/apub_lib_derive/src/lib.rs @@ -56,7 +56,7 @@ pub fn derive_activity_handler(input: proc_macro::TokenStream) -> proc_macro::To .collect(); let attrs: &Vec = &attrs .first() - .unwrap() + .expect("Could not decode first attribute from token stream") .tokens .clone() .into_iter() diff --git a/src/main.rs b/src/main.rs index c078e7860..059262a03 100644 --- a/src/main.rs +++ b/src/main.rs @@ -65,7 +65,7 @@ async fn main() -> Result<(), LemmyError> { let pool2 = pool.clone(); thread::spawn(move || { - scheduled_tasks::setup(pool2); + scheduled_tasks::setup(pool2).expect("Couldn't set up scheduled_tasks"); }); // Set up the rate limiter diff --git a/src/scheduled_tasks.rs b/src/scheduled_tasks.rs index 396c7b675..c3514d63e 100644 --- a/src/scheduled_tasks.rs +++ b/src/scheduled_tasks.rs @@ -3,14 +3,15 @@ use clokwerk::{Scheduler, TimeUnits}; // Import week days and WeekDay use diesel::{sql_query, PgConnection, RunQueryDsl}; use lemmy_db_schema::{source::activity::Activity, DbPool}; +use lemmy_utils::LemmyError; use log::info; use std::{thread, time::Duration}; /// Schedules various cleanup tasks for lemmy in a background thread -pub fn setup(pool: DbPool) { +pub fn setup(pool: DbPool) -> Result<(), LemmyError> { let mut scheduler = Scheduler::new(); - let conn = pool.get().unwrap(); + let conn = pool.get()?; active_counts(&conn); // On startup, reindex the tables non-concurrently @@ -21,7 +22,7 @@ pub fn setup(pool: DbPool) { reindex_aggregates_tables(&conn, true); }); - let conn = pool.get().unwrap(); + let conn = pool.get()?; clear_old_activities(&conn); scheduler.every(1.weeks()).run(move || { clear_old_activities(&conn);