Update php.yml #137
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: | |
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 }}" | |
if [[ "${{ github.event_name }}" == "pull_request" ]]; then | |
echo "Head ref: ${{ github.head_ref }}" | |
echo "Base ref: ${{ github.base_ref }}" | |
fi | |
- name: Fetch branch data for pull request | |
if: github.event_name == 'pull_request' | |
run: | | |
git fetch origin ${{ github.event.pull_request.base.ref }} | |
echo "Base branch for PR is: ${{ github.event.pull_request.base.ref }}" | |
echo "Head branch for PR is: ${{ github.head_ref }}" | |
- name: Check for composer.json changes | |
id: check-changes | |
if: github.event_name == 'pull_request' | |
run: | | |
git 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: Output check-changes result | |
if: github.event_name == 'pull_request' | |
run: | | |
echo "composer.json change detected: ${{ steps.check-changes.outputs.changed }}" | |
- 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 |