Skip to content

Commit

Permalink
Merge pull request #613 from tienvx/support-alpine
Browse files Browse the repository at this point in the history
feat: Support Alpine
  • Loading branch information
tienvx committed May 18, 2024
2 parents 932c88a + 07048ab commit 7f59cdc
Show file tree
Hide file tree
Showing 6 changed files with 38 additions and 4 deletions.
21 changes: 21 additions & 0 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -173,3 +173,24 @@ jobs:
uses: coverallsapp/github-action@v2
with:
parallel-finished: true

test-alpine:
runs-on: ubuntu-latest
needs:
- php-cs
strategy:
fail-fast: false
matrix:
arch: [ amd64, arm64 ]

steps:
- uses: actions/checkout@v4
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: run musl # If shared-mime-info not installed - Expected binary contents to have content type 'image/jpeg' but detected contents was 'application/octet-stream'
run: docker run --env PACT_DO_NOT_TRACK=1 --platform=linux/${{ matrix.arch }} --rm -v $PWD:/home alpine:3.19 /bin/sh -c 'apk add --no-cache shared-mime-info php82-dev php82-ffi php82-pecl-grpc php82-sockets php82-tokenizer php82-dom php82-xml php82-xmlwriter php82-simplexml composer protoc protobuf-dev && cd /home && composer install && composer gen-lib && composer test'
7 changes: 7 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
FROM php:8.3-alpine
RUN apk add --no-cache linux-headers libffi-dev protoc protobuf-dev musl-dev autoconf gcc g++ make
COPY --from=composer/composer:2-bin /composer /usr/local/bin/composer
RUN docker-php-ext-install sockets
RUN docker-php-ext-install ffi
RUN pecl install grpc
RUN echo 'extension=grpc.so' >> /usr/local/etc/php/conf.d/grpc.ini
5 changes: 5 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -270,6 +270,10 @@ _\*_ v3 support is limited to the subset of functionality required to enable lan
| Linux | arm64 || 9.x + |
| Windows | x86_64 || All |
| Windows | x86 || 9.x - |
| Alpine | x86_64 || All \* |
| Alpine | arm64 || All \* |

_\*_ For 9.x and below, supported with a workaround [Ruby Standalone with Alpine].

</details>

Expand All @@ -289,3 +293,4 @@ See [CONTRIBUTING](CONTRIBUTING.md).
[9xx]: https://github.com/pact-foundation/pact-php/tree/release/9.x
[installation]: #installation
[message support]: https://github.com/pact-foundation/pact-specification/tree/version-3#introduces-messages-for-services-that-communicate-via-event-streams-and-message-queues
[Ruby Standalone with Alpine]: https://github.com/pact-foundation/pact-ruby-standalone/wiki/Using-the-pact-ruby-standalone-with-Alpine-Linux-Docker
5 changes: 3 additions & 2 deletions composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
"composer/semver": "^1.4.0|^3.2.0",
"symfony/process": "^5.4|^6.0|^7.0",
"guzzlehttp/psr7": "^2.4.5",
"pact-foundation/composer-downloads-plugin": "^2.0"
"pact-foundation/composer-downloads-plugin": "^2.1"
},
"require-dev": {
"ext-sockets": "*",
Expand Down Expand Up @@ -123,9 +123,10 @@
"{$prefix}": "PHP_OS_FAMILY === 'Windows' ? 'pact_ffi' : 'libpact_ffi'",
"{$os}": "PHP_OS === 'Darwin' ? 'osx' : strtolower(PHP_OS_FAMILY)",
"{$architecture}": "in_array(php_uname('m'), ['arm64', 'aarch64']) ? (PHP_OS === 'Darwin' ? 'aarch64-apple-darwin' : 'aarch64') : 'x86_64'",
"{$musl}": "PHP_OS === 'Linux' && musl() === true ? '-musl' : ''",
"{$extension}": "PHP_OS_FAMILY === 'Windows' ? 'dll' : (PHP_OS === 'Darwin' ? 'dylib' : 'so')"
},
"url": "https://github.com/pact-foundation/pact-reference/releases/download/libpact_ffi-v{$version}/{$prefix}-{$os}-{$architecture}.{$extension}.gz",
"url": "https://github.com/pact-foundation/pact-reference/releases/download/libpact_ffi-v{$version}/{$prefix}-{$os}-{$architecture}{$musl}.{$extension}.gz",
"path": "bin/pact-ffi-lib/pact.{$extension}"
},
"pact-stub-server": {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ public function testGetImageContent()
$response
->setStatus(200)
->addHeader('Content-Type', 'image/jpeg')
->setBody(new Binary($path, in_array(php_uname('m'), ['AMD64', 'arm64', 'aarch64']) ? 'application/octet-stream' : 'image/jpeg'));
->setBody(new Binary($path, PHP_OS_FAMILY === 'Windows' || (PHP_OS_FAMILY === 'Darwin' && php_uname('m') === 'arm64') ? 'application/octet-stream' : 'image/jpeg'));

$config = new MockServerConfig();
$config
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ public function testUpdateUserProfile()
->setBody(new Multipart(
[
new Part(__DIR__ . '/../_resource/full_name.txt', 'full_name', 'text/plain'),
new Part(__DIR__ . '/../_resource/image.jpg', 'profile_image', in_array(php_uname('m'), ['AMD64', 'arm64', 'aarch64']) ? 'application/octet-stream' : 'image/jpeg'),
new Part(__DIR__ . '/../_resource/image.jpg', 'profile_image', PHP_OS_FAMILY === 'Windows' || (PHP_OS_FAMILY === 'Darwin' && php_uname('m') === 'arm64') ? 'application/octet-stream' : 'image/jpeg'),
new Part(__DIR__ . '/../_resource/note.txt', 'personal_note', 'text/plain'),
],
'ktJmeYHbkTSa1jxD'
Expand Down

0 comments on commit 7f59cdc

Please sign in to comment.