From c3ed32de4839efcf59ca0fba9e8d5f4888b1fa83 Mon Sep 17 00:00:00 2001 From: "Michael A. Smith" Date: Tue, 12 May 2026 11:08:20 -0400 Subject: [PATCH] ci: migrate to reusable PHP CI workflows Replace inlined workflows with thin callers of openCoreEMR/github-workflows-public@0.0.4, matching the pattern established by openCoreEMR/oce-module-perspectives-scribe#8. Migrated: actionlint, composer-validate, php-syntax-check, phpcs, phpstan, phpunit, rector. Each caller pins the reusable to @0.0.4 and adds the path filters recommended by the github-workflows-public README. Skipped (CLI-specific or already migrated): build-phar.yml, build-phar-on-release.yml, release-please.yml. phpunit caller uses php-tests.yml with php-versions ["8.2"] and test-script "composer test:unit" (preserves the unit-only suite the inlined workflow ran; integration/e2e need a DB and stay out of CI). --- .github/workflows/actionlint.yml | 16 ++++----- .github/workflows/composer-validate.yml | 28 +++++++-------- .github/workflows/php-syntax-check.yml | 32 ++++++++--------- .github/workflows/phpcs.yml | 45 ++++++++++------------- .github/workflows/phpstan.yml | 47 +++++++++++-------------- .github/workflows/phpunit.yml | 32 +++-------------- .github/workflows/rector.yml | 43 +++++++++------------- 7 files changed, 92 insertions(+), 151 deletions(-) diff --git a/.github/workflows/actionlint.yml b/.github/workflows/actionlint.yml index bedee62..9873fbe 100644 --- a/.github/workflows/actionlint.yml +++ b/.github/workflows/actionlint.yml @@ -4,18 +4,16 @@ on: push: branches: - main + paths: + - .github/workflows/** + - .github/actions/** pull_request: branches: - main + paths: + - .github/workflows/** + - .github/actions/** jobs: actionlint: - name: Lint GitHub Actions workflows - runs-on: ubuntu-latest - - steps: - - name: Checkout code - uses: actions/checkout@v6 - - - name: Run actionlint - uses: rhysd/actionlint@v1.7.12 + uses: openCoreEMR/github-workflows-public/.github/workflows/actionlint.yml@0.0.4 diff --git a/.github/workflows/composer-validate.yml b/.github/workflows/composer-validate.yml index 34fb2c1..1fed59a 100644 --- a/.github/workflows/composer-validate.yml +++ b/.github/workflows/composer-validate.yml @@ -4,25 +4,21 @@ on: push: branches: - main + paths: + - composer.json + - .github/workflows/composer-validate.yml pull_request: branches: - main + paths: + - composer.json + - .github/workflows/composer-validate.yml jobs: - validate: - name: Validate composer.json - runs-on: ubuntu-latest - - steps: - - name: Checkout code - uses: actions/checkout@v6 - - - name: Setup PHP - uses: shivammathur/setup-php@v2 - with: - php-version: '8.2' - coverage: none - tools: composer:v2 - - - name: Validate composer.json + composer-validate: + uses: openCoreEMR/github-workflows-public/.github/workflows/php-composer-script.yml@0.0.4 + with: + name: Validate composer.json run: composer validate --strict + install-deps: false + php-version: '8.2' diff --git a/.github/workflows/php-syntax-check.yml b/.github/workflows/php-syntax-check.yml index 50d5579..ddf86bb 100644 --- a/.github/workflows/php-syntax-check.yml +++ b/.github/workflows/php-syntax-check.yml @@ -4,25 +4,23 @@ on: push: branches: - main + paths: + - '**.php' + - composer.json + - .github/workflows/php-syntax-check.yml pull_request: branches: - main + paths: + - '**.php' + - composer.json + - .github/workflows/php-syntax-check.yml jobs: - syntax: - name: Check PHP Syntax - runs-on: ubuntu-latest - - steps: - - name: Checkout code - uses: actions/checkout@v6 - - - name: Setup PHP - uses: shivammathur/setup-php@v2 - with: - php-version: '8.2' - coverage: none - - - name: Check PHP syntax - run: | - find src bin -name "*.php" -exec php -l {} \; + php-syntax-check: + uses: openCoreEMR/github-workflows-public/.github/workflows/php-composer-script.yml@0.0.4 + with: + name: PHP Syntax Check + run: composer php-lint + install-deps: false + php-version: '8.2' diff --git a/.github/workflows/phpcs.yml b/.github/workflows/phpcs.yml index 12e99db..cc7620f 100644 --- a/.github/workflows/phpcs.yml +++ b/.github/workflows/phpcs.yml @@ -4,37 +4,28 @@ on: push: branches: - main + paths: + - '**.php' + - .phpcs.xml* + - phpcs.xml* + - composer.json + - composer.lock + - .github/workflows/phpcs.yml pull_request: branches: - main + paths: + - '**.php' + - .phpcs.xml* + - phpcs.xml* + - composer.json + - composer.lock + - .github/workflows/phpcs.yml jobs: phpcs: - name: Run PHP CodeSniffer - runs-on: ubuntu-latest - - steps: - - name: Checkout code - uses: actions/checkout@v6 - - - name: Setup PHP - uses: shivammathur/setup-php@v2 - with: - php-version: '8.2' - extensions: json, zip, xml, simplexml - coverage: none - tools: composer:v2 - - - name: Cache Composer dependencies - uses: actions/cache@v5 - with: - path: vendor - key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }} - restore-keys: | - ${{ runner.os }}-composer- - - - name: Install dependencies - run: composer install --prefer-dist --no-progress --no-interaction - - - name: Run PHP CodeSniffer + uses: openCoreEMR/github-workflows-public/.github/workflows/php-composer-script.yml@0.0.4 + with: + name: Run PHP CodeSniffer run: composer phpcs + php-version: '8.2' diff --git a/.github/workflows/phpstan.yml b/.github/workflows/phpstan.yml index c83808e..a39e077 100644 --- a/.github/workflows/phpstan.yml +++ b/.github/workflows/phpstan.yml @@ -4,37 +4,30 @@ on: push: branches: - main + paths: + - '**.php' + - phpstan.neon + - phpstan.neon.dist + - phpstan-baseline.neon + - composer.json + - composer.lock + - .github/workflows/phpstan.yml pull_request: branches: - main + paths: + - '**.php' + - phpstan.neon + - phpstan.neon.dist + - phpstan-baseline.neon + - composer.json + - composer.lock + - .github/workflows/phpstan.yml jobs: phpstan: - name: Run PHPStan - runs-on: ubuntu-latest - - steps: - - name: Checkout code - uses: actions/checkout@v6 - - - name: Setup PHP - uses: shivammathur/setup-php@v2 - with: - php-version: '8.2' - extensions: json, zip, xml, simplexml - coverage: none - tools: composer:v2 - - - name: Cache Composer dependencies - uses: actions/cache@v5 - with: - path: vendor - key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }} - restore-keys: | - ${{ runner.os }}-composer- - - - name: Install dependencies - run: composer install --prefer-dist --no-progress --no-interaction - - - name: Run PHPStan + uses: openCoreEMR/github-workflows-public/.github/workflows/php-composer-script.yml@0.0.4 + with: + name: Run PHPStan run: composer phpstan + php-version: '8.2' diff --git a/.github/workflows/phpunit.yml b/.github/workflows/phpunit.yml index f659117..5f33b59 100644 --- a/.github/workflows/phpunit.yml +++ b/.github/workflows/phpunit.yml @@ -10,31 +10,7 @@ on: jobs: phpunit: - name: Run PHPUnit (Unit Tests) - runs-on: ubuntu-latest - - steps: - - name: Checkout code - uses: actions/checkout@v6 - - - name: Setup PHP - uses: shivammathur/setup-php@v2 - with: - php-version: '8.2' - extensions: json, zip, xml, simplexml - coverage: none - tools: composer:v2 - - - name: Cache Composer dependencies - uses: actions/cache@v5 - with: - path: vendor - key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }} - restore-keys: | - ${{ runner.os }}-composer- - - - name: Install dependencies - run: composer install --prefer-dist --no-progress --no-interaction - - - name: Run PHPUnit (unit tests only) - run: vendor/bin/phpunit --testsuite unit --testdox + uses: openCoreEMR/github-workflows-public/.github/workflows/php-tests.yml@0.0.4 + with: + php-versions: '["8.2"]' + test-script: composer test:unit diff --git a/.github/workflows/rector.yml b/.github/workflows/rector.yml index 38ca7d2..e92222c 100644 --- a/.github/workflows/rector.yml +++ b/.github/workflows/rector.yml @@ -4,37 +4,26 @@ on: push: branches: - main + paths: + - '**.php' + - rector.php + - composer.json + - composer.lock + - .github/workflows/rector.yml pull_request: branches: - main + paths: + - '**.php' + - rector.php + - composer.json + - composer.lock + - .github/workflows/rector.yml jobs: rector: - name: Run Rector (dry-run) - runs-on: ubuntu-latest - - steps: - - name: Checkout code - uses: actions/checkout@v6 - - - name: Setup PHP - uses: shivammathur/setup-php@v2 - with: - php-version: '8.2' - extensions: json, zip, xml, simplexml - coverage: none - tools: composer:v2 - - - name: Cache Composer dependencies - uses: actions/cache@v5 - with: - path: vendor - key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }} - restore-keys: | - ${{ runner.os }}-composer- - - - name: Install dependencies - run: composer install --prefer-dist --no-progress --no-interaction - - - name: Run Rector (dry-run) + uses: openCoreEMR/github-workflows-public/.github/workflows/php-composer-script.yml@0.0.4 + with: + name: Run Rector (dry-run) run: composer rector + php-version: '8.2'