Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
4 changes: 2 additions & 2 deletions .docker/clamav.dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,9 @@
# @see https://hub.docker.com/r/uselagoon/commons/tags
# @see https://github.com/uselagoon/lagoon-images/tree/main/images/commons

FROM uselagoon/commons:25.12.1 AS commons
FROM uselagoon/commons:26.1.0 AS commons

FROM clamav/clamav-debian:1.5.1-22
FROM clamav/clamav-debian:1.5.1-26

COPY --from=commons /lagoon /lagoon
COPY --from=commons /bin/fix-permissions /bin/ep /bin/docker-sleep /bin/wait-for /bin/
Expand Down
2 changes: 1 addition & 1 deletion .docker/cli.dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
# @see https://hub.docker.com/r/uselagoon/php-8.3-cli-drupal/tags
# @see https://github.com/uselagoon/lagoon-images/tree/main/images/php-cli-drupal

FROM uselagoon/php-8.3-cli-drupal:25.12.1
FROM uselagoon/php-8.3-cli-drupal:26.1.0

# Add missing variables.
# @todo Remove once https://github.com/uselagoon/lagoon/issues/3121 is resolved.
Expand Down
2 changes: 1 addition & 1 deletion .docker/database.dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
#
# The ARG value will be updated with a value passed from docker-compose.yml

ARG IMAGE=uselagoon/mysql-8.4:25.12.1
ARG IMAGE=uselagoon/mysql-8.4:26.1.0
# hadolint ignore=DL3006
FROM ${IMAGE}

Expand Down
2 changes: 1 addition & 1 deletion .docker/nginx-drupal.dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ ARG CLI_IMAGE
# hadolint ignore=DL3006
FROM ${CLI_IMAGE:-cli} AS cli

FROM uselagoon/nginx-drupal:25.12.1
FROM uselagoon/nginx-drupal:26.1.0
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🌐 Web query:

uselagoon nginx-drupal 26.1.0 release notes changelog

💡 Result:

I couldn’t find any official “26.1.0” release notes/changelog entry specifically for the uselagoon/nginx-drupal image (neither as a dedicated changelog page nor as a discoverable uselagoon/lagoon-images GitHub release/tag named 26.1.0 via public search results). The only official, easily discoverable documentation for the image is the general NGINX-Drupal image doc (what it contains/how to customize it), not a per-version changelog. [1]

What to use instead (practical way to get the “26.1.0” changes):

  • Lagoon images are built from the uselagoon/lagoon-images repo; Lagoon’s process documentation indicates they create releases and generate release notes at release time, so image changes are typically tracked at the lagoon-images release/tag level, not as per-image changelog pages. [2]
  • If you specifically need “what changed in nginx-drupal:26.1.0”, the reliable approach is to compare the lagoon-images git refs that produced nginx-drupal:26.1.0 vs 26.0.0 (or inspect the image labels for the source commit), then review commits affecting the nginx-drupal build context plus its base nginx image.

Evidence the image exists on Docker Hub (but not its 26.1.0 release notes): Docker Hub search lists uselagoon/nginx-drupal as a repository. [3]

Sources:
[1] Lagoon docs – NGINX-Drupal image overview/customization: https://docs.lagoon.sh/applications/drupal/services/nginx/
[2] Lagoon docs – releasing process (mentions generating release notes): https://docs.lagoon.sh/contributing-to-lagoon/releasing/
[3] Docker Hub search results showing uselagoon/nginx-drupal: https://hub.docker.com/search?architecture=amd64&architecture=arm64&badges=open_source&q=nginx+django&type=image


🌐 Web query:

lagoon-images 26.1.0 github release tag

💡 Result:

I couldn’t find any indexed GitHub page confirming a lagoon-images 26.1.0 release/tag from the available search results (no results for that version/tag).

What I can confirm is that Lagoon historically references uselagoon/lagoon-images releases/tags like 21.7.0, 21.9.0, and 22.4.1 in its release notes/announcements. [1], [2]

If you want to verify whether 26.1.0 exists, check the uselagoon/lagoon-images repository’s Releases and Tags pages directly on GitHub (and search within the tags list for 26.1.0).

Sources:
[1] https://newreleases.io/project/github/uselagoon/lagoon/release/v2.0.0-rc.6
[2] https://newreleases.io/project/github/uselagoon/lagoon/release/v2.7.0


🌐 Web query:

site:github.com uselagoon/lagoon-images 26.1.0

