Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
3ae8ed1
6896: Add Symfony 8 support
turegjorup Mar 9, 2026
ec784df
6896: Apply code style fixes
turegjorup Mar 9, 2026
a7137ba
6896: Set phpstan to max level and fix type errors
turegjorup Mar 9, 2026
d1d7a2f
6896: Increase test coverage to 100%
turegjorup Mar 9, 2026
8f86075
6896: Upgrade to PHPUnit 12
turegjorup Mar 9, 2026
6385d9f
6896: Update Changelog
turegjorup Mar 9, 2026
04477e4
Merge branch 'develop' into feature/symfony-8
turegjorup Mar 9, 2026
0cd1fe0
6896: Restructure CI workflows and fix Symfony 8 compatibility
turegjorup Mar 9, 2026
e4421b3
6896: Use composer update in CI workflows
turegjorup Mar 9, 2026
daa729a
6896: Fix CI file permissions for composer in docker
turegjorup Mar 9, 2026
53c2834
6896: Fix CI issues with normalized composer.json and permissions
turegjorup Mar 9, 2026
e1a66db
6896: Add prefer-stable/prefer-lowest matrix and match check names
turegjorup Mar 9, 2026
f8f88aa
6896: Limit composer validate to PHP 8.3 only
turegjorup Mar 9, 2026
c893a72
6896: Align workflow naming with itkdev templates
turegjorup Mar 9, 2026
26b054c
6896: Update docker compose to itk-version 3.2.4
turegjorup Mar 10, 2026
48c7674
6896: Replace linting config with itkdev-docker templates
turegjorup Mar 10, 2026
6712bbf
6896: Align GitHub workflows with itkdev-docker templates
turegjorup Mar 10, 2026
aa2ba6d
6896: Remove unused coding standard deps and update scripts
turegjorup Mar 10, 2026
a920427
6896: Apply @Symfony coding standards to PHP files
turegjorup Mar 10, 2026
1a5017c
6896: Fix markdown and YAML formatting per linter rules
turegjorup Mar 10, 2026
0db4c23
6896: Add Taskfile for local development tasks
turegjorup Mar 10, 2026
37ecbde
6896: Update README development section for Taskfile and test matrix
turegjorup Mar 10, 2026
b6d3f75
6896: Update Symfony native OIDC support note in README
turegjorup Mar 10, 2026
e143ebf
6896: Address PR review feedback
turegjorup Mar 12, 2026
4123d52
6896: Reset phpstan to max, refactor type checks
turegjorup Mar 12, 2026
fc63849
6896: Add per-matrix vendor volumes and shared composer cache
turegjorup Mar 16, 2026
eedc48d
6896: Cache composer.lock per matrix combination, add matrix:reset task
turegjorup Mar 16, 2026
d67a7b7
6896: Simplify Configuration tree builder
turegjorup Mar 16, 2026
160becf
6896: Rename lint:composer to composer:check
turegjorup Mar 16, 2026
40f2877
6896: Fix CI failures — PHPStan, missing services, YAML formatting
turegjorup Mar 16, 2026
3e030bc
6896: Matrix services extend their base PHP version service
turegjorup Mar 16, 2026
5064e34
6896: Move composer:check above lint, rename analyze to analyze:php
turegjorup Mar 18, 2026
67246c6
6896: Update docker compose with "CI" profile for extra test containe…
turegjorup Mar 20, 2026
7e79e7e
6896: Rename global PHP var to PHP_EXEC to avoid shadowing test:run P…
turegjorup Mar 20, 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
5 changes: 5 additions & 0 deletions .docker/data/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# Ignore everything in this directory
*
# Except
!.gitignore
!README.md
26 changes: 26 additions & 0 deletions .docker/data/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
# .docker/data

Please map persistent volumes to this directory on the servers.

If a container needs to persist data between restarts you can map the relevant files in the container to ``docker/data/<container-name>`.

## RabbitMQ example
If you are using RabbitMQ running in a container as a message broker you need to configure a persistent volume for RabbitMQs data directory to avoid losing message on container restarts.

```yaml
# docker-compose.server.override.yml

services:
rabbit:
image: rabbitmq:3.9-management-alpine
hostname: "${COMPOSE_PROJECT_NAME}"
networks:
- app
- frontend
environment:
- "RABBITMQ_DEFAULT_USER=${RABBITMQ_USER}"
- "RABBITMQ_DEFAULT_PASS=${RABBITMQ_PASSWORD}"
- "RABBITMQ_ERLANG_COOKIE=${RABBITMQ_ERLANG_COOKIE}"
volumes:
- ".docker/data/rabbitmq:/var/lib/rabbitmq/mnesia/"
```
29 changes: 29 additions & 0 deletions .github/workflows/changelog.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
# Do not edit this file! Make a pull request on changing
# github/workflows/changelog.yaml in
# https://github.com/itk-dev/devops_itkdev-docker if need be.

### ### Changelog
###
### Checks that changelog has been updated

name: Changelog

on:
pull_request:

jobs:
changelog:
runs-on: ubuntu-latest
strategy:
fail-fast: false
steps:
- name: Checkout
uses: actions/checkout@v5
with:
fetch-depth: 2

- name: Git fetch
run: git fetch

- name: Check that changelog has been updated.
run: git diff --exit-code origin/${{ github.base_ref }} -- CHANGELOG.md && exit 1 || exit 0
83 changes: 83 additions & 0 deletions .github/workflows/composer.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
# Do not edit this file! Make a pull request on changing
# github/workflows/composer.yaml in
# https://github.com/itk-dev/devops_itkdev-docker if need be.

### ### Composer
###
### Validates composer.json and checks that it's normalized.
###
### #### Assumptions
###
### 1. A docker compose service named `phpfpm` can be run and `composer` can be
### run inside the `phpfpm` service.
### 2. [ergebnis/composer-normalize](https://github.com/ergebnis/composer-normalize)
### is a dev requirement in `composer.json`:
###
### ``` shell
### docker compose run --rm phpfpm composer require --dev ergebnis/composer-normalize
### ```
###
### Normalize `composer.json` by running
###
### ``` shell
### docker compose run --rm phpfpm composer normalize
### ```

