Skip to content

update

update #68

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 }}
- 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'
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'
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'
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'
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