Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
d781498
XDOCKER-18: Automate updating the stable version
vmassol Aug 24, 2026
2ae7da2
XDOCKER-18: Automate updating the stable version
vmassol Aug 24, 2026
002d0ba
XDOCKER-18: Automate updating the stable version
vmassol Aug 25, 2026
71cf44a
XDOCKER-18: Automate updating the stable version
vmassol Aug 25, 2026
b852440
XDOCKER-18: Automate updating the stable version
vmassol Aug 25, 2026
0e269b4
XDOCKER-18: Automate updating the stable version
vmassol Aug 25, 2026
e38fdf2
XDOCKER-18: Automate updating the stable version
vmassol Aug 25, 2026
cc25828
XDOCKER-18: Automate updating the stable version
vmassol Aug 25, 2026
45c3781
XDOCKER-18: Automate updating the stable version
vmassol Aug 25, 2026
0d655d2
XDOCKER-18: Automate updating the stable version
vmassol Aug 25, 2026
bec5290
XDOCKER-18: Automate updating the stable version
vmassol Aug 25, 2026
6006626
XDOCKER-18: Automate updating the stable version
vmassol Aug 25, 2026
788e851
XDOCKER-18: Automate updating the stable version
vmassol Aug 25, 2026
0f911f7
XDOCKER-18: Automate updating the stable version
vmassol Aug 25, 2026
f7380e0
XDOCKER-18: Automate updating the stable version
vmassol Aug 25, 2026
91f807a
XDOCKER-18: Automate updating the stable version
vmassol Aug 25, 2026
0f7d6b4
XDOCKER-18: Automate updating the stable version
vmassol Aug 25, 2026
9404e70
XDOCKER-18: Automate updating the stable version
vmassol Aug 25, 2026
82b1366
XDOCKER-18: Automate updating the stable version
vmassol Aug 25, 2026
1f86dc5
XDOCKER-18: Automate updating the stable version
vmassol Aug 25, 2026
d408259
XDOCKER-18: Automate updating the stable version
vmassol Aug 25, 2026
234ae9c
XDOCKER-18: Automate updating the stable version
vmassol Aug 25, 2026
4c0864e
XDOCKER-18: Automate updating the stable version
vmassol Aug 25, 2026
afb2fa2
XDOCKER-18: Automate updating the stable version
vmassol Aug 25, 2026
3e8130c
XDOCKER-18: Automate updating the stable version
vmassol Aug 25, 2026
c5ef69d
XDOCKER-18: Automate updating the stable version
vmassol Aug 25, 2026
a821df5
XDOCKER-18: Automate updating the stable version
vmassol Aug 26, 2026
4761cbe
XDOCKER-18: Automate updating the stable version
vmassol Aug 26, 2026
4f98360
XDOCKER-18: Automate updating the stable version
vmassol Aug 26, 2026
ac23fd7
XDOCKER-18: Automate updating the stable version
vmassol Aug 26, 2026
015e8ef
XDOCKER-18: Automate updating the stable version
vmassol Aug 26, 2026
260cdb5
XDOCKER-18: Automate updating the stable version
vmassol Aug 26, 2026
efe127b
XDOCKER-18: Automate updating the stable version
vmassol Aug 26, 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
2 changes: 2 additions & 0 deletions .github/workflows/docker-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -39,13 +39,15 @@ on:
- 'template/**'
- 'template-github/**'
- 'build.gradle'
- 'versions.json'
- '.github/workflows/docker-build.yml'
pull_request:
paths:
- '*/*/Dockerfile'
- 'template/**'
- 'template-github/**'
- 'build.gradle'
- 'versions.json'
- '.github/workflows/docker-build.yml'

jobs:
Expand Down
3 changes: 3 additions & 0 deletions .github/workflows/gradlew-check.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,9 @@ name: Gradlew Check
on:
push:
branches: [ master ]
# Also on Pull Requests: this check is what guarantees that the committed generated files match what the templates
# and versions.json produce, and a Pull Request touching either is exactly where that can stop being true.
pull_request:

jobs:
gradlew-check:
Expand Down
2 changes: 1 addition & 1 deletion 16/mariadb-tomcat/docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ services:
# - Provide a SQL script to be executed when the db image starts (to set permissions to create subwikis)
volumes:
- mariadb-data:/var/lib/mysql
- ./init.sql:/docker-entrypoint-initdb.d/init.sql
- ./mariadb/init.sql:/docker-entrypoint-initdb.d/init.sql

# Configure the MariaDB database and create a user with provided name/password.
# See https://hub.docker.com/_/mariadb/ for more details.
Expand Down
2 changes: 1 addition & 1 deletion 16/mysql-tomcat/docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ services:
# - Provide a SQL script to be executed when the db image starts (to set permissions to create subwikis)
volumes:
- mysql-data:/var/lib/mysql
- ./init.sql:/docker-entrypoint-initdb.d/init.sql
- ./mysql/init.sql:/docker-entrypoint-initdb.d/init.sql

# Configure the MySQL database and create a user with provided name/password.
# See https://hub.docker.com/_/mysql/ for more details.
Expand Down
2 changes: 1 addition & 1 deletion 17/mariadb-tomcat/docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ services:
# - Provide a SQL script to be executed when the db image starts (to set permissions to create subwikis)
volumes:
- mariadb-data:/var/lib/mysql
- ./init.sql:/docker-entrypoint-initdb.d/init.sql
- ./mariadb/init.sql:/docker-entrypoint-initdb.d/init.sql