name: Composer

env:
COMPOSE_USER: runner

on:
pull_request:
push:
branches:
- main
- develop

jobs:
composer-validate:
name: Validate composer (${{ matrix.prefer }})
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
prefer: [prefer-lowest, prefer-stable]
steps:
- uses: actions/checkout@v5

- name: Create docker network
run: |
docker network create frontend

- run: |
docker compose run --rm phpfpm composer validate --strict

composer-normalized:
runs-on: ubuntu-latest
strategy:
fail-fast: false
steps:
- uses: actions/checkout@v5

- name: Create docker network
run: |
docker network create frontend

- run: |
docker compose run --rm phpfpm composer install
docker compose run --rm phpfpm composer normalize --dry-run

composer-audit:
runs-on: ubuntu-latest
strategy:
fail-fast: false
steps:
- uses: actions/checkout@v5

- name: Create docker network
run: |
docker network create frontend

- run: |
docker compose run --rm phpfpm composer audit
4 changes: 2 additions & 2 deletions .github/workflows/github_build_release.yml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
on:
push:
tags:
- '*.*.*'
- "*.*.*"

name: Create Github Release

Expand All @@ -16,7 +16,7 @@ jobs:
APP_ENV: prod
steps:
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@v5

- name: Create a release in GitHub
run: gh release create ${{ github.ref_name }} --verify-tag --generate-notes
Expand Down
44 changes: 44 additions & 0 deletions .github/workflows/markdown.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
# Do not edit this file! Make a pull request on changing
# github/workflows/markdown.yaml in
# https://github.com/itk-dev/devops_itkdev-docker if need be.

### ### Markdown
###
### Lints Markdown files (`**/*.md`) in the project.
###
### [markdownlint-cli configuration
### files](https://github.com/igorshubovych/markdownlint-cli?tab=readme-ov-file#configuration),
### `.markdownlint.jsonc` and `.markdownlintignore`, control what is actually
### linted and how.
###
### #### Assumptions
###
### 1. A docker compose service named `markdownlint` for running `markdownlint`
### (from
### [markdownlint-cli](https://github.com/igorshubovych/markdownlint-cli))
### exists.

name: Markdown

on:
pull_request:
push:
branches:
- main
- develop

jobs:
markdown-lint:
runs-on: ubuntu-latest
strategy:
fail-fast: false
steps:
- name: Checkout
uses: actions/checkout@v5

- name: Create docker network
run: |
docker network create frontend

- run: |
docker compose run --rm markdownlint markdownlint '**/*.md'
85 changes: 85 additions & 0 deletions .github/workflows/php.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
name: PHP

env:
COMPOSE_USER: runner

on:
pull_request:
push:
branches:
- main
- develop

jobs:
coding-standards:
name: PHP - Check Coding Standards
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5

- name: Create docker network
run: |
docker network create frontend

- run: |
docker compose run --rm phpfpm composer install
docker compose run --rm phpfpm vendor/bin/php-cs-fixer fix --dry-run --diff

phpstan:
name: PHPStan
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5

- name: Create docker network
run: |
docker network create frontend

- run: |
docker compose run --rm phpfpm composer install
docker compose run --rm phpfpm vendor/bin/phpstan

unit-tests:
name: Unit tests (${{ matrix.php }}, ${{ matrix.prefer }})
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
include:
- service: phpfpm
php: "8.3"
prefer: prefer-lowest
- service: phpfpm
php: "8.3"
prefer: prefer-stable
- service: phpfpm84
php: "8.4"
prefer: prefer-lowest
- service: phpfpm84
php: "8.4"
prefer: prefer-stable
- service: phpfpm85
php: "8.5"
prefer: prefer-lowest
- service: phpfpm85
php: "8.5"
prefer: prefer-stable
steps:
- uses: actions/checkout@v5

- name: Create docker network
run: |
docker network create frontend

- run: |
docker compose run --rm -e XDEBUG_MODE=coverage ${{ matrix.service }} composer update --${{ matrix.prefer }}
docker compose run --rm -e XDEBUG_MODE=coverage ${{ matrix.service }} vendor/bin/phpunit --coverage-clover=coverage/unit.xml

- name: Upload coverage to Codecov
if: matrix.service == 'phpfpm' && matrix.prefer == 'prefer-stable'
uses: codecov/codecov-action@v5
with:
token: ${{ secrets.CODECOV_TOKEN }}
files: ./coverage/unit.xml
fail_ci_if_error: true
flags: unittests
Loading