Split pecl builds to a separate workflow

GitHub Actions only allows 10 inputs in a workflow dispatch event. So we split the extension workflow into 2
This commit is contained in:
Shivam Mathur
2024-06-11 14:58:40 +05:30
parent 9b32af1ede
commit 5f88bde033
2 changed files with 116 additions and 35 deletions

View File

@@ -37,14 +37,6 @@ on:
build-directory:
description: 'Directory to build the extension in'
required: false
artifact-naming-scheme:
description: 'Naming schema for the artifacts, pie or pecl'
required: false
default: 'pie'
release-pecl:
description: 'Upload to PECL GitHub Release'
required: false
default: 'false'
jobs:
get-extension-matrix:
runs-on: ubuntu-latest
@@ -75,7 +67,7 @@ jobs:
- name: Build the extension
uses: ./extension
with:
artifact-naming-scheme: ${{ inputs.artifact-naming-scheme }}
artifact-naming-scheme: pie
extension-url: ${{ inputs.extension-url }}
extension-ref: ${{ inputs.extension-ref }}
php-version: ${{ matrix.php-version }}
@@ -96,29 +88,3 @@ jobs:
with:
name: artifacts
delete-merged: true
pecl-release:
if: ${{ inputs.release-pecl }} == 'true'
runs-on: ubuntu-latest
needs: artifacts
steps:
- name: Get artifact
uses: actions/download-artifact@v4
with:
name: artifacts
path: artifacts
- name: Release
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
ls -l artifacts
extension=$(basename "${{ inputs.extension-url }}")
mkdir -p /tmp/$extension/${{ inputs.extension-ref }}/
cp -a artifacts/* /tmp/$extension/${{ inputs.extension-ref }}/
cd /tmp || exit 1
zip -r $extension-${{ inputs.extension-ref }}.zip $extension
if ! gh release view pecl -R ${{ github.repository }}; then
gh release create pecl $extension-${{ inputs.extension-ref }}.zip -t pecl -n pecl -R ${{ github.repository }}
else
gh release upload pecl $extension-${{ inputs.extension-ref }}.zip -R ${{ github.repository }} --clobber
fi

115
.github/workflows/pecl.yml vendored Normal file
View File

@@ -0,0 +1,115 @@
name: Build PHP Extension From PECL
run-name: Build PHP Extension ${{ inputs.extension-url }}, ${{ inputs.extension-ref }}
on:
workflow_dispatch:
inputs:
extension-url:
description: 'Extension URL'
required: true
extension-ref:
description: 'Extension ref'
required: true
php-version-list:
description: 'PHP versions to build'
required: false
arch-list:
description: 'Architectures to build'
required: false
default: 'x64, x86'
ts-list:
description: 'Thread safety to build'
required: false
default: 'nts, ts'
args:
description: 'Configure arguments'
required: false
libs:
description: 'Libraries'
required: false
run-tests:
description: 'Run tests after building the extension'
required: false
default: 'false'
test-runner:
description: 'Test runner to use'
required: false
default: 'run-tests.php'
build-directory:
description: 'Directory to build the extension in'
required: false
jobs:
get-extension-matrix:
runs-on: ubuntu-latest
outputs:
matrix: ${{ steps.extension-matrix.outputs.matrix }}
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Get the extension matrix
id: extension-matrix
uses: ./extension-matrix
with:
extension-url: ${{ inputs.extension-url }}
extension-ref: ${{ inputs.extension-ref }}
php-version-list: ${{ inputs.php-version-list }}
arch-list: ${{ inputs.arch-list }}
ts-list: ${{ inputs.ts-list }}
extension:
needs: get-extension-matrix
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix: ${{fromJson(needs.get-extension-matrix.outputs.matrix)}}
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Build the extension
uses: ./extension
with:
artifact-naming-scheme: 'pecl'
extension-url: ${{ inputs.extension-url }}
extension-ref: ${{ inputs.extension-ref }}
php-version: ${{ matrix.php-version }}
arch: ${{ matrix.arch }}
ts: ${{ matrix.ts }}
args: ${{ inputs.args }}
libs: ${{ inputs.libs }}
build-directory: ${{ inputs.build-directory }}
run-tests: ${{ inputs.run-tests }}
test-runner: ${{ inputs.test-runner }}
artifacts:
runs-on: ubuntu-latest
needs: extension
steps:
- name: Upload artifacts
uses: actions/upload-artifact/merge@v4
with:
name: artifacts
delete-merged: true
pecl-release:
runs-on: ubuntu-latest
needs: artifacts
steps:
- name: Get artifact
uses: actions/download-artifact@v4
with:
name: artifacts
path: artifacts
- name: Release
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
ls -l artifacts
extension=$(basename "${{ inputs.extension-url }}")
mkdir -p /tmp/$extension/${{ inputs.extension-ref }}/
cp -a artifacts/* /tmp/$extension/${{ inputs.extension-ref }}/
cd /tmp || exit 1
zip -r $extension-${{ inputs.extension-ref }}.zip $extension
if ! gh release view pecl -R ${{ github.repository }}; then
gh release create pecl $extension-${{ inputs.extension-ref }}.zip -t pecl -n pecl -R ${{ github.repository }}
else
gh release upload pecl $extension-${{ inputs.extension-ref }}.zip -R ${{ github.repository }} --clobber
fi