diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index bbf83ee5..c77fc688 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -182,8 +182,8 @@ jobs: - name: Install toolchain run: | - rustup toolchain install 1.67.0 - rustup default 1.67.0 + rustup toolchain install 1.69.0 + rustup default 1.69.0 rustup component add clippy - name: Setup OPA diff --git a/Dockerfile b/Dockerfile index 6f08dbd3..3d5b8e56 100644 --- a/Dockerfile +++ b/Dockerfile @@ -12,7 +12,7 @@ # The Debian version and version name must be in sync ARG DEBIAN_VERSION=11 ARG DEBIAN_VERSION_NAME=bullseye -ARG RUSTC_VERSION=1.67.0 +ARG RUSTC_VERSION=1.69.0 # XXX: Upgrade to 0.10.0 blocked by https://github.com/ziglang/zig/issues/10915#issuecomment-1354548110 ARG ZIG_VERSION=0.9.1 ARG NODEJS_VERSION=18 @@ -21,8 +21,7 @@ ARG OPA_VERSION=0.48.0 ########################################## ## Build stage that builds the frontend ## ########################################## - -FROM --platform=${BUILDPLATFORM} docker.io/library/node:${NODEJS_VERSION}-${DEBIAN_VERSION_NAME}-slim AS frontend +FROM --platform=${BUILDPLATFORM} docker.io/library/node:${NODEJS_VERSION}-${DEBIAN_VERSION_NAME} AS frontend WORKDIR /app/frontend @@ -43,11 +42,7 @@ RUN \ ############################################## ## Build stage that builds the OPA policies ## ############################################## - -FROM --platform=${BUILDPLATFORM} docker.io/library/debian:${DEBIAN_VERSION_NAME}-slim AS policy - -# Install make -RUN apt update && apt install -y --no-install-recommends make +FROM --platform=${BUILDPLATFORM} docker.io/library/debian:${DEBIAN_VERSION_NAME} AS policy ARG BUILDOS ARG BUILDARCH @@ -64,8 +59,7 @@ RUN chmod a+r ./policy.wasm ########################################################################## ## Base image with cargo-chef and the right cross-compilation toolchain ## ########################################################################## - -FROM --platform=${BUILDPLATFORM} docker.io/library/rust:${RUSTC_VERSION}-slim-${DEBIAN_VERSION_NAME} AS toolchain +FROM --platform=${BUILDPLATFORM} docker.io/library/rust:${RUSTC_VERSION}-${DEBIAN_VERSION_NAME} AS toolchain ARG ZIG_VERSION ARG RUSTC_VERSION @@ -73,11 +67,8 @@ ARG RUSTC_VERSION # Make cargo use the git cli for fetching dependencies ENV CARGO_NET_GIT_FETCH_WITH_CLI=true -# Install the protobuf compiler, git, curl and xz +# Install the protobuf compiler RUN apt update && apt install -y --no-install-recommends \ - git \ - curl \ - xz-utils \ protobuf-compiler # Download zig compiler for cross-compilation @@ -98,7 +89,6 @@ COPY ./misc/docker-arch-to-rust-target.sh / ##################################### ## Run the planner from cargo-chef ## ##################################### - FROM --platform=${BUILDPLATFORM} toolchain AS planner COPY ./Cargo.toml ./Cargo.lock /app/ COPY ./crates /app/crates @@ -107,7 +97,6 @@ RUN cargo chef prepare --recipe-path recipe.json --bin crates/cli ######################## ## Actual build stage ## ######################## - FROM --platform=${BUILDPLATFORM} toolchain AS builder ARG TARGETPLATFORM diff --git a/crates/cli/src/telemetry.rs b/crates/cli/src/telemetry.rs index 2ef9905d..4970d9e5 100644 --- a/crates/cli/src/telemetry.rs +++ b/crates/cli/src/telemetry.rs @@ -130,7 +130,7 @@ fn stdout_tracer() -> Tracer { } #[cfg(feature = "otlp")] -fn otlp_tracer(endpoint: &Option) -> anyhow::Result { +fn otlp_tracer(endpoint: Option<&Url>) -> anyhow::Result { use opentelemetry_otlp::WithExportConfig; let mut exporter = opentelemetry_otlp::new_exporter().tonic(); @@ -149,15 +149,14 @@ fn otlp_tracer(endpoint: &Option) -> anyhow::Result { } #[cfg(not(feature = "otlp"))] -fn otlp_tracer(endpoint: &Option) -> anyhow::Result { - let _ = endpoint; +#[allow(unused_variables)] +fn otlp_tracer(endpoint: Option<&Url>) -> anyhow::Result { anyhow::bail!("The service was compiled without OTLP exporter support, but config exports traces via OTLP.") } #[cfg(not(feature = "jaeger"))] +#[allow(unused_variables)] fn jaeger_agent_tracer(host: &str, port: u16) -> anyhow::Result { - let _ = host; - let _ = port; anyhow::bail!("The service was compiled without Jaeger exporter support, but config exports traces via Jaeger.") } @@ -176,15 +175,12 @@ fn jaeger_agent_tracer(host: &str, port: u16) -> anyhow::Result { } #[cfg(not(feature = "jaeger"))] +#[allow(unused_variables, clippy::unused_async)] async fn jaeger_collector_tracer( endpoint: &str, username: Option<&str>, password: Option<&str>, ) -> anyhow::Result { - let _ = endpoint; - let _ = username; - let _ = password; - futures_util::future::ready(()).await; // Silence the "unused async" lint anyhow::bail!("The service was compiled without Jaeger exporter support, but config exports traces via Jaeger.") } @@ -217,9 +213,8 @@ async fn jaeger_collector_tracer( } #[cfg(not(feature = "zipkin"))] +#[allow(unused_variables, clippy::unused_async)] async fn zipkin_tracer(collector_endpoint: &Option) -> anyhow::Result { - let _ = collector_endpoint; - futures_util::future::ready(()).await; // Silence the "unused async" lint anyhow::bail!("The service was compiled without Jaeger exporter support, but config exports traces via Jaeger.") } @@ -247,7 +242,7 @@ async fn tracer(config: &TracingExporterConfig) -> anyhow::Result let tracer = match config { TracingExporterConfig::None => return Ok(None), TracingExporterConfig::Stdout => stdout_tracer(), - TracingExporterConfig::Otlp { endpoint } => otlp_tracer(endpoint)?, + TracingExporterConfig::Otlp { endpoint } => otlp_tracer(endpoint.as_ref())?, TracingExporterConfig::Jaeger(JaegerExporterProtocolConfig::UdpThriftCompact { agent_host, agent_port, @@ -266,7 +261,7 @@ async fn tracer(config: &TracingExporterConfig) -> anyhow::Result } #[cfg(feature = "otlp")] -fn otlp_meter(endpoint: &Option) -> anyhow::Result { +fn otlp_meter(endpoint: Option<&url::Url>) -> anyhow::Result { use opentelemetry_otlp::WithExportConfig; let mut exporter = opentelemetry_otlp::new_exporter().tonic(); @@ -289,8 +284,8 @@ fn otlp_meter(endpoint: &Option) -> anyhow::Result { } #[cfg(not(feature = "otlp"))] -fn otlp_meter(endpoint: &Option) -> anyhow::Result { - let _ = endpoint; +#[allow(unused_variables)] +fn otlp_meter(endpoint: Option<&url::Url>) -> anyhow::Result { anyhow::bail!("The service was compiled without OTLP exporter support, but config exports metrics via OTLP.") } @@ -396,7 +391,7 @@ fn meter(config: &MetricsExporterConfig) -> anyhow::Result None, MetricsExporterConfig::Stdout => Some(stdout_meter()?), - MetricsExporterConfig::Otlp { endpoint } => Some(otlp_meter(endpoint)?), + MetricsExporterConfig::Otlp { endpoint } => Some(otlp_meter(endpoint.as_ref())?), MetricsExporterConfig::Prometheus => Some(prometheus_meter()?), }; diff --git a/crates/handlers/src/compat/login_sso_complete.rs b/crates/handlers/src/compat/login_sso_complete.rs index b571d5f4..8b1e9699 100644 --- a/crates/handlers/src/compat/login_sso_complete.rs +++ b/crates/handlers/src/compat/login_sso_complete.rs @@ -188,7 +188,7 @@ pub async fn post( existing_params, login_token: &login.login_token, }; - let query = serde_urlencoded::to_string(¶ms)?; + let query = serde_urlencoded::to_string(params)?; redirect_uri.set_query(Some(&query)); redirect_uri }; diff --git a/crates/handlers/src/test_utils.rs b/crates/handlers/src/test_utils.rs index a65395e7..4d20deb1 100644 --- a/crates/handlers/src/test_utils.rs +++ b/crates/handlers/src/test_utils.rs @@ -42,8 +42,11 @@ use crate::{ MatrixHomeserver, }; +// This might fail if it's not the first time it's being called, which is fine, +// so we ignore the result +#[allow(unused_must_use)] pub(crate) fn init_tracing() { - let _ = tracing_subscriber::fmt() + tracing_subscriber::fmt() .with_max_level(tracing::Level::INFO) .with_test_writer() .try_init(); diff --git a/crates/storage-pg/src/compat/mod.rs b/crates/storage-pg/src/compat/mod.rs index ab4ed33e..8fe49763 100644 --- a/crates/storage-pg/src/compat/mod.rs +++ b/crates/storage-pg/src/compat/mod.rs @@ -46,8 +46,6 @@ mod tests { #[sqlx::test(migrator = "crate::MIGRATOR")] async fn test_session_repository(pool: PgPool) { - const FIRST_TOKEN: &str = "first_access_token"; - const SECOND_TOKEN: &str = "second_access_token"; let mut rng = ChaChaRng::seed_from_u64(42); let clock = MockClock::default(); let mut repo = PgRepository::from_pool(&pool).await.unwrap(); diff --git a/crates/tasks/src/lib.rs b/crates/tasks/src/lib.rs index b3b4d191..addb6cd8 100644 --- a/crates/tasks/src/lib.rs +++ b/crates/tasks/src/lib.rs @@ -82,11 +82,9 @@ impl State { &self.mailer } + // This is fine for now, we may move that to a trait at some point. + #[allow(clippy::unused_self, clippy::disallowed_methods)] pub fn rng(&self) -> rand_chacha::ChaChaRng { - let _ = self; - - // This is fine. - #[allow(clippy::disallowed_methods)] rand_chacha::ChaChaRng::from_rng(rand::thread_rng()).expect("failed to seed rng") }