Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
5c92135
add concurrent processing with deadlock workaround and progress bar f…
furlongm Apr 15, 2026
8751b32
add fetch_concurrently helper function
furlongm Apr 22, 2026
0d82f3a
fix: deb kernel meta-packages bypass series check causing false HWE u…
mhrznamn068 Apr 23, 2026
bba4d20
fix: skip meta-packages in deb kernel series check instead of falling…
mhrznamn068 Apr 23, 2026
397fbf1
add ubuntu 26.04 resolute codename
furlongm Apr 25, 2026
0fbb318
Bump gitpython from 3.1.44 to 3.1.47
dependabot[bot] Apr 26, 2026
98cf20e
auto-commit to update version
furlongm Apr 29, 2026
e9b63e5
auto-commit to update debian changelog
furlongm Apr 29, 2026
e5661ec
django 5.2 compatibility updates
furlongm Apr 1, 2026
a7cbfc2
fix zstd decompression for python 3.13+ stdlib compression.zstd
furlongm Apr 30, 2026
36b09e4
skip decompression when content is already text
furlongm May 1, 2026
8802994
change erratum synopsis from CharField(255) to TextField
furlongm May 2, 2026
2878563
rename functions to match codebase style
furlongm Apr 23, 2026
f8619d5
handle non-http(s) mirror urls gracefully
furlongm May 5, 2026
c5618b0
escape filterlist values
furlongm May 5, 2026
bbad64a
auto-commit to update version
furlongm May 7, 2026
eebe11d
auto-commit to update debian changelog
furlongm May 7, 2026
51f0696
Merge remote-tracking branch 'upstream/main' into docker
RicardoJeronimo May 7, 2026
85d5419
Migrated base image from debian:bookworm-slim to debian:trixie-slim
RicardoJeronimo May 7, 2026
6984abb
Merge branch 'docker' into patchman-email
RicardoJeronimo May 28, 2026
778995b
Implemented multi-stage Docker build
RicardoJeronimo May 28, 2026
7a76ae8
Added gosu and ServerName directive to runtime stage
RicardoJeronimo May 28, 2026
c478678
Improved entrypoint robustness, security and observability
RicardoJeronimo May 28, 2026
44eb0da
Added .dockerignore
RicardoJeronimo May 28, 2026
3eb1c0e
Added HEALTHCHECK to Dockerfile
RicardoJeronimo May 28, 2026
cfb58f3
Excluded README.md from .dockerignore
RicardoJeronimo May 28, 2026
cfb864a
Minor fixes to log messages
RicardoJeronimo May 28, 2026
12be322
Removed redundant log message
RicardoJeronimo May 28, 2026
2cbd407
Added curl for HEALTHCHECK support
RicardoJeronimo May 28, 2026
94198fb
Removed unnecessary log messages
RicardoJeronimo May 28, 2026
7a16961
Merge branch 'docker' into patchman-email
RicardoJeronimo May 29, 2026
5737463
Re-added deleted comment
RicardoJeronimo May 29, 2026
3fca894
Fixed merge conflicts
RicardoJeronimo May 29, 2026
13cc259
Changed build tag to 'unstable'
RicardoJeronimo May 29, 2026
ef52176
Merge branch 'docker' into patchman-email
RicardoJeronimo May 29, 2026
3e2a43a
Minor log message fixes
RicardoJeronimo May 29, 2026
a7c8249
Merge branch 'docker' into patchman-email
RicardoJeronimo May 29, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
.git
.github
.gitignore
__pycache__
*.pyc
*.pyo
*.egg-info
.env
.venv
docs/
tests/
*.md
!README.md
2 changes: 1 addition & 1 deletion .github/workflows/docker-build.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ jobs:
file: docker/Dockerfile
platforms: linux/amd64,linux/arm64
push: true
tags: ${{vars.DOCKERHUB_USERNAME}}/${{vars.DOCKERHUB_CONTAINER}}:latest,${{vars.DOCKERHUB_USERNAME}}/${{vars.DOCKERHUB_CONTAINER}}:${{github.ref_name}}
tags: ${{vars.DOCKERHUB_USERNAME}}/${{vars.DOCKERHUB_CONTAINER}}:latest,${{vars.DOCKERHUB_USERNAME}}/${{vars.DOCKERHUB_CONTAINER}}:unstable
cache-from: type=gha
cache-to: type=gha,mode=max

Expand Down
2 changes: 1 addition & 1 deletion VERSION.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
4.0.18
4.0.20
55 changes: 55 additions & 0 deletions debian/changelog
Original file line number Diff line number Diff line change
@@ -1,3 +1,58 @@
patchman (4.0.20-1) stable; urgency=medium

* django 5.2 compatibility updates
* fix zstd decompression for python 3.13+ stdlib compression.zstd
* skip decompression when content is already text
* change erratum synopsis from CharField(255) to TextField
* rename functions to match codebase style
* handle non-http(s) mirror urls gracefully
* escape filterlist values
* auto-commit to update version skip-checks: true

-- Marcus Furlong <furlongm@gmail.com> Thu, 07 May 2026 01:05:41 +0000

patchman (4.0.19-1) stable; urgency=medium

[ dependabot[bot] ]
* Bump requests from 2.32.4 to 2.33.0

[ Marcus Furlong ]
* use sets instead of lists for update tracking
* merge duplicate update-finding methods into find_repo_updates
* remove underscore prefix from kernel helper methods
* don't rename repos from client reports
* filter deb kernel updates by major.minor series
* add package updates list view with table, filters, and nav entry
* add sortable columns to package list and name detail views

