Skip to content

Add our own flavour #192

Add our own flavour

Add our own flavour #192

Workflow file for this run

name: Build PHP binaries
on:
push:
branches: "**"
tags-ignore: "php-**"
pull_request:
workflow_dispatch:
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
jobs:
linux:
name: Linux (PM ${{ matrix.pm-version-major }})
runs-on: ubuntu-20.04
strategy:
matrix:
pm-version-major: [4, 5]
steps:
- uses: actions/checkout@v4
- name: Install tools and dependencies
run: |
sudo apt-get update
sudo apt-get install make autoconf automake libtool libtool-bin m4 curl libc-bin gzip bzip2 bison g++ git re2c ca-certificates
- name: Prepare compile.sh download cache
id: download-cache
uses: actions/cache@v3
with:
path: ./download_cache
key: compile-sh-cache-ssl-https-${{ hashFiles('./compile.sh') }}
restore-keys: compile-sh-cache-ssl-https-
- name: Compile PHP
run: |
# Used "set -ex" instead of hashbang since script isn't executed with hashbang
set -ex
trap "exit 1" ERR
./compile.sh -t linux64 -j 4 -g -F -P ${{ matrix.pm-version-major }} -c ./download_cache -D
- name: Create tarball
run: |
tar -czf ./PHP-Linux-x86_64.tar.gz bin
tar -czf ./PHP-Linux-x86_64-debugging-symbols.tar.gz bin-debug
cp ./PHP-Linux-x86_64.tar.gz ./PHP_Linux-x86_64.tar.gz
zip -r ./Linux.zip ./PHP_Linux-x86_64.tar.gz
- name: Upload artifacts
uses: actions/upload-artifact@v4
if: always()
with:
name: Linux-PM${{ matrix.pm-version-major }}
path: |
./Linux.zip
./PHP-Linux-x86_64*.tar.gz
install.log
compile.sh
if-no-files-found: error
- name: Prepare workspace for upload
if: failure()
run: tar -czf workspace.tar.gz install_data
- name: Upload workspace
uses: actions/upload-artifact@v4
if: failure()
with:
name: Linux-workspace-PM${{ matrix.pm-version-major }}
path: |
workspace.tar.gz
if-no-files-found: error
macos:
name: MacOS (PM ${{ matrix.pm-version-major }})
runs-on: macos-11.0
strategy:
matrix:
pm-version-major: [ 4, 5 ]
steps:
- uses: actions/checkout@v4
- name: Install tools and dependencies
run: brew install libtool autoconf automake pkg-config bison re2c
- name: Prepare compile.sh download cache
id: download-cache
uses: actions/cache@v3
with:
path: ./download_cache
key: compile-sh-cache-ssl-https-${{ hashFiles('./compile.sh') }}
restore-keys: compile-sh-cache-ssl-https-
- name: Compile PHP
run: |
export PATH="/usr/local/opt/bison/bin:$PATH"
set -ex
trap "exit 1" ERR
./compile.sh -t mac-x86-64 -j4 -g -F -P ${{ matrix.pm-version-major }} -c ./download_cache -D
- name: Create tarball
run: |
tar -czf ./PHP-MacOS-x86_64.tar.gz bin
tar -czf ./PHP-MacOS-x86_64-debugging-symbols.tar.gz bin-debug
- name: Upload artifacts
uses: actions/upload-artifact@v4
if: always()
with:
name: MacOS-PM${{ matrix.pm-version-major }}
path: |
./PHP-MacOS-x86_64*.tar.gz
install.log
compile.sh
if-no-files-found: error
- name: Prepare workspace for upload
if: failure()
run: tar -czf workspace.tar.gz install_data
- name: Upload workspace
uses: actions/upload-artifact@v4
if: failure()
with:
name: MacOS-workspace-PM${{ matrix.pm-version-major }}
path: |
workspace.tar.gz
if-no-files-found: error
windows:
name: Windows (PM ${{ matrix.pm-version-major }})
runs-on: windows-2019
strategy:
matrix:
pm-version-major: [ 4, 5 ]
steps:
- uses: actions/checkout@v4
- name: Install tools and dependencies
run: choco install wget --no-progress
- name: Compile PHP
run: .\windows-compile-vs.bat
env:
VS_EDITION: Enterprise
SOURCES_PATH: ${{ github.workspace }}\pocketmine-php-sdk
PM_VERSION_MAJOR: ${{ matrix.pm-version-major }}
- name: Rename artifacts
run: |
mkdir temp
move php-debug-pack-*.zip temp/PHP-Windows-x64-debugging-symbols.zip
move php-*.zip temp/PHP-Windows-x64.zip
move temp\*.zip .
- name: Upload artifacts
uses: actions/upload-artifact@v4
if: always()
with:
name: Windows-PM${{ matrix.pm-version-major }}
path: |
PHP-Windows-x64*.zip
compile.log
windows-compile-vs.bat
if-no-files-found: error
publish:
name: Publish binaries
needs: [linux, macos, windows]
runs-on: ubuntu-20.04
if: ${{ startsWith(github.ref_name, 'php/') && github.ref_type == 'branch' && !contains(github.event.head_commit.message, '[no release]') }}
steps:
- uses: actions/checkout@v4
- name: Set version information
id: version
run: |
echo PHP_VERSION=$(echo ${{ github.ref_name }} | cut -d / -f2) >> $GITHUB_OUTPUT
- name: Update latest tag target
run: |
git tag -f ${{ steps.version.outputs.PHP_VERSION }}
git push -f origin ${{ steps.version.outputs.PHP_VERSION }}
git tag -f ${{ steps.version.outputs.PHP_VERSION }}-pm5
git push -f origin ${{ steps.version.outputs.PHP_VERSION }}-pm5
- name: Download artifacts
uses: actions/download-artifact@v4
with:
path: ${{ github.workspace }}
- name: Update latest branch release
uses: ncipollo/release-action@v1.13.0
with:
artifacts: |
${{ github.workspace }}/Linux-PM4/Linux.zip
${{ github.workspace }}/MacOS-PM4/PHP-*.tar.gz
${{ github.workspace }}/Windows-PM4/PHP-*.zip
makeLatest: ${{ github.ref_name == github.event.repository.default_branch }}
name: PHP ${{ steps.version.outputs.PHP_VERSION }} for PM4
tag: ${{ steps.version.outputs.PHP_VERSION }}
commit: ${{ github.sha }}
allowUpdates: true
removeArtifacts: true
prerelease: ${{ endsWith(github.ref_name, '-preview') }}
- name: Update latest branch release
uses: ncipollo/release-action@v1.13.0
with:
artifacts: |
${{ github.workspace }}/Linux-PM5/Linux.zip
${{ github.workspace }}/MacOS-PM5/PHP-*.tar.gz
${{ github.workspace }}/Windows-PM5/PHP-*.zip
makeLatest: ${{ github.ref_name == github.event.repository.default_branch }}
name: PHP ${{ steps.version.outputs.PHP_VERSION }} for PM5
tag: ${{ steps.version.outputs.PHP_VERSION }}-pm5
commit: ${{ github.sha }}
allowUpdates: true
removeArtifacts: true
prerelease: ${{ endsWith(github.ref_name, '-preview') }}