💡 Result:

uselagoon/lagoon-images has a GitHub release/tag 26.1.0 (published Jan 21, 2026). Key notes from that release include: Alpine base updated to 3.23 (which changes bundled Node.js in php-cli images from v22 → v24), Ruby 4.0 added, PHP 8.1 images marked deprecated, and PostgreSQL 13 support removed. [1][2]

Sources:
[1] uselagoon/lagoon-images repository page (shows 26.1.0 as latest release) — GitHub.
[2] Release notes for lagoon-images 26.1.0 — GitHub.


🌐 Web query:

nginx-drupal Alpine 3.23 breaking changes

💡 Result:

Key Alpine 3.23 changes that most often break nginx + Drupal images/builds:

  • PHP version drift (biggest Drupal breakage): Alpine 3.23 ships PHP 8.5 (and related packages like php85-fpm). If your image upgrades and you end up on PHP 8.5, that can break Drupal versions that don’t support it yet. Drupal’s PHP support matrix shows PHP 8.5 is not supported by many Drupal 10.x / early 11.x releases (support appears only in newer Drupal releases). Mitigation: pin a supported PHP line explicitly (e.g., install php83-* or php84-* packages, not an unversioned “latest” PHP set). [2][5][6]

  • nginx build flag change affecting dynamic modules: Starting with Alpine 3.23, nginx is compiled with --with-compat to support dynamic module compatibility, and Alpine notes that binary modules built against a different nginx build/version/branch won’t work. If your image loads 3rd‑party nginx modules, expect to rebuild modules against Alpine 3.23’s nginx (or use Alpine-provided module packages that match). [3][2]

  • apk upgrade to v3: Alpine 3.23 upgrades the package manager to apk-tools v3. Most users won’t notice, but anything that depends on libapk behavior (custom tooling, wrappers) may break and should be retested. [1][2]

  • /usr-merge direction change (path assumptions): Alpine’s long-term plan is to /usr-merge (with /bin, /sbin, /lib becoming symlinks), and 3.23 introduces/encourages migration paths (even though the forced switch timeline has moved). If your container or scripts make strict assumptions about filesystem layout, validate them when moving to 3.23-based images. [4][1]


🌐 Web query:

lagoon-images 26.1.0 nginx-drupal webroot runtime defaults changes

💡 Result:

I couldn’t find any published release notes/changelog entry that documents specific “webroot/runtime defaults” changes in uselagoon/lagoon-images version 26.1.0 (the usual places I’d expect to see it—Lagoon docs + publicly indexed release pages—don’t surface anything for that exact images version).

What is documented (and therefore safe to treat as current defaults) for the Lagoon nginx / nginx-drupal images:

  • NGINX listens on port 8080 by default in Lagoon base images. [1]
  • Images are prepared to run as an arbitrary/random user (permissions are adjusted via fix-permissions). [1], [2]
  • For Drupal projects, Lagoon documentation assumes your Drupal webroot directory name is web unless you customize it (commonly via a WEBROOT env var in your build/config). [3], [4]
  • Lagoon tasks/commands (and commonly image WORKDIR) run from /app. [4], [5]

If you’re seeing a behavioral change after moving to 26.1.0, the most robust mitigation is to pin the webroot explicitly (don’t rely on image defaults): set WEBROOT (or your equivalent) consistently for all relevant services (typically nginx, php-fpm, cli) during image build/runtime, matching your repo layout (e.g., web, docroot, etc.). [3], [4]

Sources: Lagoon nginx image defaults [1]; nginx-drupal image notes [2]; Lagoon Drupal webroot assumption (web) [3], [4]; Lagoon /app working directory note [4], [5].


Review the Alpine 3.23 upgrade and PHP version compatibility in 26.1.0.

The 26.1.0 release (Jan 21, 2026) updates Alpine to 3.23, which brings PHP 8.5—verify your Drupal version supports PHP 8.5, or pin an explicit PHP version (e.g., php83-* or php84-*) to avoid unexpected upgrades. Additionally, Alpine 3.23 changes nginx's build flags (--with-compat); if your setup uses custom nginx modules, they must be rebuilt against this version. Webroot and runtime defaults (port 8080, web directory, /app workdir) remain unchanged and can be customized via the WEBROOT environment variable.