# Configure the MariaDB database and create a user with provided name/password.
# See https://hub.docker.com/_/mariadb/ for more details.
Expand Down
2 changes: 1 addition & 1 deletion 17/mysql-tomcat/docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ services:
# - Provide a SQL script to be executed when the db image starts (to set permissions to create subwikis)
volumes:
- mysql-data:/var/lib/mysql
- ./init.sql:/docker-entrypoint-initdb.d/init.sql
- ./mysql/init.sql:/docker-entrypoint-initdb.d/init.sql

# Configure the MySQL database and create a user with provided name/password.
# See https://hub.docker.com/_/mysql/ for more details.
Expand Down
2 changes: 1 addition & 1 deletion 18.4/mariadb-tomcat/docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ services:
# - Provide a SQL script to be executed when the db image starts (to set permissions to create subwikis)
volumes:
- mariadb-data:/var/lib/mysql
- ./init.sql:/docker-entrypoint-initdb.d/init.sql
- ./mariadb/init.sql:/docker-entrypoint-initdb.d/init.sql

# Configure the MariaDB database and create a user with provided name/password.
# See https://hub.docker.com/_/mariadb/ for more details.
Expand Down
2 changes: 1 addition & 1 deletion 18.4/mysql-tomcat/docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ services:
# - Provide a SQL script to be executed when the db image starts (to set permissions to create subwikis)
volumes:
- mysql-data:/var/lib/mysql
- ./init.sql:/docker-entrypoint-initdb.d/init.sql
- ./mysql/init.sql:/docker-entrypoint-initdb.d/init.sql

# Configure the MySQL database and create a user with provided name/password.
# See https://hub.docker.com/_/mysql/ for more details.
Expand Down
2 changes: 1 addition & 1 deletion 18/mariadb-tomcat/docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ services:
# - Provide a SQL script to be executed when the db image starts (to set permissions to create subwikis)
volumes:
- mariadb-data:/var/lib/mysql
- ./init.sql:/docker-entrypoint-initdb.d/init.sql
- ./mariadb/init.sql:/docker-entrypoint-initdb.d/init.sql

# Configure the MariaDB database and create a user with provided name/password.
# See https://hub.docker.com/_/mariadb/ for more details.
Expand Down
2 changes: 1 addition & 1 deletion 18/mysql-tomcat/docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ services:
# - Provide a SQL script to be executed when the db image starts (to set permissions to create subwikis)
volumes:
- mysql-data:/var/lib/mysql
- ./init.sql:/docker-entrypoint-initdb.d/init.sql
- ./mysql/init.sql:/docker-entrypoint-initdb.d/init.sql

# Configure the MySQL database and create a user with provided name/password.
# See https://hub.docker.com/_/mysql/ for more details.
Expand Down
10 changes: 10 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,16 @@ The Dockerfile repository is also licensed under the [LGPL 2.1](https://github.c
- Note that changes need to be merged to all other branches where they make sense and if they make sense for existing tags, those tags must be deleted and recreated.
- In addition, whenever a branch or tag is modified, a Pull Request on the [DockerHub XWiki official image](https://github.com/docker-library/official-images/blob/master/library/xwiki) must be made

# Releasing new versions

This is for maintainers performing the "Update Docker Images" step of an XWiki release, see [ReleasePlanHelp](https://dev.xwiki.org/xwiki/bin/view/ReleasePlans/ReleasePlanHelp#HUpdateDocker) for the full context. The version bumps and the DockerHub official-images Pull Request are automated as Gradle tasks; you only review, commit and push the `docker-xwiki` change in between. These tasks drive `docker`, `git` and the `gh` CLI, so they run on Linux and macOS.

- `./gradlew release` (pre-push): refreshes every cycle to the latest XWiki release, the JDBC drivers (read for each cycle from that cycle's own `xwiki-platform` POM) and the LibreOffice version in `versions.json`, regenerates all the version/variant directories and the build workflow, then smoke-tests the cycles whose versions moved: for each it builds the `postgres-tomcat` variant, plus the variant of any database whose JDBC driver moved, boots each one and waits until its REST API reports the expected version. Docker must be running.
- Review the resulting diff, then commit and push `versions.json` together with the regenerated directories.
- `./gradlew submitOfficialImage` (post-push): regenerates the images and the `library/xwiki` file, and opens the Pull Request against [docker-library/official-images](https://github.com/docker-library/official-images) from your GitHub fork. It refuses to submit commits that are not reachable upstream: a dirty tree, a `HEAD` that is not on `master`, or a Pull Request still open from a previous run. Regenerating first means a `versions.json` that was pushed without its regenerated directories shows up as that dirty tree, rather than as a library file publishing tags the pushed Dockerfiles do not produce. Requires an authenticated `gh` CLI. Pass `-PdryRun` to generate the file and show the diff against the published one without opening a Pull Request.

Each step is also runnable on its own: `updateXWiki`, `updateJDBC`, `updateLibreOffice`, `generate`, `generateWorkflows`, `smokeTest` and `submitOfficialImage`. `smokeTest` takes `-Pcycles=18,17` and `-Pvariants=mysql-tomcat,postgres-tomcat` to pick what to boot by hand, which is also how a change to `template/` gets boot-checked, no version having moved for it; run standalone it boots every cycle. It builds each image locally under the tag the generated `docker-compose.yml` names, so it overwrites whatever your Docker holds under it, the published official image of that version included; `docker pull` brings it back. It also removes the volumes of the instances it starts, and therefore whatever wiki content they held. To try an image out by hand and keep it, run `docker compose up` in the version/variant directory as usual. See the comments in `build.gradle` and in the scripts it applies from `gradle/` for the details.

# Credits

- Originally created by Vincent Massol
Expand Down
Loading
Loading