diff --git a/.github/workflows/extension.yml b/.github/workflows/extension.yml index a338024..118db39 100644 --- a/.github/workflows/extension.yml +++ b/.github/workflows/extension.yml @@ -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 diff --git a/.github/workflows/pecl.yml b/.github/workflows/pecl.yml new file mode 100644 index 0000000..94c5848 --- /dev/null +++ b/.github/workflows/pecl.yml @@ -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