feat: demo pact ffi musl converted to dynamic .so for alpine #40
Workflow file for this run
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: Pact-PHP Code Analysis & Test | |
on: | |
push: | |
pull_request: | |
# Once on the first of the month at 06:00 UTC | |
schedule: | |
- cron: 0 6 1 * * | |
concurrency: | |
group: ${{ github.ref }} | |
cancel-in-progress: true | |
jobs: | |
php-cs: | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
php: [ '8.2' ] | |
steps: | |
- uses: actions/checkout@v3 | |
name: Checkout repository | |
- name: Setup PHP | |
uses: shivammathur/setup-php@v2 | |
with: | |
php-version: ${{ matrix.php }} | |
coverage: none | |
- uses: ramsey/composer-install@v2 | |
with: | |
dependency-versions: 'locked' | |
- name: Code Style Analysis | |
run: composer run lint | |
- name: Static Code Analysis | |
run: composer run static-code-analysis | |
test: | |
runs-on: ${{ matrix.operating-system }} | |
needs: | |
- php-cs | |
strategy: | |
fail-fast: false | |
matrix: | |
operating-system: [ ubuntu-latest, windows-latest, macos-12, macos-14 ] | |
php: [ '8.0', '8.1', '8.2' ] | |
dependencies: [ 'lowest', 'locked' ] | |
timeout-minutes: 5 | |
name: PHP ${{ matrix.php }} on ${{ matrix.operating-system }} with ${{ matrix.dependencies }} dependencies | |
steps: | |
- uses: actions/checkout@v3 | |
name: Checkout repository | |
- name: Setup PHP | |
uses: shivammathur/setup-php@v2 | |
with: | |
extensions: ${{ matrix.operating-system == 'windows-latest' && matrix.php == '8.2' && 'sockets, curl, zip, ffi' || 'sockets, curl, zip, ffi, grpc' }} | |
php-version: ${{ matrix.php }} | |
coverage: none | |
ini-values: ${{ matrix.operating-system == 'windows-latest' && 'opcache.enable=0 opcache.enable_cli=0' || '' }} | |
- name: Install Protoc | |
uses: arduino/setup-protoc@v2 | |
with: | |
repo-token: ${{ secrets.GITHUB_TOKEN }} | |
- name: Install gRPC Extension (for PHP 8.2 on Windows) | |
run: | | |
cd C:\tools\php | |
Invoke-WebRequest -Uri https://phpdev.toolsforresearch.com/php-8.2.7-nts-Win32-vs16-x64-grpc-protobuf.zip -OutFile php8.2.zip | |
unzip php8.2.zip ext/php_grpc.dll | |
rm php8.2.zip | |
echo "extension=php_grpc.dll" >> php.ini | |
if: ${{ matrix.operating-system == 'windows-latest' && matrix.php == '8.2' }} | |
shell: pwsh | |
- name: Composer install | |
uses: ramsey/composer-install@v2 | |
with: | |
dependency-versions: ${{ matrix.dependencies }} | |
- name: Generate Library | |
run: composer gen-lib | |
- name: Composer test | |
run: composer test | |
env: | |
PACT_DO_NOT_TRACK: true | |
test-docker: | |
runs-on: ubuntu-latest | |
needs: | |
- php-cs | |
strategy: | |
fail-fast: false | |
matrix: | |
arch: [ amd64, arm64 ] | |
name: musl builds | |
steps: | |
- uses: actions/checkout@v3 | |
name: Checkout repository | |
- name: Set up QEMU | |
if: matrix.arch == 'arm64' | |
uses: docker/setup-qemu-action@v3 | |
- name: Set up Docker Buildx | |
if: matrix.arch == 'arm64' | |
uses: docker/setup-buildx-action@v3 | |
- name: patch composer file for musl | |
run: | | |
sed -i 's/"{$musl}": "PHP_OS === '\''Linux'\'' ? '\'''\'' : '\'''\''",/"{$musl}": "PHP_OS === '\''Linux'\'' ? '\''-musl'\'' : '\'''\''",/g' composer.json | |
cat composer.json | |
# - name: build musl | |
# run: docker build . --platform=linux/${{ matrix.arch }} --progress plain -t pact-php:alpine-base | |
- name: run musl # If shared-mime-info not installed - Expected binary contents to have content type 'image/jpeg' but detected contents was 'application/octet-stream' | |
if: matrix.arch == 'amd64' | |
run: docker run --platform=linux/${{ matrix.arch }} --rm -v $PWD:/home you54f/pact-php:alpine-base-${{ matrix.arch }} /bin/sh -c 'apk add --no-cache shared-mime-info && cd /home && composer install && composer gen-lib && composer test' | |
- name: run musl # If shared-mime-info installed - Expected binary contents to have content type 'image/jpeg' but detected contents was 'application/octet-stream' | |
if: matrix.arch == 'arm64' | |
run: docker run --platform=linux/${{ matrix.arch }} --rm -v $PWD:/home you54f/pact-php:alpine-base-${{ matrix.arch }} /bin/sh -c 'cd /home && composer install && composer gen-lib && composer test' |