From 3e3f0f090551286f59965f1469638552d702a217 Mon Sep 17 00:00:00 2001 From: Ambroise Maupate Date: Mon, 6 Mar 2023 12:12:30 +0100 Subject: [PATCH] feat: Moving all subpackages into monorepo, added Github Actions for splitting repositories BREAKING CHANGES: All roadiz/* sub packages source code will be hold in this repository. roadiz/* sub-packages will be read-only on Github. --- .github/workflows/run-test.yml | 72 ++++++++++++++++++++++ .github/workflows/split.yaml | 105 +++++++++++++++++++++++++++++++++ .gitignore | 30 +++++----- README.md | 21 ++----- lib/DocGenerator | 1 + lib/Documents | 1 + lib/DtsGenerator | 1 + lib/EntityGenerator | 1 + lib/Jwt | 1 + lib/Markdown | 1 + lib/Models | 1 + lib/OpenId | 1 + lib/Random | 1 + lib/RoadizCompatBundle | 1 + lib/RoadizCoreBundle | 1 + lib/RoadizFontBundle | 1 + lib/RoadizRozierBundle | 1 + lib/RoadizUserBundle | 1 + lib/Rozier | 1 + monorepo-builder.php | 2 + 20 files changed, 213 insertions(+), 32 deletions(-) create mode 100644 .github/workflows/run-test.yml create mode 100644 .github/workflows/split.yaml create mode 160000 lib/DocGenerator create mode 160000 lib/Documents create mode 160000 lib/DtsGenerator create mode 160000 lib/EntityGenerator create mode 160000 lib/Jwt create mode 160000 lib/Markdown create mode 160000 lib/Models create mode 160000 lib/OpenId create mode 160000 lib/Random create mode 160000 lib/RoadizCompatBundle create mode 160000 lib/RoadizCoreBundle create mode 160000 lib/RoadizFontBundle create mode 160000 lib/RoadizRozierBundle create mode 160000 lib/RoadizUserBundle create mode 160000 lib/Rozier diff --git a/.github/workflows/run-test.yml b/.github/workflows/run-test.yml new file mode 100644 index 00000000..31f658d2 --- /dev/null +++ b/.github/workflows/run-test.yml @@ -0,0 +1,72 @@ +name: Unit tests, static analysis and code style + +on: + push: + branches: + - develop + - 'release/**' + - 'hotfix/**' + tags: ['**'] + pull_request: + types: + - opened + - reopened + - synchronize + - ready_for_review + +jobs: + run-tests: + runs-on: ubuntu-latest + strategy: + matrix: + php-version: ['8.0', '8.1'] + steps: + - uses: shivammathur/setup-php@v2 + with: + php-version: ${{ matrix.php-version }} + - uses: actions/checkout@v3 + - name: Cache Composer packages + id: composer-cache + uses: actions/cache@v3 + with: + path: vendor + key: ${{ runner.os }}-php-${{ matrix.php-version }}-${{ hashFiles('**/composer.lock') }} + restore-keys: | + ${{ runner.os }}-php-${{ matrix.php-version }}- + - name: Install Dependencies + run: composer install --no-scripts --no-ansi --no-interaction --no-progress + - name: Validate monorepo + run: > + vendor/bin/monorepo-builder validate + - name: Run unit tests + run: > + vendor/bin/atoum -d ./lib/Documents/tests + vendor/bin/atoum -f ./lib/EntityGenerator/tests/units/* + - name: Run PHP Code Sniffer + run: > + php -d "memory_limit=-1" vendor/bin/phpcbf -p ./lib/DocGenerator/src + php -d "memory_limit=-1" vendor/bin/phpcbf -p ./lib/Documents/src + php -d "memory_limit=-1" vendor/bin/phpcbf -p ./lib/DtsGenerator/src + php -d "memory_limit=-1" vendor/bin/phpcbf -p ./lib/EntityGenerator/src + php -d "memory_limit=-1" vendor/bin/phpcbf -p ./lib/Jwt/src + php -d "memory_limit=-1" vendor/bin/phpcbf -p ./lib/Markdown/src + php -d "memory_limit=-1" vendor/bin/phpcbf -p ./lib/Models/src + php -d "memory_limit=-1" vendor/bin/phpcbf -p ./lib/OpenId/src + php -d "memory_limit=-1" vendor/bin/phpcbf -p ./lib/Random/src + php -d "memory_limit=-1" vendor/bin/phpcbf -p ./lib/RoadizCompatBundle/src + php -d "memory_limit=-1" vendor/bin/phpcbf -p ./lib/RoadizCoreBundle/src + php -d "memory_limit=-1" vendor/bin/phpcbf -p ./lib/RoadizFontBundle/src + php -d "memory_limit=-1" vendor/bin/phpcbf -p ./lib/RoadizRozierBundle/src + php -d "memory_limit=-1" vendor/bin/phpcbf -p ./lib/RoadizUserBundle/src + php -d "memory_limit=-1" vendor/bin/phpcbf -p ./lib/Rozier/src + - name: Run PHP Stan + run: > + php -d "memory_limit=-1" vendor/bin/phpstan analyse -c phpstan.neon + - name: Run Twig lint + run: > + php -d "memory_limit=-1" bin/console lint:twig ./lib/Rozier/src/Resources/views + php -d "memory_limit=-1" bin/console lint:twig ./lib/Documents/src/Resources/views + php -d "memory_limit=-1" bin/console lint:twig ./lib/RoadizUserBundle/templates + php -d "memory_limit=-1" bin/console lint:twig ./lib/RoadizRozierBundle/templates + php -d "memory_limit=-1" bin/console lint:twig ./lib/RoadizFontBundle/templates + php -d "memory_limit=-1" bin/console lint:twig ./lib/RoadizCoreBundle/templates diff --git a/.github/workflows/split.yaml b/.github/workflows/split.yaml new file mode 100644 index 00000000..311e181a --- /dev/null +++ b/.github/workflows/split.yaml @@ -0,0 +1,105 @@ +name: 'Packages Split' + +on: + push: + branches: + - main + - develop + tags: + - '*' + +env: + # 1. for Github split -- Update secret on 2024-03-06 + GITHUB_TOKEN: ${{ secrets.ROADIZ_SPLIT_ACCESS_TOKEN }} + + +jobs: + packages_split: + runs-on: ubuntu-latest + + strategy: + fail-fast: false + matrix: + # define package to repository map + package: + - + local_path: 'DocGenerator' + split_repository: 'doc-generator' + - + local_path: 'Documents' + split_repository: 'documents' + - + local_path: 'DtsGenerator' + split_repository: 'dts-generator' + - + local_path: 'EntityGenerator' + split_repository: 'entity-generator' + - + local_path: 'Jwt' + split_repository: 'jwt' + - + local_path: 'Markdown' + split_repository: 'markdown' + - + local_path: 'Models' + split_repository: 'models' + - + local_path: 'OpenId' + split_repository: 'openid' + - + local_path: 'Random' + split_repository: 'random' + - + local_path: 'RoadizCompatBundle' + split_repository: 'compat-bundle' + - + local_path: 'RoadizCoreBundle' + split_repository: 'core-bundle' + - + local_path: 'RoadizFontBundle' + split_repository: 'font-bundle' + - + local_path: 'RoadizRozierBundle' + split_repository: 'rozier-bundle' + - + local_path: 'RoadizUserBundle' + split_repository: 'user-bundle' + - + local_path: 'Rozier' + split_repository: 'rozier' + + + steps: + - uses: actions/checkout@v2 + + # no tag + - if: "!startsWith(github.ref, 'refs/tags/')" + uses: "symplify/monorepo-split-github-action@2.1" + with: + # ↓ split "lib/local_path" directory + package_directory: 'lib/${{ matrix.package.local_path }}' + + # ↓ into https://github.com/roadiz/split_repository repository + repository_organization: 'roadiz' + repository_name: '${{ matrix.package.split_repository }}' + + # ↓ the user signed under the split commit + user_name: "roadiz-ci" + user_email: "contact@roadiz.io" + + # with tag + - if: "startsWith(github.ref, 'refs/tags/')" + uses: "symplify/monorepo-split-github-action@2.1" + with: + tag: ${GITHUB_REF#refs/tags/} + + # ↓ split "lib/local_path" directory + package_directory: 'lib/${{ matrix.package.local_path }}' + + # ↓ into https://github.com/roadiz/split_repository repository + repository_organization: 'roadiz' + repository_name: '${{ matrix.package.split_repository }}' + + # ↓ the user signed under the split commit + user_name: "roadiz-ci" + user_email: "contact@roadiz.io" diff --git a/.gitignore b/.gitignore index d0d71490..02ae20ea 100644 --- a/.gitignore +++ b/.gitignore @@ -140,21 +140,21 @@ fabric.properties /.data/db_test/* /.data/pgsql_test/* /.data/solr/* -/lib/DocGenerator -/lib/Documents -/lib/DtsGenerator -/lib/EntityGenerator -/lib/Jwt -/lib/Markdown -/lib/Models -/lib/OpenId -/lib/Random -/lib/RoadizCompatBundle -/lib/RoadizCoreBundle -/lib/RoadizFontBundle -/lib/RoadizRozierBundle -/lib/RoadizUserBundle -/lib/Rozier +#/lib/DocGenerator +#/lib/Documents +#/lib/DtsGenerator +#/lib/EntityGenerator +#/lib/Jwt +#/lib/Markdown +#/lib/Models +#/lib/OpenId +#/lib/Random +#/lib/RoadizCompatBundle +#/lib/RoadizCoreBundle +#/lib/RoadizFontBundle +#/lib/RoadizRozierBundle +#/lib/RoadizUserBundle +#/lib/Rozier /themes/BaseTheme /public/themes/BaseTheme /public/assets/* diff --git a/README.md b/README.md index 3054694a..7b5dd728 100644 --- a/README.md +++ b/README.md @@ -1,25 +1,10 @@ -# Roadiz CoreBundle development app +# Roadiz development monorepo This is development app for Roadiz v2. It aggregates all Roadiz bundle and main repositories in one place. ### Install -- Clone this repository -- Clone roadiz/compat-bundle in `lib/RoadizCompatBundle` directory -- Clone roadiz/core-bundle in `lib/RoadizCoreBundle` directory -- Clone roadiz/doc-generator in `lib/DocGenerator` directory -- Clone roadiz/documents in `lib/Documents` directory -- Clone roadiz/dts-generator in `lib/DtsGenerator` directory -- Clone roadiz/entity-generator in `lib/EntityGenerator` directory -- Clone roadiz/font-bundle in `lib/RoadizFontBundle` directory -- Clone roadiz/jwt in `lib/Jwt` directory -- Clone roadiz/markdown in `lib/Markdown` directory -- Clone roadiz/models in `lib/Models` directory -- Clone roadiz/openid in `lib/OpenId` directory -- Clone roadiz/random in `lib/Random` directory -- Clone roadiz/rozier in `lib/Rozier` directory -- Clone roadiz/rozier-bundle in `lib/RoadizRozierBundle` directory -- Clone roadiz/user-bundle in `lib/RoadizUserBundle` directory +- Clone this repository containing all monorepo packages in `lib` directory ### Generate JWT private and public keys @@ -57,5 +42,7 @@ Note that _phpstan_ can issue wrong errors if your `lib/*` bundles are symlinked ### Monorepo tools +Roadiz development env uses: https://github.com/symplify/monorepo-builder + - `vendor/bin/monorepo-builder merge`: Makes sure all your packages deps are in development repository and - `vendor/bin/monorepo-builder validate`: Make sure all your packages use the same version diff --git a/lib/DocGenerator b/lib/DocGenerator new file mode 160000 index 00000000..fd0390f8 --- /dev/null +++ b/lib/DocGenerator @@ -0,0 +1 @@ +Subproject commit fd0390f8629d405f7b0c6dded92998dd56d82a77 diff --git a/lib/Documents b/lib/Documents new file mode 160000 index 00000000..bc335d6a --- /dev/null +++ b/lib/Documents @@ -0,0 +1 @@ +Subproject commit bc335d6a65f3caaf3548303b1a65e670e7e799f1 diff --git a/lib/DtsGenerator b/lib/DtsGenerator new file mode 160000 index 00000000..28efe350 --- /dev/null +++ b/lib/DtsGenerator @@ -0,0 +1 @@ +Subproject commit 28efe3500e4d2ab9ced6a7ee843d192738db7e2d diff --git a/lib/EntityGenerator b/lib/EntityGenerator new file mode 160000 index 00000000..fc27fae4 --- /dev/null +++ b/lib/EntityGenerator @@ -0,0 +1 @@ +Subproject commit fc27fae4612c5b54e2c4b4ce8758a9cc3f99b9cc diff --git a/lib/Jwt b/lib/Jwt new file mode 160000 index 00000000..0b23d194 --- /dev/null +++ b/lib/Jwt @@ -0,0 +1 @@ +Subproject commit 0b23d1940f62f3cd3eee2e0646cd0b1f382d12e2 diff --git a/lib/Markdown b/lib/Markdown new file mode 160000 index 00000000..dd2d2872 --- /dev/null +++ b/lib/Markdown @@ -0,0 +1 @@ +Subproject commit dd2d2872f2a1f6561456f5f1ef64f482098c57f6 diff --git a/lib/Models b/lib/Models new file mode 160000 index 00000000..cde85e3c --- /dev/null +++ b/lib/Models @@ -0,0 +1 @@ +Subproject commit cde85e3cbf57247e956473318be1b3f23fc67a6c diff --git a/lib/OpenId b/lib/OpenId new file mode 160000 index 00000000..ddb9547d --- /dev/null +++ b/lib/OpenId @@ -0,0 +1 @@ +Subproject commit ddb9547d178c1d1842e102b85a31400496600d41 diff --git a/lib/Random b/lib/Random new file mode 160000 index 00000000..3444ef11 --- /dev/null +++ b/lib/Random @@ -0,0 +1 @@ +Subproject commit 3444ef1174c02f7e5f63a955f0397d3b7648dbb6 diff --git a/lib/RoadizCompatBundle b/lib/RoadizCompatBundle new file mode 160000 index 00000000..e7c8b8a0 --- /dev/null +++ b/lib/RoadizCompatBundle @@ -0,0 +1 @@ +Subproject commit e7c8b8a0068cf4e1bc5b1b4ff484c11507374de7 diff --git a/lib/RoadizCoreBundle b/lib/RoadizCoreBundle new file mode 160000 index 00000000..3c4971c4 --- /dev/null +++ b/lib/RoadizCoreBundle @@ -0,0 +1 @@ +Subproject commit 3c4971c44652e7476f01ac431f33799844dbed9f diff --git a/lib/RoadizFontBundle b/lib/RoadizFontBundle new file mode 160000 index 00000000..33ca5c22 --- /dev/null +++ b/lib/RoadizFontBundle @@ -0,0 +1 @@ +Subproject commit 33ca5c2270ae1e41d331defe194c521c4ce20691 diff --git a/lib/RoadizRozierBundle b/lib/RoadizRozierBundle new file mode 160000 index 00000000..2f5df548 --- /dev/null +++ b/lib/RoadizRozierBundle @@ -0,0 +1 @@ +Subproject commit 2f5df548c2f9fd642f3de02beb18f7b6182466f0 diff --git a/lib/RoadizUserBundle b/lib/RoadizUserBundle new file mode 160000 index 00000000..440bedaf --- /dev/null +++ b/lib/RoadizUserBundle @@ -0,0 +1 @@ +Subproject commit 440bedafe4e74bd05ae2f6c8e701b33094bc8928 diff --git a/lib/Rozier b/lib/Rozier new file mode 160000 index 00000000..76d19275 --- /dev/null +++ b/lib/Rozier @@ -0,0 +1 @@ +Subproject commit 76d19275ae98358145a91cb76b0a3ba7b32b1923 diff --git a/monorepo-builder.php b/monorepo-builder.php index 74b3dbf2..4f317396 100644 --- a/monorepo-builder.php +++ b/monorepo-builder.php @@ -10,6 +10,8 @@ use Symplify\MonorepoBuilder\ValueObject\Option; return static function (MBConfig $mbConfig): void { + $mbConfig->packageAliasFormat('..x-dev'); + $mbConfig->packageDirectories([__DIR__ . '/lib']); // Using packageDirectoriesExcludes does not work with bower_components