Some checks failed
Publish Docker image / Push Docker image to Docker Hub (push) Failing after 4m35s
Introduce GitHub Actions workflow for automated Docker image publishing to Docker Hub, along with a dedicated Dockerfile in the ci directory to streamline container builds.
117 lines
3.1 KiB
Docker
117 lines
3.1 KiB
Docker
# =============================================================================
|
|
# Stage 1: Build
|
|
# =============================================================================
|
|
FROM ubuntu:26.04 AS builder
|
|
|
|
ENV DEBIAN_FRONTEND=noninteractive
|
|
|
|
# Build dependencies for full build (all features enabled)
|
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
build-essential \
|
|
autoconf \
|
|
automake \
|
|
autoconf-archive \
|
|
libtool \
|
|
pkg-config \
|
|
git \
|
|
wget \
|
|
# Required dependencies
|
|
libglib2.0-dev \
|
|
libcurl4-openssl-dev \
|
|
libsqlite3-dev \
|
|
libncursesw-dev \
|
|
libreadline-dev \
|
|
# Optional: notifications
|
|
libnotify-dev \
|
|
# Optional: Python plugins
|
|
python3-dev \
|
|
python3 \
|
|
# Optional: PGP
|
|
libgpgme-dev \
|
|
# Optional: OTR
|
|
libotr-dev \
|
|
# Optional: GTK icons/clipboard
|
|
libgtk-3-dev \
|
|
# Optional: GDK Pixbuf
|
|
libgdk-pixbuf-2.0-dev \
|
|
# Optional: OMEMO
|
|
libsignal-protocol-c-dev \
|
|
libgcrypt20-dev \
|
|
# Optional: OMEMO QR code
|
|
libqrencode-dev \
|
|
# Optional: xscreensaver
|
|
libxss-dev \
|
|
# Test dependencies (needed for build verification)
|
|
libcmocka-dev \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
# Build libstrophe from source (not available as Ubuntu package)
|
|
RUN git clone --depth 1 https://github.com/strophe/libstrophe.git /tmp/libstrophe \
|
|
&& cd /tmp/libstrophe \
|
|
&& autoreconf -i \
|
|
&& ./configure --prefix=/usr \
|
|
&& make -j$(nproc) \
|
|
&& make install \
|
|
&& rm -rf /tmp/libstrophe
|
|
|
|
WORKDIR /src
|
|
|
|
COPY . .
|
|
|
|
RUN ./bootstrap.sh \
|
|
&& ./configure \
|
|
--enable-notifications \
|
|
--enable-icons-and-clipboard \
|
|
--enable-otr \
|
|
--enable-pgp \
|
|
--enable-omemo \
|
|
--enable-plugins \
|
|
--enable-c-plugins \
|
|
--enable-python-plugins \
|
|
--with-xscreensaver \
|
|
--enable-omemo-qrcode \
|
|
--enable-gdk-pixbuf \
|
|
&& make -j$(nproc) \
|
|
&& make install
|
|
|
|
# =============================================================================
|
|
# Stage 2: Runtime (minimal)
|
|
# =============================================================================
|
|
FROM ubuntu:26.04
|
|
|
|
ENV DEBIAN_FRONTEND=noninteractive
|
|
|
|
# Runtime dependencies only (no build tools, no tests)
|
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
# Required runtime
|
|
libglib2.0-0 \
|
|
libcurl4 \
|
|
libsqlite3-0 \
|
|
libncursesw6 \
|
|
libreadline8 \
|
|
# Optional feature runtimes
|
|
libnotify4 \
|
|
python3 \
|
|
libgpgme11 \
|
|
libotr5 \
|
|
libgtk-3-0 \
|
|
libgdk-pixbuf-2.0-0 \
|
|
libsignal-protocol-c-2.0.0 \
|
|
libgcrypt20 \
|
|
libqrencode4 \
|
|
libxss1 \
|
|
ca-certificates \
|
|
&& rm -rf /var/lib/apt/lists/* \
|
|
&& apt-get clean
|
|
|
|
# Copy installed files from builder stage
|
|
COPY --from=builder /usr/local/bin/profanity /usr/local/bin/profanity
|
|
COPY --from=builder /usr/local/lib/libprofanity* /usr/local/lib/
|
|
COPY --from=builder /usr/local/include/profapi.h /usr/local/include/
|
|
COPY --from=builder /usr/local/share/profanity /usr/local/share/profanity
|
|
|
|
# Runtime config/data directory
|
|
RUN mkdir -p /root/.config/profanity
|
|
|
|
ENTRYPOINT ["profanity"]
|