Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
fa2d988
Convert to ExApp architecture and add CI/CD workflows
rubenvdlinde Feb 6, 2026
c324029
Bump unstable version to 0.1.1-unstable.1 [skip ci]
actions-user Feb 6, 2026
8bd560f
Update branch protection: main from beta, beta from development
rubenvdlinde Feb 6, 2026
62d2b09
Bump unstable version to 0.1.1-unstable.2 [skip ci]
actions-user Feb 6, 2026
5b0d196
chore: Switch license to EUPL-1.2
rubenvdlinde Feb 26, 2026
8320bca
fix: Revert licence to agpl for Nextcloud App Store compatibility
rubenvdlinde Mar 1, 2026
cebbf91
fix: Fix entrypoint and heartbeat for AppAPI compatibility
rubenvdlinde Mar 5, 2026
7ddac31
fix: Add PHPCS/PHPMD/Psalm quality tooling
rubenvdlinde Mar 5, 2026
6504261
Merge branch 'feature/code-cleanup' into development
rubenvdlinde Mar 5, 2026
2c33a13
fix: Add PHPCS/PHPMD/Psalm quality tooling (#3)
rubenvdlinde Mar 5, 2026
87a1f80
Merge branch 'development' of https://github.com/ConductionNL/openzaa…
rubenvdlinde Mar 6, 2026
c57924f
chore(deps): bump composer config.platform.php to 8.3 (#7)
rubenvdlinde May 23, 2026
108e6e0
chore(deps): bump PHP requirement to ^8.3 (#6)
rubenvdlinde May 23, 2026
ee1afbe
fix(ci): skip lint-check when repo has no package.json (#5)
rubenvdlinde May 23, 2026
545f48d
chore(info.xml): canonicalize PHP min, NC version range, licence spel…
rubenvdlinde May 23, 2026
ba74077
chore(composer): bump lock platform-overrides to PHP 8.3 to match con…
rubenvdlinde May 25, 2026
6c31b3b
branding: add cobalt app-store.svg logo and use it in the README
rubenvdlinde May 29, 2026
9604089
Merge remote-tracking branch 'origin/development' into reconcile/dev-…
juanclaude-conduction Jun 8, 2026
3d64615
fix(icons): use filled path for NC theming favicon compatibility
Jun 14, 2026
39ea540
openzaak: complete the launchpad rename (drop stale mydash placeholde…
Jun 26, 2026
92d7deb
chore(licence): declare EUPL-1.2 in info.xml (fleet standard; matches…
Jul 7, 2026
b11a1ef
Merge pull request 'OpenZaak: declare EUPL-1.2 licence in info.xml' (…
Jul 9, 2026
256e251
fix(icon): carry the white fill on the <svg> element, not inner nodes
Jul 10, 2026
af35c7b
Merge pull request 'fix: openzaak app.svg recolorable via svg-root fi…
Jul 10, 2026
c5e0e4e
chore(quality): make composer check:strict an honest gate (#14)
rubenvdlinde Aug 2, 2026
60bd7d9
fix(ci): make composer check:strict able to fail on tests (#15)
rubenvdlinde Aug 2, 2026
39a97be
ci: introduce fleet CI (branch check + shared quality pipeline)
remko48 Aug 3, 2026
7b57928
fix(quality): phpmd DevelopmentCodeFragment could never fire on names…
rubenvdlinde Aug 3, 2026
08cd060
ci: bound every job with timeout-minutes (#18)
rubenvdlinde Aug 3, 2026
0802c1b
ci(quality): add explicit permission ceiling
remko48 Aug 3, 2026
9b86a6e
Merge pull request #16 from ConductionNL/feature/workflow-update
remko48 Aug 4, 2026
485ec83
fix(quality): remove PHP test scripts that manufacture a green in a r…
rubenvdlinde Aug 4, 2026
cb4b90e
chore(license): put the SPDX identifier first in the NamedParametersS…
Aug 5, 2026
28be64a
Merge pull request #21 from ConductionNL/chore/eupl-license-normalisa…
rubenvdlinde Aug 5, 2026
e40b67d
chore: raise the Nextcloud floor to 32 (#23)
rubenvdlinde Aug 7, 2026
3bdeb14
fix: restore the pre-32 Nextcloud floor — CI still runs stable31 (#24)
rubenvdlinde Aug 7, 2026
3faacb1
chore: align nextcloud/ocp and info.xml with Nextcloud 34 (#25)
rubenvdlinde Aug 12, 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/beta-release.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@ on:
jobs:
release-management:
runs-on: ubuntu-latest
# Observed fleet-wide: n=26 runs, max 0.7 min; bounded loosely at 45 min because a spurious release failure is expensive
timeout-minutes: 45
steps:

- name: Checkout Code
Expand Down
11 changes: 11 additions & 0 deletions .github/workflows/branch-protection.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
name: Branch Protection

on:
pull_request:
branches: [main, beta]

permissions: {}

jobs:
branch-protection:
uses: ConductionNL/.github/.github/workflows/branch-protection.yml@main
62 changes: 62 additions & 0 deletions .github/workflows/build-exapp.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
name: Build and Push ExApp Docker Image

on:
push:
branches:
- main
- beta
tags:
- 'v*'
pull_request:
branches:
- main

env:
REGISTRY: ghcr.io
IMAGE_NAME: conductionnl/openzaak-exapp

jobs:
build:
runs-on: ubuntu-latest
# No successful runs observed yet (multi-arch docker build); bounded loosely at 30 min
timeout-minutes: 30
permissions:
contents: read
packages: write

steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3

- name: Log in to Container Registry
if: github.event_name != 'pull_request'
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Extract metadata
id: meta
uses: docker/metadata-action@v5
with:
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
tags: |
type=ref,event=branch
type=ref,event=pr
type=semver,pattern={{version}}
type=semver,pattern={{major}}.{{minor}}
type=raw,value=latest,enable={{is_default_branch}}

- name: Build and push
uses: docker/build-push-action@v5
with:
context: .
push: ${{ github.event_name != 'pull_request' }}
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
cache-from: type=gha
cache-to: type=gha,mode=max
46 changes: 46 additions & 0 deletions .github/workflows/code-quality.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
name: Code Quality

on:
push:
branches: [main, beta, development, feature/**, bugfix/**, hotfix/**]
pull_request:
types: [opened, reopened]
branches: [main, beta, development]
workflow_dispatch:

concurrency:
group: quality-${{ github.head_ref || github.ref_name }}
cancel-in-progress: true

# Permission CEILING for the called quality pipeline. GitHub statically
# validates the called workflow's declared job permissions against this
# grant — even for jobs that are disabled — so it must cover the maximum
# any nested job declares: journeydoc-capture (contents+actions write),
# update-baseline / features-extract (contents write), and the Quality
# Report PR comment (issues / pull-requests write).
permissions:
contents: write
actions: write
issues: write
pull-requests: write

jobs:
quality:
if: github.event_name != 'push' || github.event.created != true
uses: ConductionNL/.github/.github/workflows/quality.yml@main
with:
app-name: openzaak
# composer.json pins config.platform.php to 8.3
php-version: "8.3"
# PHP-only ExApp: no package.json, so all npm-side checks are off
# (enable-npm gates the npm legs of security/license; enable-frontend
# gates Vue Quality and custom frontend checks).
enable-npm: false
enable-frontend: false
# The SBOM job invokes `composer CycloneDX:make-sbom`, which this repo
# does not ship — enable once cyclonedx/cyclonedx-php-composer is added
# to require-dev.
enable-sbom: false
# No openspec/specs and no docs/features.json yet — the features check
# would fail on every PR comparing "" against "[]".
enable-features-extract: false
34 changes: 34 additions & 0 deletions .github/workflows/pull-request-from-branch-check.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
name: Branch Protection

on:
pull_request:
branches:
- main
- beta

jobs:
check-branch:
runs-on: ubuntu-latest
# Observed fleet-wide: n=123 runs, max 0.1 min
timeout-minutes: 10
steps:
- name: Check branch
run: |
TARGET="${{ github.base_ref }}"
SOURCE="${{ github.head_ref }}"

if [[ "$TARGET" == "main" ]]; then
if [[ "$SOURCE" != "beta" ]] && ! [[ "$SOURCE" =~ ^hotfix ]]; then
echo "Error: Pull requests to main must come from 'beta' or a branch starting with 'hotfix'"
echo "Source branch: $SOURCE"
exit 1
fi
elif [[ "$TARGET" == "beta" ]]; then
if [[ "$SOURCE" != "development" ]] && ! [[ "$SOURCE" =~ ^hotfix ]]; then
echo "Error: Pull requests to beta must come from 'development' or a branch starting with 'hotfix'"
echo "Source branch: $SOURCE"
exit 1
fi
fi

echo "Branch check passed: $SOURCE -> $TARGET"
35 changes: 35 additions & 0 deletions .github/workflows/pull-request-lint-check.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
name: Lint Check

on:
pull_request:
branches:
- development
- main

jobs:
lint-check:
runs-on: ubuntu-latest
# Observed fleet-wide: n=176 runs, median 0.6 min, max 1.4 min
timeout-minutes: 15

steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Check for package.json
id: has_pkg
run: |
if [ -f package.json ]; then
echo "exists=true" >> "$GITHUB_OUTPUT"
else
echo "exists=false" >> "$GITHUB_OUTPUT"
echo "::notice::No package.json found at repo root; lint-check is a no-op for this repo."
fi

- name: Install dependencies
if: steps.has_pkg.outputs.exists == 'true'
run: npm i

- name: Linting
if: steps.has_pkg.outputs.exists == 'true'
run: npm run lint
46 changes: 46 additions & 0 deletions .github/workflows/push-development-to-beta.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
name: Create PR to Beta

permissions:
contents: write
pull-requests: write

on:
push:
branches:
- development

jobs:
create-pr:
runs-on: ubuntu-latest
# Observed fleet-wide: n=152 runs, max 5.6 min
timeout-minutes: 20
steps:
- name: Checkout Code
uses: actions/checkout@v3
with:
fetch-depth: 0

- name: Create or update PR to beta
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
# Check if beta branch exists
if ! git ls-remote --heads origin beta | grep -q beta; then
echo "Beta branch does not exist yet. Creating from development..."
git push origin origin/development:refs/heads/beta
fi

# Check if a PR already exists
EXISTING_PR=$(gh pr list --base beta --head development --state open --json number --jq '.[0].number' || echo "")

if [ -n "$EXISTING_PR" ] && [ "$EXISTING_PR" != "null" ]; then
echo "PR #$EXISTING_PR already exists, it will auto-update with new commits"
else
gh pr create \
--base beta \
--head development \
--title "Release: merge development into beta" \
--body "Automated PR to sync development changes to beta for beta release.

Merging this PR will trigger the beta release workflow."
fi
2 changes: 2 additions & 0 deletions .github/workflows/release-workflow.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@ on:
jobs:
release-management:
runs-on: ubuntu-latest
# Observed fleet-wide: n=26 runs, max 0.7 min; bounded loosely at 45 min because a spurious release failure is expensive
timeout-minutes: 45
steps:

- name: Checkout Code
Expand Down
Loading
Loading