mirror of
				https://github.com/paperless-ngx/paperless-ngx.git
				synced 2025-11-03 03:16:10 -06:00 
			
		
		
		
	Updates the utlity build script to actually support all the images
This commit is contained in:
		
							
								
								
									
										8
									
								
								.github/workflows/ci.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										8
									
								
								.github/workflows/ci.yml
									
									
									
									
										vendored
									
									
								
							@@ -168,8 +168,8 @@ jobs:
 | 
			
		||||
      dockerfile: ./docker-builders/Dockerfile.psycopg2
 | 
			
		||||
      build-json: ${{ needs.prepare-docker-build.outputs.psycopg2-json }}
 | 
			
		||||
      build-args: |
 | 
			
		||||
        GIT_TAG=${{ fromJSON(needs.prepare-docker-build.outputs.psycopg2-json).git_tag }}
 | 
			
		||||
        VERSION=${{ fromJSON(needs.prepare-docker-build.outputs.psycopg2-json).version }}
 | 
			
		||||
        PSYCOPG2_GIT_TAG=${{ fromJSON(needs.prepare-docker-build.outputs.psycopg2-json).git_tag }}
 | 
			
		||||
        PSYCOPG2_VERSION=${{ fromJSON(needs.prepare-docker-build.outputs.psycopg2-json).version }}
 | 
			
		||||
 | 
			
		||||
  build-pikepdf-wheel:
 | 
			
		||||
    name: pikepdf
 | 
			
		||||
@@ -183,8 +183,8 @@ jobs:
 | 
			
		||||
      build-args: |
 | 
			
		||||
        REPO=${{ github.repository }}
 | 
			
		||||
        QPDF_VERSION=${{ fromJSON(needs.prepare-docker-build.outputs.qpdf-json).version }}
 | 
			
		||||
        GIT_TAG=${{ fromJSON(needs.prepare-docker-build.outputs.pikepdf-json).git_tag }}
 | 
			
		||||
        VERSION=${{ fromJSON(needs.prepare-docker-build.outputs.pikepdf-json).version }}
 | 
			
		||||
        PIKEPDF_GIT_TAG=${{ fromJSON(needs.prepare-docker-build.outputs.pikepdf-json).git_tag }}
 | 
			
		||||
        PIKEPDF_VERSION=${{ fromJSON(needs.prepare-docker-build.outputs.pikepdf-json).version }}
 | 
			
		||||
 | 
			
		||||
  build-frontend:
 | 
			
		||||
    name: Compile frontend
 | 
			
		||||
 
 | 
			
		||||
@@ -2,7 +2,8 @@
 | 
			
		||||
 | 
			
		||||
# Helper script for building the Docker image locally.
 | 
			
		||||
# Parses and provides the nessecary versions of other images to Docker
 | 
			
		||||
# before passing in the rest of script args
 | 
			
		||||
# before passing in the rest of script args.  A future enhancement
 | 
			
		||||
# would be to combine this with the CI script
 | 
			
		||||
 | 
			
		||||
# First Argument: The Dockerfile to build
 | 
			
		||||
# Other Arguments: Additional arguments to docker build
 | 
			
		||||
@@ -13,6 +14,14 @@
 | 
			
		||||
 | 
			
		||||
set -eux
 | 
			
		||||
 | 
			
		||||
if ! command -v jq;  then
 | 
			
		||||
	echo "jq required"
 | 
			
		||||
	exit 1
 | 
			
		||||
elif [ ! -f "$1" ]; then
 | 
			
		||||
	echo "$1 is not a file, please provide the Dockerfile"
 | 
			
		||||
	exit 1
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
# Parse what we can from Pipfile.lock
 | 
			
		||||
pikepdf_version=$(jq ".default.pikepdf.version" Pipfile.lock  | sed 's/=//g' | sed 's/"//g')
 | 
			
		||||
psycopg2_version=$(jq ".default.psycopg2.version" Pipfile.lock | sed 's/=//g' | sed 's/"//g')
 | 
			
		||||
