creating reproducible build images
This commit is contained in:
@@ -0,0 +1,81 @@
|
||||
# Dockerfile for Arch Linux build environment
|
||||
# Automates all setup steps from the build-arch workflow job
|
||||
#
|
||||
# Usage:
|
||||
# docker build -f scripts/docker/Dockerfile.arch -t android-file-handler-arch-builder .
|
||||
# docker run -v $(pwd):/workspace -w /workspace android-file-handler-arch-builder
|
||||
|
||||
# Use latest Arch Linux base image (rolling release)
|
||||
# For reproducibility, pin to a specific date tag like: archlinux:base-20251016
|
||||
FROM archlinux:latest
|
||||
|
||||
# Set build argument for fpm version (can be overridden at build time)
|
||||
ARG FPM_VERSION=1.16.0
|
||||
|
||||
# Install system dependencies (Arch) including Python build dependencies
|
||||
RUN pacman -Syu --noconfirm && \
|
||||
pacman -S --noconfirm \
|
||||
ruby \
|
||||
base-devel \
|
||||
curl \
|
||||
git \
|
||||
tar \
|
||||
ca-certificates \
|
||||
tk \
|
||||
tcl \
|
||||
libx11 \
|
||||
libxext \
|
||||
libxrender \
|
||||
libxcb \
|
||||
gcc \
|
||||
make \
|
||||
zlib \
|
||||
bzip2 \
|
||||
readline \
|
||||
sqlite \
|
||||
openssl \
|
||||
libffi \
|
||||
wget \
|
||||
xz \
|
||||
patch && \
|
||||
pacman -Scc --noconfirm
|
||||
|
||||
# Install erb gem (required for fpm on Arch)
|
||||
RUN gem install --no-document erb
|
||||
|
||||
# Install fpm system-wide and pin version so fpm will be in /usr/bin
|
||||
RUN gem install --no-document -v "${FPM_VERSION}" fpm --bindir /usr/bin
|
||||
|
||||
# Install pyenv
|
||||
ENV PYENV_ROOT="/root/.pyenv"
|
||||
ENV PATH="$PYENV_ROOT/bin:$PATH"
|
||||
|
||||
RUN git clone https://github.com/pyenv/pyenv.git /root/.pyenv
|
||||
|
||||
# Install Python 3.12 via pyenv
|
||||
RUN eval "$(pyenv init -)" && \
|
||||
pyenv install 3.12.0 && \
|
||||
pyenv global 3.12.0 && \
|
||||
pyenv rehash
|
||||
|
||||
# Update PATH to include pyenv shims
|
||||
ENV PATH="/root/.pyenv/shims:$PATH"
|
||||
|
||||
# Install Poetry
|
||||
RUN curl -sSL https://install.python-poetry.org | python3 - --yes
|
||||
|
||||
# Add Poetry to PATH
|
||||
ENV PATH="/root/.local/bin:$PATH"
|
||||
|
||||
# Verify Poetry installation
|
||||
RUN poetry --version
|
||||
|
||||
# Set working directory
|
||||
WORKDIR /workspace
|
||||
|
||||
# Set environment variables for build
|
||||
ENV CI_CD=true
|
||||
ENV DISTRO_TYPE=arch
|
||||
|
||||
# Default command runs the build script
|
||||
CMD ["sh", "-c", "poetry install --no-interaction && poetry run python scripts/build_package_linux.py"]
|
||||
@@ -0,0 +1,81 @@
|
||||
# Dockerfile for Debian build environment
|
||||
# Automates all setup steps from the build-debian workflow job
|
||||
#
|
||||
# Usage:
|
||||
# docker build -f scripts/docker/Dockerfile.debian -t android-file-handler-debian-builder .
|
||||
# docker run -v $(pwd):/workspace -w /workspace android-file-handler-debian-builder
|
||||
|
||||
# Use Debian 13 "Trixie" (latest stable release)
|
||||
FROM debian:13
|
||||
|
||||
# Set build argument for fpm version (can be overridden at build time)
|
||||
ARG FPM_VERSION=1.16.0
|
||||
|
||||
# Install system dependencies including Python build dependencies
|
||||
RUN apt-get update && \
|
||||
apt-get install -y --no-install-recommends \
|
||||
curl \
|
||||
git \
|
||||
build-essential \
|
||||
ruby \
|
||||
ruby-dev \
|
||||
gcc \
|
||||
make \
|
||||
zlib1g-dev \
|
||||
ca-certificates \
|
||||
tcl8.6 \
|
||||
tk8.6 \
|
||||
tcl8.6-dev \
|
||||
tk8.6-dev \
|
||||
libx11-6 \
|
||||
libxext6 \
|
||||
libxrender1 \
|
||||
libxcb1 \
|
||||
libbz2-dev \
|
||||
libreadline-dev \
|
||||
libsqlite3-dev \
|
||||
libssl-dev \
|
||||
libffi-dev \
|
||||
wget \
|
||||
tar \
|
||||
liblzma-dev \
|
||||
patch && \
|
||||
apt-get clean && \
|
||||
rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# Install pyenv
|
||||
ENV PYENV_ROOT="/root/.pyenv"
|
||||
ENV PATH="$PYENV_ROOT/bin:$PATH"
|
||||
|
||||
RUN git clone https://github.com/pyenv/pyenv.git /root/.pyenv
|
||||
|
||||
# Install Python 3.12 via pyenv
|
||||
RUN eval "$(pyenv init -)" && \
|
||||
pyenv install 3.12.0 && \
|
||||
pyenv global 3.12.0 && \
|
||||
pyenv rehash
|
||||
|
||||
# Update PATH to include pyenv shims
|
||||
ENV PATH="/root/.pyenv/shims:$PATH"
|
||||
|
||||
# Install Poetry
|
||||
RUN curl -sSL https://install.python-poetry.org | python3 - --yes
|
||||
|
||||
# Add Poetry to PATH
|
||||
ENV PATH="/root/.local/bin:$PATH"
|
||||
|
||||
# Verify Poetry installation
|
||||
RUN poetry --version
|
||||
|
||||
# Install fpm
|
||||
RUN gem install --no-document -v "${FPM_VERSION}" fpm
|
||||
|
||||
# Set working directory
|
||||
WORKDIR /workspace
|
||||
|
||||
# Set environment variables for build
|
||||
ENV CI_CD=true
|
||||
ENV DISTRO_TYPE=debian
|
||||
|
||||
# Default command runs the build script
|
||||
CMD ["sh", "-c", "poetry install --no-interaction && poetry run python scripts/build_package_linux.py"]
|
||||
@@ -5,7 +5,7 @@
|
||||
# docker build -f scripts/docker/Dockerfile.rhel -t android-file-handler-rhel-builder .
|
||||
# docker run -v $(pwd):/workspace -w /workspace android-file-handler-rhel-builder
|
||||
|
||||
FROM fedora:latest
|
||||
FROM fedora:42
|
||||
|
||||
# Set build argument for fpm version (can be overridden at build time)
|
||||
ARG FPM_VERSION=1.16.0
|
||||
|
||||
Reference in New Issue
Block a user