Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
220 commits
Select commit Hold shift + click to select a range
2672a50
improve DB init/update to avoid false error messages
thomascube Mar 6, 2022
6106c48
Switch to docker buildx for buildkit support
thomascube Apr 24, 2022
8acb998
Use docker/build-push-action@v2
thomascube Apr 24, 2022
4b27a5e
Fix docker buildx command
thomascube Apr 24, 2022
23a3d1c
Add --chmod option to apache and fpm-alpine variants
thomascube Apr 24, 2022
9c31f3f
Remove volume declarations (#142)
thomascube Jun 13, 2022
0451e86
Nightly: remove volumes, upgrade to PHP 8
thomascube Jun 30, 2022
637ddcb
Update to version 1.5.3
thomascube Jun 30, 2022
e3ebd0e
Remove db volume from alpine template
thomascube Jun 30, 2022
0296150
Release version 1.6.0
thomascube Jul 28, 2022
9f81e08
Make github actions for amd64 and arm64 (#201)
montgomery-auber Jan 29, 2023
1f8a55f
Adjust docker login password secret
thomascube Jan 31, 2023
323e25a
Release version 1.6.1
thomascube Feb 3, 2023
d442c90
Update docker-mailserver docker image and examples link (#206)
pbek Feb 12, 2023
c744ce9
Add unzip binary + separate actions to test and publish (#209)
thomascube Mar 12, 2023
09e2e90
Use paths-ignore
thomascube Mar 12, 2023
6840f4d
Parametrize test images
thomascube Mar 12, 2023
bd2c046
added COMPOSER_ALLOW_SUPERUSER env var to dockerfile (#207)
czephyr Apr 5, 2023
7958d9d
add support for request_path (#208)
jjanier Apr 5, 2023
913cd6f
Add ROUNDCUBEMAIL_REQUEST_PATH env to all variants
thomascube Apr 5, 2023
d411310
Update roundcube version 1.6.2
thomascube Jul 20, 2023
5ad2eaa
Fix dynamic libraries loading (#226)
williamdes Aug 1, 2023
10d35aa
Fix typos and improve the readme (#225)
williamdes Aug 1, 2023
5905750
Fixed typo of 'postgres' in examples/readme.md (#213)
nimdaz Aug 28, 2023
fb79eb5
docker-fpm headers have already been sent issue #211
gertcuykens Aug 28, 2023
2e9d73d
Add update cronjob (see #219) (#221)
J0WI Sep 18, 2023
ce1e192
Runs update.sh
Sep 18, 2023
90599d7
Improve commit message
thomascube Sep 18, 2023
b74e6d2
Patch build.yml workflow with new version from update.sh
thomascube Sep 19, 2023
5e98a6b
Update docker release tags to 1.6.3
thomascube Sep 19, 2023
467e7a9
Add workflow-enabled Github token
thomascube Oct 17, 2023
3d875bd
Run actions/checkout with workflow-enabled token
thomascube Oct 17, 2023
5aaa6f7
Update roundcube version (via update.sh)
Oct 17, 2023
28069c0
Update roundcube version (via update.sh)
Nov 6, 2023
04d5977
Update roundcube version (via update.sh)
Jan 21, 2024
1e928c3
Bump actions and add permissions (#244)
williamdes May 16, 2024
52f39a6
Add the ROUNDCUBEMAIL_USERNAME_DOMAIN env var to set the username_dom…
Clemenk May 16, 2024
3e0abad
Oauth client secret as docker secret for roundcube docker (#247)
indridieinarsson May 19, 2024
d3d5c68
Update roundcube version (via update.sh)
May 19, 2024
667818c
Add new ENV ROUNDCUBEMAIL_INSTALL_PLUGINS (#245)
williamdes May 19, 2024
b6c9f5d
Enable roundcube shell scripts to be directly executed (#238)
lukasmu May 21, 2024
286bea3
Change default of ROUNDCUBEMAIL_SKIN to elastic
thomascube May 21, 2024
767d14a
Only build on tags 1.6.*
thomascube Jun 25, 2024
5c73c3e
Fix composer plugins install (#250)
williamdes Aug 4, 2024
ede1617
Update roundcube version (via update.sh)
Aug 4, 2024
8ec8b78
Migrate to docker compose v2
thomascube Aug 4, 2024
1252126
Migrate docker-compose in Build & Test action
thomascube Aug 14, 2024
3deedba
Update roundcube version (via update.sh)
Sep 2, 2024
bbfe95a
Add license information to README
thomascube Sep 14, 2024
d4afe53
fix: nightly build (#262)
dschmidt Sep 14, 2024
4beff0d
Improve nightly Dockerfile
thomascube Sep 16, 2024
fbb90ec
Add image source label to dockerfiles (#269)
wuast94 Oct 27, 2024
df2440c
Fix syntax error in docker-entrypoint.sh (#268)
freman Oct 27, 2024
a1aab3c
Improve the docker layers (#251)
williamdes Nov 7, 2024
13b108f
Rebuild weekly to ensure fresh base images
pabzm Nov 8, 2024
70342df
Don't remove gnupg from alpine image
pabzm Nov 8, 2024
6182616
Remove needlessly published ports from examples
pabzm Nov 8, 2024
8e7cd8b
Renovate nightly setup
pabzm Nov 8, 2024
cdfcb4c
Github workflow for nightly image
pabzm Nov 8, 2024
05b1cdb
Merge pull request #272 from roundcube/remove-needlessly-published-ports
pabzm Nov 14, 2024
32aca2c
Merge pull request #273 from roundcube/renovate-nightly
pabzm Nov 14, 2024
4fa435a
Merge pull request #270 from roundcube/rebuild-weekly
pabzm Nov 14, 2024
5102244
Fix building nightly nightly
pabzm Nov 15, 2024
b2f3f67
Run only once at night, not each minute after 4:00...
pabzm Nov 15, 2024
4ce4e53
Merge pull request #277 from roundcube/fix-building-nightly
pabzm Nov 15, 2024
53b1aa8
Fix pushing nightly
Nov 18, 2024
2dc9b95
Merge pull request #279 from roundcube/fix-pushing-nightly
pabzm Nov 18, 2024
b945382
Setup reminder bots
Nov 20, 2024
6e7bbdd
Merge pull request #280 from roundcube/reminder-bots
pabzm Nov 20, 2024
4493e47
Provide enigma working dir (if enabled)
pabzm Nov 20, 2024
82b6b0f
Mention enigma storage path in README
pabzm Nov 20, 2024
7592a05
Update packages in images
pabzm Nov 20, 2024
a8d1c59
Fix update.sh for use on BSD/Darwin
pabzm Nov 20, 2024
6b708da
Merge pull request #282 from roundcube/replace-sed-by-perl
pabzm Nov 20, 2024
65b37fb
Limit reminder-bots to our repo
pabzm Nov 25, 2024
5643d95
Don't remind Alec of stale PRs in this repo
pabzm Nov 25, 2024
86081e5
Merge pull request #285 from roundcube/stale-reminder-dont-notify-alec
pabzm Nov 26, 2024
3b45725
Merge pull request #284 from roundcube/reminders-bots-only-in-our-repo
pabzm Nov 26, 2024
8ee5f5d
Protect default `temp_dir` and `log_dir` from remote access
pabzm Dec 2, 2024
1d10373
Make bot notify Thomas of stale pull requests, too
pabzm Dec 2, 2024
bf92461
Merge pull request #271 from roundcube/fix-using-enigma
pabzm Dec 2, 2024
347bdfe
Use a branch a pull requests to propose changes from update.sh
pabzm Dec 2, 2024
ada60f0
Merge pull request #289 from roundcube/use-pull-request-in-update-wor…
pabzm Dec 2, 2024
e4ad706
Fix pushing commit to origin
pabzm Dec 2, 2024
805678f
Merge pull request #290 from roundcube/use-pull-request-in-update-wor…
pabzm Dec 2, 2024
ea25ca3
Update roundcube version (via update.sh)
Dec 2, 2024
eb7ad58
Merge pull request #281 from roundcube/update-packages-in-images
pabzm Dec 3, 2024
f1bba7f
Keep PHP header files
pabzm Dec 3, 2024
786488d
Merge pull request #293 from roundcube/changes-from-update.sh
pabzm Dec 3, 2024
fd51e65
Fix building alpine
pabzm Dec 3, 2024
35afc84
Merge pull request #294 from roundcube/fix-building-alpine
pabzm Dec 3, 2024
a716c1f
CI: Fix working with branches with update.sh
pabzm Dec 3, 2024
44bd59f
Merge pull request #292 from roundcube/update.sh-fix-working-with-exi…
pabzm Dec 3, 2024
05fc0b0
Test using "enigma" plugin
pabzm Dec 4, 2024
5749668
Fix injecting enigma homedir
pabzm Dec 4, 2024
92635b6
Merge pull request #288 from roundcube/notify-thomascube-of-stale-pul…
pabzm Dec 5, 2024
7858c4e
Merge pull request #287 from roundcube/protect-default-temp-and-logs-dir
pabzm Dec 5, 2024
c638f8d
Fix the update.sh workflow action to handle no changes
pabzm Dec 5, 2024
41b80a5
Merge pull request #297 from roundcube/update.sh-fix-for-no-changes
pabzm Dec 6, 2024
6f2a428
Merge pull request #291 from roundcube/keep-php-headers
pabzm Dec 6, 2024
f69c7f1
Use valid branch names
pabzm Dec 6, 2024
903294c
Fix creating pull request
pabzm Dec 6, 2024
9dbb0ef
Merge pull request #299 from roundcube/update.sh-fix-branch-creation
pabzm Dec 6, 2024
31d6f36
Keep the PHP headers in all images
pabzm Dec 6, 2024
7e283a9
Merge pull request #301 from roundcube/actually-keep-php-headers
pabzm Dec 6, 2024
04da3b3
Merge pull request #296 from roundcube/fix-injecting-enigma-homedir
pabzm Dec 9, 2024
8519970
Install missing skin via composer on system initialization (#254)
bjalbor Dec 9, 2024
9f59f95
Remove TLS-related details from examples
pabzm Dec 16, 2024
18a941c
Use :latest mysql images
pabzm Dec 17, 2024
dd2374c
Merge pull request #304 from roundcube/mysql-use-latest
pabzm Jan 2, 2025
e7bb1ba
Merge pull request #303 from roundcube/remove-tls-details-from-example
pabzm Jan 2, 2025
473564f
Add a note on HTTPS to the README
pabzm Jan 3, 2025
4ac6c5c
Re-word the hint on sqlite in prod environments
pabzm Jan 9, 2025
3ee7dd8
Make apt not ask on upgrade
pabzm Jan 13, 2025
10a7acf
Merge pull request #313 from roundcube/apt-upgrade-non-interactively
pabzm Jan 14, 2025
dcf6488
Merge pull request #309 from roundcube/readme-https
pabzm Jan 18, 2025
c685b95
Remove problematic platforms
pabzm Feb 3, 2025
18757fa
Merge pull request #311 from roundcube/readme-sqlite
pabzm Feb 4, 2025
e4677f1
Update roundcube version (via update.sh)
Feb 11, 2025
9e38062
Merge pull request #318 from roundcube/changes-from-update.sh-2025-02…
pabzm Feb 11, 2025
2e7f0d5
Merge pull request #314 from roundcube/reduced-platforms
pabzm Feb 11, 2025
f04a382
Make HTTP daemons use public_html/ as document root
pabzm Feb 13, 2025
ed6d586
Remove installer.php if present
pabzm Feb 13, 2025
722fd28
Allow to trigger build-and-publish manually
pabzm Feb 13, 2025
75f0a83
Merge pull request #322 from roundcube/build-and-publish-manually
pabzm Feb 13, 2025
1091caf
Use php.ini-production as recommended by the upstream image authors
pabzm Feb 13, 2025
e2bb6bb
Reduce platforms for nightly builds, too
pabzm Feb 14, 2025
f4211ef
Merge pull request #324 from roundcube/reduced-platforms-nightly
pabzm Feb 14, 2025
98688cf
Merge pull request #321 from roundcube/public_html
pabzm Feb 25, 2025
c28c679
Merge pull request #323 from roundcube/use-php.ini-production
pabzm Mar 24, 2025
03b7347
Update roundcube version (via update.sh)
Mar 24, 2025
beb772d
Merge pull request #327 from roundcube/changes-from-update.sh-2025-03…
pabzm Mar 24, 2025
54ec9f1
Pin GitHub Actions to specific commits
pabzm Apr 3, 2025
ef4b8cc
feat: build non-root image variants (#310)
thomascube Apr 15, 2025
123da95
Update roundcube version (via update.sh)
Apr 17, 2025
6c9538a
Merge pull request #332 from roundcube/changes-from-update.sh-2025-04…
pabzm Apr 17, 2025
a62e4b6
Merge pull request #328 from roundcube/workflow-pin-commits
pabzm Apr 17, 2025
d18cc23
An image for development of Roundcubemail
pabzm Apr 4, 2025
3d893e9
Fix non-root-images RC 1.7.x
pabzm Apr 22, 2025
95484c5
Refresh apt-cache before installing dictionaries
umlaeute Apr 24, 2025
196b7c9
Merge pull request #333 from roundcube/fix-nonroot-images
pabzm Apr 25, 2025
b861900
Update roundcube version (via update.sh)
Apr 25, 2025
1b5bf88
Merge pull request #338 from roundcube/changes-from-update.sh-2025-04…
pabzm Apr 25, 2025
766e3fa
Merge pull request #336 from umlaeute/bugfix/aspell-dicts
pabzm Apr 25, 2025
2b2cbba
Fix build.yml for nonroot images
pabzm Apr 30, 2025
c6d5552
Auto label new issues
pabzm May 13, 2025
1bf895f
Merge pull request #341 from roundcube/auto-labels-for-new-issues
pabzm May 13, 2025
eeba9e5
fix: Databases connected via Unix domain sockets aren't well supporte…
DullJZ May 15, 2025
44b1e78
fix: Remove unix() while bash doesn't support
DullJZ May 15, 2025
312ae3f
Merge pull request #342 from DullJZ/master
pabzm May 16, 2025
a77da95
Merge pull request #339 from roundcube/fix-build-yaml-nonroot
pabzm May 16, 2025
de20239
Create NPM's home directory so it can write cache files and logs
pabzm May 23, 2025
d578af8
Update roundcube version (via update.sh)
Jun 2, 2025
c947a08
Merge pull request #344 from roundcube/changes-from-update.sh-2025-06…
pabzm Jun 2, 2025
eee4984
Merge pull request #329 from roundcube/dev-image
pabzm Jun 2, 2025
ad7eb98
Add images for 1.5.x as built previously
pabzm Jun 4, 2025
97440e8
Update 1.5-images to v1.5.10
pabzm Jun 4, 2025
65f374c
Update packages when building 1.5-images
pabzm Jun 4, 2025
6c1757b
Build 1.5-images regularly – if tests succeed
pabzm Jun 4, 2025
f67dff7
Run tests for split paths
pabzm Jun 4, 2025
7c21c3b
Allow ldap-sasl for php-ldap
matwey Jun 4, 2025
faa47e5
Merge pull request #350 from matwey/sasl
pabzm Jun 5, 2025
30bc16e
Merge pull request #348 from roundcube/images-for-1.5.x
pabzm Jun 6, 2025
fbee947
Fix typo in build-1.5.yml
pabzm Jun 6, 2025
4e6e314
Merge pull request #352 from roundcube/fix-build-1.5
pabzm Jun 6, 2025
53de78b
Another typo in build-1.5.yml
pabzm Jun 6, 2025
af9bed5
Merge pull request #353 from roundcube/fix-build-1.5-another-time
pabzm Jun 6, 2025
8fe7d29
Don't tag 1.5.x as latest*
pabzm Jun 10, 2025
4114503
Merge pull request #357 from roundcube/1.5-is-not-latest
pabzm Jun 10, 2025
e3e91b8
Build/test only 1.5 images on changes to 1.5 workflows
pabzm Jun 10, 2025
7b79af8
Mention target in build job title
pabzm Jun 10, 2025
904416a
Use cache for docker build
pabzm Jun 10, 2025
5acb7d9
Merge pull request #359 from roundcube/mention-target-in-job-title
pabzm Jun 10, 2025
22a1a53
Merge pull request #360 from roundcube/include-workflow-files-in-path…
pabzm Jun 10, 2025
c7ed674
Merge pull request #361 from roundcube/docker-cache-in-build
pabzm Jun 10, 2025
80e6c9a
Test images before pushing
pabzm Jun 4, 2025
8568dcc
Build nonroot images after rootful images
pabzm Jun 11, 2025
ba9bce5
Log in to docker.com as late as possible
pabzm Jun 11, 2025
fbea5cb
Format list of tags a little more readable
pabzm Jun 11, 2025
022d29b
Use containerd image store
pabzm Jun 11, 2025
de5dfc6
Temporarily use alpine 3.21 to fix builds
pabzm Jun 11, 2025
8dfe0fb
Merge pull request #349 from roundcube/test-image-before-pushing
pabzm Jun 11, 2025
457d3b0
Use PHP v8.4 in all main images
pabzm Jun 10, 2025
0aca628
Fix letter case mismatch
pabzm Jun 10, 2025
fe17a84
Fix apache-nonroot test
pabzm Jun 12, 2025
4a4ccec
Merge pull request #365 from roundcube/fix-apache-nonroot-test
pabzm Jun 12, 2025
d05fca0
Update 1.5-images to newly released v1.5.11
pabzm Jun 16, 2025
0e43ad1
Ignore more 1.5-related files in main workflows
pabzm Jun 16, 2025
e2d027c
Merge pull request #366 from roundcube/v1.5.11
pabzm Jun 16, 2025
c1a7cb1
Separate workflow for development image
pabzm Jun 4, 2025
4c9f108
Merge pull request #364 from roundcube/php8.4
pabzm Jun 18, 2025
a17077c
Merge pull request #351 from roundcube/fix-development-image
pabzm Jun 23, 2025
ee7af54
Install sqlite3 cli into the development image
pabzm Jul 17, 2025
141018e
Document not working features in nonroot images
pabzm Jul 17, 2025
8ec4439
Merge pull request #370 from roundcube/development-image-install-sqlite
pabzm Jul 22, 2025
251d480
Merge pull request #371 from roundcube/nonroot-docs
pabzm Jul 31, 2025
2f58f0c
Fix Roundcube updates with development image
pabzm Aug 19, 2025
15d7f03
Merge pull request #373 from roundcube/development-no-sudo
pabzm Sep 2, 2025
ba34511
Typo
pabzm Oct 20, 2025
94f86dd
Use public_html/ as docroot in FPM tests
pabzm Oct 20, 2025
efb91c2
Run tests on clean slate
pabzm Oct 21, 2025
1d8ea95
Pre-setup and post-setup tasks
pabzm Oct 2, 2025
50edf1e
Merge pull request #381 from roundcube/pre-and-post-setup-scripts
pabzm Nov 3, 2025
8a25f7b
Also tear down volumes before building images
pabzm Nov 4, 2025
a0db4b1
Merge pull request #383 from roundcube/also-down-with-volumes-when-bu…
pabzm Nov 4, 2025
ea60d11
Fix all workflows by updating setup-docker-action
pabzm Nov 18, 2025
6d924fc
Merge pull request #385 from roundcube/update-setup-docker-action
pabzm Nov 18, 2025
c9f58f9
Update roundcube version (via update.sh)
Dec 15, 2025
4d50ae1
Merge pull request #390 from roundcube/changes-from-update.sh-2025-12…
pabzm Dec 15, 2025
eb584d5
Use the non-privileged port in examples/docker-compose-nonroot
Dec 15, 2025
84a8c03
Rename nonroot-custom-php-config to apply last
Dec 15, 2025
5ab0071
Merge pull request #391 from kontaxis/nonroot-fix-nonprivileged-port
pabzm Dec 18, 2025
9fd84b3
Merge pull request #392 from kontaxis/nonroot-fix-custom-php-config
pabzm Dec 18, 2025
7cb52f5
Update roundcube version (via update.sh)
Feb 9, 2026
a74a9f4
Merge pull request #395 from roundcube/changes-from-update.sh-2026-02…
pabzm Feb 9, 2026
ba109cb
Update postgres examples to be 18+ compatible
spacecowboy Feb 26, 2026
95b710d
Update roundcube version (via update.sh)
Mar 19, 2026
7fe6adc
Merge pull request #402 from roundcube/changes-from-update.sh-2026-03…
pabzm Mar 19, 2026
e8c5bf3
add comments for what to do with older version of postgres
spacecowboy Mar 25, 2026
cdb8310
Merge pull request #400 from spacecowboy/master
pabzm Mar 25, 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
18 changes: 18 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# EditorConfig is awesome: https://EditorConfig.org

# top-most EditorConfig file
root = true

[*]
indent_style = space
indent_size = 4
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true

[templates/*.templ]
indent_style = tab

[Dockerfile]
indent_style = tab
1 change: 1 addition & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
templates/*.templ linguist-language=Dockerfile
19 changes: 19 additions & 0 deletions .github/workflows/automatic-issue-label.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
name: Label new issues
on:
issues:
types:
- reopened
- opened

jobs:
label_issues:
runs-on: ubuntu-latest
permissions:
issues: write
steps:
- run: gh issue edit "$NUMBER" --add-label "$LABELS"
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GH_REPO: ${{ github.repository }}
NUMBER: ${{ github.event.issue.number }}
LABELS: "0. to triage"
18 changes: 18 additions & 0 deletions .github/workflows/bot-create-manual-reminder.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
name: 'Create reminder from comment'

permissions:
issues: write
pull-requests: write

on:
issue_comment:
types: [created, edited]

jobs:
reminder:
if: github.repository == 'roundcube/roundcubemail-docker'
runs-on: ubuntu-latest

steps:
- name: 👀 check for reminder
uses: agrc/create-reminder-action@9ff30cde74284045941af16a04362938957253b1 # v1.1.17
18 changes: 18 additions & 0 deletions .github/workflows/bot-manual-reminder.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
name: 'Notify manually requested reminders'

on:
schedule:
- cron: '0 * * * *'

permissions:
issues: write
pull-requests: write

jobs:
reminder:
if: github.repository == 'roundcube/roundcubemail-docker'
runs-on: ubuntu-latest

steps:
- name: check reminders and notify
uses: agrc/reminder-action@96f2ec2e1a7a53ead156504922e9bc36d64f49ee # v1.0.16
20 changes: 20 additions & 0 deletions .github/workflows/bot-remind-stale-pull-requests.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
name: "Send comment to stale PRs"
on:
schedule:
# Run everyday at midnight
- cron: "0 0 * * *"

jobs:
review-reminder:
if: github.repository == 'roundcube/roundcubemail-docker'
runs-on: ubuntu-latest
steps:
- uses: sojusan/github-action-reminder@85a7d4ea6d5535e88e47baa242918a6a654de65d # v1.1.1
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
reminder_message: "🛎️ This PR has had no activity in two weeks."
# Remind after two weeks of inactivity
inactivity_deadline_hours: 336
default_users_to_notify: |
@pabzm
@thomascube
91 changes: 91 additions & 0 deletions .github/workflows/build-1.5.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
name: Build & Publish 1.5.x

permissions:
contents: read

on:
push:
branches:
- 'master'
paths:
- 'apache-1.5.x/**'
- 'fpm-1.5.x/**'
- 'fpm-alpine-1.5.x/**'
- '.github/workflows/*-1.5.yml'

schedule:
# Rebuild images each monday early morning to ensure a fresh base OS.
- cron: "23 2 * * 1"
workflow_dispatch:

jobs:
build-and-testvariants:
name: Build image variants and run tests
runs-on: ubuntu-latest
strategy:
fail-fast: false
max-parallel: 10
matrix:
include:
- variant: 'apache-1.5.x'
test-files: 'apache-postgres'
docker-tag: roundcube/roundcubemail:1.5.x-apache,roundcube/roundcubemail:1.5.11-apache
test-tag: roundcube/roundcubemail:latest-apache
- variant: 'fpm-1.5.x'
test-files: 'fpm-postgres'
docker-tag: roundcube/roundcubemail:1.5.x-fpm,roundcube/roundcubemail:1.5.11-fpm
test-tag: roundcube/roundcubemail:latest-fpm
- variant: 'fpm-alpine-1.5.x'
test-files: 'fpm-postgres'
docker-tag: roundcube/roundcubemail:1.5.x-fpm-alpine,roundcube/roundcubemail:1.5.11-fpm-alpine
test-tag: roundcube/roundcubemail:latest-fpm-alpine
steps:
- name: Checkout repository
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- name: Get docker hub username
id: creds
run: echo '::set-output name=username::${{ secrets.DOCKER_PULL_USERNAME }}'
- name: Login to Docker Hub
if: steps.creds.outputs.username != ''
uses: docker/login-action@74a5d142397b4f367a81961eba4e8cd7edddf772 # v3.4.0
with:
username: ${{ secrets.DOCKER_PULL_USERNAME }}
password: ${{ secrets.DOCKER_PUSH_PASSWORD }}

- name: Set up QEMU
uses: docker/setup-qemu-action@29109295f81e9208d7d86ff1c6c12d2833863392 # v3.6.0
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@b5ca514318bd6ebac0fb2aedd5d36ec1b5c232a2 # v3.10.0
with:
buildkitd-flags: --debug

- name: Build locally native image for "${{ matrix.variant }} for tests"
uses: docker/build-push-action@471d1dc4e07e5cdedd4c2171150001c434f0b7a4 # v6.15.0
with:
context: ${{ matrix.variant }}
push: false
load: true
tags: ${{ matrix.docker-tag }}
cache-from: type=gha
cache-to: type=gha,mode=max

- name: Run tests
env:
# ROUNDCUBEMAIL_TEST_IMAGE: roundcube/roundcubemail:latest-${{matrix.variant}}
ROUNDCUBEMAIL_TEST_IMAGE: ${{ matrix.test-tag }}
HTTP_PORT: ${{ matrix.http-port || '80' }}
run: |
set -exu;
for testFile in ${{ join(matrix.test-files, ' ') }};
do
docker compose -f ./tests/docker-compose.test-${testFile}.yml \
up --exit-code-from=sut --abort-on-container-exit
done

- name: Build and push all images for "${{ matrix.variant }}"
uses: docker/build-push-action@471d1dc4e07e5cdedd4c2171150001c434f0b7a4 # v6.15.0
with:
context: ${{ matrix.variant }}
platforms: "linux/arm64,linux/arm/v6,linux/arm/v7,linux/386,linux/amd64"
push: true
tags: ${{ matrix.docker-tag }}
77 changes: 77 additions & 0 deletions .github/workflows/build-and-publish-development.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
name: Build & publish development image

permissions:
contents: read

on:
push:
branches:
- 'master'
paths:
- 'development/**'
- .github/workflows/*-development.yml
schedule:
# Rebuild images each monday morning to ensure a fresh base OS (but later than the main image building workflow,
# because the development image builds on one of them)
- cron: "23 4 * * 1"
workflow_dispatch:

jobs:
build_test_publish:
name: Build, test and publish image
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- name: Set up Docker
# This step is required to enable the containerd image store, which is required by the cache type=gha
uses: docker/setup-docker-action@efe9e3891a4f7307e689f2100b33a155b900a608 # v4.5.0
with:
daemon-config: |
{
"debug": true,
"features": {
"containerd-snapshotter": true
}
}
- name: Set up QEMU
uses: docker/setup-qemu-action@29109295f81e9208d7d86ff1c6c12d2833863392 # v3.6.0
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@b5ca514318bd6ebac0fb2aedd5d36ec1b5c232a2 # v3.10.0
with:
buildkitd-flags: --debug

- name: Build development image for tests"
uses: docker/build-push-action@471d1dc4e07e5cdedd4c2171150001c434f0b7a4 # v6.15.0
with:
context: development
load: true
tags: roundcube/roundcubemail:development
cache-from: type=gha
cache-to: type=gha,mode=max

- name: Test built image
env:
ROUNDCUBEMAIL_TEST_IMAGE: roundcube/roundcubemail:development
run: ./development/test.sh

# Only log into docker now, so we benefit from the automatic caching of upstream images.
- name: Get docker hub username
id: creds
run: echo '::set-output name=username::${{ secrets.DOCKER_PULL_USERNAME }}'
- name: Login to Docker Hub
if: steps.creds.outputs.username != ''
uses: docker/login-action@74a5d142397b4f367a81961eba4e8cd7edddf772 # v3.4.0
with:
username: ${{ secrets.DOCKER_PULL_USERNAME }}
password: ${{ secrets.DOCKER_PUSH_PASSWORD }}

- name: Build and push development images for all platforms
uses: docker/build-push-action@471d1dc4e07e5cdedd4c2171150001c434f0b7a4 # v6.15.0
with:
context: development
platforms: "linux/arm64,linux/arm/v6,linux/arm/v7,linux/386,linux/amd64"
push: true
tags: roundcube/roundcubemail:development
cache-from: type=gha
cache-to: type=gha,mode=max
68 changes: 68 additions & 0 deletions .github/workflows/build-and-publish-nightly.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
name: Build & Publish nightly

permissions:
contents: read

on:
schedule:
# Rebuild automatically each night
- cron: "4 2 * * *"

jobs:
build-and-testvariants:
name: Build image and run tests
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- name: Set up Docker
# This step is required to enable the containerd image store, which is required by the cache type=gha
uses: docker/setup-docker-action@efe9e3891a4f7307e689f2100b33a155b900a608 # v4.5.0
with:
daemon-config: |
{
"debug": true,
"features": {
"containerd-snapshotter": true
}
}
- name: Set up QEMU
uses: docker/setup-qemu-action@29109295f81e9208d7d86ff1c6c12d2833863392 # v3.6.0
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@b5ca514318bd6ebac0fb2aedd5d36ec1b5c232a2 # v3.10.0
with:
buildkitd-flags: --debug

- name: Build nightly image for tests"
uses: docker/build-push-action@471d1dc4e07e5cdedd4c2171150001c434f0b7a4 # v6.15.0
with:
context: nightly
load: true
tags: roundcube/roundcubemail:nightly
cache-from: type=gha
cache-to: type=gha,mode=max
# does not work linux/arm/v5 AND linux/mips64le - composer does not support mips64le or armv5 nor does the php image support them on the alpine variant

- name: Run tests
env:
ROUNDCUBEMAIL_TEST_IMAGE: roundcube/roundcubemail:nightly
run: docker compose -f ./tests/docker-compose.test-apache-postgres.yml up --exit-code-from=sut --abort-on-container-exit

# Only log into docker now, so we benefit from the automatic caching of upstream images.
- name: Get docker hub username
id: creds
run: echo '::set-output name=username::${{ secrets.DOCKER_PULL_USERNAME }}'
- name: Login to Docker Hub
if: steps.creds.outputs.username != ''
uses: docker/login-action@74a5d142397b4f367a81961eba4e8cd7edddf772 # v3.4.0
with:
username: ${{ secrets.DOCKER_PULL_USERNAME }}
password: ${{ secrets.DOCKER_PUSH_PASSWORD }}

- name: Build and push nightly images for all platforms
uses: docker/build-push-action@471d1dc4e07e5cdedd4c2171150001c434f0b7a4 # v6.15.0
with:
context: nightly
platforms: "linux/arm64,linux/arm/v6,linux/arm/v7,linux/386,linux/amd64"
push: true
tags: roundcube/roundcubemail:nightly
Loading