Sync and PR #781
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: 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 |