11name : Build PHP CLI Binaries
2- run-name : Build PHP ${{ inputs.php_version }} with Xdebug ${{ inputs.xdebug_version }}
2+ run-name : Build PHP ${{ inputs.php_version }} package ${{ inputs.package_version }} with Xdebug ${{ inputs.xdebug_version }}
33
44on :
55 workflow_dispatch :
88 description : PHP patch version to build
99 required : true
1010 default : 8.4.20
11+ package_version :
12+ description : Required immutable package identifier; choose a new value when rebuilding a PHP version
13+ required : true
14+ default : studio-1
1115 xdebug_version :
1216 description : Xdebug version to package
1317 required : true
8488 extensions : apcu,bcmath,calendar,ctype,curl,dba,dom,exif,fileinfo,filter,ftp,gd,iconv,igbinary,intl,mbregex,mbstring,mysqli,mysqlnd,opcache,openssl,pdo,pdo_mysql,pdo_sqlite,phar,redis,session,shmop,simplexml,sockets,sodium,sqlite3,ssh2,tokenizer,xdebug,xml,xmlreader,xmlwriter,yaml,zip,zlib
8589 env :
8690 PHP_VERSION : ${{ inputs.php_version }}
91+ PHP_PACKAGE_VERSION : ${{ inputs.package_version }}
8792 XDEBUG_VERSION : ${{ inputs.xdebug_version }}
8893 SPC_REF : ${{ inputs.spc_ref }}
8994 PHP_CLI_EXTENSIONS : ${{ matrix.extensions }}
@@ -113,8 +118,14 @@ jobs:
113118 exit 1
114119 fi
115120
121+ if [[ ! "$PHP_PACKAGE_VERSION" =~ ^[a-z0-9][a-z0-9._-]{0,63}$ ]]; then
122+ echo "Unsupported package version: $PHP_PACKAGE_VERSION (use 1-64 lowercase letters, numbers, dots, underscores, or dashes)" >&2
123+ exit 1
124+ fi
125+
116126 php_minor="${PHP_VERSION%.*}"
117127 echo "PHP_MINOR=$php_minor" >> "$GITHUB_ENV"
128+ echo "PHP_PACKAGE_ID=$PHP_VERSION-$PHP_PACKAGE_VERSION" >> "$GITHUB_ENV"
118129
119130 - name : Setup PHP for static-php-cli
120131 # Linux runs SPC inside the spc-gnu-docker container, which ships
@@ -255,6 +266,8 @@ jobs:
255266 cat > "$staging_dir/runtime.json" <<JSON
256267 {
257268 "phpVersion": "$PHP_VERSION",
269+ "packageVersion": "$PHP_PACKAGE_VERSION",
270+ "packageId": "$PHP_PACKAGE_ID",
258271 "phpMinor": "$PHP_MINOR",
259272 "threadSafety": "nts",
260273 "platform": "$PHP_CLI_ARTIFACT_PLATFORM",
@@ -320,6 +333,8 @@ jobs:
320333 cat > "$staging_dir/runtime.json" <<JSON
321334 {
322335 "phpVersion": "$PHP_VERSION",
336+ "packageVersion": "$PHP_PACKAGE_VERSION",
337+ "packageId": "$PHP_PACKAGE_ID",
323338 "phpMinor": "$PHP_MINOR",
324339 "threadSafety": "nts",
325340 "platform": "$PHP_CLI_ARTIFACT_PLATFORM",
@@ -496,6 +511,8 @@ jobs:
496511
497512 $runtimeJson = @{
498513 phpVersion = $env:PHP_VERSION
514+ packageVersion = $env:PHP_PACKAGE_VERSION
515+ packageId = $env:PHP_PACKAGE_ID
499516 phpMinor = $env:PHP_MINOR
500517 threadSafety = 'nts'
501518 platform = $env:PHP_CLI_ARTIFACT_PLATFORM
@@ -575,6 +592,7 @@ jobs:
575592 pull-requests : write
576593 env :
577594 PHP_VERSION : ${{ inputs.php_version }}
595+ PHP_PACKAGE_VERSION : ${{ inputs.package_version }}
578596 PHP_CLI_VISIBILITY : ${{ inputs.apps_cdn_visibility }}
579597 WPCOM_API_TOKEN : ${{ secrets.WPCOM_API_TOKEN }}
580598 steps :
@@ -606,13 +624,14 @@ jobs:
606624
607625 bundle exec fastlane publish_php_cli_binaries \
608626 version:"${PHP_VERSION}" \
627+ package_version:"${PHP_PACKAGE_VERSION}" \
609628 artifacts_dir:"${PWD}/out/php-binaries" \
610629 visibility:"${PHP_CLI_VISIBILITY}" \
611630 output_file:"${upload_results_file}"
612631
613632 echo "### Apps CDN PHP CLI upload" >> "$GITHUB_STEP_SUMMARY"
614633 echo "" >> "$GITHUB_STEP_SUMMARY"
615- echo "Uploaded or updated PHP ${PHP_VERSION} CLI artifacts with ${PHP_CLI_VISIBILITY} visibility." >> "$GITHUB_STEP_SUMMARY"
634+ echo "Uploaded PHP ${PHP_VERSION} package ${PHP_PACKAGE_VERSION } CLI artifacts with ${PHP_CLI_VISIBILITY} visibility." >> "$GITHUB_STEP_SUMMARY"
616635 echo "" >> "$GITHUB_STEP_SUMMARY"
617636
618637 PHP_CLI_UPLOAD_RESULTS_FILE="$upload_results_file" ruby -rjson -e '
@@ -635,6 +654,7 @@ jobs:
635654
636655 node scripts/update-php-binary-cdn-metadata.mjs \
637656 --version "${PHP_VERSION}" \
657+ --package-version "${PHP_PACKAGE_VERSION}" \
638658 --upload-results "${PWD}/out/php-binaries/apps-cdn-upload-results.json"
639659
640660 if git diff --quiet -- packages/common/lib/php-binary-cdn-metadata.json; then
@@ -650,16 +670,16 @@ jobs:
650670 run : |
651671 set -euo pipefail
652672
653- branch="update-php-cli-metadata-${PHP_VERSION}-${GITHUB_RUN_ID}"
673+ branch="update-php-cli-metadata-${PHP_VERSION}-${PHP_PACKAGE_VERSION}-${ GITHUB_RUN_ID}"
654674 # Standard GitHub Actions bot noreply identity for workflow-created commits.
655675 git config user.name "github-actions[bot]"
656676 git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
657677 git switch -c "$branch"
658678 git add packages/common/lib/php-binary-cdn-metadata.json
659- git commit -m "Update PHP ${PHP_VERSION} binary metadata"
679+ git commit -m "Update PHP ${PHP_VERSION} package ${PHP_PACKAGE_VERSION} metadata"
660680 git push --set-upstream origin "$branch"
661681 gh pr create \
662682 --base "${GITHUB_REF_NAME}" \
663683 --head "$branch" \
664- --title "Update PHP ${PHP_VERSION} binary metadata" \
665- --body "Updates PHP CLI binary CDN metadata after a successful Apps CDN upload."
684+ --title "Update PHP ${PHP_VERSION} package ${PHP_PACKAGE_VERSION} metadata" \
685+ --body "Updates PHP CLI binary CDN metadata after a successful immutable Apps CDN upload."
0 commit comments