name: Test building extension on: pull_request: branches: - php8 push: branches: - php8 permissions: contents: read jobs: self-built-v8-cache-warmup: strategy: matrix: operating-system: # &self-built-v8-operating-systems - ubuntu-latest # - windows-latest - macos-latest v8-versions: # &self-built-v8-v8-versions - 10.9.194 # - 11.9.172 - 12.9.203 # - 13.1.104 runs-on: ${{ matrix.operating-system }} steps: - name: Restore cache v8 ${{ matrix.v8-versions }} build id: v8-build-cache uses: actions/cache/restore@v4 with: path: /opt/v8/self-built key: ${{ runner.os }}-${{ matrix.v8-versions }}-v8-build - name: Setup Google depot tools # only needed, when v8 needs to be built if: steps.v8-build-cache.outputs.cache-hit != 'true' uses: newkdev/setup-depot-tools@v1.0.1 - name: Build v8 ${{ matrix.v8-versions }} if: steps.v8-build-cache.outputs.cache-hit != 'true' run: | # Store extra tools somewhere undisturbing cd "$(mktemp -d)" fetch v8 cd v8 git checkout ${{ matrix.v8-versions }} gclient sync -D # Setup GN # Warnings are no errors - @see https://issues.chromium.org/issues/42203398#comment9 tools/dev/v8gen.py -vv x64.release -- is_component_build=true use_custom_libcxx=false treat_warnings_as_errors=false # Build ninja -C out.gn/x64.release/ # Install to /opt/v8/self-built sudo mkdir -p /opt/v8/self-built/{lib,include} if [[ "${{ runner.os }}" == "macOS" ]]; then LIB_EXT=dylib else LIB_EXT=so fi sudo cp out.gn/x64.release/lib*.${LIB_EXT} out.gn/x64.release/*_blob.bin out.gn/x64.release/icudtl.dat /opt/v8/self-built/lib/ sudo cp -R include/* /opt/v8/self-built/include/ # Go back to origin cd "${GITHUB_WORKSPACE}" - name: Save v8 ${{ matrix.v8-versions }} build cache if: steps.v8-build-cache.outputs.cache-hit != 'true' uses: actions/cache/save@v4 with: path: /opt/v8/self-built key: ${{ steps.v8-build-cache.outputs.cache-primary-key }} self-built-v8: needs: self-built-v8-cache-warmup strategy: matrix: operating-system: # *self-built-v8-operating-systems - ubuntu-latest # - windows-latest - macos-latest v8-versions: # *self-built-v8-v8-versions - 10.9.194 # - 11.9.172 - 12.9.203 # - 13.1.104 php-versions: # - '8.1' - '8.2' - '8.3' - '8.4' runs-on: ${{ matrix.operating-system }} steps: - name: Checkout code uses: actions/checkout@v2 - name: Setup PHP uses: shivammathur/setup-php@v2 with: php-version: ${{ matrix.php-versions }} coverage: none - name: Download cache v8 ${{ matrix.v8-versions }} build uses: actions/cache/restore@v4 with: path: /opt/v8/self-built key: ${{ runner.os }}-${{ matrix.v8-versions }}-v8-build - name: Build extension run: | phpize ./configure --with-v8js=/opt/v8/self-built LDFLAGS="-lstdc++" CPPFLAGS="-DV8_COMPRESS_POINTERS -DV8_ENABLE_SANDBOX" make make test - name: Archive test results if: failure() uses: actions/upload-artifact@v4 with: name: phpt-test-results-on-${{ runner.os }}-${{ matrix.v8-versions }}-${{ matrix.php-versions }} path: | php_test_results*.txt tests/*.out alpine-package-manager-apk: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v2 - name: Setup latest Alpine Linux uses: jirutka/setup-alpine@v1 - name: Install dependencies run: | cat /etc/alpine-release apk add php83-dev nodejs-dev g++ make shell: alpine.sh --root {0} - name: Build extension run: | phpize ./configure make make test shell: alpine.sh {0} - name: Archive test results if: failure() uses: actions/upload-artifact@v4 with: name: phpt-test-results-on-alpine path: | php_test_results*.txt tests/*.out macos-package-manager-brew: strategy: matrix: php-versions: - '8.2' - '8.3' - '8.4' runs-on: macos-latest steps: - name: Checkout code uses: actions/checkout@v2 - name: Setup PHP uses: shivammathur/setup-php@v2 with: php-version: ${{ matrix.php-versions }} coverage: none - name: Set up Homebrew uses: Homebrew/actions/setup-homebrew@master - name: Install dependencies run: | brew install v8 - name: Build extension run: | phpize ./configure --with-v8js=/opt/homebrew CPPFLAGS="-DV8_COMPRESS_POINTERS -DV8_ENABLE_SANDBOX" make make test - name: Archive test results if: failure() uses: actions/upload-artifact@v4 with: name: phpt-test-results-on-macos-brew-${{ matrix.php-versions }} path: | php_test_results*.txt tests/*.out