mirror of
https://codeberg.org/Toasterson/solstice-ci.git
synced 2026-04-10 21:30:41 +00:00
- Add `logs-service` crate as a separate microservice to handle job log storage, retrieval, and categorization. - Update orchestrator to redirect log endpoints to the new service with optional permanent redirects using `LOGS_BASE_URL`. - Enhance log persistence by introducing structured fields such as category, level, and error flags. - Implement migration to add new columns and indexes for job logs. - Add ANSI escape sequence stripping and structured logging for cleaner log storage. - Improve SSH log handling with interleaved stdout/stderr processing and pty request support. - Revise Docker files and compose setup to include logs-service, with support for PostgreSQL and secure connections. Signed-off-by: Till Wegmueller <toasterson@gmail.com>
29 lines
1.2 KiB
Docker
29 lines
1.2 KiB
Docker
# syntax=docker/dockerfile:1.7
|
|
# Build Solstice Logs Service using upstream official images (no sccache)
|
|
|
|
FROM docker.io/library/rust:bookworm AS builder
|
|
ENV CARGO_HOME=/cargo
|
|
WORKDIR /work
|
|
# Install build dependencies: protoc (for common crate), DB headers
|
|
RUN apt-get update \
|
|
&& apt-get install -y --no-install-recommends \
|
|
protobuf-compiler pkg-config libsqlite3-dev libpq-dev ca-certificates \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
# Configure cargo target-dir so it can be cached between layers
|
|
RUN mkdir -p /cargo && printf "[build]\ntarget-dir = \"/cargo/target\"\n" > /cargo/config.toml
|
|
# Pre-copy manifests for better caching
|
|
COPY Cargo.toml ./
|
|
COPY crates ./crates
|
|
RUN --mount=type=cache,target=/cargo/registry \
|
|
--mount=type=cache,target=/cargo/git \
|
|
--mount=type=cache,target=/cargo/target \
|
|
cargo build --release -p logs-service && cp /cargo/target/release/logs-service /logs-service
|
|
|
|
FROM docker.io/library/debian:bookworm-slim
|
|
RUN apt-get update \
|
|
&& apt-get install -y --no-install-recommends \
|
|
libsqlite3-0 libpq5 ca-certificates \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
COPY --from=builder /logs-service /usr/local/bin/logs-service
|
|
EXPOSE 8082
|
|
ENTRYPOINT ["/usr/local/bin/logs-service"]
|