Update ci.yml

This commit is contained in:
2025-12-18 16:55:09 -06:00
parent 416b5e24c5
commit 785312d4a7

View File

@@ -1,195 +1,195 @@
name: Continuous Integration Pipeline name: Continuous Integration Pipeline
on: on:
push: push:
branches: branches:
- main - main
- "version/*" - "version/*"
pull_request: pull_request:
branches: branches:
- main - main
permissions: permissions:
contents: read contents: read
jobs: jobs:
formatting-fixes: formatting-fixes:
name: Run formatting fix scripts name: Run formatting fix scripts
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Check out repository - name: Check out repository
uses: actions/checkout@v4 uses: actions/checkout@v4
with: with:
fetch-depth: 0 fetch-depth: 0
- name: Ensure script executability - name: Ensure script executability
shell: bash shell: bash
run: | run: |
set -euo pipefail set -euo pipefail
chmod +x scripts/*.sh 2>/dev/null || true chmod +x scripts/*.sh 2>/dev/null || true
- name: Run fix_tabs.sh if present - name: Run fix_tabs.sh if present
shell: bash shell: bash
run: | run: |
set -euo pipefail set -euo pipefail
cd "${GITHUB_WORKSPACE}" cd "${GITHUB_WORKSPACE}"
if [ -f "scripts/fix_tabs.sh" ]; then if [ -f "scripts/fix_tabs.sh" ]; then
echo "Running scripts/fix_tabs.sh" echo "Running scripts/fix_tabs.sh"
bash scripts/fix_tabs.sh bash scripts/fix_tabs.sh
else else
echo "scripts/fix_tabs.sh not found. Skipping." echo "scripts/fix_tabs.sh not found. Skipping."
fi fi
- name: Run fix_paths.sh if present - name: Run fix_paths.sh if present
shell: bash shell: bash
run: | run: |
set -euo pipefail set -euo pipefail
cd "${GITHUB_WORKSPACE}" cd "${GITHUB_WORKSPACE}"
if [ -f "scripts/fix_paths.sh" ]; then if [ -f "scripts/fix_paths.sh" ]; then
echo "Running scripts/fix_paths.sh" echo "Running scripts/fix_paths.sh"
bash scripts/fix_paths.sh bash scripts/fix_paths.sh
else else
echo "scripts/fix_paths.sh not found. Skipping." echo "scripts/fix_paths.sh not found. Skipping."
fi fi
- name: Fail if formatting scripts modified files - name: Fail if formatting scripts modified files
shell: bash shell: bash
run: | run: |
set -euo pipefail set -euo pipefail
if ! git diff --quiet; then if ! git diff --quiet; then
echo "Formatting scripts introduced changes." echo "Formatting scripts introduced changes."
echo "Run fix_tabs.sh and fix_paths.sh locally and commit the results." echo "Run fix_tabs.sh and fix_paths.sh locally and commit the results."
git diff git diff
exit 1 exit 1
fi fi
php-lint: php-lint:
name: PHP lint name: PHP lint
runs-on: ubuntu-latest runs-on: ubuntu-latest
needs: formatting-fixes needs: formatting-fixes
steps: steps:
- name: Check out repository - name: Check out repository
uses: actions/checkout@v4 uses: actions/checkout@v4
- name: Set up PHP - name: Set up PHP
uses: shivammathur/setup-php@v2 uses: shivammathur/setup-php@v2
with: with:
php-version: "8.2" php-version: "8.2"
coverage: none coverage: none
- name: Lint PHP files under src - name: Lint PHP files under src
shell: bash shell: bash
run: | run: |
set -euo pipefail set -euo pipefail
if [ -d "src" ]; then if [ -d "src" ]; then
echo "Running php -l against PHP files in src/" echo "Running php -l against PHP files in src/"
find src -type f -name "*.php" -print0 | xargs -0 -n 1 -P 4 php -l find src -type f -name "*.php" -print0 | xargs -0 -n 1 -P 4 php -l
else else
echo "No src directory found. Skipping PHP lint." echo "No src directory found. Skipping PHP lint."
fi fi
composer-tests: composer-tests:
name: Composer install and tests name: Composer install and tests
runs-on: ubuntu-latest runs-on: ubuntu-latest
needs: php-lint needs: php-lint
steps: steps:
- name: Check out repository - name: Check out repository
uses: actions/checkout@v4 uses: actions/checkout@v4
- name: Set up PHP - name: Set up PHP
uses: shivammathur/setup-php@v2 uses: shivammathur/setup-php@v2
with: with:
php-version: "8.2" php-version: "8.2"
coverage: none coverage: none
- name: Install dependencies if composer.json exists - name: Install dependencies if composer.json exists
shell: bash shell: bash
run: | run: |
set -euo pipefail set -euo pipefail
if [ -f "composer.json" ]; then if [ -f "composer.json" ]; then
composer install --no-interaction --no-progress --prefer-dist composer install --no-interaction --no-progress --prefer-dist
else else
echo "No composer.json found. Skipping dependency install and tests." echo "No composer.json found. Skipping dependency install and tests."
fi fi
- name: Run Composer tests when defined - name: Run Composer tests when defined
shell: bash shell: bash
run: | run: |
set -euo pipefail set -euo pipefail
if [ ! -f "composer.json" ]; then if [ ! -f "composer.json" ]; then
echo "No composer.json. Nothing to test." echo "No composer.json. Nothing to test."
exit 0 exit 0
fi fi
if composer run -q | grep -q "^ test"; then if composer run -q | grep -q "^ test"; then
echo "Detected composer script 'test'. Running composer test." echo "Detected composer script 'test'. Running composer test."
composer test composer test
else else
echo "No 'test' script defined in composer.json. Skipping tests." echo "No 'test' script defined in composer.json. Skipping tests."
fi fi
validate-manifest-and-changelog: validate-manifest-and-changelog:
name: Validate manifest and changelog via scripts name: Validate manifest and changelog via scripts
runs-on: ubuntu-latest runs-on: ubuntu-latest
needs: needs:
- php-lint - php-lint
- composer-tests - composer-tests
steps: steps:
- name: Check out repository - name: Check out repository
uses: actions/checkout@v4 uses: actions/checkout@v4
with: with:
fetch-depth: 0 fetch-depth: 0
- name: Ensure script executability - name: Ensure script executability
shell: bash shell: bash
run: | run: |
set -euo pipefail set -euo pipefail
chmod +x scripts/*.sh 2>/dev/null || true chmod +x scripts/*.sh 2>/dev/null || true
- name: Run manifest validation script if present - name: Run manifest validation script if present
shell: bash shell: bash
run: | run: |
set -euo pipefail set -euo pipefail
echo "Checking for manifest validation scripts" echo "Checking for manifest validation scripts"
if [ -f "scripts/validate_manifest.sh" ]; then if [ -f "scripts/validate_manifest.sh" ]; then
echo "Running scripts/validate_manifest.sh" echo "Running scripts/validate_manifest.sh"
bash scripts/validate_manifest.sh bash scripts/validate_manifest.sh
elif [ -f "scripts/validate_manifest.php" ]; then elif [ -f "scripts/validate_manifest.php" ]; then
echo "Running scripts/validate_manifest.php" echo "Running scripts/validate_manifest.php"
php scripts/validate_manifest.php php scripts/validate_manifest.php
else else
echo "No manifest validation script found (scripts/validate_manifest.sh or scripts/validate_manifest.php). Skipping manifest validation step." echo "No manifest validation script found (scripts/validate_manifest.sh or scripts/validate_manifest.php). Skipping manifest validation step."
fi fi
- name: Run changelog update or verification script if present - name: Run changelog update or verification script if present
shell: bash shell: bash
run: | run: |
set -euo pipefail set -euo pipefail
echo "Checking for changelog update or verification scripts" echo "Checking for changelog update or verification scripts"
if [ -f "scripts/update_changelog.sh" ]; then if [ -f "scripts/update_changelog.sh" ]; then
echo "Running scripts/update_changelog.sh --ci" echo "Running scripts/update_changelog.sh --ci"
bash scripts/update_changelog.sh --ci bash scripts/update_changelog.sh --ci
elif [ -f "scripts/verify_changelog.sh" ]; then elif [ -f "scripts/verify_changelog.sh" ]; then
echo "Running scripts/verify_changelog.sh" echo "Running scripts/verify_changelog.sh"
bash scripts/verify_changelog.sh bash scripts/verify_changelog.sh
elif [ -f "scripts/verify_changelog.php" ]; then elif [ -f "scripts/verify_changelog.php" ]; then
echo "Running scripts/verify_changelog.php" echo "Running scripts/verify_changelog.php"
php scripts/verify_changelog.php php scripts/verify_changelog.php
else else
echo "No changelog script found (scripts/update_changelog.sh, scripts/verify_changelog.sh, or scripts/verify_changelog.php). Skipping changelog enforcement." echo "No changelog script found (scripts/update_changelog.sh, scripts/verify_changelog.sh, or scripts/verify_changelog.php). Skipping changelog enforcement."
exit 0 exit 0
fi fi
echo "Checking for uncommitted changes after changelog script" echo "Checking for uncommitted changes after changelog script"
if ! git diff --quiet; then if ! git diff --quiet; then
echo "Changelog or related files were modified by the script." echo "Changelog or related files were modified by the script."
echo "Please run the changelog script locally and commit the changes before pushing." echo "Please run the changelog script locally and commit the changes before pushing."
git diff git diff
exit 1 exit 1
fi fi