Fix win build #50
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Tests | |
| on: | |
| push: | |
| pull_request: | |
| jobs: | |
| check-dev-version: | |
| runs-on: ubuntu-latest | |
| if: github.ref == 'refs/heads/master' | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Check PHP_LIBARCHIVE_VERSION ends in -dev | |
| run: | | |
| HEADER_VERSION=$(grep -oP '(?<=#define PHP_LIBARCHIVE_VERSION ")[^"]+' php_libarchive.h) | |
| echo "Header version: $HEADER_VERSION" | |
| if [[ "$HEADER_VERSION" != *-dev ]]; then | |
| echo "ERROR: PHP_LIBARCHIVE_VERSION ($HEADER_VERSION) does not end in -dev on master" | |
| exit 1 | |
| fi | |
| generate-matrix: | |
| runs-on: ubuntu-latest | |
| outputs: | |
| matrix: ${{ steps.set-matrix.outputs.matrix }} | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - id: set-matrix | |
| run: | | |
| python3 <<'EOF' | |
| import yaml, json, os | |
| with open('.github/docker-image-shas.yml') as f: | |
| data = yaml.safe_load(f) | |
| image = 'ghcr.io/cataphract/php-minimal' | |
| includes = [] | |
| for tag, sha in data[image].items(): | |
| # tag: "8.0-debug" or "8.0-release-zts"; skip non-test variants | |
| ver, variant = tag.split('-', 1) | |
| if variant not in ('debug', 'release-zts'): | |
| continue | |
| includes.append({'php': ver, 'variant': variant, 'image_sha': sha, | |
| 'libarchive_version': 'system'}) | |
| # Extra jobs testing specific libarchive versions (use PHP 8.4 debug) | |
| sha_8_4_debug = data[image]['8.4-debug'] | |
| for la_ver in ['v3.5.0', 'v3.7.1', 'v3.8.6']: | |
| includes.append({'php': '8.4', 'variant': 'debug', 'image_sha': sha_8_4_debug, | |
| 'libarchive_version': la_ver}) | |
| with open(os.environ['GITHUB_OUTPUT'], 'a') as f: | |
| f.write('matrix=' + json.dumps({'include': includes}) + '\n') | |
| EOF | |
| linux: | |
| name: PHP ${{ matrix.php }} (${{ matrix.variant }}, libarchive ${{ matrix.libarchive_version }}) | |
| needs: generate-matrix | |
| runs-on: ubuntu-latest | |
| container: | |
| image: ghcr.io/cataphract/php-minimal@${{ matrix.image_sha }} | |
| options: --user root | |
| strategy: | |
| fail-fast: false | |
| matrix: ${{ fromJson(needs.generate-matrix.outputs.matrix) }} | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Restore libarchive cache | |
| if: matrix.libarchive_version != 'system' | |
| uses: actions/cache@v4 | |
| with: | |
| path: .libarchive-cache | |
| key: libarchive-${{ matrix.libarchive_version }}-${{ runner.arch }}-v2 | |
| - name: Build and test | |
| env: | |
| LIBARCHIVE_VERSION: ${{ matrix.libarchive_version }} | |
| run: bash .github/scripts/build-and-test.sh | |
| - name: Upload test results | |
| uses: actions/upload-artifact@v4 | |
| if: always() | |
| with: | |
| name: test-results-php${{ matrix.php }}-${{ matrix.variant }}-libarchive${{ matrix.libarchive_version }} | |
| path: report.xml | |
| ubuntu: | |
| name: ubuntu (PHP 8.3 release, ${{ matrix.arch }}) | |
| runs-on: ${{ matrix.runner }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| - arch: x86_64 | |
| runner: ubuntu-latest | |
| - arch: aarch64 | |
| runner: ubuntu-24.04-arm | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Install PHP 8.3 and libarchive | |
| run: | | |
| sudo apt-get update -q | |
| sudo apt-get install -y php8.3 php8.3-dev libarchive-dev | |
| - name: Build and test | |
| run: bash .github/scripts/build-and-test.sh | |
| - name: Upload test results | |
| uses: actions/upload-artifact@v4 | |
| if: always() | |
| with: | |
| name: test-results-ubuntu-php8.3-release-${{ matrix.arch }} | |
| path: report.xml | |
| windows: | |
| name: Windows PHP ${{ matrix.php }} ${{ matrix.ts }} | |
| runs-on: windows-2022 | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| - php: '8.3' | |
| ts: ts | |
| arch: x64 | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Cache vcpkg packages | |
| id: vcpkg-cache | |
| uses: actions/cache@v4 | |
| with: | |
| path: C:\vcpkg\installed\x64-windows-static-md | |
| key: vcpkg-x64-windows-static-md-libarchive-v1 | |
| - name: Install libarchive via vcpkg | |
| if: steps.vcpkg-cache.outputs.cache-hit != 'true' | |
| shell: pwsh | |
| run: | | |
| $tripletDir = "$env:RUNNER_TEMP\vcpkg-triplets" | |
| New-Item -ItemType Directory -Force -Path $tripletDir | Out-Null | |
| Set-Content "$tripletDir\x64-windows-static-md.cmake" ` | |
| "set(VCPKG_TARGET_ARCHITECTURE x64)`nset(VCPKG_CRT_LINKAGE dynamic)`nset(VCPKG_LIBRARY_LINKAGE static)`nset(VCPKG_BUILD_TYPE release)" | |
| C:\vcpkg\vcpkg.exe install libarchive ` | |
| --triplet x64-windows-static-md ` | |
| --overlay-triplets="$tripletDir" ` | |
| --vcpkg-root C:\vcpkg | |
| - name: Build and test | |
| uses: php/php-windows-builder/extension@v1 | |
| with: | |
| php-version: ${{ matrix.php }} | |
| arch: ${{ matrix.arch }} | |
| ts: ${{ matrix.ts }} | |
| args: --with-libarchive=C:\vcpkg\installed\x64-windows-static-md | |
| - name: Upload test results | |
| uses: actions/upload-artifact@v4 | |
| if: always() | |
| with: | |
| name: test-results-windows-php${{ matrix.php }}-${{ matrix.ts }} | |
| path: '*.xml' |