1+ # This workflow assumes that it is in a repository that contains the Xdebug extension source code.
2+ name : Build and Test Xdebug on Windows
3+ on :
4+ push :
5+ pull_request :
6+ # When a new release is created, we can build, and upload the DLLs to it.
7+ release :
8+ types : [created]
9+ jobs :
10+ # This job generates a matrix of PHP versions, architectures, and thread safety options
11+ # This is done by reading the constraints from composer.json or the package.xml file.
12+ # Please refer to https://github.com/php/php-windows-builder#get-the-job-matrix-to-build-a-php-extension
13+ get-extension-matrix :
14+ runs-on : ubuntu-latest
15+ outputs :
16+ matrix : ${{ steps.extension-matrix.outputs.matrix }}
17+ steps :
18+ - name : Checkout
19+ uses : actions/checkout@v5
20+
21+ - name : Get the extension matrix
22+ id : extension-matrix
23+ uses : php/php-windows-builder/extension-matrix@v1
24+
25+ # This job builds the extension on Windows using the matrix generated from the previous job.
26+ build :
27+ needs : get-extension-matrix
28+ runs-on : ${{ matrix.os }}
29+ strategy :
30+ matrix : ${{fromJson(needs.get-extension-matrix.outputs.matrix)}}
31+ steps :
32+ - name : Checkout
33+ uses : actions/checkout@v5
34+
35+ - name : Build the extension
36+ uses : php/php-windows-builder/extension@v1
37+ with :
38+ # Always specify the php-version, arch, and ts as they are required inputs.
39+ # Please refer to https://github.com/php/php-windows-builder#build-a-php-extension
40+ php-version : ${{ matrix.php-version }}
41+ arch : ${{ matrix.arch }}
42+ ts : ${{ matrix.ts }}
43+
44+ # Refer to your config.w32 file to find the libraries you need.
45+ # Refer to the following directories to see if we support the libraries you need.
46+ # https://downloads.php.net/~windows/pecl/deps
47+ # https://downloads.php.net/~windows/php-sdk/deps
48+ libs : zlib
49+
50+ # Refer to your config.w32 file to find the arguments you need to pass to the ./configure step.
51+ # It will add the --enable-<extension> or --with-<extension> argument if configured in the composer.json file.
52+ # In this case, we need to add the --with-xdebug argument manually.
53+ args : --with-xdebug
54+
55+ # This job uploads the built artifacts to the GitHub release.
56+ release :
57+ runs-on : ubuntu-latest
58+ needs : build
59+ if : ${{ github.event_name == 'release' }}
60+ steps :
61+ - name : Upload artifact to the release
62+ uses : php/php-windows-builder/release@v1
63+ with :
64+ release : ${{ github.event.release.tag_name }}
65+ token : ${{ secrets.GITHUB_TOKEN }}
0 commit comments