Skip to content
Open

vNext #191

Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
45 commits
Select commit Hold shift + click to select a range
744434b
Bump python in the docker-dependencies group
dependabot[bot] Mar 16, 2026
c1683d3
Merge pull request #189 from yubiuser/main
yubiuser Mar 16, 2026
55d6807
Merge pull request #190 from yubiuser/dependabot/docker/development/d…
yubiuser Mar 16, 2026
2348574
Pin base images by sha to address silent rebuilds
yubiuser Mar 16, 2026
4f1b36d
Merge pull request #192 from yubiuser/pin/sha
yubiuser Mar 16, 2026
778d59c
Use https://github.com/docker/github-builder to build and publish images
yubiuser Mar 16, 2026
6666c60
Merge pull request #193 from yubiuser/github_build
yubiuser Mar 16, 2026
e9682ab
Disable signing to prevent sha tag-spam in the GHCR
yubiuser Mar 16, 2026
b18635b
Merge pull request #194 from yubiuser/fix/sign
yubiuser Mar 16, 2026
7a6b4ae
Add caching
yubiuser Mar 16, 2026
d3112e3
Fix base image sha
yubiuser Mar 16, 2026
38f92a6
Merge pull request #195 from yubiuser/caching
yubiuser Mar 16, 2026
f0d1340
Bump docker/github-builder/.github/workflows/build.yml
dependabot[bot] Mar 21, 2026
99c3f5c
Merge pull request #196 from yubiuser/dependabot/github_actions/devel…
yubiuser Mar 21, 2026
e96a9a6
Update webchanges to 3.34.2
yubiuser Mar 22, 2026
ac3664d
Merge pull request #197 from yubiuser/3.34.2
yubiuser Mar 30, 2026
7ec6c6b
Bump docker/github-builder/.github/workflows/build.yml
dependabot[bot] Apr 4, 2026
e9fb0d6
Merge pull request #198 from yubiuser/dependabot/github_actions/devel…
yubiuser Apr 4, 2026
a1666de
Bump docker/github-builder/.github/workflows/build.yml
dependabot[bot] Apr 18, 2026
7907737
Merge pull request #201 from yubiuser/dependabot/github_actions/devel…
yubiuser Apr 18, 2026
eed7d39
Update webchanges to 3.36.0
yubiuser Apr 26, 2026
f00bbe2
Use fail-fast approach
yubiuser Apr 26, 2026
17e0bde
Add curl_cffi backend
yubiuser Apr 26, 2026
da97545
Add *.schema.json files
yubiuser Apr 26, 2026
83550a8
Fix markdown
yubiuser Apr 26, 2026
a9af33a
Merge pull request #202 from yubiuser/3.36.0
yubiuser Apr 26, 2026
776f3d2
Update webchanges to 3.36.1
yubiuser Apr 27, 2026
54ae604
Merge pull request #203 from yubiuser/3.36.1
yubiuser Apr 27, 2026
4c9cc6d
Bump the github_action-dependencies group with 2 updates
dependabot[bot] May 9, 2026
7d514f1
Remove deprecated runner:auto
yubiuser May 10, 2026
da2b463
Merge pull request #204 from yubiuser/dependabot/github_actions/devel…
yubiuser May 10, 2026
dc697e2
Bump the docker-dependencies group across 1 directory with 2 updates
dependabot[bot] May 16, 2026
630ea18
Merge pull request #200 from yubiuser/dependabot/docker/development/d…
yubiuser May 16, 2026
c7d0357
Bump docker/github-builder/.github/workflows/build.yml
dependabot[bot] May 23, 2026
726899b
Merge pull request #205 from yubiuser/dependabot/github_actions/devel…
yubiuser May 23, 2026
bf32817
Bump docker/github-builder/.github/workflows/build.yml
dependabot[bot] May 30, 2026
b059ed3
Merge pull request #206 from yubiuser/dependabot/github_actions/devel…
yubiuser May 30, 2026
3b5e76b
Bump the github_action-dependencies group with 2 updates
dependabot[bot] Jun 6, 2026
da42eac
Merge pull request #207 from yubiuser/dependabot/github_actions/devel…
yubiuser Jun 6, 2026
d2d3495
Bump docker/github-builder/.github/workflows/build.yml
dependabot[bot] Jun 13, 2026
3cf7bcf
Merge pull request #209 from yubiuser/dependabot/github_actions/devel…
yubiuser Jun 13, 2026
6f39d4e
Bump alpine in the docker-dependencies group across 1 directory
dependabot[bot] Jun 20, 2026
f2b2a4e
Merge pull request #210 from yubiuser/dependabot/docker/development/d…
yubiuser Jun 20, 2026
95b5785
Bump actions/checkout in the github_action-dependencies group
dependabot[bot] Jun 20, 2026
fe5f80f
Merge pull request #211 from yubiuser/dependabot/github_actions/devel…
yubiuser Jun 20, 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
151 changes: 37 additions & 114 deletions .github/workflows/ci.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -12,123 +12,46 @@ on:
env:
REGISTRY_IMAGE: ghcr.io/yubiuser/webchanges

