Update php.yml #134
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: PHP Composer | |
on: | |
push: | |
branches: ["main", "develop"] | |
pull_request: | |
branches: ["main", "develop"] | |
permissions: | |
contents: write | |
pull-requests: write | |
jobs: | |
build: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
ref: ${{ github.head_ref }} | |
fetch-depth: 0 | |
token: ${{ secrets.GITHUB_TOKEN }} | |
- name: Setup PHP | |
uses: shivammathur/[email protected] | |
with: | |
php-version: '8.2' | |
- name: Debug event info | |
run: | | |
echo "Event name: ${{ github.event_name }}" | |
echo "Head ref: ${{ github.head_ref }}" | |
echo "Base ref: ${{ github.base_ref }}" | |
- name: Check for composer.json changes | |
id: check-changes | |
if: github.event_name == 'pull_request' | |
run: | | |
git fetch origin ${{ github.event.pull_request.base.ref }} | |
git --no-pager diff --name-only origin/${{ github.event.pull_request.base.ref }} HEAD | grep -q "composer.json" && echo "changed=true" >> $GITHUB_OUTPUT || echo "changed=false" >> $GITHUB_OUTPUT | |
- name: Cache Composer packages | |
id: composer-cache | |
uses: actions/cache@v3 | |
with: | |
path: vendor | |
key: ${{ runner.os }}-php-${{ hashFiles('**/composer.lock') }} | |
restore-keys: | | |
${{ runner.os }}-php- | |
- name: Update dependencies in PR | |
if: github.event_name == 'pull_request' && steps.check-changes.outputs.changed == 'true' | |
run: | | |
echo "Running composer update because composer.json changed" | |
composer update --prefer-dist --no-progress | |
- name: Install dependencies | |
if: github.event_name != 'pull_request' || steps.check-changes.outputs.changed != 'true' | |
run: | | |
composer install --prefer-dist --no-progress | |
- name: Commit and push updated lock file | |
if: github.event_name == 'pull_request' && steps.check-changes.outputs.changed == 'true' | |
run: | | |
if git diff --exit-code composer.lock; then | |
echo "No changes to composer.lock needed" | |
else | |
git config --global user.name 'github-actions[bot]' | |
git config --global user.email 'github-actions[bot]@users.noreply.github.com' | |
git add composer.lock vendor/ | |
git commit -m "Update composer.lock to match composer.json changes" | |
git push | |
fi |