From cffef7aa150f9f7f247051564620937d528a2702 Mon Sep 17 00:00:00 2001 From: Don-Swanson <32144818+Don-Swanson@users.noreply.github.com> Date: Wed, 26 Nov 2025 11:47:54 -0600 Subject: [PATCH 1/9] Update dependencies and configuration for version 1.2.0 - Bump target Python version to 3.12 in `pyproject.toml`. - Update Flask to version 3.1.2 in `requirements.txt`. - Remove deprecated dark mode configuration from the application. - Adjust logo rendering in templates to remove dark mode dependency. - Update GitHub Actions workflows to support the 'updates' branch for builds. - Increment version to 1.1.3 with an optional update-testing tag. --- .github/workflows/.pre-commit-config.yaml | 12 ------------ .github/workflows/buildx.yml | 13 ++++++++++++- .github/workflows/docker_main.yml | 2 +- app/models/config.py | 1 - app/routes.py | 6 ++---- app/templates/display.html | 8 +++++--- app/templates/error.html | 2 -- app/templates/index.html | 6 ------ app/version.py | 4 ++-- pyproject.toml | 4 ++-- requirements.txt | 12 +++++------- test/conftest.py | 1 - test/test_routes.py | 6 +++--- 13 files changed, 32 insertions(+), 45 deletions(-) delete mode 100644 .github/workflows/.pre-commit-config.yaml diff --git a/.github/workflows/.pre-commit-config.yaml b/.github/workflows/.pre-commit-config.yaml deleted file mode 100644 index 027ab32..0000000 --- a/.github/workflows/.pre-commit-config.yaml +++ /dev/null @@ -1,12 +0,0 @@ -repos: - - repo: https://github.com/astral-sh/ruff-pre-commit - rev: v0.6.9 - hooks: - - id: ruff - args: [--fix] - - id: ruff-format - - repo: https://github.com/psf/black - rev: 24.8.0 - hooks: - - id: black - args: [--quiet] diff --git a/.github/workflows/buildx.yml b/.github/workflows/buildx.yml index 85a451c..d89eea5 100644 --- a/.github/workflows/buildx.yml +++ b/.github/workflows/buildx.yml @@ -3,7 +3,7 @@ name: buildx on: workflow_run: workflows: ["docker_main"] - branches: [main] + branches: [main, updates] types: - completed push: @@ -50,6 +50,17 @@ jobs: # docker buildx build --push \ # --tag ghcr.io/benbusby/whoogle-search:latest \ # --platform linux/amd64,linux/arm64 . + - name: build and push updates branch (update-testing tag) + if: github.event.workflow_run.head_branch == 'updates' && github.event.workflow_run.conclusion == 'success' && (github.actor == 'benbusby' || github.actor == 'Don-Swanson') + run: | + docker run --rm --privileged multiarch/qemu-user-static --reset -p yes + docker buildx ls + docker buildx build --push \ + --tag benbusby/whoogle-search:update-testing \ + --platform linux/amd64,linux/arm/v7,linux/arm64 . + docker buildx build --push \ + --tag ghcr.io/benbusby/whoogle-search:update-testing \ + --platform linux/amd64,linux/arm/v7,linux/arm64 . - name: build and push release (version + latest) if: github.event_name == 'release' && github.event.release.prerelease == false && (github.actor == 'benbusby' || github.actor == 'Don-Swanson') run: | diff --git a/.github/workflows/docker_main.yml b/.github/workflows/docker_main.yml index f369f47..5e30a55 100644 --- a/.github/workflows/docker_main.yml +++ b/.github/workflows/docker_main.yml @@ -3,7 +3,7 @@ name: docker_main on: workflow_run: workflows: ["tests"] - branches: [main] + branches: [main, updates] types: - completed diff --git a/app/models/config.py b/app/models/config.py index ed56af8..3446309 100644 --- a/app/models/config.py +++ b/app/models/config.py @@ -81,7 +81,6 @@ class Config: self.tbs = os.getenv('WHOOGLE_CONFIG_TIME_PERIOD', '') self.theme = os.getenv('WHOOGLE_CONFIG_THEME', 'system') self.safe = read_config_bool('WHOOGLE_CONFIG_SAFE') - self.dark = read_config_bool('WHOOGLE_CONFIG_DARK') # deprecated self.alts = read_config_bool('WHOOGLE_CONFIG_ALTS') self.nojs = read_config_bool('WHOOGLE_CONFIG_NOJS') self.tor = read_config_bool('WHOOGLE_CONFIG_TOR') diff --git a/app/routes.py b/app/routes.py index 59a14f0..b176000 100644 --- a/app/routes.py +++ b/app/routes.py @@ -217,9 +217,7 @@ def index(): translation=app.config['TRANSLATIONS'][ g.user_config.get_localization_lang() ], - logo=render_template( - 'logo.html', - dark=g.user_config.dark), + logo=render_template('logo.html'), config_disabled=( app.config['CONFIG_DISABLE'] or not valid_user_session(session)), @@ -581,7 +579,7 @@ def search(): languages=app.config['LANGUAGES'], countries=app.config['COUNTRIES'], time_periods=app.config['TIME_PERIODS'], - logo=render_template('logo.html', dark=g.user_config.dark), + logo=render_template('logo.html'), query=urlparse.unquote(query), search_type=search_util.search_type, mobile=g.user_request.mobile, diff --git a/app/templates/display.html b/app/templates/display.html index c044512..a742284 100644 --- a/app/templates/display.html +++ b/app/templates/display.html @@ -26,10 +26,12 @@ {% else %} {% endif %} - {% else %} - {% endif %} - + {% if config.style %} + + {% endif %} {{ clean_query(query) }} - Whoogle Search diff --git a/app/templates/error.html b/app/templates/error.html index 839f8bc..c7a41eb 100644 --- a/app/templates/error.html +++ b/app/templates/error.html @@ -7,8 +7,6 @@ {% else %} {% endif %} -{% else %} - {% endif %} {% if bundle_static() %} diff --git a/app/templates/index.html b/app/templates/index.html index d4544fa..c6fe19e 100644 --- a/app/templates/index.html +++ b/app/templates/index.html @@ -41,8 +41,6 @@ {% else %} {% endif %} - {% else %} - {% endif %} {% if not bundle_static() %} @@ -204,10 +202,6 @@ - - - -
diff --git a/app/version.py b/app/version.py index 5e990ac..6a53b0c 100644 --- a/app/version.py +++ b/app/version.py @@ -1,8 +1,8 @@ import os -optional_dev_tag = '' +optional_dev_tag = '-update-testing' if os.getenv('DEV_BUILD'): optional_dev_tag = '.dev' + os.getenv('DEV_BUILD') -__version__ = '1.1.2' + optional_dev_tag +__version__ = '1.2.0' + optional_dev_tag diff --git a/pyproject.toml b/pyproject.toml index 0422ce1..e68ec35 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [tool.ruff] line-length = 100 -target-version = "py311" +target-version = "py312" lint.select = [ "E", "F", "W", # pycodestyle/pyflakes "I", # isort @@ -13,4 +13,4 @@ lint.ignore = [] [tool.black] line-length = 100 -target-version = ['py311'] +target-version = ['py312'] diff --git a/requirements.txt b/requirements.txt index b2a71b1..fae9740 100644 --- a/requirements.txt +++ b/requirements.txt @@ -4,13 +4,12 @@ brotli==1.2.0 certifi==2025.8.3 cffi==2.0.0 click==8.3.0 -cryptography==3.3.2; platform_machine == 'armv7l' -cryptography==46.0.1; platform_machine != 'armv7l' +cryptography==46.0.1 cssutils==2.11.1 defusedxml==0.7.1 -Flask==2.3.2 +Flask==3.1.2 idna==3.10 -itsdangerous==2.1.2 +itsdangerous==2.2.0 Jinja2==3.1.6 MarkupSafe==3.0.2 more-itertools==10.8.0 @@ -18,8 +17,7 @@ packaging==25.0 pluggy==1.6.0 pycodestyle==2.14.0 pycparser==2.22 -pyOpenSSL==19.1.0; platform_machine == 'armv7l' -pyOpenSSL==25.3.0; platform_machine != 'armv7l' +pyOpenSSL==25.3.0 pyparsing==3.2.5 pytest==8.3.3 python-dateutil==2.9.0.post0 @@ -32,5 +30,5 @@ h11>=0.16.0 validators==0.35.0 waitress==3.0.2 wcwidth==0.2.14 -Werkzeug==3.0.6 +Werkzeug==3.1.3 python-dotenv==1.1.1 diff --git a/test/conftest.py b/test/conftest.py index bd9017a..28225a1 100644 --- a/test/conftest.py +++ b/test/conftest.py @@ -8,7 +8,6 @@ import random demo_config = { 'near': random.choice(['Seattle', 'New York', 'San Francisco']), - 'dark': str(random.getrandbits(1)), 'nojs': str(random.getrandbits(1)), 'lang_interface': random.choice(app.config['LANGUAGES'])['value'], 'lang_search': random.choice(app.config['LANGUAGES'])['value'], diff --git a/test/test_routes.py b/test/test_routes.py index 1f64827..9cfe975 100644 --- a/test/test_routes.py +++ b/test/test_routes.py @@ -75,14 +75,14 @@ def test_config(client): # Test disabling changing config from client app.config['CONFIG_DISABLE'] = 1 - dark_mod = not demo_config['dark'] - demo_config['dark'] = dark_mod + nojs_mod = not bool(int(demo_config['nojs'])) + demo_config['nojs'] = str(int(nojs_mod)) rv = client.post(f'/{Endpoint.config}', data=demo_config) assert rv._status_code == 403 rv = client.get(f'/{Endpoint.config}') config = json.loads(rv.data) - assert config['dark'] != dark_mod + assert config['nojs'] != nojs_mod def test_opensearch(client): From 3698d9065ed20063048ad4ef5326a7d14c4f8d2c Mon Sep 17 00:00:00 2001 From: Don-Swanson <32144818+Don-Swanson@users.noreply.github.com> Date: Wed, 26 Nov 2025 15:36:24 -0600 Subject: [PATCH 2/9] - Added condition to the 'on-success' job to execute only if the preceding workflow run concludes successfully. --- .github/workflows/docker_main.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/docker_main.yml b/.github/workflows/docker_main.yml index 5e30a55..e2e47e9 100644 --- a/.github/workflows/docker_main.yml +++ b/.github/workflows/docker_main.yml @@ -11,6 +11,7 @@ on: jobs: on-success: runs-on: ubuntu-latest + if: ${{ github.event.workflow_run.conclusion == 'success' }} steps: - name: checkout code uses: actions/checkout@v2 From 7b56aa053b6726eb5c3630ebc22ae4dc87c31cd8 Mon Sep 17 00:00:00 2001 From: Don-Swanson <32144818+Don-Swanson@users.noreply.github.com> Date: Wed, 26 Nov 2025 15:43:52 -0600 Subject: [PATCH 3/9] Update notice --- README.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/README.md b/README.md index 037771f..79f7fa8 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ >works -- Whoogle requests the JavaScript-free search results, then filters out garbage from the results page and proxies all external content for the user. > >This is possibly a breaking change that may mean the end for Whoogle. We'll continue fighting back and releasing workarounds until all workarounds are ->exhausted or a better method is found. +>exhausted or a better method is found. If you know of a better way, please review and comment in our Way Forward Discussion ___ @@ -700,7 +700,6 @@ Instead of using auto-generated Opera UA strings, you can provide your own list ``` Opera/9.80 (J2ME/MIDP; Opera Mini/4.2.13337/22.478; U; en) Presto/2.4.15 Version/10.00 Opera/9.80 (Android; Linux; Opera Mobi/498; U; en) Presto/2.12.423 Version/10.1 -Opera/9.30 (Nintendo Wii; U; ; 3642; en) ``` 2. Set the `WHOOGLE_UA_LIST_FILE` environment variable to point to your file: From 0f000a676b23c655685a9ac26cf2d77ed37cdd20 Mon Sep 17 00:00:00 2001 From: Don-Swanson <32144818+Don-Swanson@users.noreply.github.com> Date: Wed, 26 Nov 2025 15:51:06 -0600 Subject: [PATCH 4/9] Update GitHub Actions workflows to use latest actions and improve build conditions - Upgraded `actions/checkout` from v2 to v4 for better performance. - Replaced deprecated buildx setup with `docker/setup-qemu-action` and `docker/setup-buildx-action`. - Updated `docker/login-action` to v3 for enhanced security. - Refined conditions for building and pushing Docker images based on workflow events. --- .github/workflows/buildx.yml | 37 +++++++++---------------------- .github/workflows/docker_main.yml | 2 +- 2 files changed, 11 insertions(+), 28 deletions(-) diff --git a/.github/workflows/buildx.yml b/.github/workflows/buildx.yml index d89eea5..95a2a8d 100644 --- a/.github/workflows/buildx.yml +++ b/.github/workflows/buildx.yml @@ -21,19 +21,18 @@ jobs: if: ${{ github.event.workflow_run.conclusion != 'success' && startsWith(github.ref, 'refs/tags') != true }} run: exit 1 - name: checkout code - uses: actions/checkout@v2 - - name: install buildx - id: buildx - uses: crazy-max/ghaction-docker-buildx@v1 - with: - version: latest + uses: actions/checkout@v4 + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 - name: Login to Docker Hub - uses: docker/login-action@v1 + uses: docker/login-action@v3 with: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} - name: Login to ghcr.io - uses: docker/login-action@v1 + uses: docker/login-action@v3 with: registry: ghcr.io username: ${{ github.actor }} @@ -51,14 +50,10 @@ jobs: # --tag ghcr.io/benbusby/whoogle-search:latest \ # --platform linux/amd64,linux/arm64 . - name: build and push updates branch (update-testing tag) - if: github.event.workflow_run.head_branch == 'updates' && github.event.workflow_run.conclusion == 'success' && (github.actor == 'benbusby' || github.actor == 'Don-Swanson') + if: github.event_name == 'workflow_run' && github.event.workflow_run.head_branch == 'updates' && github.event.workflow_run.conclusion == 'success' && (github.event.workflow_run.actor.login == 'benbusby' || github.event.workflow_run.actor.login == 'Don-Swanson') run: | - docker run --rm --privileged multiarch/qemu-user-static --reset -p yes - docker buildx ls docker buildx build --push \ --tag benbusby/whoogle-search:update-testing \ - --platform linux/amd64,linux/arm/v7,linux/arm64 . - docker buildx build --push \ --tag ghcr.io/benbusby/whoogle-search:update-testing \ --platform linux/amd64,linux/arm/v7,linux/arm64 . - name: build and push release (version + latest) @@ -66,13 +61,9 @@ jobs: run: | TAG="${{ github.event.release.tag_name }}" VERSION="${TAG#v}" - docker run --rm --privileged multiarch/qemu-user-static --reset -p yes - docker buildx ls docker buildx build --push \ --tag benbusby/whoogle-search:${VERSION} \ --tag benbusby/whoogle-search:latest \ - --platform linux/amd64,linux/arm/v7,linux/arm64 . - docker buildx build --push \ --tag ghcr.io/benbusby/whoogle-search:${VERSION} \ --tag ghcr.io/benbusby/whoogle-search:latest \ --platform linux/amd64,linux/arm/v7,linux/arm64 . @@ -81,22 +72,14 @@ jobs: run: | TAG="${{ github.event.release.tag_name }}" VERSION="${TAG#v}" - docker run --rm --privileged multiarch/qemu-user-static --reset -p yes - docker buildx ls docker buildx build --push \ --tag benbusby/whoogle-search:${VERSION} \ - --platform linux/amd64,linux/arm/v7,linux/arm64 . - docker buildx build --push \ --tag ghcr.io/benbusby/whoogle-search:${VERSION} \ --platform linux/amd64,linux/arm/v7,linux/arm64 . - name: build and push tag if: startsWith(github.ref, 'refs/tags') run: | - docker run --rm --privileged multiarch/qemu-user-static --reset -p yes - docker buildx ls docker buildx build --push \ - --tag benbusby/whoogle-search:${GITHUB_REF#refs/*/v}\ - --platform linux/amd64,linux/arm/v7,linux/arm64 . - docker buildx build --push \ - --tag ghcr.io/benbusby/whoogle-search:${GITHUB_REF#refs/*/v}\ + --tag benbusby/whoogle-search:${GITHUB_REF#refs/*/v} \ + --tag ghcr.io/benbusby/whoogle-search:${GITHUB_REF#refs/*/v} \ --platform linux/amd64,linux/arm/v7,linux/arm64 . \ No newline at end of file diff --git a/.github/workflows/docker_main.yml b/.github/workflows/docker_main.yml index e2e47e9..80dd5fb 100644 --- a/.github/workflows/docker_main.yml +++ b/.github/workflows/docker_main.yml @@ -14,7 +14,7 @@ jobs: if: ${{ github.event.workflow_run.conclusion == 'success' }} steps: - name: checkout code - uses: actions/checkout@v2 + uses: actions/checkout@v4 - name: build and test (docker) run: | docker build --tag whoogle-search:test . From 71a2c10e58104711da7264ceb523ef7248c9bca2 Mon Sep 17 00:00:00 2001 From: Don-Swanson <32144818+Don-Swanson@users.noreply.github.com> Date: Wed, 26 Nov 2025 16:08:37 -0600 Subject: [PATCH 5/9] Remove tag push from GitHub Actions workflow and disable related build step in favor of using GitHub releases for versioning. --- .github/workflows/buildx.yml | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/.github/workflows/buildx.yml b/.github/workflows/buildx.yml index 95a2a8d..b551914 100644 --- a/.github/workflows/buildx.yml +++ b/.github/workflows/buildx.yml @@ -6,9 +6,6 @@ on: branches: [main, updates] types: - completed - push: - tags: - - '*' release: types: - published @@ -76,10 +73,11 @@ jobs: --tag benbusby/whoogle-search:${VERSION} \ --tag ghcr.io/benbusby/whoogle-search:${VERSION} \ --platform linux/amd64,linux/arm/v7,linux/arm64 . - - name: build and push tag - if: startsWith(github.ref, 'refs/tags') - run: | - docker buildx build --push \ - --tag benbusby/whoogle-search:${GITHUB_REF#refs/*/v} \ - --tag ghcr.io/benbusby/whoogle-search:${GITHUB_REF#refs/*/v} \ - --platform linux/amd64,linux/arm/v7,linux/arm64 . \ No newline at end of file + # Disabled: Use GitHub releases instead (triggers release or pre-release workflows above) + # - name: build and push tag + # if: startsWith(github.ref, 'refs/tags') + # run: | + # docker buildx build --push \ + # --tag benbusby/whoogle-search:${GITHUB_REF#refs/*/v} \ + # --tag ghcr.io/benbusby/whoogle-search:${GITHUB_REF#refs/*/v} \ + # --platform linux/amd64,linux/arm/v7,linux/arm64 . \ No newline at end of file From 20753224f362029c29611f765dcb6de6fa859e95 Mon Sep 17 00:00:00 2001 From: Don-Swanson <32144818+Don-Swanson@users.noreply.github.com> Date: Wed, 26 Nov 2025 16:14:02 -0600 Subject: [PATCH 6/9] Refine GitHub Actions workflow condition to remove tag check for test success --- .github/workflows/buildx.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/buildx.yml b/.github/workflows/buildx.yml index b551914..95e3951 100644 --- a/.github/workflows/buildx.yml +++ b/.github/workflows/buildx.yml @@ -15,7 +15,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Wait for tests to succeed - if: ${{ github.event.workflow_run.conclusion != 'success' && startsWith(github.ref, 'refs/tags') != true }} + if: ${{ github.event.workflow_run.conclusion != 'success' }} run: exit 1 - name: checkout code uses: actions/checkout@v4 From 20ed4936717ecdbb4b063a7f269dde9c792e7cdb Mon Sep 17 00:00:00 2001 From: Don-Swanson <32144818+Don-Swanson@users.noreply.github.com> Date: Wed, 26 Nov 2025 16:19:40 -0600 Subject: [PATCH 7/9] Dropping Support for armv7l due to security bugs in cryptography - Adjusted `pyOpenSSL` versioning in `requirements.txt` to support armv7l architecture. - Modified Docker build platforms in GitHub Actions workflow to exclude armv7, focusing on amd64 and arm64. --- .github/workflows/buildx.yml | 8 ++++---- Dockerfile | 10 ++++++++++ README.md | 11 +++++++++++ 3 files changed, 25 insertions(+), 4 deletions(-) diff --git a/.github/workflows/buildx.yml b/.github/workflows/buildx.yml index 95e3951..16ad8b7 100644 --- a/.github/workflows/buildx.yml +++ b/.github/workflows/buildx.yml @@ -52,7 +52,7 @@ jobs: docker buildx build --push \ --tag benbusby/whoogle-search:update-testing \ --tag ghcr.io/benbusby/whoogle-search:update-testing \ - --platform linux/amd64,linux/arm/v7,linux/arm64 . + --platform linux/amd64,linux/arm64 . - name: build and push release (version + latest) if: github.event_name == 'release' && github.event.release.prerelease == false && (github.actor == 'benbusby' || github.actor == 'Don-Swanson') run: | @@ -63,7 +63,7 @@ jobs: --tag benbusby/whoogle-search:latest \ --tag ghcr.io/benbusby/whoogle-search:${VERSION} \ --tag ghcr.io/benbusby/whoogle-search:latest \ - --platform linux/amd64,linux/arm/v7,linux/arm64 . + --platform linux/amd64,linux/arm64 . - name: build and push pre-release (version only) if: github.event_name == 'release' && github.event.release.prerelease == true && (github.actor == 'benbusby' || github.actor == 'Don-Swanson') run: | @@ -72,7 +72,7 @@ jobs: docker buildx build --push \ --tag benbusby/whoogle-search:${VERSION} \ --tag ghcr.io/benbusby/whoogle-search:${VERSION} \ - --platform linux/amd64,linux/arm/v7,linux/arm64 . + --platform linux/amd64,linux/arm64 . # Disabled: Use GitHub releases instead (triggers release or pre-release workflows above) # - name: build and push tag # if: startsWith(github.ref, 'refs/tags') @@ -80,4 +80,4 @@ jobs: # docker buildx build --push \ # --tag benbusby/whoogle-search:${GITHUB_REF#refs/*/v} \ # --tag ghcr.io/benbusby/whoogle-search:${GITHUB_REF#refs/*/v} \ - # --platform linux/amd64,linux/arm/v7,linux/arm64 . \ No newline at end of file + # --platform linux/amd64,linux/arm64 . \ No newline at end of file diff --git a/Dockerfile b/Dockerfile index 5361a1a..7412599 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,3 +1,13 @@ +# NOTE: ARMv7 support has been dropped due to lack of pre-built cryptography wheels for Alpine/musl. +# To restore ARMv7 support for local builds: +# 1. Change requirements.txt: +# cryptography==3.3.2; platform_machine == 'armv7l' +# cryptography==46.0.1; platform_machine != 'armv7l' +# pyOpenSSL==19.1.0; platform_machine == 'armv7l' +# pyOpenSSL==25.3.0; platform_machine != 'armv7l' +# 2. Add linux/arm/v7 to --platform flag when building: +# docker buildx build --platform linux/amd64,linux/arm/v7,linux/arm64 . + FROM python:3.12.6-alpine3.20 AS builder RUN apk --no-cache add \ diff --git a/README.md b/README.md index 79f7fa8..66ec022 100644 --- a/README.md +++ b/README.md @@ -88,6 +88,17 @@ Contents ***If deployed to a remote server, or configured to send requests through a VPN, Tor, proxy, etc. ## Install + +### Supported Platforms +Official Docker images are built for: +- **linux/amd64** (x86_64) +- **linux/arm64** (ARM 64-bit, Raspberry Pi 3/4/5, Apple Silicon) + +**Note**: ARMv7 support (32-bit ARM, Raspberry Pi 2) was dropped in v1.2.0 due to incompatibility with modern security libraries on Alpine Linux. Users with ARMv7 devices can either: +- Use an older version (v1.1.x or earlier) +- Build locally with pinned dependencies (see notes in Dockerfile) +- Upgrade to a 64-bit OS if hardware supports it (Raspberry Pi 3+) + There are a few different ways to begin using the app, depending on your preferences: ___ From ccdeb60fc0f0edfd3b1e20d5feafd64790017839 Mon Sep 17 00:00:00 2001 From: Don-Swanson <32144818+Don-Swanson@users.noreply.github.com> Date: Wed, 26 Nov 2025 16:36:34 -0600 Subject: [PATCH 8/9] Update Dockerfile to use Python 3.12-alpine3.22 and remove unnecessary bridge package - Changed base image from python:3.12.6-alpine3.20 to python:3.12-alpine3.22 for improved security and compatibility. - Added command to remove the bridge package to mitigate CVEs, ensuring a cleaner build environment. - Ensured pip is upgraded consistently across stages. --- Dockerfile | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/Dockerfile b/Dockerfile index 7412599..56b029f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -8,7 +8,7 @@ # 2. Add linux/arm/v7 to --platform flag when building: # docker buildx build --platform linux/amd64,linux/arm/v7,linux/arm64 . -FROM python:3.12.6-alpine3.20 AS builder +FROM python:3.12-alpine3.22 AS builder RUN apk --no-cache add \ build-base \ @@ -22,13 +22,16 @@ COPY requirements.txt . RUN pip install --upgrade pip RUN pip install --prefix /install --no-warn-script-location --no-cache-dir -r requirements.txt -FROM python:3.12.6-alpine3.20 +FROM python:3.12-alpine3.22 -RUN apk add --no-cache tor curl openrc libstdc++ +# Remove bridge package to avoid CVEs (not needed for Docker containers) +RUN apk add --no-cache --no-scripts tor curl openrc libstdc++ && \ + apk del --no-cache bridge || true # git go //for obfs4proxy # libcurl4-openssl-dev - -RUN apk --no-cache upgrade +RUN pip install --upgrade pip +RUN apk --no-cache upgrade && \ + apk del --no-cache --rdepends bridge || true # uncomment to build obfs4proxy # RUN git clone https://gitlab.com/yawning/obfs4.git From db6d031e862f53b017920f4c96b0178e67de9d8a Mon Sep 17 00:00:00 2001 From: Don-Swanson <32144818+Don-Swanson@users.noreply.github.com> Date: Wed, 26 Nov 2025 16:48:56 -0600 Subject: [PATCH 9/9] Enhance GitHub Actions workflow for tag handling and debugging - Added support for triggering builds on tag pushes. - Introduced a debugging step to log workflow context information. - Refined conditions for building and pushing Docker images based on actor and workflow run status. --- .github/workflows/buildx.yml | 29 +++++++++++++++++++---------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/.github/workflows/buildx.yml b/.github/workflows/buildx.yml index 16ad8b7..bab9673 100644 --- a/.github/workflows/buildx.yml +++ b/.github/workflows/buildx.yml @@ -6,6 +6,9 @@ on: branches: [main, updates] types: - completed + push: + tags: + - '*' release: types: - published @@ -15,8 +18,15 @@ jobs: runs-on: ubuntu-latest steps: - name: Wait for tests to succeed - if: ${{ github.event.workflow_run.conclusion != 'success' }} + if: ${{ github.event.workflow_run.conclusion != 'success' && startsWith(github.ref, 'refs/tags') != true }} run: exit 1 + - name: Debug workflow context + run: | + echo "Event name: ${{ github.event_name }}" + echo "Ref: ${{ github.ref }}" + echo "Actor: ${{ github.actor }}" + echo "Branch: ${{ github.event.workflow_run.head_branch }}" + echo "Conclusion: ${{ github.event.workflow_run.conclusion }}" - name: checkout code uses: actions/checkout@v4 - name: Set up QEMU @@ -47,7 +57,7 @@ jobs: # --tag ghcr.io/benbusby/whoogle-search:latest \ # --platform linux/amd64,linux/arm64 . - name: build and push updates branch (update-testing tag) - if: github.event_name == 'workflow_run' && github.event.workflow_run.head_branch == 'updates' && github.event.workflow_run.conclusion == 'success' && (github.event.workflow_run.actor.login == 'benbusby' || github.event.workflow_run.actor.login == 'Don-Swanson') + if: github.event_name == 'workflow_run' && github.event.workflow_run.head_branch == 'updates' && github.event.workflow_run.conclusion == 'success' && (github.actor == 'benbusby' || github.actor == 'Don-Swanson') run: | docker buildx build --push \ --tag benbusby/whoogle-search:update-testing \ @@ -73,11 +83,10 @@ jobs: --tag benbusby/whoogle-search:${VERSION} \ --tag ghcr.io/benbusby/whoogle-search:${VERSION} \ --platform linux/amd64,linux/arm64 . - # Disabled: Use GitHub releases instead (triggers release or pre-release workflows above) - # - name: build and push tag - # if: startsWith(github.ref, 'refs/tags') - # run: | - # docker buildx build --push \ - # --tag benbusby/whoogle-search:${GITHUB_REF#refs/*/v} \ - # --tag ghcr.io/benbusby/whoogle-search:${GITHUB_REF#refs/*/v} \ - # --platform linux/amd64,linux/arm64 . \ No newline at end of file + - name: build and push tag + if: startsWith(github.ref, 'refs/tags') + run: | + docker buildx build --push \ + --tag benbusby/whoogle-search:${GITHUB_REF#refs/*/v} \ + --tag ghcr.io/benbusby/whoogle-search:${GITHUB_REF#refs/*/v} \ + --platform linux/amd64,linux/arm64 . \ No newline at end of file