Skip to content

Continuous Integration #395

Continuous Integration

Continuous Integration #395

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@v3
- name: Install PHP
uses: ./.github/actions/php
- name: Check package versions
run: |
./vendor/bin/monorepo-builder validate
- name: Check unused packages
run: |
./vendor/bin/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@v3
- name: Install PHP
uses: ./.github/actions/php
- name: Composer repositories
shell: bash
working-directory: ${{ needs.settings.outputs.packages-directory }}/${{ matrix.package }}
run: |
PACKAGES=$(echo '${{ needs.settings.outputs.packages-names }}' | jq 'map(select(. != "${{ matrix.package }}"))' | jq -c -r '.[]')
while read -r PKG
do
composer config "repositories.${PKG}" path "../${PKG}"
done <<< "${PACKAGES}"
- name: Install package dependencies
uses: ramsey/composer-install@v2
with:
working-directory: ${{ needs.settings.outputs.packages-directory }}/${{ matrix.package }}
- name: Check unused packages
working-directory: ${{ needs.settings.outputs.packages-directory }}/${{ matrix.package }}
run: |
../../vendor/bin/composer-unused
phpcs:
name: PHP CodeSniffer
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Install PHP
uses: ./.github/actions/php
- name: Execute
run: |
./vendor/bin/phpcs --report=checkstyle | cs2pr
phpstan:
name: PHPStan
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Install PHP
uses: ./.github/actions/php
- name: Execute
run: |
./vendor/bin/phpstan analyse
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@v3
- name: Install Node.js
uses: ./.github/actions/npm
- name: Setup problem matcher
uses: xt0rted/markdownlint-problem-matcher@v2
- name: Execute
run: |
npm run markdownlint