Skip to content

Merge pull request #388 from Yoast/JRF/ghactions-add-merge-conflict-c… #263

Merge pull request #388 from Yoast/JRF/ghactions-add-merge-conflict-c…

Merge pull request #388 from Yoast/JRF/ghactions-add-merge-conflict-c… #263

Workflow file for this run

name: CS
on:
# Run on all relevant pushes (except to main) and on all relevant pull requests.
push:
branches-ignore:
- 'main'
paths:
- '**.php'
- 'composer.json'
- 'composer.lock'
- '.phpcs.xml.dist'
- 'phpcs.xml.dist'
- '.github/workflows/**'
pull_request:
paths:
- '**.php'
- 'composer.json'
- 'composer.lock'
- '.phpcs.xml.dist'
- 'phpcs.xml.dist'
- '.github/workflows/**'
# Allow manually triggering the workflow.
workflow_dispatch:
# Cancels all previous workflow runs for the same branch that have not yet completed.
concurrency:
# The concurrency group contains the workflow name and the branch name.
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
actionlint:
name: 'Lint GH Action workflows'
uses: Yoast/.github/.github/workflows/reusable-actionlint.yml@main
checkcs:
name: 'Check code style'
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Determine the base branch for the file diff
id: base_branch
env:
BASE_REF: ${{ github.base_ref }}
run: |
if [ "${{ github.event_name }}" == "pull_request" ]; then
echo "NAME=$BASE_REF" >> "$GITHUB_OUTPUT"
echo "REF=origin/$BASE_REF" >> "$GITHUB_OUTPUT"
else
echo 'NAME=develop' >> "$GITHUB_OUTPUT"
echo "REF=origin/develop" >> "$GITHUB_OUTPUT"
fi
- name: Fetch base branch
run: git fetch --no-tags --depth=1 origin ${{ steps.base_branch.outputs.NAME }}
- name: Install PHP
uses: shivammathur/setup-php@v2
with:
php-version: 'latest'
coverage: none
tools: cs2pr
# Validate the composer.json file.
# @link https://getcomposer.org/doc/03-cli.md#validate
- name: Validate Composer installation
run: composer validate --no-check-all
# Install dependencies and handle caching in one go.
# @link https://github.com/marketplace/actions/install-php-dependencies-with-composer
- name: Install Composer dependencies
uses: ramsey/composer-install@v3
with:
# Bust the cache at least once a month - output format: YYYY-MM.
custom-cache-suffix: $(date -u "+%Y-%m")
# Check the codestyle of the files against a threshold of expected errors and warnings.
# Keep track of the exit code as it determines whether to run the branch check or not.
# Exit code 128 means the thresholds needs to be lowered. Other exit codes imply CS errors.
- name: Check PHP code style against the thresholds
id: thresholds
run: |
set +e
composer check-cs-thresholds
exitcode="$?"
echo "EXITCODE=$exitcode" >> "$GITHUB_OUTPUT"
exit "$exitcode"
# Check the codestyle only of the files which were changed in the current branch.
# This step will only be executed if the threshold check exited with a failure status.
# The results of this CS check will be shown inline in the PR via the CS2PR tool.
# @link https://github.com/staabm/annotate-pull-request-from-checkstyle/
- name: Check PHP code style for the changes made in the branch only
if: ${{ failure() && steps.thresholds.outputs.EXITCODE != 128 }}
id: phpcs
run: composer check-branch-cs -- ${{ steps.base_branch.outputs.REF }}
- name: Show PHPCS results in PR
if: ${{ always() && steps.phpcs.outcome == 'failure' }}
run: cs2pr ./phpcs-report.xml