name: PHP Tests on: workflow_call: inputs: safe-checkout: required: true description: "The SHA key for the commit we want to run over" type: string permissions: contents: read jobs: linux: strategy: fail-fast: false # Don't cancel all jobs if one fails. matrix: include: - name: 8.0 Optimized version: "8.0.5" version-short: "8.0" command: composer test \&\& composer test_c - name: 8.0 Debug version: 8.0.5-dbg version-short: "8.0" command: composer test \&\& composer test_c - name: 8.0 Memory Leak version: 8.0.5-dbg version-short: "8.0" # Run specialized memory leak & multirequest tests. command: composer test_c \&\& tests/multirequest.sh \&\& tests/memory_leak_test.sh - name: 8.0 Valgrind version: 8.0.5-dbg version-short: "8.0" command: composer test_valgrind name: Linux ${{ matrix.name}} runs-on: ubuntu-latest steps: - name: Checkout pending changes uses: protocolbuffers/protobuf-ci/checkout@v2 with: ref: ${{ inputs.safe-checkout }} - name: Setup composer uses: protocolbuffers/protobuf-ci/composer-setup@v2 with: cache-prefix: php-${{ matrix.version-short }} directory: php - name: Run tests uses: protocolbuffers/protobuf-ci/docker@v2 with: image: us-docker.pkg.dev/protobuf-build/containers/test/linux/php:${{ matrix.version }}-66964dc8b07b6d1fc73a5cc14e59e84c1c534cea credentials: ${{ secrets.GAR_SERVICE_ACCOUNT }} extra-flags: -e COMPOSER_HOME=/workspace/composer-cache command: ${{ matrix.command }} linux-32bit: strategy: fail-fast: false # Don't cancel all jobs if one fails. matrix: version: ['8.0'] suffix: [ '', '-zts'] test: ['test', 'test_c'] exclude: - suffix: '-zts' test: 'test' include: - suffix: '-zts' suffix_name: ' Thread Safe' - test: 'test_c' test_name: ' Extension' name: Linux 32-bit ${{ matrix.version}}${{ matrix.suffix_name }}${{ matrix.test_name }} runs-on: ubuntu-latest env: image: us-docker.pkg.dev/protobuf-build/containers/test/linux/32bit@sha256:8275360dc5d676f3470872d79087901c0e4153453976bea908a92c82e8d209ea steps: - name: Checkout pending changes uses: protocolbuffers/protobuf-ci/checkout@v2 with: ref: ${{ inputs.safe-checkout }} - name: Cross compile protoc for i386 id: cross-compile uses: protocolbuffers/protobuf-ci/cross-compile-protoc@v2 with: image: us-docker.pkg.dev/protobuf-build/containers/common/linux/bazel:6.3.0-91a0ac83e968068672bc6001a4d474cfd9a50f1d credentials: ${{ secrets.GAR_SERVICE_ACCOUNT }} architecture: linux-i386 - name: Setup composer uses: protocolbuffers/protobuf-ci/composer-setup@v2 with: cache-prefix: php-${{ matrix.version }} directory: php - name: Run tests uses: protocolbuffers/protobuf-ci/docker@v2 with: image: ${{ env.image }} platform: linux/386 credentials: ${{ secrets.GAR_SERVICE_ACCOUNT }} extra-flags: -e COMPOSER_HOME=/workspace/composer-cache -e PROTOC=/workspace/${{ steps.cross-compile.outputs.protoc }} command: >- /bin/bash -cex ' PATH="/usr/local/php-${{ matrix.version }}${{matrix.suffix}}/bin:$PATH"; cd php && php -v && php -m; composer update --ignore-platform-reqs; composer ${{ matrix.test }}' linux-aarch64: name: Linux aarch64 runs-on: ubuntu-latest steps: - name: Checkout pending changes uses: protocolbuffers/protobuf-ci/checkout@v2 with: ref: ${{ inputs.safe-checkout }} - name: Cross compile protoc for aarch64 id: cross-compile uses: protocolbuffers/protobuf-ci/cross-compile-protoc@v2 with: image: us-docker.pkg.dev/protobuf-build/containers/common/linux/bazel:6.3.0-91a0ac83e968068672bc6001a4d474cfd9a50f1d credentials: ${{ secrets.GAR_SERVICE_ACCOUNT }} architecture: linux-aarch64 - name: Setup composer uses: protocolbuffers/protobuf-ci/composer-setup@v2 with: cache-prefix: php-8.0 directory: php - name: Run tests uses: protocolbuffers/protobuf-ci/docker@v2 with: image: us-docker.pkg.dev/protobuf-build/containers/test/linux/php-aarch64@sha256:77ff9fdec867bbfb290ee0b10d8b7a3e5e434155daa5ec93de7341c7592b858d platform: linux/arm64 credentials: ${{ secrets.GAR_SERVICE_ACCOUNT }} extra-flags: -e COMPOSER_HOME=/workspace/composer-cache -e PROTOC=/workspace/${{ steps.cross-compile.outputs.protoc }} command: >- -c ' cd php; composer update --ignore-platform-reqs; composer test; composer test_c' macos: strategy: fail-fast: false # Don't cancel all jobs if one fails. matrix: version: ['8.0'] name: MacOS PHP ${{ matrix.version }} runs-on: macos-12 steps: - name: Checkout pending changes uses: protocolbuffers/protobuf-ci/checkout@v2 with: ref: ${{ inputs.safe-checkout }} - name: Uninstall problematic libgd run: brew uninstall --ignore-dependencies gd - name: Install dependencies run: brew install coreutils gd - name: Pin PHP version uses: shivammathur/setup-php@7fdd3ece872ec7ec4c098ae5ab7637d5e0a96067 # 2.26.0 with: php-version: ${{ matrix.version }} - name: Check PHP version run: php --version | grep ${{ matrix.version }} || (echo "Invalid PHP version - $(php --version)" && exit 1) - name: Setup composer uses: protocolbuffers/protobuf-ci/composer-setup@v2 with: cache-prefix: php-${{ matrix.version }} directory: php - name: Run tests uses: protocolbuffers/protobuf-ci/bash@v2 with: credentials: ${{ secrets.GAR_SERVICE_ACCOUNT }} command: | pushd php php -v php -m composer update composer test_c popd - name: Run conformance tests uses: protocolbuffers/protobuf-ci/bazel@v2 with: credentials: ${{ secrets.GAR_SERVICE_ACCOUNT }} bazel-cache: php_macos/${{ matrix.version }} bazel: test //php:conformance_test_c --action_env=PATH --test_env=PATH