Skip to content

Refactor

Refactor #868

Workflow file for this run

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