🤖 Prompt for AI Agents
In @.docker/nginx-drupal.dockerfile at line 14, The base image tag
uselagoon/nginx-drupal:26.1.0 upgrades Alpine to 3.23 (which brings PHP 8.5) and
changes nginx build flags; confirm your Drupal version supports PHP 8.5 or pin a
specific PHP variant (e.g., use an image that specifies php83- or php84-
packages) to prevent unintended PHP upgrades, and if you use custom nginx
modules rebuild them against the new Alpine/nginx build (verify the nginx
--with-compat change). Also note runtime defaults (port 8080, web directory,
/app workdir) and adjust the WEBROOT environment variable if you rely on
different webroot behavior.


# Webroot is used for Nginx web root configuration.
ARG WEBROOT=web
Expand Down
2 changes: 1 addition & 1 deletion .docker/php.dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ ARG CLI_IMAGE
# hadolint ignore=DL3006
FROM ${CLI_IMAGE:-cli} AS cli

FROM uselagoon/php-8.3-fpm:25.12.1
FROM uselagoon/php-8.3-fpm:26.1.0

RUN apk add --no-cache tzdata

Expand Down
2 changes: 1 addition & 1 deletion .docker/solr.dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
# @see https://hub.docker.com/r/uselagoon/solr-9-drupal/tags
# @see https://github.com/uselagoon/lagoon-images/blob/main/images/solr-drupal/9.Dockerfile

FROM uselagoon/solr-9-drupal:25.12.1
FROM uselagoon/solr-9-drupal:26.1.0

# Solr jump-start config needs to be manually copied from the search_api_solr
# Drupal module to .docker/config/solr/config-set.
Expand Down
20 changes: 10 additions & 10 deletions .github/workflows/build-test-deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ jobs:

container:
# https://hub.docker.com/r/drevops/ci-runner
image: drevops/ci-runner:25.12.0@sha256:b6e416998c03da657006e7c1c2b0f5532f6117990049351a89789227b4941093
image: drevops/ci-runner:26.1.0@sha256:1fd1a2bc6311ae1c8b726fa2326dc509f6c8918b7d394bceb10d3aada1c7afcb
env:
PACKAGE_TOKEN: ${{ secrets.PACKAGE_TOKEN }}
VORTEX_CONTAINER_REGISTRY_USER: ${{ secrets.VORTEX_CONTAINER_REGISTRY_USER }}
Expand All @@ -78,7 +78,7 @@ jobs:
run: echo HOME=/root >> "$GITHUB_ENV" # https://github.com/actions/runner/issues/863

- name: Check out code
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
with:
# Do not keep SSH credentials after checkout to allow adding custom SSH keys.
persist-credentials: false
Expand Down Expand Up @@ -113,7 +113,7 @@ jobs:
# Lookup cache based on the default branch and a timestamp. Allows
# to use cache from the very first build on the day (sanitized database dump, for example).
- name: Restore DB cache
uses: actions/cache/restore@9255dc7a253b0ccc959486e2bca901246202afeb # v5
uses: actions/cache/restore@cdf6c1fa76f9f475f3d7449005a359c84ca0f306 # v5
with:
path: .data
key: v26.1.0-db11-${{ hashFiles('db_cache_branch') }}-${{ hashFiles('db_cache_fallback') }}-${{ hashFiles('db_cache_timestamp') }}
Expand Down Expand Up @@ -143,7 +143,7 @@ jobs:
# Note that the cache fallback flag is enabled for this case in order
# to save cache even if the fallback is not used when restoring it.
- name: Save DB cache
uses: actions/cache/save@9255dc7a253b0ccc959486e2bca901246202afeb # v5
uses: actions/cache/save@cdf6c1fa76f9f475f3d7449005a359c84ca0f306 # v5
if: env.db_hash != hashFiles('.data')
with:
path: .data
Expand All @@ -162,7 +162,7 @@ jobs:

container:
# https://hub.docker.com/r/drevops/ci-runner
image: drevops/ci-runner:25.12.0@sha256:b6e416998c03da657006e7c1c2b0f5532f6117990049351a89789227b4941093
image: drevops/ci-runner:26.1.0@sha256:1fd1a2bc6311ae1c8b726fa2326dc509f6c8918b7d394bceb10d3aada1c7afcb
env:
PACKAGE_TOKEN: ${{ secrets.PACKAGE_TOKEN }}
VORTEX_CONTAINER_REGISTRY_USER: ${{ secrets.VORTEX_CONTAINER_REGISTRY_USER }}
Expand All @@ -187,7 +187,7 @@ jobs:
run: echo HOME=/root >> "$GITHUB_ENV" # https://github.com/actions/runner/issues/863

