# Do not modify!
# This file was generated from a template using https://github.com/StefMa/pkl-gha

name: Build (release branch)
'on':
  push:
    branches:
    - release/*
    tags-ignore:
    - '**'
concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: true
permissions:
  contents: read
jobs:
  gradle-check:
    runs-on: ubuntu-latest
    env:
      LANG: en_US.UTF-8
    steps:
    - uses: actions/checkout@v5
      with:
        fetch-depth: 0
    - uses: actions/setup-java@v5
      with:
        java-version: '21'
        distribution: temurin
        architecture: x64
        cache: gradle
    - name: check
      shell: bash
      run: ./gradlew --info --stacktrace -DpklMultiJdkTesting=true check
    - name: Upload Test Result XML
      if: '!cancelled()'
      uses: actions/upload-artifact@v5
      with:
        name: test-results-xml-gradle-check
        path: '**/build/test-results/**/*.xml'
    - name: Upload Test Result HTML
      if: '!cancelled()'
      uses: actions/upload-artifact@v5
      with:
        name: test-results-html-gradle-check
        path: '**/build/reports/tests/**/*'
        if-no-files-found: ignore
  gradle-check-windows:
    runs-on: windows-latest
    env:
      LANG: en_US.UTF-8
      JAVA_HOME: /jdk
    steps:
    - uses: actions/checkout@v5
      with:
        fetch-depth: 0
    - uses: actions/setup-java@v5
      with:
        java-version: '21'
        distribution: temurin
        architecture: x64
        cache: gradle
    - name: check
      shell: bash
      run: ./gradlew --info --stacktrace -DpklMultiJdkTesting=true check
    - name: Upload Test Result XML
      if: '!cancelled()'
      uses: actions/upload-artifact@v5
      with:
        name: test-results-xml-gradle-check-windows
        path: '**/build/test-results/**/*.xml'
    - name: Upload Test Result HTML
      if: '!cancelled()'
      uses: actions/upload-artifact@v5
      with:
        name: test-results-html-gradle-check-windows
        path: '**/build/reports/tests/**/*'
        if-no-files-found: ignore
  bench:
    runs-on: ubuntu-latest
    env:
      LANG: en_US.UTF-8
    steps:
    - uses: actions/checkout@v5
    - uses: actions/setup-java@v5
      with:
        java-version: '21'
        distribution: temurin
        architecture: x64
        cache: gradle
    - name: bench:jmh
      shell: bash
      run: ./gradlew --info --stacktrace -DpklMultiJdkTesting=true bench:jmh
    - name: Upload Test Result XML
      if: '!cancelled()'
      uses: actions/upload-artifact@v5
      with:
        name: test-results-xml-bench
        path: '**/build/test-results/**/*.xml'
    - name: Upload Test Result HTML
      if: '!cancelled()'
      uses: actions/upload-artifact@v5
      with:
        name: test-results-html-bench
        path: '**/build/reports/tests/**/*'
        if-no-files-found: ignore
  gradle-compatibility:
    runs-on: ubuntu-latest
    env:
      LANG: en_US.UTF-8
    steps:
    - uses: actions/checkout@v5
      with:
        fetch-depth: 0
    - uses: actions/setup-java@v5
      with:
        java-version: '21'
        distribution: temurin
        architecture: x64
        cache: gradle
    - name: :pkl-gradle:build :pkl-gradle:compatibilityTestReleases
      shell: bash
      run: ./gradlew --info --stacktrace -DpklMultiJdkTesting=true :pkl-gradle:build :pkl-gradle:compatibilityTestReleases
    - name: Upload Test Result XML
      if: '!cancelled()'
      uses: actions/upload-artifact@v5
      with:
        name: test-results-xml-gradle-compatibility
        path: '**/build/test-results/**/*.xml'
    - name: Upload Test Result HTML
      if: '!cancelled()'
      uses: actions/upload-artifact@v5
      with:
        name: test-results-html-gradle-compatibility
        path: '**/build/reports/tests/**/*'
        if-no-files-found: ignore
  java-executables-snapshot:
    runs-on: ubuntu-latest
    env:
      LANG: en_US.UTF-8
    steps:
    - uses: actions/checkout@v5
      with:
        fetch-depth: 0
    - uses: actions/setup-java@v5
      with:
        java-version: '21'
        distribution: temurin
        architecture: x64
        cache: gradle
    - uses: actions/checkout@v5
    - name: gradle build java executables
      shell: bash
      run: ./gradlew --info --stacktrace -DpklMultiJdkTesting=true pkl-doc:build pkl-cli:build pkl-codegen-java:build pkl-codegen-kotlin:build
    - name: Upload executable artifacts
      uses: actions/upload-artifact@v5
      with:
        name: executable-java
        path: '*/build/executable/**/*'
    - name: Upload Test Result XML
      if: '!cancelled()'
      uses: actions/upload-artifact@v5
      with:
        name: test-results-xml-java-executables-snapshot
        path: '**/build/test-results/**/*.xml'
    - name: Upload Test Result HTML
      if: '!cancelled()'
      uses: actions/upload-artifact@v5
      with:
        name: test-results-html-java-executables-snapshot
        path: '**/build/reports/tests/**/*'
        if-no-files-found: ignore
  pkl-cli-macOS-amd64-snapshot:
    if: github.repository_owner == 'apple'
    runs-on:
    - self-hosted
    - macos
    env:
      LANG: en_US.UTF-8
    steps:
    - uses: actions/checkout@v5
    - uses: actions/setup-java@v5
      with:
        java-version: '21'
        distribution: temurin
        architecture: x64
        cache: gradle
    - name: gradle buildNative
      shell: bash
      run: ./gradlew --info --stacktrace -DpklMultiJdkTesting=true -Dpkl.targetArch=amd64 -Dpkl.native--native-compiler-path=${{ github.workspace }}/.github/scripts/cc_macos_amd64.sh pkl-cli:buildNative
    - name: Upload executable artifacts
      uses: actions/upload-artifact@v5
      with:
        name: executable-pkl-cli-macOS-amd64
        path: pkl-cli*/build/executable/**/*
    - name: Upload Test Result XML
      if: '!cancelled()'
      uses: actions/upload-artifact@v5
      with:
        name: test-results-xml-pkl-cli-macOS-amd64-snapshot
        path: '**/build/test-results/**/*.xml'
    - name: Upload Test Result HTML
      if: '!cancelled()'
      uses: actions/upload-artifact@v5
      with:
        name: test-results-html-pkl-cli-macOS-amd64-snapshot
        path: '**/build/reports/tests/**/*'
        if-no-files-found: ignore
  pkl-cli-linux-amd64-snapshot:
    runs-on: ubuntu-latest
    env:
      LANG: en_US.UTF-8
    steps:
    - uses: actions/checkout@v5
    - uses: actions/setup-java@v5
      with:
        java-version: '21'
        distribution: temurin
        architecture: x64
        cache: gradle
    - name: gradle buildNative
      shell: bash
      run: ./gradlew --info --stacktrace -DpklMultiJdkTesting=true pkl-cli:buildNative
    - name: Upload executable artifacts
      uses: actions/upload-artifact@v5
      with:
        name: executable-pkl-cli-linux-amd64
        path: pkl-cli*/build/executable/**/*
    - name: Upload Test Result XML
      if: '!cancelled()'
      uses: actions/upload-artifact@v5
      with:
        name: test-results-xml-pkl-cli-linux-amd64-snapshot
        path: '**/build/test-results/**/*.xml'
    - name: Upload Test Result HTML
      if: '!cancelled()'
      uses: actions/upload-artifact@v5
      with:
        name: test-results-html-pkl-cli-linux-amd64-snapshot
        path: '**/build/reports/tests/**/*'
        if-no-files-found: ignore
  pkl-cli-macOS-aarch64-snapshot:
    if: github.repository_owner == 'apple'
    runs-on:
    - self-hosted
    - macos
    env:
      LANG: en_US.UTF-8
    steps:
    - uses: actions/checkout@v5
    - uses: actions/setup-java@v5
      with:
        java-version: '21'
        distribution: temurin
        architecture: aarch64
        cache: gradle
    - name: gradle buildNative
      shell: bash
      run: ./gradlew --info --stacktrace -DpklMultiJdkTesting=true pkl-cli:buildNative
    - name: Upload executable artifacts
      uses: actions/upload-artifact@v5
      with:
        name: executable-pkl-cli-macOS-aarch64
        path: pkl-cli*/build/executable/**/*
    - name: Upload Test Result XML
      if: '!cancelled()'
      uses: actions/upload-artifact@v5
      with:
        name: test-results-xml-pkl-cli-macOS-aarch64-snapshot
        path: '**/build/test-results/**/*.xml'
    - name: Upload Test Result HTML
      if: '!cancelled()'
      uses: actions/upload-artifact@v5
      with:
        name: test-results-html-pkl-cli-macOS-aarch64-snapshot
        path: '**/build/reports/tests/**/*'
        if-no-files-found: ignore
  pkl-cli-linux-aarch64-snapshot:
    runs-on: ubuntu-24.04-arm
    env:
      LANG: en_US.UTF-8
    steps:
    - uses: actions/checkout@v5
    - uses: actions/setup-java@v5
      with:
        java-version: '21'
        distribution: temurin
        architecture: aarch64
        cache: gradle
    - name: gradle buildNative
      shell: bash
      run: ./gradlew --info --stacktrace -DpklMultiJdkTesting=true pkl-cli:buildNative
    - name: Upload executable artifacts
      uses: actions/upload-artifact@v5
      with:
        name: executable-pkl-cli-linux-aarch64
        path: pkl-cli*/build/executable/**/*
    - name: Upload Test Result XML
      if: '!cancelled()'
      uses: actions/upload-artifact@v5
      with:
        name: test-results-xml-pkl-cli-linux-aarch64-snapshot
        path: '**/build/test-results/**/*.xml'
    - name: Upload Test Result HTML
      if: '!cancelled()'
      uses: actions/upload-artifact@v5
      with:
        name: test-results-html-pkl-cli-linux-aarch64-snapshot
        path: '**/build/reports/tests/**/*'
        if-no-files-found: ignore
  pkl-cli-alpine-linux-amd64-snapshot:
    runs-on: ubuntu-latest
    env:
      LANG: en_US.UTF-8
    steps:
    - uses: actions/checkout@v5
    - uses: actions/setup-java@v5
      with:
        java-version: '21'
        distribution: temurin
        architecture: x64
        cache: gradle
    - name: Install musl and zlib
      run: |
        set -e
        mkdir -p ~/staticdeps/

        ZLIB_VERSION="1.2.13"
        MUSL_VERSION="1.2.5"

        # install zlib
        if [[ ! -f ~/staticdeps/include/zlib.h ]]; then
          # Download zlib tarball and signature
          curl -Lf "https://github.com/madler/zlib/releases/download/v${ZLIB_VERSION}/zlib-${ZLIB_VERSION}.tar.gz" -o /tmp/zlib.tar.gz
          curl -Lf "https://github.com/madler/zlib/releases/download/v${ZLIB_VERSION}/zlib-${ZLIB_VERSION}.tar.gz.asc" -o /tmp/zlib.tar.gz.asc

          # Import zlib GPG key
          gpg --batch --keyserver keyserver.ubuntu.com --recv-keys 5ED46A6721D365587791E2AA783FCD8E58BCAFBA

          # Verify GPG signature
          echo "Verifying zlib GPG signature..."
          gpg --verify /tmp/zlib.tar.gz.asc /tmp/zlib.tar.gz

          mkdir -p "/tmp/dep_zlib-${ZLIB_VERSION}"
          cd "/tmp/dep_zlib-${ZLIB_VERSION}"
          # shellcheck disable=SC2002
          cat /tmp/zlib.tar.gz | tar --strip-components=1 -xzC .

          echo "zlib-${ZLIB_VERSION}: configure..." 
          ./configure --static --prefix="$HOME"/staticdeps > /dev/null

          echo "zlib-${ZLIB_VERSION}: make..." 
          make -s -j4

          echo "zlib-${ZLIB_VERSION}: make install..." 
          make -s install

          rm -rf /tmp/dep_zlib-${ZLIB_VERSION}
        fi

        # install musl
        if [[ ! -f ~/staticdeps/bin/x86_64-linux-musl-gcc ]]; then
          # Download musl tarball and signature
          curl -Lf "https://musl.libc.org/releases/musl-${MUSL_VERSION}.tar.gz" -o /tmp/musl.tar.gz
          curl -Lf "https://musl.libc.org/releases/musl-${MUSL_VERSION}.tar.gz.asc" -o /tmp/musl.tar.gz.asc

          # Import musl GPG key
          gpg --batch --keyserver keyserver.ubuntu.com --recv-keys 836489290BB6B70F99FFDA0556BCDB593020450F

          # Verify GPG signature
          echo "Verifying musl GPG signature..."
          gpg --verify /tmp/musl.tar.gz.asc /tmp/musl.tar.gz

          mkdir -p "/tmp/dep_musl-${MUSL_VERSION}"
          cd "/tmp/dep_musl-${MUSL_VERSION}"

          # shellcheck disable=SC2002
          cat /tmp/musl.tar.gz | tar --strip-components=1 -xzC .

          echo "musl-${MUSL_VERSION}: configure..." 
          ./configure --disable-shared --prefix="$HOME"/staticdeps > /dev/null

          echo "musl-${MUSL_VERSION}: make..." 
          make -s -j4

          echo "musl-${MUSL_VERSION}: make install..." 
          make -s install

          rm -rf "/tmp/dep_musl-${MUSL_VERSION}"

          # native-image expects to find an executable at this path.
          ln -s ~/staticdeps/bin/musl-gcc ~/staticdeps/bin/x86_64-linux-musl-gcc
        fi

        echo "${HOME}/staticdeps/bin" >> "$GITHUB_PATH"
    - name: gradle buildNative
      shell: bash
      run: ./gradlew --info --stacktrace -DpklMultiJdkTesting=true -Dpkl.musl=true pkl-cli:buildNative
    - name: Upload executable artifacts
      uses: actions/upload-artifact@v5
      with:
        name: executable-pkl-cli-alpine-linux-amd64
        path: pkl-cli*/build/executable/**/*
    - name: Upload Test Result XML
      if: '!cancelled()'
      uses: actions/upload-artifact@v5
      with:
        name: test-results-xml-pkl-cli-alpine-linux-amd64-snapshot
        path: '**/build/test-results/**/*.xml'
    - name: Upload Test Result HTML
      if: '!cancelled()'
      uses: actions/upload-artifact@v5
      with:
        name: test-results-html-pkl-cli-alpine-linux-amd64-snapshot
        path: '**/build/reports/tests/**/*'
        if-no-files-found: ignore
  pkl-cli-windows-amd64-snapshot:
    runs-on: windows-latest
    env:
      LANG: en_US.UTF-8
      JAVA_HOME: /jdk
    steps:
    - uses: actions/checkout@v5
    - uses: actions/setup-java@v5
      with:
        java-version: '21'
        distribution: temurin
        architecture: x64
        cache: gradle
    - name: gradle buildNative
      shell: bash
      run: ./gradlew --info --stacktrace -DpklMultiJdkTesting=true pkl-cli:buildNative
    - name: Upload executable artifacts
      uses: actions/upload-artifact@v5
      with:
        name: executable-pkl-cli-windows-amd64
        path: pkl-cli*/build/executable/**/*
    - name: Upload Test Result XML
      if: '!cancelled()'
      uses: actions/upload-artifact@v5
      with:
        name: test-results-xml-pkl-cli-windows-amd64-snapshot
        path: '**/build/test-results/**/*.xml'
    - name: Upload Test Result HTML
      if: '!cancelled()'
      uses: actions/upload-artifact@v5
      with:
        name: test-results-html-pkl-cli-windows-amd64-snapshot
        path: '**/build/reports/tests/**/*'
        if-no-files-found: ignore
  pkl-doc-macOS-amd64-snapshot:
    if: github.repository_owner == 'apple'
    runs-on:
    - self-hosted
    - macos
    env:
      LANG: en_US.UTF-8
    steps:
    - uses: actions/checkout@v5
    - uses: actions/setup-java@v5
      with:
        java-version: '21'
        distribution: temurin
        architecture: x64
        cache: gradle
    - name: gradle buildNative
      shell: bash
      run: ./gradlew --info --stacktrace -DpklMultiJdkTesting=true -Dpkl.targetArch=amd64 -Dpkl.native--native-compiler-path=${{ github.workspace }}/.github/scripts/cc_macos_amd64.sh pkl-doc:buildNative
    - name: Upload executable artifacts
      uses: actions/upload-artifact@v5
      with:
        name: executable-pkl-doc-macOS-amd64
        path: pkl-doc*/build/executable/**/*
    - name: Upload Test Result XML
      if: '!cancelled()'
      uses: actions/upload-artifact@v5
      with:
        name: test-results-xml-pkl-doc-macOS-amd64-snapshot
        path: '**/build/test-results/**/*.xml'
    - name: Upload Test Result HTML
      if: '!cancelled()'
      uses: actions/upload-artifact@v5
      with:
        name: test-results-html-pkl-doc-macOS-amd64-snapshot
        path: '**/build/reports/tests/**/*'
        if-no-files-found: ignore
  pkl-doc-linux-amd64-snapshot:
    runs-on: ubuntu-latest
    env:
      LANG: en_US.UTF-8
    steps:
    - uses: actions/checkout@v5
    - uses: actions/setup-java@v5
      with:
        java-version: '21'
        distribution: temurin
        architecture: x64
        cache: gradle
    - name: gradle buildNative
      shell: bash
      run: ./gradlew --info --stacktrace -DpklMultiJdkTesting=true pkl-doc:buildNative
    - name: Upload executable artifacts
      uses: actions/upload-artifact@v5
      with:
        name: executable-pkl-doc-linux-amd64
        path: pkl-doc*/build/executable/**/*
    - name: Upload Test Result XML
      if: '!cancelled()'
      uses: actions/upload-artifact@v5
      with:
        name: test-results-xml-pkl-doc-linux-amd64-snapshot
        path: '**/build/test-results/**/*.xml'
    - name: Upload Test Result HTML
      if: '!cancelled()'
      uses: actions/upload-artifact@v5
      with:
        name: test-results-html-pkl-doc-linux-amd64-snapshot
        path: '**/build/reports/tests/**/*'
        if-no-files-found: ignore
  pkl-doc-macOS-aarch64-snapshot:
    if: github.repository_owner == 'apple'
    runs-on:
    - self-hosted
    - macos
    env:
      LANG: en_US.UTF-8
    steps:
    - uses: actions/checkout@v5
    - uses: actions/setup-java@v5
      with:
        java-version: '21'
        distribution: temurin
        architecture: aarch64
        cache: gradle
    - name: gradle buildNative
      shell: bash
      run: ./gradlew --info --stacktrace -DpklMultiJdkTesting=true pkl-doc:buildNative
    - name: Upload executable artifacts
      uses: actions/upload-artifact@v5
      with:
        name: executable-pkl-doc-macOS-aarch64
        path: pkl-doc*/build/executable/**/*
    - name: Upload Test Result XML
      if: '!cancelled()'
      uses: actions/upload-artifact@v5
      with:
        name: test-results-xml-pkl-doc-macOS-aarch64-snapshot
        path: '**/build/test-results/**/*.xml'
    - name: Upload Test Result HTML
      if: '!cancelled()'
      uses: actions/upload-artifact@v5
      with:
        name: test-results-html-pkl-doc-macOS-aarch64-snapshot
        path: '**/build/reports/tests/**/*'
        if-no-files-found: ignore
  pkl-doc-linux-aarch64-snapshot:
    runs-on: ubuntu-24.04-arm
    env:
      LANG: en_US.UTF-8
    steps:
    - uses: actions/checkout@v5
    - uses: actions/setup-java@v5
      with:
        java-version: '21'
        distribution: temurin
        architecture: aarch64
        cache: gradle
    - name: gradle buildNative
      shell: bash
      run: ./gradlew --info --stacktrace -DpklMultiJdkTesting=true pkl-doc:buildNative
    - name: Upload executable artifacts
      uses: actions/upload-artifact@v5
      with:
        name: executable-pkl-doc-linux-aarch64
        path: pkl-doc*/build/executable/**/*
    - name: Upload Test Result XML
      if: '!cancelled()'
      uses: actions/upload-artifact@v5
      with:
        name: test-results-xml-pkl-doc-linux-aarch64-snapshot
        path: '**/build/test-results/**/*.xml'
    - name: Upload Test Result HTML
      if: '!cancelled()'
      uses: actions/upload-artifact@v5
      with:
        name: test-results-html-pkl-doc-linux-aarch64-snapshot
        path: '**/build/reports/tests/**/*'
        if-no-files-found: ignore
  pkl-doc-alpine-linux-amd64-snapshot:
    runs-on: ubuntu-latest
    env:
      LANG: en_US.UTF-8
    steps:
    - uses: actions/checkout@v5
    - uses: actions/setup-java@v5
      with:
        java-version: '21'
        distribution: temurin
        architecture: x64
        cache: gradle
    - name: Install musl and zlib
      run: |
        set -e
        mkdir -p ~/staticdeps/

        ZLIB_VERSION="1.2.13"
        MUSL_VERSION="1.2.5"

        # install zlib
        if [[ ! -f ~/staticdeps/include/zlib.h ]]; then
          # Download zlib tarball and signature
          curl -Lf "https://github.com/madler/zlib/releases/download/v${ZLIB_VERSION}/zlib-${ZLIB_VERSION}.tar.gz" -o /tmp/zlib.tar.gz
          curl -Lf "https://github.com/madler/zlib/releases/download/v${ZLIB_VERSION}/zlib-${ZLIB_VERSION}.tar.gz.asc" -o /tmp/zlib.tar.gz.asc

          # Import zlib GPG key
          gpg --batch --keyserver keyserver.ubuntu.com --recv-keys 5ED46A6721D365587791E2AA783FCD8E58BCAFBA

          # Verify GPG signature
          echo "Verifying zlib GPG signature..."
          gpg --verify /tmp/zlib.tar.gz.asc /tmp/zlib.tar.gz

          mkdir -p "/tmp/dep_zlib-${ZLIB_VERSION}"
          cd "/tmp/dep_zlib-${ZLIB_VERSION}"
          # shellcheck disable=SC2002
          cat /tmp/zlib.tar.gz | tar --strip-components=1 -xzC .

          echo "zlib-${ZLIB_VERSION}: configure..." 
          ./configure --static --prefix="$HOME"/staticdeps > /dev/null

          echo "zlib-${ZLIB_VERSION}: make..." 
          make -s -j4

          echo "zlib-${ZLIB_VERSION}: make install..." 
          make -s install

          rm -rf /tmp/dep_zlib-${ZLIB_VERSION}
        fi

        # install musl
        if [[ ! -f ~/staticdeps/bin/x86_64-linux-musl-gcc ]]; then
          # Download musl tarball and signature
          curl -Lf "https://musl.libc.org/releases/musl-${MUSL_VERSION}.tar.gz" -o /tmp/musl.tar.gz
          curl -Lf "https://musl.libc.org/releases/musl-${MUSL_VERSION}.tar.gz.asc" -o /tmp/musl.tar.gz.asc

          # Import musl GPG key
          gpg --batch --keyserver keyserver.ubuntu.com --recv-keys 836489290BB6B70F99FFDA0556BCDB593020450F

          # Verify GPG signature
          echo "Verifying musl GPG signature..."
          gpg --verify /tmp/musl.tar.gz.asc /tmp/musl.tar.gz

          mkdir -p "/tmp/dep_musl-${MUSL_VERSION}"
          cd "/tmp/dep_musl-${MUSL_VERSION}"

          # shellcheck disable=SC2002
          cat /tmp/musl.tar.gz | tar --strip-components=1 -xzC .

          echo "musl-${MUSL_VERSION}: configure..." 
          ./configure --disable-shared --prefix="$HOME"/staticdeps > /dev/null

          echo "musl-${MUSL_VERSION}: make..." 
          make -s -j4

          echo "musl-${MUSL_VERSION}: make install..." 
          make -s install

          rm -rf "/tmp/dep_musl-${MUSL_VERSION}"

          # native-image expects to find an executable at this path.
          ln -s ~/staticdeps/bin/musl-gcc ~/staticdeps/bin/x86_64-linux-musl-gcc
        fi

        echo "${HOME}/staticdeps/bin" >> "$GITHUB_PATH"
    - name: gradle buildNative
      shell: bash
      run: ./gradlew --info --stacktrace -DpklMultiJdkTesting=true -Dpkl.musl=true pkl-doc:buildNative
    - name: Upload executable artifacts
      uses: actions/upload-artifact@v5
      with:
        name: executable-pkl-doc-alpine-linux-amd64
        path: pkl-doc*/build/executable/**/*
    - name: Upload Test Result XML
      if: '!cancelled()'
      uses: actions/upload-artifact@v5
      with:
        name: test-results-xml-pkl-doc-alpine-linux-amd64-snapshot
        path: '**/build/test-results/**/*.xml'
    - name: Upload Test Result HTML
      if: '!cancelled()'
      uses: actions/upload-artifact@v5
      with:
        name: test-results-html-pkl-doc-alpine-linux-amd64-snapshot
        path: '**/build/reports/tests/**/*'
        if-no-files-found: ignore
  pkl-doc-windows-amd64-snapshot:
    runs-on: windows-latest
    env:
      LANG: en_US.UTF-8
      JAVA_HOME: /jdk
    steps:
    - uses: actions/checkout@v5
    - uses: actions/setup-java@v5
      with:
        java-version: '21'
        distribution: temurin
        architecture: x64
        cache: gradle
    - name: gradle buildNative
      shell: bash
      run: ./gradlew --info --stacktrace -DpklMultiJdkTesting=true pkl-doc:buildNative
    - name: Upload executable artifacts
      uses: actions/upload-artifact@v5
      with:
        name: executable-pkl-doc-windows-amd64
        path: pkl-doc*/build/executable/**/*
    - name: Upload Test Result XML
      if: '!cancelled()'
      uses: actions/upload-artifact@v5
      with:
        name: test-results-xml-pkl-doc-windows-amd64-snapshot
        path: '**/build/test-results/**/*.xml'
    - name: Upload Test Result HTML
      if: '!cancelled()'
      uses: actions/upload-artifact@v5
      with:
        name: test-results-html-pkl-doc-windows-amd64-snapshot
        path: '**/build/reports/tests/**/*'
        if-no-files-found: ignore
  publish-test-results:
    if: '!failure() && !cancelled()'
    needs:
    - gradle-check
    - gradle-check-windows
    - bench
    - gradle-compatibility
    - java-executables-snapshot
    - pkl-cli-macOS-amd64-snapshot
    - pkl-cli-linux-amd64-snapshot
    - pkl-cli-macOS-aarch64-snapshot
    - pkl-cli-linux-aarch64-snapshot
    - pkl-cli-alpine-linux-amd64-snapshot
    - pkl-cli-windows-amd64-snapshot
    - pkl-doc-macOS-amd64-snapshot
    - pkl-doc-linux-amd64-snapshot
    - pkl-doc-macOS-aarch64-snapshot
    - pkl-doc-linux-aarch64-snapshot
    - pkl-doc-alpine-linux-amd64-snapshot
    - pkl-doc-windows-amd64-snapshot
    permissions:
      checks: write
    runs-on: ubuntu-latest
    steps:
    - uses: actions/download-artifact@v6
      with:
        pattern: test-results-xml-*
    - name: Publish test results
      if: '!cancelled()'
      uses: EnricoMi/publish-unit-test-result-action@v2
      with:
        comment_mode: 'off'
        files: test-results-xml-*/**/*.xml
    - name: Upload Test Result HTML
      if: '!cancelled()'
      uses: actions/upload-artifact@v5
      with:
        name: test-results-html-publish-test-results
        path: '**/build/reports/tests/**/*'
        if-no-files-found: ignore
  trigger-downstream-builds:
    if: github.repository_owner == 'apple'
    needs:
    - gradle-check
    - gradle-check-windows
    - bench
    - gradle-compatibility
    - java-executables-snapshot
    - pkl-cli-macOS-amd64-snapshot
    - pkl-cli-linux-amd64-snapshot
    - pkl-cli-macOS-aarch64-snapshot
    - pkl-cli-linux-aarch64-snapshot
    - pkl-cli-alpine-linux-amd64-snapshot
    - pkl-cli-windows-amd64-snapshot
    - pkl-doc-macOS-amd64-snapshot
    - pkl-doc-linux-amd64-snapshot
    - pkl-doc-macOS-aarch64-snapshot
    - pkl-doc-linux-aarch64-snapshot
    - pkl-doc-alpine-linux-amd64-snapshot
    - pkl-doc-windows-amd64-snapshot
    - publish-test-results
    runs-on: ubuntu-latest
    steps:
    - name: Create app token
      id: app-token
      uses: actions/create-github-app-token@v2
      with:
        app-id: ${{ secrets.PKL_CI_CLIENT_ID }}
        private-key: ${{ secrets.PKL_CI }}
        owner: ${{ github.repository_owner }}
    - name: Trigger pkl-lang.org build
      env:
        GH_TOKEN: ${{ steps.app-token.outputs.token }}
      run: |-
        gh workflow run \
          --repo apple/pkl-lang.org \
          --ref main \
          --field source_run="${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}" \
          main.yml
