Skip to content

feat: demo pact ffi musl converted to dynamic .so for alpine #40

feat: demo pact ffi musl converted to dynamic .so for alpine

feat: demo pact ffi musl converted to dynamic .so for alpine #40

Workflow file for this run

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'