Automated release management for pre-compiled PHP gRPC extensions with zero-touch publishing.
Build gRPC β Artifacts Generated β Release Published Automatically π
β Fully Automated - No manual steps needed after triggering build β Multi-Architecture - AMD64 & ARM64 binaries β Easy Integration - Use in Dockerfile with simple curl β Version Tracking - gRPC and PHP version in release tags
Visit GitHub Releases and download:
grpc-amd64.so- For x86_64 serversgrpc-arm64.so- For ARM64 servers
# Example: PHP 8.3 with gRPC v1.80.0
FROM php:8.3.29-fpm
# Download & install pre-compiled gRPC
RUN curl -L -o /tmp/grpc.so \
https://github.com/dicoding-dev/php-grpc-releases/releases/download/v1.80.0-php8.3/grpc-amd64.so && \
mv /tmp/grpc.so /usr/local/lib/php/extensions/no-debug-non-zts-20220829/ && \
docker-php-ext-enable grpc && \
rm -rf /tmp/*βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Build Trigger β
β (gRPC Version + PHP Version) β
ββββββββββββββββββ¬βββββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β build-grpc.yml (GitHub Actions Workflow) β
β β’ Compile gRPC extensions β
β β’ Upload AMD64 & ARM64 artifacts β
ββββββββββββββββββ¬βββββββββββββββββββββββββββββββββββββ
β
βΌ (Auto-Trigger)
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β publish-to-releases.yml (GitHub Actions) β
β β’ Download artifacts β
β β’ Extract versions from artifact names β
β β’ Create GitHub Release β
ββββββββββββββββββ¬βββββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β π¦ GitHub Releases (Public Downloads) β
β Tag: v{GRPC_VERSION}-php{PHP_VERSION} β
β Example: v1.80.0-php8.3 β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
| Workflow | Trigger | Action |
|---|---|---|
| build-grpc.yml | Manual dispatch | Compile gRPC + upload artifacts |
| publish-to-releases.yml | Auto (on build success) | Download artifacts β create release |
| publish-to-releases.yml | Manual dispatch | Override auto-detection for custom releases |
-
Trigger Build Workflow:
gh workflow run build-grpc.yml \ --repo dicoding-dev/php-grpc-releases \ --field grpc_version=1.80.0 \ --field php_version=8.3
-
Done! π The publish workflow will automatically:
- Wait for build to complete
- Download artifacts
- Extract version info
- Create GitHub Release
- Generate download URLs
- Go to Actions β Build gRPC PHP
- Click "Run workflow"
- Enter gRPC version and PHP version
- Click "Run workflow"
- Wait for build to complete...
- Release will be created automatically β¨
Tag: v{GRPC_VERSION}-php{PHP_VERSION}
Example: v1.80.0RC1-php8.3
Each release includes:
- grpc-amd64.so - For x86_64 (Intel/AMD) architecture
- grpc-arm64.so - For ARM64 (Apple Silicon, Raspberry Pi, etc.)
https://github.com/dicoding-dev/php-grpc-releases/releases/download/v{GRPC_VERSION}-php{PHP_VERSION}/grpc-amd64.so
https://github.com/dicoding-dev/php-grpc-releases/releases/download/v{GRPC_VERSION}-php{PHP_VERSION}/grpc-arm64.so
- PHP 8.1
- PHP 8.2
- PHP 8.3
- 1.80.0+
- Release Candidates (1.80.0RC1, etc.)
- Compiles gRPC PHP extension from PECL
- Builds for both AMD64 and ARM64 architectures
- Strips debug symbols to reduce binary size
- Uploads artifacts with naming pattern:
grpc-{arch}-ubuntu22.04-php{version}-v{grpc_version}
- Triggers:
- β
Automatic when
build-grpc.ymlcompletes - β Manual override available
- β
Automatic when
- Steps:
- Download artifacts from build workflow
- Parse version info from artifact names
- Organize binaries
- Create GitHub Release with notes & assets
- Print download summary
Check the workflow logs:
- Go to Actions
- Click on the failed
publish-to-releasesrun - Look for error messages in the logs
Common issues:
- "No successful build found" β Wait for build to complete first
- "Could not parse artifact name" β Artifact naming mismatch
- "Release already exists" β That version was already released (skip)
Verify URL format:
# Test the URL
curl -I https://github.com/dicoding-dev/php-grpc-releases/releases/download/v1.80.0-php8.3/grpc-amd64.so
# Should return: 302 Found (redirect to CDN)- Build OS: Ubuntu 22.04
- PHP Build Extensions: Development headers, CLI, PEAR, XML
- Binary Optimization: Debug symbols stripped for smaller file size
- Architectures: AMD64 (x86_64), ARM64
Same as php-grpc-1.8RC
- Build Source: php-grpc-1.8RC
- Official gRPC: grpc/grpc
- PHP PECL gRPC: pecl.php.net
Found an issue? Have suggestions?
- Create an issue: GitHub Issues
- Check the workflow logs for debugging
Last Updated: 2026-04-07 Repository: dicoding-dev/php-grpc-releases