Some checks failed
Mark stable commit / test-unit (push) Has been cancelled
Mark stable commit / test-integration (push) Has been cancelled
Mark stable commit / test-env-virtual (push) Has been cancelled
Mark stable commit / test-env-nix (push) Has been cancelled
Mark stable commit / test-e2e (push) Has been cancelled
Mark stable commit / test-virgin-user (push) Has been cancelled
Mark stable commit / test-virgin-root (push) Has been cancelled
Mark stable commit / mark-stable (push) Has been cancelled
Refactor Dockerfile into multi-stage virgin/full targets and introduce a single flag-based image build script. Standardize image naming, remove redundant build scripts, and update Makefile targets accordingly. CI workflows now build missing virgin images and run root and user tests consistently across all supported distributions. https://chatgpt.com/share/693c29d9-9b28-800f-a549-5661c783d968
58 lines
1.6 KiB
Docker
58 lines
1.6 KiB
Docker
# syntax=docker/dockerfile:1
|
|
|
|
# ------------------------------------------------------------
|
|
# Base image selector — overridden by build args / Makefile
|
|
# ------------------------------------------------------------
|
|
ARG BASE_IMAGE
|
|
|
|
# ============================================================
|
|
# Target: virgin
|
|
# - installs distro deps (incl. make)
|
|
# - no pkgmgr build
|
|
# - no entrypoint
|
|
# ============================================================
|
|
FROM ${BASE_IMAGE} AS virgin
|
|
|
|
RUN echo "BASE_IMAGE=${BASE_IMAGE}" && cat /etc/os-release || true
|
|
|
|
WORKDIR /build
|
|
|
|
# Copy scripts first so dependency installation can be cached
|
|
COPY scripts/installation/ scripts/installation/
|
|
|
|
# Install distro-specific build dependencies (including make)
|
|
RUN bash scripts/installation/dependencies.sh
|
|
|
|
# Virgin default
|
|
CMD ["bash"]
|
|
|
|
|
|
# ============================================================
|
|
# Target: full
|
|
# - inherits from virgin
|
|
# - builds + installs pkgmgr
|
|
# - sets entrypoint + default cmd
|
|
# ============================================================
|
|
FROM virgin AS full
|
|
|
|
# Nix environment defaults (only config; nix itself comes from deps/install flow)
|
|
ENV NIX_CONFIG="experimental-features = nix-command flakes"
|
|
|
|
WORKDIR /build
|
|
|
|
# Copy full repository for build
|
|
COPY . .
|
|
|
|
# Build and install distro-native package-manager package
|
|
RUN set -euo pipefail; \
|
|
echo "Building and installing package-manager via make install..."; \
|
|
make install; \
|
|
cd /; rm -rf /build
|
|
|
|
# Entry point
|
|
COPY scripts/docker/entry.sh /usr/local/bin/docker-entry.sh
|
|
|
|
WORKDIR /src
|
|
ENTRYPOINT ["/usr/local/bin/docker-entry.sh"]
|
|
CMD ["pkgmgr", "--help"]
|