[ dependabot[bot] ]
* Bump django from 4.2.29 to 4.2.30
* add celery worker resilience for database connection timeouts
* auto-enable wal mode for sqlite backend
* fix duplicate verbose_name_plural in report model meta
* sanitize filter_params in bulk action views
* add null guard for missing references element in updateinfo xml
* return early on yaml parse error in extract_module_metadata
* fix null url handling in osv.dev cve references
* send info messages to stdout instead of stderr
* move function-level import to top-level
* bulk db optimizations for errata processing
* add concurrent processing with deadlock workaround and progress bar fixes
* add fetch_concurrently helper function

[ Aman Maharjan ]
* fix: deb kernel meta-packages bypass series check causing false HWE updates
* fix: skip meta-packages in deb kernel series check instead of falling back to running kernel

[ Marcus Furlong ]
* add ubuntu 26.04 resolute codename

[ dependabot[bot] ]
* Bump gitpython from 3.1.44 to 3.1.47
* auto-commit to update version skip-checks: true

-- Marcus Furlong <furlongm@gmail.com> Wed, 29 Apr 2026 01:25:17 +0000

patchman (4.0.18-1) stable; urgency=medium

* handle malformed repos better
Expand Down
91 changes: 75 additions & 16 deletions docker/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,26 +1,85 @@
FROM debian:bookworm-slim
FROM debian:trixie-slim AS builder

RUN apt -y update && apt -y upgrade
RUN apt install -y apache2 git libapache2-mod-wsgi-py3 mariadb-client python-celery-common python3-celery python3-debian python3-defusedxml python3-lxml python3-mysqldb python3-pip python3-progressbar python3-psycopg2 python3-redis python3-rpm sendmail sharutils uuid-runtime vim weasyprint
ENV PYTHONDONTWRITEBYTECODE=1 \
PYTHONUNBUFFERED=1 \
PATCHMAN_HOME=/srv/patchman

WORKDIR /srv/patchman
RUN apt-get -y update && apt-get -y upgrade && \
apt-get install -y --no-install-recommends \
python3-pip \
&& rm -rf /var/lib/apt/lists/*

COPY . /srv/patchman/
COPY ./etc/patchman/apache.conf.example /etc/apache2/sites-available/patchman.conf
WORKDIR ${PATCHMAN_HOME}

RUN /srv/patchman/setup.py install
COPY requirements.txt .
RUN pip install --no-cache-dir --break-system-packages setuptools -r requirements.txt

COPY ./email/patchman-email /usr/bin/patchman-email
COPY ./etc/patchman/patchman-email.conf /etc/patchman/patchman-email.conf
RUN chmod u+x /usr/bin/patchman-email
COPY . ${PATCHMAN_HOME}/

RUN ${PATCHMAN_HOME}/setup.py install --no-compile && \
rm -rf build/ dist/ *.egg-info/ .eggs/ /root/.cache/


FROM debian:trixie-slim AS runtime

LABEL maintainer="4950815+RicardoJeronimo@users.noreply.github.com" \
org.opencontainers.image.title="Patchman" \
org.opencontainers.image.base.name="debian:trixie-slim" \
org.opencontainers.image.source="https://github.com/RicardoJeronimo/patchman"

ENV PYTHONDONTWRITEBYTECODE=1 \
PYTHONUNBUFFERED=1 \
PATCHMAN_HOME=/srv/patchman

RUN a2enmod wsgi
RUN a2ensite patchman
RUN apt-get -y update && apt-get -y upgrade && \
apt-get install -y --no-install-recommends \
apache2 \
curl \
git \
gosu \
libapache2-mod-wsgi-py3 \
libmagic1 \
mariadb-client \
python3-debian \
python3-defusedxml \
python3-lxml \
python3-mysqldb \
python3-packaging \
python3-psycopg2 \
sendmail \
sharutils \
uuid-runtime \
weasyprint \
&& rm -rf /var/lib/apt/lists/*

RUN mkdir -p /var/lib/patchman/db
RUN chown :www-data /var/lib/patchman/db && chmod 2770 /var/lib/patchman/db
WORKDIR ${PATCHMAN_HOME}

COPY --from=builder /usr/local/lib/ /usr/local/lib/
COPY --from=builder /usr/local/bin/patchman* /usr/local/bin/
COPY --from=builder /usr/local/bin/celery /usr/local/bin/
COPY --from=builder /etc/patchman/ /etc/patchman/
COPY --from=builder ${PATCHMAN_HOME}/ ${PATCHMAN_HOME}/

RUN cp ${PATCHMAN_HOME}/etc/patchman/apache.conf.example /etc/apache2/sites-available/patchman.conf && \
echo "ServerName localhost" >> /etc/apache2/apache2.conf && \
a2enmod wsgi && \
a2ensite patchman && \
a2dissite 000-default && \
groupadd --system patchman && \
useradd --system --gid patchman --no-create-home patchman && \
mkdir -p /var/lib/patchman/db && \
chown patchman:www-data /var/lib/patchman/db && \
chmod 2770 /var/lib/patchman/db

COPY ./docker/docker-entrypoint.sh /usr/local/bin/docker-entrypoint.sh
COPY ./email/patchman-email /usr/bin/patchman-email
COPY ./etc/patchman/patchman-email.conf /etc/patchman/patchman-email.conf
RUN chmod +x /usr/local/bin/docker-entrypoint.sh && \
chmod +x /usr/bin/patchman-email

EXPOSE 80

COPY ./docker/docker-entrypoint.sh docker-entrypoint.sh
ENTRYPOINT ["./docker-entrypoint.sh"]
HEALTHCHECK --interval=30s --timeout=5s --start-period=30s --retries=3 \
CMD curl -f http://localhost/patchman/ || exit 1

ENTRYPOINT ["docker-entrypoint.sh"]
Loading
Loading