From 13cdf5389bee905c3ce1dc2b6223991a8da2539c Mon Sep 17 00:00:00 2001 From: Abdul Malik Ikhsan Date: Sun, 10 May 2026 10:53:48 +0700 Subject: [PATCH 01/10] chore: Add Structarmed to QA --- .github/workflows/test-structarmed.yml | 100 +++++++++++++++++++++++++ composer.json | 1 + structarmed.php | 25 +++++++ 3 files changed, 126 insertions(+) create mode 100644 .github/workflows/test-structarmed.yml create mode 100644 structarmed.php diff --git a/.github/workflows/test-structarmed.yml b/.github/workflows/test-structarmed.yml new file mode 100644 index 000000000000..69734d53f1c5 --- /dev/null +++ b/.github/workflows/test-structarmed.yml @@ -0,0 +1,100 @@ +# When a PR is opened or a push is made, perform +# a static analysis check on the code using Structarmed. +name: Structarmed + +on: + pull_request: + branches: + - 'develop' + - '4.*' + paths: + - 'app/**.php' + - 'system/**.php' + - 'tests/**.php' + - 'utils/**.php' + - '.github/workflows/test-structarmed.yml' + - composer.json + - structarmed.php + - '**.neon.dist' + + push: + branches: + - 'develop' + - '4.*' + paths: + - 'app/**.php' + - 'system/**.php' + - 'tests/**.php' + - 'utils/**.php' + - '.github/workflows/test-structarmed.yml' + - composer.json + - structarmed.php + - '**.neon.dist' + +concurrency: + group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} + cancel-in-progress: true + +permissions: + contents: read + +jobs: + build: + name: PHP ${{ matrix.php-version }} Analyze code (Structarmed) + runs-on: ubuntu-24.04 + strategy: + fail-fast: false + matrix: + php-version: + - '8.2' + include: + - php-version: '8.5' + composer-option: '--ignore-platform-req=php' + + steps: + - name: Checkout base branch for PR + if: github.event_name == 'pull_request' + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + with: + ref: ${{ github.base_ref }} + + - name: Checkout + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + + - name: Setup PHP + uses: shivammathur/setup-php@accd6127cb78bee3e8082180cb391013d204ef9f # 2.37.0 + with: + php-version: ${{ matrix.php-version }} + extensions: intl + + - name: Use latest Composer + run: composer self-update + + - name: Validate composer.json + run: composer validate --strict + + - name: Get composer cache directory + id: composer-cache + run: echo "COMPOSER_CACHE_FILES_DIR=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT + + - name: Cache dependencies + uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5 + with: + path: ${{ steps.composer-cache.outputs.COMPOSER_CACHE_FILES_DIR }} + key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }} + restore-keys: ${{ runner.os }}-composer- + + - name: Install dependencies + run: composer update --ansi --no-interaction ${{ matrix.composer-option }} + + - name: Structarmed Cache + uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5 + with: + path: /tmp/structarmed + key: ${{ runner.os }}-structarmed-${{ github.run_id }} + restore-keys: ${{ runner.os }}-structarmed- + + - run: mkdir -p /tmp/structarmed + + - name: Run static analysis + run: vendor/bin/structarmed analyze diff --git a/composer.json b/composer.json index ea3bf5391bad..926be28544cd 100644 --- a/composer.json +++ b/composer.json @@ -17,6 +17,7 @@ "psr/log": "^3.0" }, "require-dev": { + "boundwize/structarmed": "0.3.0", "codeigniter/phpstan-codeigniter": "^1.5", "fakerphp/faker": "^1.24", "kint-php/kint": "^6.1", diff --git a/structarmed.php b/structarmed.php new file mode 100644 index 000000000000..13cbd93af2d2 --- /dev/null +++ b/structarmed.php @@ -0,0 +1,25 @@ + + * + * For the full copyright and license information, please view + * the LICENSE file that was distributed with this source code. + */ + +use Boundwize\StructArmed\Architecture; +use Boundwize\StructArmed\Preset\Preset; +use Boundwize\StructArmed\Preset\Presets\Psr4Preset; + +return Architecture::define() + ->skip([ + Psr4Preset::CLASSES_MUST_MATCH_COMPOSER => [ + __DIR__ . '/tests/system/Config/fixtures', + ], + ]) + ->cacheDirectory(is_dir('/tmp') ? '/tmp/structarmed' : null) + ->withPreset(Preset::PSR4()); From 6b986f2d1e3ab68941506d896231e82dc67d2281 Mon Sep 17 00:00:00 2001 From: Abdul Malik Ikhsan Date: Sun, 10 May 2026 12:38:48 +0700 Subject: [PATCH 02/10] chore: use latest structarmed 0.3.1 --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index 926be28544cd..4f5cdd78e447 100644 --- a/composer.json +++ b/composer.json @@ -17,7 +17,7 @@ "psr/log": "^3.0" }, "require-dev": { - "boundwize/structarmed": "0.3.0", + "boundwize/structarmed": "0.3.1", "codeigniter/phpstan-codeigniter": "^1.5", "fakerphp/faker": "^1.24", "kint-php/kint": "^6.1", From d472edb26af483f6871064e844d100a58c9c89ff Mon Sep 17 00:00:00 2001 From: Abdul Malik Ikhsan Date: Sun, 10 May 2026 13:19:20 +0700 Subject: [PATCH 03/10] chore: bump structarmed to 0.3.2 --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index 4f5cdd78e447..28f84c996546 100644 --- a/composer.json +++ b/composer.json @@ -17,7 +17,7 @@ "psr/log": "^3.0" }, "require-dev": { - "boundwize/structarmed": "0.3.1", + "boundwize/structarmed": "0.3.2", "codeigniter/phpstan-codeigniter": "^1.5", "fakerphp/faker": "^1.24", "kint-php/kint": "^6.1", From edfab5259f4bc28c5be406bf873807bb23550f8b Mon Sep 17 00:00:00 2001 From: Abdul Malik Ikhsan Date: Sun, 10 May 2026 16:50:53 +0700 Subject: [PATCH 04/10] bump structarmed to 0.3.3 to properly fix cache on CI --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index 28f84c996546..17603bfed375 100644 --- a/composer.json +++ b/composer.json @@ -17,7 +17,7 @@ "psr/log": "^3.0" }, "require-dev": { - "boundwize/structarmed": "0.3.2", + "boundwize/structarmed": "0.3.3", "codeigniter/phpstan-codeigniter": "^1.5", "fakerphp/faker": "^1.24", "kint-php/kint": "^6.1", From adad6eebde2d74dddbb6114c4f6a89a62718f1f3 Mon Sep 17 00:00:00 2001 From: Abdul Malik Ikhsan Date: Sun, 10 May 2026 22:03:11 +0700 Subject: [PATCH 05/10] chore: bump to structarmed 0.3.4 to fix very long list progressbar --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index 17603bfed375..5ad23859035f 100644 --- a/composer.json +++ b/composer.json @@ -17,7 +17,7 @@ "psr/log": "^3.0" }, "require-dev": { - "boundwize/structarmed": "0.3.3", + "boundwize/structarmed": "0.3.4", "codeigniter/phpstan-codeigniter": "^1.5", "fakerphp/faker": "^1.24", "kint-php/kint": "^6.1", From 3ad361f2b9c8202726a280ea74ce4fb35d6fbbb7 Mon Sep 17 00:00:00 2001 From: Abdul Malik Ikhsan Date: Mon, 11 May 2026 22:13:00 +0700 Subject: [PATCH 06/10] chore: bump to structarmed 0.3.5 --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index 5ad23859035f..5ac87d83ee27 100644 --- a/composer.json +++ b/composer.json @@ -17,7 +17,7 @@ "psr/log": "^3.0" }, "require-dev": { - "boundwize/structarmed": "0.3.4", + "boundwize/structarmed": "0.3.5", "codeigniter/phpstan-codeigniter": "^1.5", "fakerphp/faker": "^1.24", "kint-php/kint": "^6.1", From 1e18dad42fa4f69d6d354da6582efb324c7eafea Mon Sep 17 00:00:00 2001 From: Abdul Malik Ikhsan Date: Mon, 11 May 2026 22:51:21 +0700 Subject: [PATCH 07/10] chore: bump structarmed to 0.4.0 --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index 5ac87d83ee27..d50630ceb136 100644 --- a/composer.json +++ b/composer.json @@ -17,7 +17,7 @@ "psr/log": "^3.0" }, "require-dev": { - "boundwize/structarmed": "0.3.5", + "boundwize/structarmed": "0.4.0", "codeigniter/phpstan-codeigniter": "^1.5", "fakerphp/faker": "^1.24", "kint-php/kint": "^6.1", From 3d1ac1c410baf8aa2ece045f79b84ff68b565531 Mon Sep 17 00:00:00 2001 From: Abdul Malik Ikhsan Date: Mon, 11 May 2026 22:59:42 +0700 Subject: [PATCH 08/10] chore: remove ignore platform php 8.5 on test-structarmed workflow --- .github/workflows/test-structarmed.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/test-structarmed.yml b/.github/workflows/test-structarmed.yml index 69734d53f1c5..45703b63af61 100644 --- a/.github/workflows/test-structarmed.yml +++ b/.github/workflows/test-structarmed.yml @@ -49,7 +49,6 @@ jobs: - '8.2' include: - php-version: '8.5' - composer-option: '--ignore-platform-req=php' steps: - name: Checkout base branch for PR From 2d89b87a8a667b18236e8a48b95cbe669a737c42 Mon Sep 17 00:00:00 2001 From: Abdul Malik Ikhsan Date: Mon, 11 May 2026 23:02:45 +0700 Subject: [PATCH 09/10] chore: use php 8.5 in php-versions --- .github/workflows/test-structarmed.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/test-structarmed.yml b/.github/workflows/test-structarmed.yml index 45703b63af61..8714b7ad94ba 100644 --- a/.github/workflows/test-structarmed.yml +++ b/.github/workflows/test-structarmed.yml @@ -47,8 +47,7 @@ jobs: matrix: php-version: - '8.2' - include: - - php-version: '8.5' + - '8.5' steps: - name: Checkout base branch for PR From fce857cb67e3a33e9381e47410c540e083d69c5d Mon Sep 17 00:00:00 2001 From: Abdul Malik Ikhsan Date: Mon, 11 May 2026 23:07:47 +0700 Subject: [PATCH 10/10] use tools: composer under Setup PHP --- .github/workflows/test-structarmed.yml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.github/workflows/test-structarmed.yml b/.github/workflows/test-structarmed.yml index 8714b7ad94ba..cf0657f32b57 100644 --- a/.github/workflows/test-structarmed.yml +++ b/.github/workflows/test-structarmed.yml @@ -64,9 +64,7 @@ jobs: with: php-version: ${{ matrix.php-version }} extensions: intl - - - name: Use latest Composer - run: composer self-update + tools: composer - name: Validate composer.json run: composer validate --strict