Add CI to publish official container (#117)

Adds a Github Actions workflow to publish containers on merges to main
and when new tags are pushed.

As part of the change, cargo will now use the release when building the
published containers, but default to the dev profile when building the
container locally.

Signed-off-by: Danny Seymour danny@seymour.family
This commit is contained in:
Daniel Seymour
2023-06-07 07:38:09 -07:00
committed by GitHub
parent 9ee99cd547
commit 8fca8adb04
2 changed files with 83 additions and 7 deletions

View File

@@ -1,14 +1,19 @@
FROM docker.io/rust:alpine AS builder
RUN apk add python3 musl-dev pkgconfig openssl-dev make
RUN apk add python3 musl-dev pkgconfig openssl-dev make git
WORKDIR /opt/synapse-compressor/
COPY . .
ENV RUSTFLAGS="-C target-feature=-crt-static"
WORKDIR /opt/synapse-compressor/
# arm64 builds consume a lot of memory if `CARGO_NET_GIT_FETCH_WITH_CLI` is not
# set to true, so we expose it as a build-arg.
ARG CARGO_NET_GIT_FETCH_WITH_CLI=false
ENV CARGO_NET_GIT_FETCH_WITH_CLI=$CARGO_NET_GIT_FETCH_WITH_CLI
ARG BUILD_PROFILE=dev
COPY . .
RUN cargo build
RUN cargo build --profile=$BUILD_PROFILE
WORKDIR /opt/synapse-compressor/synapse_auto_compressor/
@@ -18,5 +23,5 @@ FROM docker.io/alpine
RUN apk add --no-cache libgcc
COPY --from=builder /opt/synapse-compressor/target/debug/synapse_compress_state /usr/local/bin/synapse_compress_state
COPY --from=builder /opt/synapse-compressor/target/debug/synapse_auto_compressor /usr/local/bin/synapse_auto_compressor
COPY --from=builder /opt/synapse-compressor/target/*/synapse_compress_state /usr/local/bin/synapse_compress_state
COPY --from=builder /opt/synapse-compressor/target/*/synapse_auto_compressor /usr/local/bin/synapse_auto_compressor