Skip to content

RootVersionChecker #844

RootVersionChecker

RootVersionChecker #844

name: RootVersionChecker
on:
push:
branches: [ main ]
pull_request: ~
schedule:
# Do not make it the first of the month and/or midnight since it is a very busy time
- cron: "* 10 5 * *"
# See https://stackoverflow.com/a/72408109
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
jobs:
cs-lint:
runs-on: ubuntu-latest
name: Lint CS
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: '8.2'
tools: composer
coverage: none
- name: Install Composer dependencies
uses: ./.github/actions/install-vendor
- name: Ensure that the root dependencies are updated correctly
run: make vendor_install
- name: Install PHP-CS-Fixer
uses: ./.github/actions/install-tool
with:
vendor-bin-tool: php-cs-fixer
makefile-command: php_cs_fixer_install
- name: Install the Composer dependencies
uses: ramsey/composer-install@v3
with:
working-directory: 'composer-root-version-checker'
- name: Lint CS
run: cd composer-root-version-checker; make cs_lint
composer-root-version:
runs-on: ubuntu-latest
name: Tests
strategy:
fail-fast: false
matrix:
php: [ '8.3' ]
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: "${{ matrix.php }}"
tools: composer
- name: Install the Composer dependencies
uses: ramsey/composer-install@v3
with:
working-directory: 'composer-root-version-checker'
- name: Runs the tests
run: cd composer-root-version-checker; make test
# This is a "trick", a meta task which does not change, and we can use in
# the protected branch rules as opposed to the tests one above which
# may change regularly.
validate-tests:
name: RootVersionChecker Status
runs-on: ubuntu-latest
needs:
- cs-lint
- composer-root-version
if: always()
steps:
- name: Successful run
if: ${{ !(contains(needs.*.result, 'failure')) }}
run: exit 0
- name: Failing run
if: ${{ contains(needs.*.result, 'failure') }}
run: exit 1
update-composer-root-version:
name: Update the Composer root version
if: ${{ github.repository == 'humbug/php-scoper' && github.ref_name == 'main' }}
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
ref: ${{ github.head_ref }}
fetch-depth: '0' # Ensures the tags are fetched
token: ${{ secrets.GITHUB_TOKEN }}
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: '8.3'
tools: composer
coverage: none
- name: Install the Composer dependencies
uses: ramsey/composer-install@v3
with:
working-directory: 'composer-root-version-checker'
- name: Dump the Composer too version
working-directory: composer-root-version-checker
run: make dump_root_version
- name: Check for changes
run: |
if git diff --exit-code; then
echo "🟢 No change detected."
echo "composer_root_version_changed=false" >> $GITHUB_ENV
else
echo "composer_root_version_changed=true" >> $GITHUB_ENV
fi
- name: Create Pull Request
if: env.composer_root_version_changed == 'true'
uses: peter-evans/create-pull-request@v7
with:
token: ${{ secrets.GITHUB_TOKEN }}
branch-suffix: random
delete-branch: true
title: "build: Update the Composer root version"
committer: "php-scoper-bot <humbug-php-scoper-bot@example.com>"
commit-message: "Update the Composer root version"