Skip to content

update

update #70

Workflow file for this run

name: Build
on:
push:
# paths-ignore:
# - '**.md'
# - '**.yaml'
# - '**.yml'
permissions:
contents: write
env:
EXTENSION_NAME: php_rocksdb_rc
jobs:
# tests:
# runs-on: ubuntu-latest
# strategy:
# matrix:
# php-version: [ '8.1' ]
# clang: ["16"]
# steps:
# - name: Checkout
# uses: actions/checkout@v4
# with:
# submodules: recursive
#
# - name: Cache cargo and LLVM and Clang
# uses: actions/cache@v4
# with:
# path: |
# ~/.cargo/bin/
# ~/.cargo/registry/index/
# ~/.cargo/registry/cache/
# ~/.cargo/git/db/
# target/
# ${{ runner.temp }}/llvm-${{ matrix.clang }}
# key: ${{ matrix.php-version }}-test
#
# - name: Setup LLVM & Clang
# id: clang
# uses: KyleMayes/install-llvm-action@v2
# with:
# version: ${{ matrix.clang }}
# directory: ${{ runner.temp }}/llvm-${{ matrix.clang }}
# cached: ${{ steps.cache-llvm.outputs.cache-hit }}
#
# - name: Configure Clang
# run: |
# echo "LIBCLANG_PATH=${{ runner.temp }}/llvm-${{ matrix.clang }}/lib" >> $GITHUB_ENV
# echo "LLVM_VERSION=${{ steps.clang.outputs.version }}" >> $GITHUB_ENV
# echo "LLVM_CONFIG_PATH=${{ runner.temp }}/llvm-${{ matrix.clang }}/bin/llvm-config" >> $GITHUB_ENV
#
# - uses: shivammathur/setup-php@v2
# with:
# php-version: ${{ matrix.php-version }}
# tools: php-config
#
# - name: Install latest Rust toolchain
# run: |
# curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
# source $HOME/.cargo/env
# rustup default stable
# rustup target add x86_64-unknown-linux-gnu
#
# - name: Run Tests
# run: |
# cargo test --target x86_64-unknown-linux-gnu
linux:
runs-on: ubuntu-latest
# needs: tests
services:
registry:
image: registry:2
ports:
- 5000:5000
strategy:
matrix:
include:
# -
# target: x86_64-unknown-linux-gnu
# platform: linux/amd64
# php-version: '8.0'
# -
# os: ubuntu-latest
# target: aarch64-unknown-linux-gnu
# platform: linux/arm64
# php-version: '8.0'
# -
# target: x86_64-unknown-linux-gnu
# platform: linux/amd64
# php-version: '8.1'
# -
# os: ubuntu-latest
# target: aarch64-unknown-linux-gnu
# platform: linux/arm64
# php-version: '8.1'
# -
# target: x86_64-unknown-linux-gnu
# platform: linux/amd64
# php-version: '8.2'
# -
# os: ubuntu-latest
# target: aarch64-unknown-linux-gnu
# platform: linux/arm64
# php-version: '8.2'
# -
# target: x86_64-unknown-linux-gnu
# platform: linux/amd64
# php-version: '8.3'
# -
# os: ubuntu-latest
# target: aarch64-unknown-linux-gnu
# platform: linux/arm64
# php-version: '8.3'
-
target: x86_64-unknown-linux-gnu
platform: linux/amd64
php-version: '8.4'
-
os: ubuntu-latest
target: aarch64-unknown-linux-gnu
platform: linux/arm64
php-version: '8.4'
steps:
- name: Checkout
uses: actions/checkout@v4
with:
submodules: recursive
- uses: actions/cache@v4
with:
path: |
~/.cargo/bin/
~/.cargo/registry/index/
~/.cargo/registry/cache/
~/.cargo/git/db/
target/
key: ${{ matrix.php-version }}-${{ matrix.target }}
- name: Setup QEMU
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
id: buildx
uses: docker/setup-buildx-action@v3
with:
driver-opts: network=host
- name: Setup docker
uses: docker/build-push-action@v5
with:
context: .
platforms: ${{ matrix.platform }}
push: true
tags: localhost:5000/php-build:latest
build-args: |
FROM_PHP=${{ matrix.php-version }}
- name: Build
run: |
docker run -v ~/.cargo/registry:/root/.cargo/registry -v ~/.cargo/git:/root/.cargo/git --platform ${{ matrix.platform }} --rm -v $PWD:/code localhost:5000/php-build:latest bash -c 'rustup target add ${{ matrix.target }} ; cargo build --release --target ${{ matrix.target }}'
- name: Rename file
run: cp target/${{ matrix.target }}/release/lib${{ env.EXTENSION_NAME }}.so php${{ matrix.php-version }}-${{ matrix.target }}-${{ env.EXTENSION_NAME }}.so
- uses: actions/upload-artifact@v4
with:
name: php${{ matrix.php-version }}-${{ matrix.target }}
path: php${{ matrix.php-version }}-${{ matrix.target }}-${{ env.EXTENSION_NAME }}.so
- name: Get Cargo Version
id: cargo_version
run: |
VERSION=$(grep '^version =' Cargo.toml | head -n 1 | sed 's/.*"\(.*\)".*/\1/')
echo "VERSION=$VERSION" >> $GITHUB_ENV
- name: Create GitHub Release
id: create_release
uses: softprops/action-gh-release@v2
with:
tag_name: ${{ env.VERSION }}
name: Release ${{ env.VERSION }}
draft: false
prerelease: false
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Upload Release Asset
uses: softprops/action-gh-release@v2
with:
tag_name: ${{ env.VERSION }}
files: |
php${{ matrix.php-version }}-${{ matrix.target }}-${{ env.EXTENSION_NAME }}.so
macos:
runs-on: macos-13
# needs: tests
strategy:
matrix:
include:
# -
# target: x86_64-apple-darwin
# php-version: '8.0'
# -
# target: x86_64-apple-darwin
# php-version: '8.1'
# -
# target: x86_64-apple-darwin
# php-version: '8.2'
# -
# target: x86_64-apple-darwin
# php-version: '8.3'
-
target: x86_64-apple-darwin
php-version: '8.4'
steps:
- name: Checkout
uses: actions/checkout@v2
with:
submodules: recursive
- uses: actions/cache@v2
with:
path: |
~/.cargo/bin/
~/.cargo/registry/index/
~/.cargo/registry/cache/
~/.cargo/git/db/
target/
key: ${{ matrix.php-version }}-${{ matrix.target }}
- name: Install latest Rust toolchain
run: |
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
source $HOME/.cargo/env
rustup default stable
rustup target add ${{ matrix.target }}
- name: Setup PHP with PECL extension
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php-version }}
tools: php-config
- name: Build
run: |
cargo build --release --target ${{ matrix.target }} --lib
- name: Rename file
run: mv target/${{ matrix.target }}/release/lib${{ env.EXTENSION_NAME }}.dylib target/php${{ matrix.php-version }}-${{ matrix.target }}-${{ env.EXTENSION_NAME }}.dylib
- uses: actions/upload-artifact@v3
with:
name: php${{ matrix.php-version }}-${{ matrix.target }}
path: target/php${{ matrix.php-version }}-${{ matrix.target }}-${{ env.EXTENSION_NAME }}.dylib
- name: Get Cargo Version
id: cargo_version
run: |
VERSION=$(grep '^version =' Cargo.toml | head -n 1 | sed 's/.*"\(.*\)".*/\1/')
echo "VERSION=$VERSION" >> $GITHUB_ENV
- name: Create GitHub Release
id: create_release
uses: softprops/action-gh-release@v2
with:
tag_name: ${{ env.VERSION }}
name: Release ${{ env.VERSION }}
draft: false
prerelease: false
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Upload Release Asset
uses: softprops/action-gh-release@v2
with:
tag_name: ${{ env.VERSION }}
files: |
target/php${{ matrix.php-version }}-${{ matrix.target }}-${{ env.EXTENSION_NAME }}.dylib
macos-arm:
runs-on: macos-latest
# needs: tests
strategy:
matrix:
include:
# -
# target: aarch64-apple-darwin
# php-version: '8.0'
# -
# target: aarch64-apple-darwin
# php-version: '8.1'
# -
# target: aarch64-apple-darwin
# php-version: '8.2'
# -
# target: aarch64-apple-darwin
# php-version: '8.3'
-
target: aarch64-apple-darwin
php-version: '8.4'
steps:
- name: Checkout
uses: actions/checkout@v2
with:
submodules: recursive
- uses: actions/cache@v2
with:
path: |
~/.cargo/bin/
~/.cargo/registry/index/
~/.cargo/registry/cache/
~/.cargo/git/db/
target/
key: ${{ matrix.php-version }}-${{ matrix.target }}
- name: Install latest Rust toolchain
run: |
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
source $HOME/.cargo/env
rustup default stable
rustup target add ${{ matrix.target }}
- name: Setup PHP with PECL extension
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php-version }}
tools: php-config
- name: Build
run: |
cargo build --release --target ${{ matrix.target }} --lib
- name: Rename file
run: mv target/${{ matrix.target }}/release/lib${{ env.EXTENSION_NAME }}.dylib target/php${{ matrix.php-version }}-${{ matrix.target }}-${{ env.EXTENSION_NAME }}.dylib
- uses: actions/upload-artifact@v3
with:
name: php${{ matrix.php-version }}-${{ matrix.target }}
path: target/php${{ matrix.php-version }}-${{ matrix.target }}-${{ env.EXTENSION_NAME }}.dylib
- name: Get Cargo Version
id: cargo_version
run: |
VERSION=$(grep '^version =' Cargo.toml | head -n 1 | sed 's/.*"\(.*\)".*/\1/')
echo "VERSION=$VERSION" >> $GITHUB_ENV
- name: Create GitHub Release
id: create_release
uses: softprops/action-gh-release@v2
with:
tag_name: ${{ env.VERSION }}
name: Release ${{ env.VERSION }}
draft: false
prerelease: false
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Upload Release Asset
uses: softprops/action-gh-release@v2
with:
tag_name: ${{ env.VERSION }}
files: |
target/php${{ matrix.php-version }}-${{ matrix.target }}-${{ env.EXTENSION_NAME }}.dylib
windows:
runs-on: windows-latest
# needs: tests
strategy:
matrix:
include:
# - target: x86_64-pc-windows-msvc
# php-version: '8.0'
# - target: x86_64-pc-windows-msvc
# php-version: '8.1'
# - target: x86_64-pc-windows-msvc
# php-version: '8.2'
# - target: x86_64-pc-windows-msvc
# php-version: '8.3'
- target: x86_64-pc-windows-msvc
php-version: '8.4'
steps:
- name: Checkout
uses: actions/checkout@v2
with:
submodules: recursive
- uses: actions/cache@v2
with:
path: |
~/.cargo/bin/
~/.cargo/registry/index/
~/.cargo/registry/cache/
~/.cargo/git/db/
target/
key: ${{ matrix.php-version }}-${{ matrix.target }}
- name: Install latest Rust toolchain
run: |
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
echo "C:\Users\runneradmin\.cargo\bin" | Out-File -Append -FilePath $env:GITHUB_PATH -Encoding utf8
rustup default nightly
rustup target add ${{ matrix.target }}
- name: Setup PHP with PECL extension
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php-version }}
tools: php-config
- name: Build
run: |
cargo build --release --target ${{ matrix.target }} --lib
- name: Rename file
run: |
$outputPath = "target/php${{ matrix.php-version }}-${{ matrix.target }}-${{ env.EXTENSION_NAME }}.dll"
if (Test-Path $outputPath) {
Remove-Item $outputPath
}
Move-Item "target/${{ matrix.target }}/release/${{ env.EXTENSION_NAME }}.dll" $outputPath
shell: pwsh
- uses: actions/upload-artifact@v3
with:
name: php${{ matrix.php-version }}-${{ matrix.target }}
path: target/php${{ matrix.php-version }}-${{ matrix.target }}-${{ env.EXTENSION_NAME }}.dll
- name: Get Cargo Version
id: cargo_version
run: |
$content = Get-Content -Path .\Cargo.toml
$versionLine = $content | Select-String -Pattern '^version =' | Select-Object -First 1
$version = $versionLine -replace 'version = "', '' -replace '"', ''
echo "VERSION=$version" | Out-File -FilePath $env:GITHUB_ENV -Append
shell: pwsh
- name: Create GitHub Release
id: create_release
uses: softprops/action-gh-release@v2
with:
tag_name: ${{ env.VERSION }}
name: Release ${{ env.VERSION }}
draft: false
prerelease: false
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Upload Release Asset
uses: softprops/action-gh-release@v2
with:
tag_name: ${{ env.VERSION }}
files: |
target/php${{ matrix.php-version }}-${{ matrix.target }}-${{ env.EXTENSION_NAME }}.dll