- name: Check out code
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6

- name: Process the codebase to run in CI
run: find . -name "docker-compose.yml" -print0 | xargs -0 -I {} sh -c "sed -i -e '/###/d' {} && sed -i -e 's/##//' {}"
Expand All @@ -213,7 +213,7 @@ jobs:
# Lookup cache based on the default branch and a timestamp. Allows
# to use cache from the very first build on the day (sanitized database dump, for example).
- name: Restore DB cache
uses: actions/cache/restore@9255dc7a253b0ccc959486e2bca901246202afeb # v5
uses: actions/cache/restore@cdf6c1fa76f9f475f3d7449005a359c84ca0f306 # v5
with:
path: .data
fail-on-cache-miss: true
Expand Down Expand Up @@ -277,7 +277,7 @@ jobs:

- name: Lint code with Rector
if: ${{ matrix.instance == 0 || strategy.job-total == 1 }}
run: docker compose exec -T cli vendor/bin/rector --clear-cache --dry-run
run: docker compose exec -T cli vendor/bin/rector --dry-run
continue-on-error: ${{ vars.VORTEX_CI_RECTOR_IGNORE_FAILURE == '1' }}

- name: Lint code with Twig CS Fixer
Expand Down Expand Up @@ -400,7 +400,7 @@ jobs:

container:
# https://hub.docker.com/r/drevops/ci-runner
image: drevops/ci-runner:25.12.0@sha256:b6e416998c03da657006e7c1c2b0f5532f6117990049351a89789227b4941093
image: drevops/ci-runner:26.1.0@sha256:1fd1a2bc6311ae1c8b726fa2326dc509f6c8918b7d394bceb10d3aada1c7afcb
env:
TZ: ${{ vars.TZ || 'UTC' }}
TERM: xterm-256color
Expand All @@ -412,7 +412,7 @@ jobs:
run: echo HOME=/root >> "$GITHUB_ENV" # https://github.com/actions/runner/issues/863

- name: Checkout code
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
with:
# Fetch all history for git repository.
fetch-depth: 0
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/draft-release-notes.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ jobs:

steps:
- name: Checkout
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2

- name: Load environment variables from .env
run: t=$(mktemp) && export -p >"${t}" && set -a && . ./.env && set +a && . "${t}" && env >> "$GITHUB_ENV"
Expand All @@ -36,7 +36,7 @@ jobs:
echo "Version set to ${VERSION}"

