feat(ci): add Nextcloud version matrix (NC 31, 32, 33)
- Add cross-product matrix (3 versions x 4 auth modes = 12 CI jobs) - Parameterize Nextcloud image in docker-compose.yml via NEXTCLOUD_IMAGE env var - Pin NC 31.0.8, 32.0.6, 33.0.0 with SHA digests in workflow - Add Renovate customManagers to auto-update NC images in workflow - Fix Astrolabe install hook to prefer volume mount over app store - Bump Astrolabe submodule to support NC 33 (max-version 31→33) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -35,7 +35,21 @@ jobs:
|
|||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
|
nextcloud_version: ["31", "32", "33"]
|
||||||
|
mode: ["single-user", "multi-user-basic", "oauth", "login-flow"]
|
||||||
include:
|
include:
|
||||||
|
# Version-specific image pins — Renovate updates these via customManagers
|
||||||
|
# renovate: datasource=docker depName=docker.io/library/nextcloud
|
||||||
|
- nextcloud_version: "31"
|
||||||
|
nextcloud_image: "docker.io/library/nextcloud:31.0.8@sha256:92bc503ea0c19789f402b0469ecfb8df1ffea81e2bf90a45bba39063a626aa00"
|
||||||
|
# renovate: datasource=docker depName=docker.io/library/nextcloud
|
||||||
|
- nextcloud_version: "32"
|
||||||
|
nextcloud_image: "docker.io/library/nextcloud:32.0.6@sha256:5c4e09f72f096cd68379a8ae69f71e61d13da5a07430fc4a17c702a14e6a4267"
|
||||||
|
# renovate: datasource=docker depName=docker.io/library/nextcloud
|
||||||
|
- nextcloud_version: "33"
|
||||||
|
nextcloud_image: "docker.io/library/nextcloud:33.0.0@sha256:ff2cbaab14c85e587b5541e3aff4216a8a484e06424ebae661581937c0c8da0c"
|
||||||
|
|
||||||
|
# Mode-specific properties
|
||||||
- mode: single-user
|
- mode: single-user
|
||||||
profile: single-user
|
profile: single-user
|
||||||
markers: "(smoke and not oauth and not keycloak and not login_flow and not multi_user_basic) or (integration and not oauth and not keycloak and not login_flow and not multi_user_basic)"
|
markers: "(smoke and not oauth and not keycloak and not login_flow and not multi_user_basic) or (integration and not oauth and not keycloak and not login_flow and not multi_user_basic)"
|
||||||
@@ -72,7 +86,7 @@ jobs:
|
|||||||
needs-playwright: true
|
needs-playwright: true
|
||||||
extra-args: ""
|
extra-args: ""
|
||||||
|
|
||||||
name: integration (${{ matrix.mode }})
|
name: integration (${{ matrix.mode }} / nc${{ matrix.nextcloud_version }})
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||||
@@ -111,6 +125,7 @@ jobs:
|
|||||||
up-flags: "--build"
|
up-flags: "--build"
|
||||||
env:
|
env:
|
||||||
MCP_SERVER_URL: ${{ matrix.mcp-internal-url }}
|
MCP_SERVER_URL: ${{ matrix.mcp-internal-url }}
|
||||||
|
NEXTCLOUD_IMAGE: ${{ matrix.nextcloud_image }}
|
||||||
|
|
||||||
- name: Install the latest version of uv
|
- name: Install the latest version of uv
|
||||||
uses: astral-sh/setup-uv@5a095e7a2014a4212f075830d4f7277575a9d098 # v7.3.1
|
uses: astral-sh/setup-uv@5a095e7a2014a4212f075830d4f7277575a9d098 # v7.3.1
|
||||||
@@ -193,7 +208,7 @@ jobs:
|
|||||||
if: failure()
|
if: failure()
|
||||||
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0
|
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0
|
||||||
with:
|
with:
|
||||||
name: debug-${{ matrix.mode }}
|
name: debug-${{ matrix.mode }}-nc${{ matrix.nextcloud_version }}
|
||||||
path: |
|
path: |
|
||||||
/tmp/*.png
|
/tmp/*.png
|
||||||
/tmp/docker-compose-logs.txt
|
/tmp/docker-compose-logs.txt
|
||||||
|
|||||||
@@ -2,12 +2,30 @@
|
|||||||
|
|
||||||
set -euox pipefail
|
set -euox pipefail
|
||||||
|
|
||||||
echo "Installing Astrolabe app from app store..."
|
echo "Installing Astrolabe app..."
|
||||||
|
|
||||||
if [ -d /var/www/html/custom_apps/astrolabe ]; then
|
# Check if development astrolabe app is mounted at /opt/apps/astrolabe
|
||||||
|
if [ -d /opt/apps/astrolabe ]; then
|
||||||
|
echo "Development astrolabe app found at /opt/apps/astrolabe"
|
||||||
|
|
||||||
|
# Remove any existing astrolabe app in custom_apps (from app store or old symlink)
|
||||||
|
if [ -e /var/www/html/custom_apps/astrolabe ]; then
|
||||||
|
echo "Removing existing astrolabe in custom_apps..."
|
||||||
|
rm -rf /var/www/html/custom_apps/astrolabe
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Create symlink from custom_apps to the mounted development version
|
||||||
|
# Per Nextcloud docs: apps outside server root need symlinks in server root
|
||||||
|
echo "Creating symlink: custom_apps/astrolabe -> /opt/apps/astrolabe"
|
||||||
|
ln -sf /opt/apps/astrolabe /var/www/html/custom_apps/astrolabe
|
||||||
|
|
||||||
|
echo "Enabling astrolabe app from /opt/apps (development mode via symlink)"
|
||||||
|
php /var/www/html/occ app:enable astrolabe
|
||||||
|
elif [ -d /var/www/html/custom_apps/astrolabe ]; then
|
||||||
echo "astrolabe app directory found in custom_apps (already installed)"
|
echo "astrolabe app directory found in custom_apps (already installed)"
|
||||||
php /var/www/html/occ app:enable astrolabe
|
php /var/www/html/occ app:enable astrolabe
|
||||||
else
|
else
|
||||||
|
echo "astrolabe app not found, installing from app store..."
|
||||||
php /var/www/html/occ app:install astrolabe
|
php /var/www/html/occ app:install astrolabe
|
||||||
php /var/www/html/occ app:enable astrolabe
|
php /var/www/html/occ app:enable astrolabe
|
||||||
fi
|
fi
|
||||||
|
|||||||
+1
-1
@@ -23,7 +23,7 @@ services:
|
|||||||
restart: always
|
restart: always
|
||||||
|
|
||||||
app:
|
app:
|
||||||
image: docker.io/library/nextcloud:32.0.6@sha256:5c4e09f72f096cd68379a8ae69f71e61d13da5a07430fc4a17c702a14e6a4267
|
image: ${NEXTCLOUD_IMAGE:-docker.io/library/nextcloud:32.0.6@sha256:5c4e09f72f096cd68379a8ae69f71e61d13da5a07430fc4a17c702a14e6a4267}
|
||||||
restart: always
|
restart: always
|
||||||
ports:
|
ports:
|
||||||
- 127.0.0.1:8080:80
|
- 127.0.0.1:8080:80
|
||||||
|
|||||||
@@ -10,5 +10,15 @@
|
|||||||
"matchPackageNames": ["pillow"],
|
"matchPackageNames": ["pillow"],
|
||||||
"allowedVersions": "<12.0.0"
|
"allowedVersions": "<12.0.0"
|
||||||
}
|
}
|
||||||
|
],
|
||||||
|
"customManagers": [
|
||||||
|
{
|
||||||
|
"customType": "regex",
|
||||||
|
"fileMatch": ["^\\.github/workflows/test\\.yml$"],
|
||||||
|
"matchStrings": [
|
||||||
|
"nextcloud_image:\\s*\"(?<depName>[^:]+):(?<currentValue>[^@]+)@(?<currentDigest>sha256:[a-f0-9]+)\""
|
||||||
|
],
|
||||||
|
"datasourceTemplate": "docker"
|
||||||
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
Vendored
+1
-1
Submodule third_party/astrolabe updated: 5189670022...672f572d5f
Reference in New Issue
Block a user