Skip to content

Sync and PR

Sync and PR #781

Workflow file for this run

name: Sync and PR
permissions:
contents: write
id-token: write
attestations: write
on:
workflow_dispatch:
workflow_call:
schedule:
- cron: "*/30 * * * *"
concurrency:
group: ${{ github.workflow }}
cancel-in-progress: true
jobs:
run:
runs-on: ubuntu-24.04
name: PHP ${{ matrix.php-version }}
strategy:
max-parallel: 1
matrix:
include:
- php-version: '8.1'
php-version-major: 8
php-version-minor: 1
- php-version: '8.2'
php-version-major: 8
php-version-minor: 2
- php-version: '8.3'
php-version-major: 8
php-version-minor: 3
- php-version: '8.4'
php-version-major: 8
php-version-minor: 4
steps:
- uses: actions/checkout@v4
with:
path: builder
ref: 'main'
- name: Update version info
id: version_update
run: |
cd builder
php generate.php ${{ matrix.php-version }}
cat winget-commit-message.md
cat winget-pr-template.md
if [[ -f "NEW_VERSION" ]]; then
echo "new_version=$(cat NEW_VERSION)" >> $GITHUB_OUTPUT
else
echo "new_version=none" >> $GITHUB_OUTPUT
fi
- name: Add job summary when new releases are found
if: contains('none', steps.version_update.outputs.new_version) == true
run: |
echo 'No new releases found.' >> $GITHUB_STEP_SUMMARY
- name: Clone PHPWatch/winget-pkgs
uses: actions/checkout@v4
if: contains('none', steps.version_update.outputs.new_version) == false
with:
repository: PHPWatch/winget-pkgs
path: winget-pkgs
token: ${{ secrets.PKGS_TOKEN }}
sparse-checkout: |
manifests/p/PHP
- name: Sync fork
if: contains('none', steps.version_update.outputs.new_version) == false
run: |
cd winget-pkgs
git remote add upstream https://github.com/microsoft/winget-pkgs.git
git pull upstream master --ff-only
git push origin master
cd ../
- name: "List dirs: generated"
run: find builder/manifests | sed -e "s/[^-][^\/]*\// |/g" -e "s/|\([^ ]\)/|-\1/"
- name: "List dirs: Upstream"
if: contains('none', steps.version_update.outputs.new_version) == false
run: find winget-pkgs/manifests/p/PHP/PHP | sed -e "s/[^-][^\/]*\// |/g" -e "s/|\([^ ]\)/|-\1/"
- uses: actions/attest-build-provenance@v2.1.0
if: contains('none', steps.version_update.outputs.new_version) == false
id: attest
name: Attest manifest file
with:
subject-path: builder/manifests/p/PHP/PHP/${{ matrix.php-version-major }}/${{ matrix.php-version-minor }}
- name: Add attest information
if: contains('none', steps.version_update.outputs.new_version) == false
run: |
printf "\n###### Manifest built [automatically](%s) and [attested](%s) by [PHPWatch/php-winget-manifest](%s).\n\n" "$GITHUB_SERVER_URL/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_ID" "${{ steps.attest.outputs.attestation-url }}" "https://github.com/PHPWatch/php-winget-manifest/" >> builder/winget-commit-message.md
printf "\n###### Manifest built [automatically](%s) and [attested](%s) by [PHPWatch/php-winget-manifest](%s).\n\n" "$GITHUB_SERVER_URL/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_ID" "${{ steps.attest.outputs.attestation-url }}" "https://github.com/PHPWatch/php-winget-manifest/" >> builder/winget-pr-template.md
printf "\n###### Manifest built [automatically](%s) and [attested](%s) by [PHPWatch/php-winget-manifest](%s).\n\n" "$GITHUB_SERVER_URL/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_ID" "${{ steps.attest.outputs.attestation-url }}" "https://github.com/PHPWatch/php-winget-manifest/"
cat builder/winget-commit-message.md
cat builder/winget-pr-template.md
- name: Generate commit message
id: commit_msg
if: contains('none', steps.version_update.outputs.new_version) == false
run: |
EOF=$(dd if=/dev/urandom bs=15 count=1 status=none | xxd -p)
echo "commit_msg<<$EOF" >> $GITHUB_OUTPUT
cat builder/winget-commit-message.md >> $GITHUB_OUTPUT
echo "$EOF" >> $GITHUB_OUTPUT
echo "## New Version" >> $GITHUB_STEP_SUMMARY
echo "${{ steps.version_update.outputs.new_version }}" >> $GITHUB_STEP_SUMMARY
echo "## Commit message" >> $GITHUB_STEP_SUMMARY
cat builder/winget-commit-message.md >> $GITHUB_STEP_SUMMARY
echo "## PR Content" >> $GITHUB_STEP_SUMMARY
cat builder/winget-pr-template.md >> $GITHUB_STEP_SUMMARY
- name: Remove old files from winget-pkgs
if: contains('none', steps.version_update.outputs.new_version) == false
run: |
rm -r winget-pkgs/manifests/p/PHP/PHP/${{ matrix.php-version-major }}/${{ matrix.php-version-minor }}
cp -r builder/manifests/p/PHP/PHP/${{ matrix.php-version-major }}/${{ matrix.php-version-minor }} winget-pkgs/manifests/p/PHP/PHP/${{ matrix.php-version-major }}/${{ matrix.php-version-minor }}
- name: Fast-forward own repo
if: contains('none', steps.version_update.outputs.new_version) == false
run: |
cd builder
git pull --ff-only
cd ../
- name: Commit data to own repo
uses: stefanzweifel/git-auto-commit-action@v5
if: contains('none', steps.version_update.outputs.new_version) == false
with:
commit_message: ${{ steps.commit_msg.outputs.commit_msg }}
branch: main
add_options: '-A'
repository: builder
tagging_message: ${{ steps.version_update.outputs.new_version }}
- name: Create Pull Request
id: create_pr
uses: peter-evans/create-pull-request@v7
if: contains('none', steps.version_update.outputs.new_version) == false
with:
token: ${{ secrets.PKGS_TOKEN }}
path: "winget-pkgs"
body-path: builder/winget-pr-template.md
add-paths: "manifests/p/PHP/PHP/${{ matrix.php-version-major }}/${{ matrix.php-version-minor }}/${{ steps.version_update.outputs.new_version }}"
commit-message: ${{ steps.commit_msg.outputs.commit_msg }}
title: "[PHP] Add new version `PHP.PHP.${{ matrix.php-version-major }}.${{ matrix.php-version-minor }}` - `${{ steps.version_update.outputs.new_version }}`"
committer: "Ayesh Karunaratne <ayesh@aye.sh>"
author: "Ayesh Karunaratne <ayesh@aye.sh>"
branch: "php-v-${{ steps.version_update.outputs.new_version }}"
- name: Add Pull request information
if: ${{ steps.create_pr.outputs.pull-request-url }}
run: |
echo "## PR ${{ steps.create_pr.outputs.pull-request-operation }}" >> $GITHUB_STEP_SUMMARY
echo "${{ steps.create_pr.outputs.pull-request-url }}" >> $GITHUB_STEP_SUMMARY