mirror of
https://github.com/php/frankenphp.git
synced 2026-03-24 17:12:10 +01:00
Unfortunately, GitHub Actions is often blocked by the php.net CDN. This patch adds a fallback to use GitHub to try to determine the PHP version to use. This is less ideal because PHP currently doesn't use GitHub extensively, and distribution archives aren't available in the GitHub releases, only on php.net.
180 lines
5.5 KiB
YAML
180 lines
5.5 KiB
YAML
---
|
|
name: Tests
|
|
concurrency:
|
|
cancel-in-progress: true
|
|
group: ${{ github.workflow }}-${{ github.ref }}
|
|
on:
|
|
pull_request:
|
|
branches:
|
|
- main
|
|
paths-ignore:
|
|
- "docs/**"
|
|
push:
|
|
branches:
|
|
- main
|
|
paths-ignore:
|
|
- "docs/**"
|
|
permissions:
|
|
contents: read
|
|
env:
|
|
GOTOOLCHAIN: local
|
|
GOEXPERIMENT: cgocheck2
|
|
jobs:
|
|
tests-linux:
|
|
name: Tests (Linux, PHP ${{ matrix.php-versions }})
|
|
runs-on: ubuntu-latest
|
|
continue-on-error: false
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
include:
|
|
- php-versions: "8.2"
|
|
- php-versions: "8.3"
|
|
- php-versions: "8.4"
|
|
- php-versions: "8.5"
|
|
env:
|
|
GOMAXPROCS: 10
|
|
LIBRARY_PATH: ${{ github.workspace }}/watcher/target/lib
|
|
GOFLAGS: "-tags=nobadger,nomysql,nopgx"
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
with:
|
|
persist-credentials: false
|
|
- uses: actions/setup-go@v6
|
|
with:
|
|
go-version: "1.26"
|
|
cache-dependency-path: |
|
|
go.sum
|
|
caddy/go.sum
|
|
- uses: shivammathur/setup-php@v2
|
|
with:
|
|
php-version: ${{ matrix.php-versions }}
|
|
ini-file: development
|
|
coverage: none
|
|
tools: none
|
|
env:
|
|
phpts: ts
|
|
debug: true
|
|
- name: Install e-dant/watcher
|
|
uses: ./.github/actions/watcher
|
|
- name: Set CGO flags
|
|
run: echo "CGO_CFLAGS=-I${PWD}/watcher/target/include $(php-config --includes)" >> "${GITHUB_ENV}"
|
|
- name: Build
|
|
run: go build
|
|
- name: Build testcli binary
|
|
working-directory: internal/testcli/
|
|
run: go build
|
|
- name: Compile library tests
|
|
run: go test -race -v -x -c
|
|
- name: Run library tests
|
|
run: ./frankenphp.test -test.v
|
|
- name: Run Caddy module tests
|
|
working-directory: caddy/
|
|
run: go test -race -v ./...
|
|
- name: Run Fuzzing Tests
|
|
working-directory: caddy/
|
|
run: go test -fuzz FuzzRequest -fuzztime 20s
|
|
- name: Build the server
|
|
working-directory: caddy/frankenphp/
|
|
run: go build
|
|
- name: Start the server
|
|
working-directory: testdata/
|
|
run: sudo ../caddy/frankenphp/frankenphp start
|
|
- name: Run integrations tests
|
|
run: ./reload_test.sh
|
|
- name: Lint Go code
|
|
uses: golangci/golangci-lint-action@v9
|
|
if: matrix.php-versions == '8.5'
|
|
with:
|
|
version: latest
|
|
- name: Ensure go.mod is tidy
|
|
if: matrix.php-versions == '8.5'
|
|
run: go mod tidy -diff
|
|
- name: Ensure caddy/go.mod is tidy
|
|
if: matrix.php-versions == '8.5'
|
|
run: go mod tidy -diff
|
|
working-directory: caddy/
|
|
integration-tests:
|
|
name: Integration Tests (Linux, PHP ${{ matrix.php-versions }})
|
|
runs-on: ubuntu-latest
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
php-versions: ["8.3", "8.4", "8.5"]
|
|
env:
|
|
XCADDY_GO_BUILD_FLAGS: "-tags=nobadger,nomysql,nopgx"
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
with:
|
|
persist-credentials: false
|
|
- uses: actions/setup-go@v6
|
|
with:
|
|
go-version: "1.26"
|
|
cache-dependency-path: |
|
|
go.sum
|
|
caddy/go.sum
|
|
- uses: shivammathur/setup-php@v2
|
|
with:
|
|
php-version: ${{ matrix.php-versions }}
|
|
ini-file: development
|
|
coverage: none
|
|
tools: none
|
|
env:
|
|
phpts: ts
|
|
debug: true
|
|
- name: Install PHP development libraries
|
|
run: sudo apt-get update && sudo apt-get install -y libkrb5-dev libsodium-dev libargon2-dev
|
|
- name: Install xcaddy
|
|
run: go install github.com/caddyserver/xcaddy/cmd/xcaddy@latest
|
|
- name: Download PHP sources
|
|
run: |
|
|
PHP_VERSION=$(php -r "echo PHP_VERSION;")
|
|
wget -q "https://www.php.net/distributions/php-${PHP_VERSION}.tar.gz" || wget -q "https://phpmirror.static-php.dev/distributions/php-${PHP_VERSION}.tar.gz"
|
|
tar xzf "php-${PHP_VERSION}.tar.gz"
|
|
echo "GEN_STUB_SCRIPT=${PWD}/php-${PHP_VERSION}/build/gen_stub.php" >> "${GITHUB_ENV}"
|
|
- name: Set CGO flags
|
|
run: |
|
|
echo "CGO_CFLAGS=$(php-config --includes)" >> "${GITHUB_ENV}"
|
|
echo "CGO_LDFLAGS=$(php-config --ldflags) $(php-config --libs)" >> "${GITHUB_ENV}"
|
|
- name: Run integration tests
|
|
working-directory: internal/extgen/
|
|
run: go test -tags integration -v -timeout 30m
|
|
tests-mac:
|
|
name: Tests (macOS, PHP 8.5)
|
|
runs-on: macos-latest
|
|
env:
|
|
HOMEBREW_NO_AUTO_UPDATE: 1
|
|
GOFLAGS: "-tags=nowatcher,nobadger,nomysql,nopgx"
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
with:
|
|
persist-credentials: false
|
|
- uses: actions/setup-go@v6
|
|
with:
|
|
go-version: "1.26"
|
|
cache-dependency-path: |
|
|
go.sum
|
|
caddy/go.sum
|
|
- uses: shivammathur/setup-php@v2
|
|
with:
|
|
php-version: 8.5
|
|
ini-file: development
|
|
coverage: none
|
|
tools: none
|
|
env:
|
|
phpts: ts
|
|
debug: true
|
|
- name: Set Set CGO flags
|
|
run: |
|
|
{
|
|
echo "CGO_CFLAGS=-I/opt/homebrew/include/ $(php-config --includes)"
|
|
echo "CGO_LDFLAGS=-L/opt/homebrew/lib/ $(php-config --ldflags) $(php-config --libs)"
|
|
} >> "${GITHUB_ENV}"
|
|
- name: Build
|
|
run: go build -tags nowatcher
|
|
- name: Run library tests
|
|
run: go test -tags nowatcher -race -v ./...
|
|
- name: Run Caddy module tests
|
|
working-directory: caddy/
|
|
run: go test -race -v ./...
|