Continuous Integration #864
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Continuous Integration | |
on: | |
push: | |
branches: | |
- 'main' | |
- '[0-9]+.x' | |
pull_request: | |
schedule: | |
- cron: "0 0 * * SAT" | |
workflow_call: | |
workflow_dispatch: | |
permissions: | |
contents: read | |
jobs: | |
settings: | |
name: Settings | |
uses: ./.github/workflows/settings.yml | |
dependencies: | |
name: Dependencies checks | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Install PHP | |
uses: ./.github/actions/php | |
with: | |
dependencies: false | |
- name: Prepare | |
run: | | |
# Unwanted | |
# (because will install whole "laravel/framework") | |
composer remove --no-interaction --no-progress --ansi --no-update "orchestra/testbench" | |
composer remove --no-interaction --no-progress --ansi --no-update --dev "orchestra/testbench" | |
# (because it used only to run phpstan) | |
composer remove --no-interaction --no-progress --ansi --no-update --dev "phpstan/phpstan" | |
- name: Install dependencies | |
uses: ramsey/composer-install@v3 | |
- name: Install monorepo-builder | |
uses: ./.github/actions/tool | |
with: | |
tool: monorepo-builder | |
- name: Check package versions | |
run: | | |
composer run-script monorepo-builder | |
- name: Install composer-dependency-analyser | |
uses: ./.github/actions/tool | |
with: | |
tool: composer-dependency-analyser | |
- name: Check dependencies | |
run: | | |
composer run-script composer-dependency-analyser | |
- name: Install composer-require-checker | |
uses: ./.github/actions/tool | |
with: | |
tool: composer-require-checker | |
- name: Check packages | |
run: | | |
composer run-script composer-require-checker | |
- name: Install composer-unused | |
uses: ./.github/actions/tool | |
with: | |
tool: composer-unused | |
- name: Check unused packages | |
run: | | |
composer run-script composer-unused | |
dependencies-package: | |
name: Dependencies checks | |
needs: | |
- settings | |
- dependencies | |
strategy: | |
fail-fast: false | |
matrix: | |
package: ${{ fromJson(needs.settings.outputs.packages-names) }} | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Install PHP | |
uses: ./.github/actions/php | |
with: | |
dependencies: false | |
- name: Prepare | |
shell: bash | |
working-directory: ${{ needs.settings.outputs.packages-directory }}/${{ matrix.package }} | |
run: | | |
# Unwanted | |
# (because will install whole "laravel/framework") | |
composer remove --no-interaction --no-progress --ansi --no-update "orchestra/testbench" | |
composer remove --no-interaction --no-progress --ansi --no-update --dev "orchestra/testbench" | |
# Repositories for packages | |
# (because we need local version of the packages) | |
PACKAGES=$(echo '${{ needs.settings.outputs.packages-names }}' | jq 'map(select(. != "${{ matrix.package }}"))' | jq -c -r '.[]' | tr -d '\r') | |
while IFS= read -r PKG | |
do | |
composer config "repositories.${PKG}" path "../${PKG}" | |
done <<< "${PACKAGES}" | |
# Minimum Stability | |
# (otherwise it will fail for nested dependencies/packages) | |
composer config minimum-stability dev | |
composer config prefer-stable true | |
- name: Install dependencies | |
uses: ramsey/composer-install@v3 | |
with: | |
working-directory: ${{ needs.settings.outputs.packages-directory }}/${{ matrix.package }} | |
- name: Install composer-dependency-analyser | |
uses: ./.github/actions/tool | |
with: | |
tool: composer-dependency-analyser | |
- name: Check dependencies | |
run: | | |
composer run-script composer-dependency-analyser -- --composer-json="${{ needs.settings.outputs.packages-directory }}/${{ matrix.package }}/composer.json" | |
- name: Install composer-require-checker | |
uses: ./.github/actions/tool | |
with: | |
tool: composer-require-checker | |
- name: Check packages | |
run: | | |
composer run-script composer-require-checker -- "${{ needs.settings.outputs.packages-directory }}/${{ matrix.package }}/composer.json" | |
- name: Install composer-unused | |
uses: ./.github/actions/tool | |
with: | |
tool: composer-unused | |
- name: Check unused packages | |
run: | | |
composer run-script composer-unused -- "${{ needs.settings.outputs.packages-directory }}/${{ matrix.package }}/composer.json" | |
phpcs: | |
name: PHP CodeSniffer | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Install PHP | |
uses: ./.github/actions/php | |
- name: Install phpcs | |
uses: ./.github/actions/tool | |
with: | |
tool: phpcs | |
- name: Execute | |
run: | | |
composer run-script phpcs -- --report=checkstyle | cs2pr | |
phpstan: | |
name: PHPStan | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Install PHP | |
uses: ./.github/actions/php | |
- name: Execute | |
run: | | |
composer run-script phpstan -- --error-format=checkstyle | cs2pr | |
phpunit: | |
name: Tests | |
uses: ./.github/workflows/phpunit.yml | |
with: | |
runs-on: '["ubuntu-latest", "windows-latest"]' | |
phpunit-package: | |
name: Package tests | |
needs: | |
- settings | |
- phpunit | |
strategy: | |
fail-fast: false | |
matrix: | |
package: ${{ fromJson(needs.settings.outputs.packages-names) }} | |
uses: ./.github/workflows/phpunit.yml | |
with: | |
package: ${{ matrix.package }} | |
packages-names: ${{ needs.settings.outputs.packages-names }} | |
packages-directory: ${{ needs.settings.outputs.packages-directory }} | |
markdownlint: | |
name: Markdownlint | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Install Node.js | |
uses: ./.github/actions/npm | |
- name: Setup problem matcher | |
uses: xt0rted/markdownlint-problem-matcher@v3 | |
- name: Execute | |
run: | | |
npm run markdownlint |