permissions:
contents: read

jobs:
build-prepare:
runs-on: ubuntu-24.04
outputs:
REGISTRY_IMAGE: ${{ env.REGISTRY_IMAGE }}
steps:
# FIXME: can't use env object in reusable workflow inputs: https://github.com/orgs/community/discussions/26671
- run: echo "Exposing env vars for reusable workflow"
build:
runs-on: ${{ matrix.runner }}
uses: docker/github-builder/.github/workflows/build.yml@v1.12.0
permissions:
contents: read
packages: write
strategy:
fail-fast: true
matrix:
include:
- platform: linux/amd64
runner: ubuntu-latest
- platform: linux/arm64
runner: ubuntu-24.04-arm
steps:

- name: Prepare name for digest up/download
run: |
platform=${{ matrix.platform }}
echo "PLATFORM_PAIR=${platform//\//-}" >> $GITHUB_ENV

-
name: Checkout Code
uses: actions/checkout@v6.0.2

-
name: Set up QEMU
uses: docker/setup-qemu-action@v4.0.0

-
name: Set up Docker Buildx
uses: docker/setup-buildx-action@v4.0.0

-
name: Extract metadata (tags, labels) for Docker
id: meta
uses: docker/metadata-action@v6
with:
images: |
${{ env.REGISTRY_IMAGE }}
-
name: Login to GitHub Container Registry
uses: docker/login-action@v4.0.0
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}

-
name: Build and push Docker image
uses: docker/build-push-action@v7.0.0
id: build
with:
context: .
platforms: ${{ matrix.platform }}
labels: ${{ steps.meta.outputs.labels }}
provenance: false
outputs: type=image,name=${{ env.REGISTRY_IMAGE }},push-by-digest=true,name-canonical=true,push=${{ github.event.pull_request.head.repo.full_name == github.repository || github.event_name == 'push' || github.event_name == 'release' }}