@@ -20,16 +29,19 @@ psycopg2_version=$(jq ".default.psycopg2.version" Pipfile.lock | sed 's/=//g' |
 | 
			
		||||
qpdf_version=$(jq ".qpdf.version" .build-config.json | sed 's/"//g')
 | 
			
		||||
jbig2enc_version=$(jq ".jbig2enc.version" .build-config.json | sed 's/"//g')
 | 
			
		||||
# Get the branch name
 | 
			
		||||
frontend=$(git rev-parse --abbrev-ref HEAD)
 | 
			
		||||
frontend_version=$(git rev-parse --abbrev-ref HEAD)
 | 
			
		||||
 | 
			
		||||
if [ ! -f "$1" ]; then
 | 
			
		||||
	echo "$1 is not a file, please provide the Dockerfile"
 | 
			
		||||
	exit 1
 | 
			
		||||
fi
 | 
			
		||||
# Get Git tags for building
 | 
			
		||||
# psycopg2 uses X_Y_Z git tags
 | 
			
		||||
psycopg2_git_tag=${psycopg2_version//./_}
 | 
			
		||||
# pikepdf uses vX.Y.Z
 | 
			
		||||
pikepdf_git_tag="v${pikepdf_version}"
 | 
			
		||||
 | 
			
		||||
docker build --file "$1" \
 | 
			
		||||
	--build-arg JBIG2ENC_VERSION="${jbig2enc_version}" \
 | 
			
		||||
	--build-arg QPDF_VERSION="${qpdf_version}" \
 | 
			
		||||
	--build-arg PIKEPDF_VERSION="${pikepdf_version}" \
 | 
			
		||||
	--build-arg PIKEPDF_GIT_TAG="${pikepdf_git_tag}" \
 | 
			
		||||
	--build-arg PSYCOPG2_VERSION="${psycopg2_version}" \
 | 
			
		||||
	--build-arg FRONTEND_VERSION="${frontend}" "${@:2}" .
 | 
			
		||||
	--build-arg PSYCOPG2_GIT_TAG="${psycopg2_git_tag}" \
 | 
			
		||||
	--build-arg FRONTEND_VERSION="${frontend_version}" "${@:2}" .
 | 
			
		||||
 
 | 
			
		||||
@@ -2,8 +2,8 @@
 | 
			
		||||
# Inputs:
 | 
			
		||||
#		- REPO - Docker repository to pull qpdf from
 | 
			
		||||
#		- QPDF_VERSION - The image qpdf version to copy .deb files from
 | 
			
		||||
#		- GIT_TAG - The Git tag to clone and build from
 | 
			
		||||
#		- VERSION - Used to force the built pikepdf version to match
 | 
			
		||||
#		- PIKEPDF_GIT_TAG - The Git tag to clone and build from
 | 
			
		||||
#		- PIKEPDF_VERSION - Used to force the built pikepdf version to match
 | 
			
		||||
 | 
			
		||||
# Default to pulling from the main repo registry when manually building
 | 
			
		||||
ARG REPO="paperless-ngx/paperless-ngx"
 | 
			
		||||
@@ -32,7 +32,7 @@ ARG BUILD_PACKAGES="\
 | 
			
		||||
 | 
			
		||||
WORKDIR /usr/src
 | 
			
		||||
 | 
			
		||||
COPY --from=qpdf-builder /usr/src/qpdf/*.deb .
 | 
			
		||||
COPY --from=qpdf-builder /usr/src/qpdf/*.deb ./
 | 
			
		||||
 | 
			
		||||
# As this is an base image for a multi-stage final image
 | 
			
		||||
# the added size of the install is basically irrelevant
 | 
			
		||||
@@ -49,19 +49,19 @@ RUN set -eux \
 | 
			
		||||
# For better caching, seperate the basic installs from
 | 
			
		||||
# the building
 | 
			
		||||
 | 
			
		||||
ARG GIT_TAG
 | 
			
		||||
ARG VERSION
 | 
			
		||||
ARG PIKEPDF_GIT_TAG
 | 
			
		||||
ARG PIKEPDF_VERSION
 | 
			
		||||
 | 
			
		||||
RUN set -eux \
 | 
			
		||||
	&& echo "building pikepdf wheel" \
 | 
			
		||||
  # Note the v in the tag name here
 | 
			
		||||
  && git clone --quiet --depth 1 --branch "${GIT_TAG}" https://github.com/pikepdf/pikepdf.git \
 | 
			
		||||
  && git clone --quiet --depth 1 --branch "${PIKEPDF_GIT_TAG}" https://github.com/pikepdf/pikepdf.git \
 | 
			
		||||
  && cd pikepdf \
 | 
			
		||||
  # pikepdf seems to specifciy either a next version when built OR
 | 
			
		||||
  # a post release tag.
 | 
			
		||||
  # In either case, this won't match what we want from requirements.txt
 | 
			
		||||
  # Directly modify the setup.py to set the version we just checked out of Git
 | 
			
		||||
  && sed -i "s/use_scm_version=True/version=\"${VERSION}\"/g" setup.py \
 | 
			
		||||
  && sed -i "s/use_scm_version=True/version=\"${PIKEPDF_VERSION}\"/g" setup.py \
 | 
			
		||||
  # https://github.com/pikepdf/pikepdf/issues/323
 | 
			
		||||
  && rm pyproject.toml \
 | 
			
		||||
  && mkdir wheels \
 | 
			
		||||
 
 | 
			
		||||
@@ -1,7 +1,7 @@
 | 
			
		||||
# This Dockerfile builds the psycopg2 wheel
 | 
			
		||||
# Inputs:
 | 
			
		||||
#		- GIT_TAG - The Git tag to clone and build from
 | 
			
		||||
#		- VERSION - Unused, kept for future possible usage
 | 
			
		||||
#		- PSYCOPG2_GIT_TAG - The Git tag to clone and build from
 | 
			
		||||
#		- PSYCOPG2_VERSION - Unused, kept for future possible usage
 | 
			
		||||
 | 
			
		||||
FROM python:3.9-slim-bullseye
 | 
			
		||||
 | 
			
		||||
@@ -31,13 +31,13 @@ RUN set -eux \
 | 
			
		||||
# For better caching, seperate the basic installs from
 | 
			
		||||
# the building
 | 
			
		||||
 | 
			
		||||
ARG GIT_TAG
 | 
			
		||||
ARG VERSION
 | 
			
		||||
ARG PSYCOPG2_GIT_TAG
 | 
			
		||||
ARG PSYCOPG2_VERSION
 | 
			
		||||
 | 
			
		||||
RUN set -eux \
 | 
			
		||||
	&& echo "Building psycopg2 wheel" \
 | 
			
		||||
  && cd /usr/src \
 | 
			
		||||
  && git clone --quiet --depth 1 --branch ${GIT_TAG} https://github.com/psycopg/psycopg2.git \
 | 
			
		||||
  && git clone --quiet --depth 1 --branch ${PSYCOPG2_GIT_TAG} https://github.com/psycopg/psycopg2.git \
 | 
			
		||||
  && cd psycopg2 \
 | 
			
		||||
  && mkdir wheels \
 | 
			
		||||
  && python3 -m pip wheel . --wheel-dir wheels \
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user