- name: Draft release notes
uses: release-drafter/release-drafter@b1476f6e6eb133afa41ed8589daba6dc69b4d3f5 # v6
uses: release-drafter/release-drafter@6db134d15f3909ccc9eefd369f02bd1e9cffdf97 # v6
with:
tag: ${{ steps.calver.outputs.version }}
name: ${{ steps.calver.outputs.version }}
Expand Down
3 changes: 2 additions & 1 deletion .prettierrc.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@
"semi": true,
"singleQuote": true,
"trailingComma": "all",
"plugins": ["prettier-plugin-jsdoc"],
"plugins": ["@homer0/prettier-plugin-jsdoc"],
"jsdocReplaceTagsSynonyms": false,
"overrides": [
{
"files": ["*.css"],
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ Drupal 11 implementation of DrevOps Website for DrevOps

[//]: # (DO NOT REMOVE THE BADGE BELOW. IT IS USED BY VORTEX TO TRACK INTEGRATION)

[![Vortex](https://img.shields.io/badge/Vortex-1.35.1-65ACBC.svg)](https://github.com/drevops/vortex/tree/1.35.1)
[![Vortex](https://img.shields.io/badge/Vortex-1.35.3-65ACBC.svg)](https://github.com/drevops/vortex/tree/1.35.3)
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🔴 Critical

🧩 Analysis chain

🌐 Web query:

drevops/vortex 1.35.3 release tag github

💡 Result:

I couldn’t find any GitHub release/tag 1.35.3 in drevops/vortex (the DrevOps Drupal project template). The project’s published releases use calendar-style versions like 25.7.0 (e.g., the 25.6.1 → 25.7.0 changelog compare link points to drevops/vortex). [1]

If you meant a different “Vortex” project (there are several on GitHub), share the exact repo URL and I’ll look up its 1.35.3 tag. [2]

Sources: [1] [2]


Remove or update the Vortex badge—the 1.35.3 tag does not exist in drevops/vortex.

The drevops/vortex repository uses calendar-style versioning (e.g., 25.7.0, 25.6.1) and has no 1.35.3 release. The badge link will return a 404. Replace it with a valid version tag or remove the badge entirely.

🤖 Prompt for AI Agents
In `@README.md` at line 16, The Vortex badge in README.md currently links to a
non-existent tag (the markdown link
"[![Vortex](https://img.shields.io/badge/Vortex-1.35.3-65ACBC.svg)](https://github.com/drevops/vortex/tree/1.35.3)");
either remove this badge line or replace the tag "1.35.3" with a valid
drevops/vortex release tag (e.g., a calendar-style tag like "25.7.0") and update
the shield URL accordingly so the badge and the link point to an existing
release.


</div>

Expand Down
6 changes: 3 additions & 3 deletions docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -157,7 +157,7 @@ services:
context: .
dockerfile: .docker/database.dockerfile
args:
IMAGE: "${VORTEX_DB_IMAGE:-uselagoon/mysql-8.4:25.12.1}" # Use custom database image (if defined) or fallback to standard database image.
IMAGE: "${VORTEX_DB_IMAGE:-uselagoon/mysql-8.4:26.1.0}" # Use custom database image (if defined) or fallback to standard database image.
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Minor formatting issue: add space before inline comment.

YAMLlint reports insufficient spacing before the comment. Add an extra space before # for consistency.

Suggested fix
-        IMAGE: "${VORTEX_DB_IMAGE:-uselagoon/mysql-8.4:26.1.0}" # Use custom database image (if defined) or fallback to standard database image.
+        IMAGE: "${VORTEX_DB_IMAGE:-uselagoon/mysql-8.4:26.1.0}"  # Use custom database image (if defined) or fallback to standard database image.
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
IMAGE: "${VORTEX_DB_IMAGE:-uselagoon/mysql-8.4:26.1.0}" # Use custom database image (if defined) or fallback to standard database image.
IMAGE: "${VORTEX_DB_IMAGE:-uselagoon/mysql-8.4:26.1.0}" # Use custom database image (if defined) or fallback to standard database image.
🧰 Tools
🪛 YAMLlint (1.38.0)

[warning] 160-160: too few spaces before comment: expected 2

(comments)

🤖 Prompt for AI Agents
In `@docker-compose.yml` at line 160, The inline comment on the IMAGE environment
variable line lacks a space before the "#" which fails YAML linting; update the
IMAGE line (the line setting IMAGE:
"${VORTEX_DB_IMAGE:-uselagoon/mysql-8.4:26.1.0}") to insert one space before the
inline comment so it reads with " #", preserving the value and comment text
exactly.

environment:
<<: *default-environment
<<: *default-user
Expand All @@ -167,7 +167,7 @@ services:
lagoon.type: mariadb # See https://docs.lagoon.sh/using-lagoon-advanced/service-types/

redis:
image: uselagoon/valkey-8:25.12.1
image: uselagoon/valkey-8:26.1.0
labels:
lagoon.type: redis # Change to 'none' if dedicated Redis service is used. See https://docs.lagoon.sh/using-lagoon-advanced/service-types/

Expand Down Expand Up @@ -201,7 +201,7 @@ services:

# Chrome container, used for browser testing.
chrome:
image: selenium/standalone-chromium:143.0
image: selenium/standalone-chromium:144.0
environment:
<<: *default-environment
<<: *default-volumes
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
"lint-fix": "yarn run lint-fix-js && yarn run lint-fix-css"
},
"devDependencies": {
"@homer0/prettier-plugin-jsdoc": "^11.0.1",
"eslint": "^8.57.1",
"eslint-config-airbnb-base": "^15.0.0",
"eslint-config-prettier": "^10.1.8",
Expand All @@ -25,7 +26,6 @@
"eslint-plugin-prettier": "^5.5.4",
"eslint-plugin-yml": "^1.19.0",
"prettier": "^3.7.4",
"prettier-plugin-jsdoc": "^1.7.0",
"stylelint": "^16.26.1",
"stylelint-config-standard": "^36.0.1",
"stylelint-order": "^6.0.4"
Expand Down
5 changes: 0 additions & 5 deletions web/modules/custom/do_core/do_core.info.yml

This file was deleted.

Loading