- name: Export digest
run: |
mkdir -p /tmp/digests
digest="${{ steps.build.outputs.digest }}"
touch "/tmp/digests/${digest#sha256:}"
- name: Upload digest
uses: actions/upload-artifact@v7.0.0
with:
name: digests-${{ env.PLATFORM_PAIR }}
path: /tmp/digests/*
if-no-files-found: error
retention-days: 1

merge:
runs-on: ubuntu-latest
packages: write # required to push to GHCR
id-token: write # for signing attestation(s) with GitHub OIDC Token
needs:
- build
if: |
github.actor != 'dependabot[bot]'
&& ( github.event.pull_request.head.repo.full_name == github.repository || github.event_name == 'push' || github.event_name == 'release' )
permissions:
contents: read
packages: write
steps:
- name: Download digests
uses: actions/download-artifact@v8.0.1
with:
path: /tmp/digests
pattern: digests-*
merge-multiple: true

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v4.0.0
- name: Docker meta
id: meta
uses: docker/metadata-action@v6
with:
images: |
${{ env.REGISTRY_IMAGE }}
tags: |
type=semver,pattern={{version}}
type=semver,pattern={{major}}.{{minor}}
type=semver,pattern={{major}}
type=sha,enable=${{ github.event_name == 'workflow_dispatch' }}
type=ref,event=pr
type=ref,event=branch
- name: Login to GitHub Container Registry
uses: docker/login-action@v4.0.0
with:
registry: ghcr.io
- build-prepare
with:
distribute: true
setup-qemu: true
output: image
cache: true
cache-scope: build
fail-fast: true
push: ${{ github.actor != 'dependabot[bot]' && ( github.event.pull_request.head.repo.full_name == github.repository || github.event_name == 'push' || github.event_name == 'release' ) }}
meta-images: ${{ needs.build-prepare.outputs.REGISTRY_IMAGE }}
meta-tags: |
type=semver,pattern={{version}}
type=semver,pattern={{major}}.{{minor}}
type=semver,pattern={{major}}
type=sha,enable=${{ github.event_name == 'workflow_dispatch' }}
type=ref,event=pr
type=ref,event=branch
platforms: linux/amd64,linux/arm64
# FIXME: GHCR does not support the referrers API and spams the registry with sha-tagged images when cosigned: https://github.com/docker/github-builder/issues/109
sign: false
secrets:
registry-auths: |
- registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Create manifest list and push
working-directory: /tmp/digests
run: |
docker buildx imagetools create $(jq -cr '.tags | map("-t " + .) | join(" ")' <<< "$DOCKER_METADATA_OUTPUT_JSON") \
$(printf '${{ env.REGISTRY_IMAGE }}@sha256:%s ' *)
- name: Inspect image
run: |
docker buildx imagetools inspect --raw ${{ env.REGISTRY_IMAGE }}:${{ steps.meta.outputs.version }}

password: ${{ secrets.GITHUB_TOKEN }}
2 changes: 1 addition & 1 deletion .github/workflows/delete_untagged_images.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Delete all images from repository without tags
uses: Chizkiyahu/delete-untagged-ghcr-action@v6.1.0
uses: Chizkiyahu/delete-untagged-ghcr-action@v6.1.1
with:
token: ${{ secrets.PAT_TOKEN }}
repository_owner: ${{ github.repository_owner }}
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/sync-back-to-dev.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ jobs:
name: Syncing branches
steps:
- name: Checkout
uses: actions/checkout@v6.0.2
uses: actions/checkout@v7.0.0
- name: Opening pull request
run: gh pr create -B development -H main --title 'Sync main back into development' --body 'Created by Github action'
env:
Expand Down
19 changes: 10 additions & 9 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# syntax=docker/dockerfile:1
ARG webchanges_tag=v3.34.1
ARG webchanges_tag=v3.36.1

FROM python:3.14.1-alpine3.22 AS builder
FROM python:3.14.5-alpine3.22 AS builder
ARG webchanges_tag
ENV PYTHONUTF8=1

Expand Down Expand Up @@ -32,17 +32,18 @@ RUN python3 -m pip install -r requirements.txt \
# Install some additional packages used by webchanges (optional)
# see https://webchanges.readthedocs.io/en/stable/dependencies.html
RUN python3 -m pip install \
html5lib \
beautifulsoup4 \
jsbeautifier \
chump \
cssbeautifier \
curl_cffi \
html5lib \
jq \
chump \
pyopenssl \
jsbeautifier \
minidb \
pyopenssl \
python-dateutil \
zstandard \
vobject
vobject \
zstandard

# Copy entrypoint script
COPY webchanges.py webchanges.py
Expand All @@ -60,7 +61,7 @@ RUN python3 -m PyInstaller -F --strip webchanges.py



FROM alpine:3.23 AS deploy
FROM alpine:3.24.1@sha256:28bd5fe8b56d1bd048e5babf5b10710ebe0bae67db86916198a6eec434943f8b AS deploy
ENV APP_USER=webchanges
ENV PYTHONUTF8=1
RUN apk add --no-cache tini
Expand Down
21 changes: 11 additions & 10 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,19 +4,20 @@ This repo provides a small docker image for running [webchanges](https://github.

The following optional dependencies of `webchanges` are included (see [Dependencies](https://webchanges.readthedocs.io/en/stable/dependencies.html#dependencies))

| | Comment |
|---|---|
| | Comment |
| --- | --- |
| `beautifulsoup4` | `beautify` filter |
| `chump` | for `pushover` reporter |
| `cssbeautifier` | `beautify` filter |
| `curl_cffi` | to allow curl_cffi backend |
| `html5lib` | parser for the bs4 method of the html2text filter |
| `jq` | |
| `jsbeautifier` | `beautify` filter |
| `minidb` | to allow importing legacy `urlwatch` databases |
| `html5lib` | parser for the bs4 method of the html2text filter |
| `beautifulsoup4` | `beautify` filter |
| `jsbeautifier` | `beautify` filter |
| `cssbeautifier` | `beautify` filter |
| `jq` | |
| `chump` | for `pushover` reporter |
| `pyopenssl` | |
| `pyopenssl` | |
| `python-dateutil` | for `--rollback-database` |
| `zstandard` | for Zstandard compression|
| `vobject` | for iCal handling |
| `zstandard` | for Zstandard compression |

## Versioning

Expand Down
Loading