From a98d7b3cddd3ee6e4f12ca289ad9a4f00d34bc53 Mon Sep 17 00:00:00 2001 From: "Michael A. Smith" Date: Fri, 8 May 2026 15:17:46 -0400 Subject: [PATCH] ci: migrate to reusable PHP CI workflows Replaces 10 inlined workflows with thin callers to the reusable workflows in openCoreEMR/github-workflows-public@0.0.2: - actionlint, conventional-pr-title, dclint, hadolint trivial wrappers - php-composer-script for phpstan/phpcs/rector/php-syntax-check/ composer-validate/composer-normalize/composer-require-checker - php-tests for the PHPUnit matrix No behavior change; pins to tag 0.0.2 so future reusable updates are opt-in per repo. --- .github/workflows/actionlint.yml | 18 ++--- .github/workflows/composer-normalize.yml | 34 ++-------- .../workflows/composer-require-checker.yml | 35 ++-------- .github/workflows/composer-validate.yml | 24 ++----- .github/workflows/conventional-pr-title.yml | 29 +-------- .github/workflows/php-syntax-check.yml | 24 ++----- .github/workflows/phpcs.yml | 34 ++-------- .github/workflows/phpstan.yml | 34 ++-------- .github/workflows/rector.yml | 34 ++-------- .github/workflows/tests.yml | 65 +------------------ 10 files changed, 47 insertions(+), 284 deletions(-) diff --git a/.github/workflows/actionlint.yml b/.github/workflows/actionlint.yml index ed1dfca..a4ed69d 100644 --- a/.github/workflows/actionlint.yml +++ b/.github/workflows/actionlint.yml @@ -3,23 +3,15 @@ name: actionlint on: push: branches: - - main + - main paths: - - .github/workflows/** + - .github/workflows/** pull_request: branches: - - main + - main paths: - - .github/workflows/** + - .github/workflows/** 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.2 diff --git a/.github/workflows/composer-normalize.yml b/.github/workflows/composer-normalize.yml index 96420ff..f5e7785 100644 --- a/.github/workflows/composer-normalize.yml +++ b/.github/workflows/composer-normalize.yml @@ -3,38 +3,14 @@ name: Composer Normalize on: push: branches: - - main + - main pull_request: branches: - - main + - main jobs: composer-normalize: - name: Normalize composer.json (check) - 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, curl - 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: Normalize composer.json (check) + uses: openCoreEMR/github-workflows-public/.github/workflows/php-composer-script.yml@0.0.2 + with: + name: Normalize composer.json (check) run: composer normalize --dry-run diff --git a/.github/workflows/composer-require-checker.yml b/.github/workflows/composer-require-checker.yml index cc9646a..94a937f 100644 --- a/.github/workflows/composer-require-checker.yml +++ b/.github/workflows/composer-require-checker.yml @@ -3,38 +3,15 @@ name: Composer Require Checker on: push: branches: - - main + - main pull_request: branches: - - main + - main jobs: composer-require-checker: - name: Run Composer Require Checker - 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, curl - coverage: none - tools: composer:v2, composer-require-checker - - - 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 Composer Require Checker + uses: openCoreEMR/github-workflows-public/.github/workflows/php-composer-script.yml@0.0.2 + with: + name: Run Composer Require Checker run: composer-require-checker check --config-file=.composer-require-checker.json + php-tools: 'composer:v2, composer-require-checker' diff --git a/.github/workflows/composer-validate.yml b/.github/workflows/composer-validate.yml index 8c2e1dd..f748c80 100644 --- a/.github/workflows/composer-validate.yml +++ b/.github/workflows/composer-validate.yml @@ -3,27 +3,15 @@ name: Composer Validate on: push: branches: - - main + - main pull_request: branches: - - main + - main jobs: composer-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' - extensions: json, curl - coverage: none - tools: composer:v2 - - - name: Validate composer.json + uses: openCoreEMR/github-workflows-public/.github/workflows/php-composer-script.yml@0.0.2 + with: + name: Validate composer.json run: composer validate --strict + install-deps: false diff --git a/.github/workflows/conventional-pr-title.yml b/.github/workflows/conventional-pr-title.yml index e8a595b..6a08eec 100644 --- a/.github/workflows/conventional-pr-title.yml +++ b/.github/workflows/conventional-pr-title.yml @@ -4,33 +4,6 @@ on: pull_request: types: [opened, edited, synchronize, reopened] -permissions: - pull-requests: read - jobs: conventional-pr-title: - runs-on: ubuntu-latest - steps: - - uses: amannn/action-semantic-pull-request@v6 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - types: | - feat - fix - docs - style - refactor - perf - test - build - ci - chore - revert - deps - requireScope: false - subjectPattern: ^(?![A-Z]).+$ - subjectPatternError: | - The subject "{subject}" found in the pull request title "{title}" - didn't match the configured pattern. Please ensure that the subject - doesn't start with an uppercase character. + uses: openCoreEMR/github-workflows-public/.github/workflows/conventional-pr-title.yml@0.0.2 diff --git a/.github/workflows/php-syntax-check.yml b/.github/workflows/php-syntax-check.yml index 397ba53..a962ee5 100644 --- a/.github/workflows/php-syntax-check.yml +++ b/.github/workflows/php-syntax-check.yml @@ -3,27 +3,15 @@ name: PHP Syntax Check on: push: branches: - - main + - main pull_request: branches: - - main + - main jobs: php-syntax-check: - name: PHP Syntax Check - 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, curl - coverage: none - tools: composer:v2 - - - name: PHP Syntax Check + uses: openCoreEMR/github-workflows-public/.github/workflows/php-composer-script.yml@0.0.2 + with: + name: PHP Syntax Check run: composer php-lint + install-deps: false diff --git a/.github/workflows/phpcs.yml b/.github/workflows/phpcs.yml index a7c0f97..cb8eab8 100644 --- a/.github/workflows/phpcs.yml +++ b/.github/workflows/phpcs.yml @@ -3,38 +3,14 @@ name: PHP CodeSniffer on: push: branches: - - main + - main pull_request: branches: - - main + - main 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, curl - 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.2 + with: + name: Run PHP CodeSniffer run: composer phpcs diff --git a/.github/workflows/phpstan.yml b/.github/workflows/phpstan.yml index ba8d832..09cd29a 100644 --- a/.github/workflows/phpstan.yml +++ b/.github/workflows/phpstan.yml @@ -3,38 +3,14 @@ name: PHPStan on: push: branches: - - main + - main pull_request: branches: - - main + - main 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, curl - 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.2 + with: + name: Run PHPStan run: composer phpstan diff --git a/.github/workflows/rector.yml b/.github/workflows/rector.yml index 3aa92c8..73899d6 100644 --- a/.github/workflows/rector.yml +++ b/.github/workflows/rector.yml @@ -3,38 +3,14 @@ name: Rector on: push: branches: - - main + - main pull_request: branches: - - main + - main 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, curl - 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.2 + with: + name: Run Rector (dry-run) run: composer rector diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 7c54377..850478f 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -3,70 +3,11 @@ name: Tests on: push: branches: - - main + - main pull_request: branches: - - main + - main jobs: test: - name: PHP ${{ matrix.php-version }} Tests - runs-on: ubuntu-latest - - strategy: - fail-fast: false - matrix: - php-version: - - '8.2' - - '8.3' - - '8.4' - - '8.5' - - steps: - - name: Checkout code - uses: actions/checkout@v6 - - - name: Setup PHP - uses: shivammathur/setup-php@v2 - with: - php-version: ${{ matrix.php-version }} - extensions: curl, json, mbstring - coverage: xdebug - tools: composer:v2 - - - name: Get composer cache directory - id: composer-cache - run: | - { - printf dir= - composer config cache-files-dir - } > "$GITHUB_OUTPUT" - - - name: Cache dependencies - uses: actions/cache@v5 - with: - path: ${{ steps.composer-cache.outputs.dir }} - 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 tests - if: matrix.php-version != '8.2' - run: composer test - - - name: Run tests with coverage - if: matrix.php-version == '8.2' - run: | - echo "::group::Running PHPUnit with Coverage" - vendor/bin/phpunit --coverage-text --coverage-html coverage-report --colors=never - echo "::endgroup::" - - - name: Upload coverage report - if: matrix.php-version == '8.2' - uses: actions/upload-artifact@v7 - with: - name: coverage-report - path: coverage-report/ - retention-days: 14 + uses: openCoreEMR/github-workflows-public/.github/workflows/php-tests.yml@0.0.2