-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
1 changed file
with
54 additions
and
186 deletions.
There are no files selected for viewing
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,190 +1,58 @@ | ||
name: 'CI' | ||
on: # Build any PRs and main branch changes | ||
workflow_dispatch: # Allows to run the workflow manually from the Actions tab | ||
pull_request: | ||
types: | ||
- opened | ||
- synchronize | ||
push: | ||
branches: [ master ] | ||
schedule: | ||
- cron: '0 0 1 * *' # Every month | ||
|
||
concurrency: | ||
group: "${{ github.workflow }}-${{ github.head_ref || github.ref }}" | ||
cancel-in-progress: true | ||
|
||
env: | ||
TEST_OUTPUT_STYLE: pretty | ||
COMPOSER_OPTIONS: --optimize-autoloader | ||
name: 'Coverage upload' | ||
on: | ||
workflow_run: | ||
workflows: ["CI"] | ||
types: [completed] | ||
|
||
jobs: | ||
tests: | ||
name: UTs & FTs - PHP ${{ matrix.php-version }} | ||
runs-on: ubuntu-latest | ||
env: | ||
COVERAGE_TYPE: none | ||
strategy: | ||
fail-fast: true | ||
max-parallel: 4 | ||
matrix: | ||
include: | ||
# Bare minimum => Lowest versions allowed by composer config | ||
- php-version: '8.0' | ||
composer-flag: --prefer-lowest | ||
# Up to date versions => Latest versions allowed by composer config | ||
- php-version: '8.2' | ||
steps: | ||
- name: Check out code | ||
uses: actions/checkout@v3 | ||
|
||
- name: Enable coverage | ||
if: ${{ matrix.php-version == '8.2' }} | ||
run: | | ||
echo "COVERAGE_OUTPUT_STYLE=clover" >> $GITHUB_ENV | ||
echo "COVERAGE_TYPE=xdebug" >> $GITHUB_ENV | ||
- name: Setup PHP ${{ matrix.php-version }} | ||
uses: shivammathur/setup-php@v2 | ||
env: | ||
update: true # Always use latest available patch for the version | ||
fail-fast: true # step will fail if an extension or tool fails to set up | ||
with: | ||
php-version: '${{ matrix.php-version }}' | ||
tools: composer | ||
coverage: ${{ env.COVERAGE_TYPE }} | ||
|
||
- name: Setup cache | ||
id: cache | ||
uses: actions/cache@v3 | ||
with: | ||
path: | | ||
~/.composer | ||
./vendor | ||
# Clear the cache if composer json (as composer.lock is in the repo) has been updated | ||
key: tests-${{ matrix.php-version }}-${{ matrix.composer-flag }}-${{ hashFiles('composer.json') }} | ||
|
||
- name: Build | ||
run: | | ||
composer update ${{ env.COMPOSER_OPTIONS }} ${{ matrix.composer-flag }} \ | ||
&& make build | ||
- name: Tests | ||
run: make test-unit && make test-functional | ||
|
||
- name: Create "unit tests" reports group | ||
if: ${{ env.COVERAGE_TYPE == 'xdebug' }} | ||
id: unit-tests-coverage-group | ||
uses: yoanm/tmp-reports-group-workspace/.github/actions/create-action@develop | ||
with: | ||
name: unit-tests | ||
format: clover | ||
files: build/coverage-phpunit/unit.clover | ||
flags: | | ||
unit-tests | ||
php-${{ matrix.php-version }} | ||
path: build/coverage-groups | ||
|
||
- name: Create "functional tests" coverage group | ||
if: ${{ env.COVERAGE_TYPE == 'xdebug' }} | ||
id: functional-tests-coverage-group | ||
uses: yoanm/tmp-reports-group-workspace/.github/actions/create-action@develop | ||
with: | ||
name: functional-tests | ||
format: clover | ||
files: | | ||
build/coverage-phpunit/functional.clover | ||
build/coverage-behat/clover.xml | ||
flags: | | ||
functional-tests | ||
php-${{ matrix.php-version }} | ||
path: build/coverage-groups | ||
|
||
- name: Upload coverage reports | ||
if: ${{ env.COVERAGE_TYPE == 'xdebug' }} | ||
uses: actions/upload-artifact@v4 | ||
with: | ||
name: coverage-groups-php${{ matrix.php-version }} | ||
path: build/coverage-groups | ||
if-no-files-found: error | ||
|
||
static-checks: | ||
name: Static checks | ||
fetch-info: | ||
name: Fetch triggering workflow metadata | ||
runs-on: ubuntu-latest | ||
permissions: | ||
contents: read | ||
checks: write # For the check run creation ! | ||
steps: | ||
- uses: actions/checkout@v3 | ||
|
||
- name: Setup PHP 8.2 | ||
uses: shivammathur/setup-php@v2 | ||
with: | ||
php-version: 8.2 # Latest supported | ||
tools: composer | ||
coverage: none | ||
env: | ||
# Always use latest available patch for the version | ||
update: true | ||
|
||
- name: Setup cache | ||
id: cache | ||
uses: actions/cache@v3 | ||
with: | ||
path: | | ||
~/.composer | ||
# Clear the cache if composer json (as composer.lock is in the repo) has been updated | ||
key: tests-${{ env.PHP_VERSION }}-${{ hashFiles('composer.json') }} | ||
|
||
- name: Build | ||
run: make build | ||
|
||
- name: ComposerRequireChecker | ||
uses: docker://webfactory/composer-require-checker:4.5.0 | ||
|
||
- name: Dependencies check | ||
if: ${{ github.event_name == 'pull_request' }} | ||
uses: actions/dependency-review-action@v1 | ||
|
||
nightly-tests: | ||
name: Nightly - PHP ${{ matrix.php-version }} | ||
runs-on: ubuntu-latest | ||
env: | ||
COMPOSER_OPTIONS: '--optimize-autoloader --ignore-platform-req=php+' | ||
continue-on-error: true | ||
needs: [ static-checks, tests ] | ||
strategy: | ||
fail-fast: false | ||
max-parallel: 4 | ||
matrix: | ||
php-version: | ||
- '8.3' # Current php dev version | ||
|
||
steps: | ||
- name: Check out code | ||
uses: actions/checkout@v3 | ||
|
||
- name: Setup PHP ${{ matrix.php-version }} | ||
uses: shivammathur/setup-php@v2 | ||
with: | ||
php-version: '${{ matrix.php-version }}' | ||
tools: composer | ||
coverage: none | ||
env: | ||
# Always use latest available patch for the version | ||
update: true | ||
|
||
- name: Setup cache | ||
id: cache | ||
uses: actions/cache@v3 | ||
with: | ||
path: | | ||
~/.composer | ||
./vendor | ||
# Clear the cache if composer json (as composer.lock is in the repo) has been updated | ||
key: tests-${{ matrix.php-version }}-${{ hashFiles('composer.json') }} | ||
|
||
- name: Build | ||
run: | | ||
composer update ${{ env.COMPOSER_OPTIONS }} \ | ||
&& make build | ||
- name: Test | ||
run: make test-unit && make test-functional | ||
- name: 'Check run ○' | ||
uses: yoanm/tmp-reports-group-workspace/.github/actions/attach-check-run-to-triggering-workflow-action@develop | ||
with: | ||
name: 'Fetch coverage info' | ||
fails-on-triggering-workflow-failure: true | ||
|
||
- uses: yoanm/tmp-reports-group-workspace/.github/actions/fetch-workflow-metadata-action@develop | ||
id: fetch-workflow-metadata | ||
|
||
outputs: | ||
commit-sha: ${{ steps.fetch-workflow-metadata.outputs.commit-sha }} | ||
run-id: ${{ steps.fetch-workflow-metadata.outputs.run-id }} | ||
|
||
codacy-uploader: | ||
name: Codacy | ||
needs: [fetch-info] | ||
uses: yoanm/tmp-reports-group-workspace/.github/workflows/codacy-upload-from-artifacts.yml@develop | ||
permissions: | ||
contents: read | ||
checks: write # For the check run creation ! | ||
secrets: | ||
PROJECT_TOKEN: ${{ secrets.CODACY_PROJECT_TOKEN }} | ||
with: | ||
artifacts-pattern: coverage-groups-* | ||
run-id: ${{ needs.fetch-info.outputs.run-id }} | ||
override-commit: ${{ needs.fetch-info.outputs.commit-sha }} | ||
|
||
codecov-uploader: | ||
name: Codecov | ||
needs: [fetch-info] | ||
uses: yoanm/tmp-reports-group-workspace/.github/workflows/codecov-upload-from-artifacts.yml@develop | ||
permissions: | ||
contents: read | ||
checks: write # For the check run creation ! | ||
secrets: | ||
TOKEN: ${{ secrets.CODECOV_TOKEN }} | ||
with: | ||
artifacts-pattern: coverage-groups-* | ||
run-id: ${{ needs.fetch-info.outputs.run-id }} | ||
override-commit: ${{ needs.fetch-info.outputs.commit-sha }} | ||
override-branch: ${{ needs.fetch-info.outputs.branch }} | ||
override-pr: ${{ needs.fetch-info.outputs.pr-number }} | ||
override-build: ${{ needs.fetch-info.outputs.run-id }} | ||
override-build-url: ${{ needs.fetch-info.outputs.run-url }} |