From 29cb9d3a275e6aa47cc495fe26d64129bef25bc4 Mon Sep 17 00:00:00 2001 From: Shang Chieh Tseng Date: Mon, 11 Aug 2025 19:22:12 +0800 Subject: [PATCH] Remove GitHub Actions workflows from fork MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Removed all GitHub Actions workflows (.github/workflows/) as they're not needed for this Tesla K80 support fork. The workflows were designed for the official Ollama repository's CI/CD pipeline and would fail in a fork since they: - Attempt to push to Ollama's Docker Hub - Run automated tests on PRs (not needed for personal fork) - Handle official release process 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- .github/workflows/latest.yaml | 24 --- .github/workflows/release.yaml | 383 --------------------------------- .github/workflows/test.yaml | 244 --------------------- 3 files changed, 651 deletions(-) delete mode 100644 .github/workflows/latest.yaml delete mode 100644 .github/workflows/release.yaml delete mode 100644 .github/workflows/test.yaml diff --git a/.github/workflows/latest.yaml b/.github/workflows/latest.yaml deleted file mode 100644 index 4d47dd36..00000000 --- a/.github/workflows/latest.yaml +++ /dev/null @@ -1,24 +0,0 @@ -name: latest - -on: - release: - types: [released] - -jobs: - update-latest: - environment: release - runs-on: linux - steps: - - uses: actions/checkout@v4 - - name: Login to Docker Hub - uses: docker/login-action@v3 - with: - username: ${{ vars.DOCKER_USER }} - password: ${{ secrets.DOCKER_ACCESS_TOKEN }} - - name: Tag images as latest - env: - PUSH: "1" - shell: bash - run: | - export "VERSION=${GITHUB_REF_NAME#v}" - ./scripts/tag_latest.sh diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml deleted file mode 100644 index 40871e64..00000000 --- a/.github/workflows/release.yaml +++ /dev/null @@ -1,383 +0,0 @@ -name: release - -on: - push: - tags: - - 'v*' - -env: - CGO_CFLAGS: '-O3' - CGO_CXXFLAGS: '-O3' - -jobs: - setup-environment: - runs-on: ubuntu-latest - environment: release - outputs: - GOFLAGS: ${{ steps.goflags.outputs.GOFLAGS }} - steps: - - uses: actions/checkout@v4 - - name: Set environment - id: goflags - run: | - echo GOFLAGS="'-ldflags=-w -s \"-X=github.com/ollama/ollama/version.Version=${GITHUB_REF_NAME#v}\" \"-X=github.com/ollama/ollama/server.mode=release\"'" >>$GITHUB_OUTPUT - - darwin-build: - runs-on: macos-13-xlarge - environment: release - needs: setup-environment - strategy: - matrix: - os: [darwin] - arch: [amd64, arm64] - env: - GOFLAGS: ${{ needs.setup-environment.outputs.GOFLAGS }} - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-go@v5 - with: - go-version-file: go.mod - - run: | - go build -o dist/ . - env: - GOOS: ${{ matrix.os }} - GOARCH: ${{ matrix.arch }} - CGO_ENABLED: 1 - CGO_CPPFLAGS: '-mmacosx-version-min=11.3' - - if: matrix.arch == 'amd64' - run: | - cmake --preset CPU -DCMAKE_OSX_DEPLOYMENT_TARGET=11.3 -DCMAKE_SYSTEM_PROCESSOR=x86_64 -DCMAKE_OSX_ARCHITECTURES=x86_64 - cmake --build --parallel --preset CPU - cmake --install build --component CPU --strip --parallel 8 - - uses: actions/upload-artifact@v4 - with: - name: build-${{ matrix.os }}-${{ matrix.arch }} - path: dist/* - - windows-depends: - strategy: - matrix: - os: [windows] - arch: [amd64] - preset: ['CPU'] - include: - - os: windows - arch: amd64 - preset: 'CUDA 12' - install: https://developer.download.nvidia.com/compute/cuda/12.8.0/local_installers/cuda_12.8.0_571.96_windows.exe - cuda-version: '12.8' - flags: '' - - os: windows - arch: amd64 - preset: 'ROCm 6' - install: https://download.amd.com/developer/eula/rocm-hub/AMD-Software-PRO-Edition-24.Q4-WinSvr2022-For-HIP.exe - rocm-version: '6.2' - flags: '-DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_C_FLAGS="-parallel-jobs=4 -Wno-ignored-attributes -Wno-deprecated-pragma" -DCMAKE_CXX_FLAGS="-parallel-jobs=4 -Wno-ignored-attributes -Wno-deprecated-pragma"' - runs-on: ${{ matrix.arch == 'arm64' && format('{0}-{1}', matrix.os, matrix.arch) || matrix.os }} - environment: release - env: - GOFLAGS: ${{ needs.setup-environment.outputs.GOFLAGS }} - steps: - - name: Install system dependencies - run: | - choco install -y --no-progress ccache ninja - ccache -o cache_dir=${{ github.workspace }}\.ccache - - if: startsWith(matrix.preset, 'CUDA ') || startsWith(matrix.preset, 'ROCm ') - id: cache-install - uses: actions/cache/restore@v4 - with: - path: | - C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA - C:\Program Files\AMD\ROCm - key: ${{ matrix.install }} - - if: startsWith(matrix.preset, 'CUDA ') - name: Install CUDA ${{ matrix.cuda-version }} - run: | - $ErrorActionPreference = "Stop" - if ("${{ steps.cache-install.outputs.cache-hit }}" -ne 'true') { - Invoke-WebRequest -Uri "${{ matrix.install }}" -OutFile "install.exe" - $subpackages = @("cudart", "nvcc", "cublas", "cublas_dev") | Foreach-Object {"${_}_${{ matrix.cuda-version }}"} - Start-Process -FilePath .\install.exe -ArgumentList (@("-s") + $subpackages) -NoNewWindow -Wait - } - - $cudaPath = (Resolve-Path "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\*").path - echo "$cudaPath\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append - - if: startsWith(matrix.preset, 'ROCm') - name: Install ROCm ${{ matrix.rocm-version }} - run: | - $ErrorActionPreference = "Stop" - if ("${{ steps.cache-install.outputs.cache-hit }}" -ne 'true') { - Invoke-WebRequest -Uri "${{ matrix.install }}" -OutFile "install.exe" - Start-Process -FilePath .\install.exe -ArgumentList '-install' -NoNewWindow -Wait - } - - $hipPath = (Resolve-Path "C:\Program Files\AMD\ROCm\*").path - echo "$hipPath\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append - echo "CC=$hipPath\bin\clang.exe" | Out-File -FilePath $env:GITHUB_ENV -Append - echo "CXX=$hipPath\bin\clang++.exe" | Out-File -FilePath $env:GITHUB_ENV -Append - echo "HIPCXX=$hipPath\bin\clang++.exe" | Out-File -FilePath $env:GITHUB_ENV -Append - echo "HIP_PLATFORM=amd" | Out-File -FilePath $env:GITHUB_ENV -Append - echo "CMAKE_PREFIX_PATH=$hipPath" | Out-File -FilePath $env:GITHUB_ENV -Append - - if: matrix.preset == 'CPU' - run: | - echo "CC=clang.exe" | Out-File -FilePath $env:GITHUB_ENV -Append - echo "CXX=clang++.exe" | Out-File -FilePath $env:GITHUB_ENV -Append - - if: ${{ !cancelled() && steps.cache-install.outputs.cache-hit != 'true' }} - uses: actions/cache/save@v4 - with: - path: | - C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA - C:\Program Files\AMD\ROCm - key: ${{ matrix.install }} - - uses: actions/checkout@v4 - - uses: actions/cache@v4 - with: - path: ${{ github.workspace }}\.ccache - key: ccache-${{ matrix.os }}-${{ matrix.arch }}-${{ matrix.preset }} - - name: Build target "${{ matrix.preset }}" - run: | - Import-Module 'C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\Tools\Microsoft.VisualStudio.DevShell.dll' - Enter-VsDevShell -VsInstallPath 'C:\Program Files\Microsoft Visual Studio\2022\Enterprise' -SkipAutomaticLocation -DevCmdArguments '-arch=x64 -no_logo' - cmake --preset "${{ matrix.preset }}" ${{ matrix.flags }} - cmake --build --parallel --preset "${{ matrix.preset }}" - cmake --install build --component "${{ startsWith(matrix.preset, 'CUDA ') && 'CUDA' || startsWith(matrix.preset, 'ROCm ') && 'HIP' || 'CPU' }}" --strip --parallel 8 - env: - CMAKE_GENERATOR: Ninja - - uses: actions/upload-artifact@v4 - with: - name: depends-${{ matrix.os }}-${{ matrix.arch }}-${{ matrix.preset }} - path: dist\* - - windows-build: - strategy: - matrix: - os: [windows] - arch: [amd64, arm64] - runs-on: ${{ matrix.arch == 'arm64' && format('{0}-{1}', matrix.os, matrix.arch) || matrix.os }} - environment: release - needs: [setup-environment] - env: - GOFLAGS: ${{ needs.setup-environment.outputs.GOFLAGS }} - steps: - - name: Install AMD64 system dependencies - if: matrix.arch == 'amd64' - run: | - $ErrorActionPreference = "Stop" - Start-Process "C:\msys64\usr\bin\pacman.exe" -ArgumentList @("-S", "--noconfirm", "mingw-w64-clang-x86_64-gcc-compat", "mingw-w64-clang-x86_64-clang") -NoNewWindow -Wait - echo "C:\msys64\usr\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append - echo "C:\msys64\clang64\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append - - name: Install ARM64 system dependencies - if: matrix.arch == 'arm64' - run: | - $ErrorActionPreference = "Stop" - Set-ExecutionPolicy Bypass -Scope Process -Force - [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072 - iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1')) - echo "C:\ProgramData\chocolatey\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append - - choco install -y --no-progress git gzip - echo "C:\Program Files\Git\cmd" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append - - Invoke-WebRequest -Uri "https://github.com/mstorsjo/llvm-mingw/releases/download/20240619/llvm-mingw-20240619-ucrt-aarch64.zip" -OutFile "${{ runner.temp }}\llvm-mingw-ucrt-aarch64.zip" - Expand-Archive -Path ${{ runner.temp }}\llvm-mingw-ucrt-aarch64.zip -DestinationPath "C:\Program Files\" - $installPath=(Resolve-Path -Path "C:\Program Files\llvm-mingw-*-ucrt-aarch64").path - echo $installPath\bin | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append - - uses: actions/checkout@v4 - - uses: actions/setup-go@v5 - with: - go-version-file: go.mod - - run: | - go build -o dist/${{ matrix.os }}-${{ matrix.arch }}/ . - - uses: actions/upload-artifact@v4 - with: - name: build-${{ matrix.os }}-${{ matrix.arch }} - path: | - dist\${{ matrix.os }}-${{ matrix.arch }}\*.exe - - linux-build: - strategy: - matrix: - include: - - os: linux - arch: amd64 - target: archive - - os: linux - arch: amd64 - target: rocm - - os: linux - arch: arm64 - target: archive - runs-on: ${{ matrix.arch == 'arm64' && format('{0}-{1}', matrix.os, matrix.arch) || matrix.os }} - environment: release - needs: setup-environment - env: - GOFLAGS: ${{ needs.setup-environment.outputs.GOFLAGS }} - steps: - - uses: actions/checkout@v4 - - uses: docker/setup-buildx-action@v3 - - uses: docker/build-push-action@v6 - with: - context: . - platforms: ${{ matrix.os }}/${{ matrix.arch }} - target: ${{ matrix.target }} - build-args: | - GOFLAGS=${{ env.GOFLAGS }} - CGO_CFLAGS=${{ env.CGO_CFLAGS }} - CGO_CXXFLAGS=${{ env.CGO_CXXFLAGS }} - outputs: type=local,dest=dist/${{ matrix.os }}-${{ matrix.arch }} - cache-from: type=registry,ref=${{ vars.DOCKER_REPO }}:latest - cache-to: type=inline - - run: | - for COMPONENT in bin/* lib/ollama/*; do - case "$COMPONENT" in - bin/ollama) echo $COMPONENT >>ollama-${{ matrix.os }}-${{ matrix.arch }}.tar.in ;; - lib/ollama/*.so*) echo $COMPONENT >>ollama-${{ matrix.os }}-${{ matrix.arch }}.tar.in ;; - lib/ollama/cuda_sbsa) echo $COMPONENT >>ollama-${{ matrix.os }}-${{ matrix.arch }}.tar.in ;; - lib/ollama/cuda_jetpack5) echo $COMPONENT >>ollama-${{ matrix.os }}-${{ matrix.arch }}-jetpack5.tar.in ;; - lib/ollama/cuda_jetpack6) echo $COMPONENT >>ollama-${{ matrix.os }}-${{ matrix.arch }}-jetpack6.tar.in ;; - lib/ollama/rocm) echo $COMPONENT >>ollama-${{ matrix.os }}-${{ matrix.arch }}-rocm.tar.in ;; - esac - done - working-directory: dist/${{ matrix.os }}-${{ matrix.arch }} - - run: | - echo "Manifests" - for ARCHIVE in dist/${{ matrix.os }}-${{ matrix.arch }}/*.tar.in ; do - echo $ARCHIVE - cat $ARCHIVE - done - - run: | - for ARCHIVE in dist/${{ matrix.os }}-${{ matrix.arch }}/*.tar.in; do - tar c -C dist/${{ matrix.os }}-${{ matrix.arch }} -T $ARCHIVE --owner 0 --group 0 | pigz -9vc >$(basename ${ARCHIVE//.*/}.tgz); - done - - uses: actions/upload-artifact@v4 - with: - name: dist-${{ matrix.os }}-${{ matrix.arch }}-${{ matrix.target }} - path: | - *.tgz - - # Build each Docker variant (OS, arch, and flavor) separately. Using QEMU is unreliable and slower. - docker-build-push: - strategy: - matrix: - include: - - os: linux - arch: arm64 - build-args: | - CGO_CFLAGS - CGO_CXXFLAGS - GOFLAGS - - os: linux - arch: amd64 - build-args: | - CGO_CFLAGS - CGO_CXXFLAGS - GOFLAGS - - os: linux - arch: amd64 - suffix: '-rocm' - build-args: | - CGO_CFLAGS - CGO_CXXFLAGS - GOFLAGS - FLAVOR=rocm - runs-on: ${{ matrix.arch == 'arm64' && format('{0}-{1}', matrix.os, matrix.arch) || matrix.os }} - environment: release - needs: setup-environment - env: - GOFLAGS: ${{ needs.setup-environment.outputs.GOFLAGS }} - steps: - - uses: actions/checkout@v4 - - uses: docker/setup-buildx-action@v3 - - uses: docker/login-action@v3 - with: - username: ${{ vars.DOCKER_USER }} - password: ${{ secrets.DOCKER_ACCESS_TOKEN }} - - id: build-push - uses: docker/build-push-action@v6 - with: - context: . - platforms: ${{ matrix.os }}/${{ matrix.arch }} - build-args: ${{ matrix.build-args }} - outputs: type=image,name=${{ vars.DOCKER_REPO }},push-by-digest=true,name-canonical=true,push=true - cache-from: type=registry,ref=${{ vars.DOCKER_REPO }}:latest - cache-to: type=inline - - run: | - mkdir -p ${{ matrix.os }}-${{ matrix.arch }} - echo "${{ steps.build-push.outputs.digest }}" >${{ matrix.os }}-${{ matrix.arch }}-${{ matrix.suffix }}.txt - working-directory: ${{ runner.temp }} - - uses: actions/upload-artifact@v4 - with: - name: digest-${{ matrix.os }}-${{ matrix.arch }}-${{ matrix.suffix }} - path: | - ${{ runner.temp }}/${{ matrix.os }}-${{ matrix.arch }}-${{ matrix.suffix }}.txt - - # Merge Docker images for the same flavor into a single multi-arch manifest - docker-merge-push: - strategy: - matrix: - suffix: ['', '-rocm'] - runs-on: linux - environment: release - needs: [docker-build-push] - steps: - - uses: docker/login-action@v3 - with: - username: ${{ vars.DOCKER_USER }} - password: ${{ secrets.DOCKER_ACCESS_TOKEN }} - - id: metadata - uses: docker/metadata-action@v4 - with: - flavor: | - latest=false - suffix=${{ matrix.suffix }} - images: | - ${{ vars.DOCKER_REPO }} - tags: | - type=ref,enable=true,priority=600,prefix=pr-,event=pr - type=semver,pattern={{version}} - - uses: actions/download-artifact@v4 - with: - pattern: digest-* - path: ${{ runner.temp }} - merge-multiple: true - - run: | - docker buildx imagetools create $(echo '${{ steps.metadata.outputs.json }}' | jq -cr '.tags | map("-t", .) | join(" ")') $(cat *-${{ matrix.suffix }}.txt | xargs printf '${{ vars.DOCKER_REPO }}@%s ') - docker buildx imagetools inspect ${{ vars.DOCKER_REPO }}:${{ steps.metadata.outputs.version }} - working-directory: ${{ runner.temp }} - - # Trigger downstream release process - trigger: - runs-on: ubuntu-latest - environment: release - needs: [darwin-build, windows-build, windows-depends, linux-build] - permissions: - contents: write - env: - GH_TOKEN: ${{ github.token }} - steps: - - uses: actions/checkout@v4 - - name: Create or update Release for tag - run: | - RELEASE_VERSION="$(echo ${GITHUB_REF_NAME} | cut -f1 -d-)" - echo "Looking for existing release for ${RELEASE_VERSION}" - OLD_TAG=$(gh release ls --json name,tagName | jq -r ".[] | select(.name == \"${RELEASE_VERSION}\") | .tagName") - if [ -n "$OLD_TAG" ]; then - echo "Updating release ${RELEASE_VERSION} to point to new tag ${GITHUB_REF_NAME}" - gh release edit ${OLD_TAG} --tag ${GITHUB_REF_NAME} - else - echo "Creating new release ${RELEASE_VERSION} pointing to tag ${GITHUB_REF_NAME}" - gh release create ${GITHUB_REF_NAME} \ - --title ${RELEASE_VERSION} \ - --draft \ - --generate-notes \ - --prerelease - fi - - name: Trigger downstream release process - run: | - curl -L \ - -X POST \ - -H "Accept: application/vnd.github+json" \ - -H "Authorization: Bearer ${{ secrets.RELEASE_TOKEN }}" \ - -H "X-GitHub-Api-Version: 2022-11-28" \ - https://api.github.com/repos/ollama/${{ vars.RELEASE_REPO }}/dispatches \ - -d "{\"event_type\": \"trigger-workflow\", \"client_payload\": {\"run_id\": \"${GITHUB_RUN_ID}\", \"version\": \"${GITHUB_REF_NAME#v}\", \"origin\": \"${GITHUB_REPOSITORY}\", \"publish\": \"1\"}}" diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml deleted file mode 100644 index 4d8cf773..00000000 --- a/.github/workflows/test.yaml +++ /dev/null @@ -1,244 +0,0 @@ -name: test - -concurrency: - # For PRs, later CI runs preempt previous ones. e.g. a force push on a PR - # cancels running CI jobs and starts all new ones. - # - # For non-PR pushes, concurrency.group needs to be unique for every distinct - # CI run we want to have happen. Use run_id, which in practice means all - # non-PR CI runs will be allowed to run without preempting each other. - group: ${{ github.workflow }}-$${{ github.pull_request.number || github.run_id }} - cancel-in-progress: true - -on: - pull_request: - paths: - - '**/*' - - '!docs/**' - - '!README.md' - -jobs: - changes: - runs-on: ubuntu-latest - outputs: - changed: ${{ steps.changes.outputs.changed }} - steps: - - uses: actions/checkout@v4 - with: - fetch-depth: 0 - - id: changes - run: | - changed() { - local BASE=${{ github.event.pull_request.base.sha }} - local HEAD=${{ github.event.pull_request.head.sha }} - local MERGE_BASE=$(git merge-base $BASE $HEAD) - git diff-tree -r --no-commit-id --name-only "$MERGE_BASE" "$HEAD" \ - | xargs python3 -c "import sys; from pathlib import Path; print(any(Path(x).match(glob) for x in sys.argv[1:] for glob in '$*'.split(' ')))" - } - - echo changed=$(changed 'llama/llama.cpp/**/*' 'ml/backend/ggml/ggml/**/*') | tee -a $GITHUB_OUTPUT - - linux: - needs: [changes] - if: needs.changes.outputs.changed == 'True' - strategy: - matrix: - include: - - preset: CPU - - preset: CUDA - container: nvidia/cuda:12.8.1-devel-ubuntu22.04 - flags: '-DCMAKE_CUDA_ARCHITECTURES=87' - - preset: ROCm - container: rocm/dev-ubuntu-22.04:6.1.2 - extra-packages: rocm-libs - flags: '-DAMDGPU_TARGETS=gfx1010 -DCMAKE_PREFIX_PATH=/opt/rocm' - runs-on: linux - container: ${{ matrix.container }} - steps: - - uses: actions/checkout@v4 - - run: | - [ -n "${{ matrix.container }}" ] || sudo=sudo - $sudo apt-get update - $sudo apt-get install -y cmake ccache ${{ matrix.extra-packages }} - env: - DEBIAN_FRONTEND: noninteractive - - uses: actions/cache@v4 - with: - path: /github/home/.cache/ccache - key: ccache-${{ runner.os }}-${{ runner.arch }}-${{ matrix.preset }} - - run: | - cmake --preset ${{ matrix.preset }} ${{ matrix.flags }} - cmake --build --preset ${{ matrix.preset }} --parallel - - windows: - needs: [changes] - if: needs.changes.outputs.changed == 'True' - strategy: - matrix: - include: - - preset: CPU - - preset: CUDA - install: https://developer.download.nvidia.com/compute/cuda/12.8.0/local_installers/cuda_12.8.0_571.96_windows.exe - flags: '-DCMAKE_CUDA_ARCHITECTURES=80' - - preset: ROCm - install: https://download.amd.com/developer/eula/rocm-hub/AMD-Software-PRO-Edition-24.Q4-WinSvr2022-For-HIP.exe - flags: '-DAMDGPU_TARGETS=gfx1010 -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_C_FLAGS="-parallel-jobs=4 -Wno-ignored-attributes -Wno-deprecated-pragma" -DCMAKE_CXX_FLAGS="-parallel-jobs=4 -Wno-ignored-attributes -Wno-deprecated-pragma"' - runs-on: windows - steps: - - run: | - choco install -y --no-progress ccache ninja - ccache -o cache_dir=${{ github.workspace }}\.ccache - - if: matrix.preset == 'CUDA' || matrix.preset == 'ROCm' - id: cache-install - uses: actions/cache/restore@v4 - with: - path: | - C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA - C:\Program Files\AMD\ROCm - key: ${{ matrix.install }} - - if: matrix.preset == 'CUDA' - name: Install CUDA ${{ matrix.cuda-version }} - run: | - $ErrorActionPreference = "Stop" - if ("${{ steps.cache-install.outputs.cache-hit }}" -ne 'true') { - Invoke-WebRequest -Uri "${{ matrix.install }}" -OutFile "install.exe" - Start-Process -FilePath .\install.exe -ArgumentList (@("-s", "cudart_12.8", "nvcc_12.8", "cublas_12.8", "cublas_dev_12.8")) -NoNewWindow -Wait - } - - $cudaPath = (Resolve-Path "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\*").path - echo "$cudaPath\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append - - if: matrix.preset == 'ROCm' - name: Install ROCm ${{ matrix.rocm-version }} - run: | - $ErrorActionPreference = "Stop" - if ("${{ steps.cache-install.outputs.cache-hit }}" -ne 'true') { - Invoke-WebRequest -Uri "${{ matrix.install }}" -OutFile "install.exe" - Start-Process -FilePath .\install.exe -ArgumentList '-install' -NoNewWindow -Wait - } - - $hipPath = (Resolve-Path "C:\Program Files\AMD\ROCm\*").path - echo "$hipPath\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append - echo "CC=$hipPath\bin\clang.exe" | Out-File -FilePath $env:GITHUB_ENV -Append - echo "CXX=$hipPath\bin\clang++.exe" | Out-File -FilePath $env:GITHUB_ENV -Append - echo "HIPCXX=$hipPath\bin\clang++.exe" | Out-File -FilePath $env:GITHUB_ENV -Append - echo "HIP_PLATFORM=amd" | Out-File -FilePath $env:GITHUB_ENV -Append - echo "CMAKE_PREFIX_PATH=$hipPath" | Out-File -FilePath $env:GITHUB_ENV -Append - - if: ${{ !cancelled() && steps.cache-install.outputs.cache-hit != 'true' }} - uses: actions/cache/save@v4 - with: - path: | - C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA - C:\Program Files\AMD\ROCm - key: ${{ matrix.install }} - - uses: actions/checkout@v4 - - uses: actions/cache@v4 - with: - path: ${{ github.workspace }}\.ccache - key: ccache-${{ runner.os }}-${{ runner.arch }}-${{ matrix.preset }} - - run: | - Import-Module 'C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\Tools\Microsoft.VisualStudio.DevShell.dll' - Enter-VsDevShell -VsInstallPath 'C:\Program Files\Microsoft Visual Studio\2022\Enterprise' -SkipAutomaticLocation -DevCmdArguments '-arch=x64 -no_logo' - cmake --preset "${{ matrix.preset }}" ${{ matrix.flags }} - cmake --build --parallel --preset "${{ matrix.preset }}" - env: - CMAKE_GENERATOR: Ninja - - go_mod_tidy: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - name: check that 'go mod tidy' is clean - run: go mod tidy --diff || (echo "Please run 'go mod tidy'." && exit 1) - - test: - strategy: - matrix: - os: [ubuntu-latest, macos-latest, windows-latest] - runs-on: ${{ matrix.os }} - env: - CGO_ENABLED: '1' - GOEXPERIMENT: 'synctest' - steps: - - name: checkout - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # 4.2.2 - - - name: cache restore - uses: actions/cache/restore@1bd1e32a3bdc45362d1e726936510720a7c30a57 # v4.2.0 - with: - # Note: unlike the other setups, this is only grabbing the mod download - # cache, rather than the whole mod directory, as the download cache - # contains zips that can be unpacked in parallel faster than they can be - # fetched and extracted by tar - path: | - ~/.cache/go-build - ~/go/pkg/mod/cache - ~\AppData\Local\go-build - # NOTE: The -3- here should be incremented when the scheme of data to be - # cached changes (e.g. path above changes). - key: ${{ github.job }}-${{ runner.os }}-${{ matrix.goarch }}-${{ matrix.buildflags }}-go-3-${{ hashFiles('**/go.sum') }}-${{ github.run_id }} - restore-keys: | - ${{ github.job }}-${{ runner.os }}-${{ matrix.goarch }}-${{ matrix.buildflags }}-go-3-${{ hashFiles('**/go.sum') }} - ${{ github.job }}-${{ runner.os }}-${{ matrix.goarch }}-${{ matrix.buildflags }}-go-3- - - - name: Setup Go - uses: actions/setup-go@v5 - with: - # The caching strategy of setup-go is less than ideal, and wastes - # time by not saving artifacts due to small failures like the linter - # complaining, etc. This means subsequent have to rebuild their world - # again until all checks pass. For instance, if you mispell a word, - # you're punished until you fix it. This is more hostile than - # helpful. - cache: false - - go-version-file: go.mod - - # It is tempting to run this in a platform independent way, but the past - # shows this codebase will see introductions of platform specific code - # generation, and so we need to check this per platform to ensure we - # don't abuse go generate on specific platforms. - - name: check that 'go generate' is clean - if: always() - run: | - go generate ./... - git diff --name-only --exit-code || (echo "Please run 'go generate ./...'." && exit 1) - - - name: go test - if: always() - run: go test -count=1 -benchtime=1x ./... - - # TODO(bmizerany): replace this heavy tool with just the - # tools/checks/binaries we want and then make them all run in parallel - # across jobs, not on a single tiny vm on Github Actions. - - uses: golangci/golangci-lint-action@v6 - with: - args: --timeout 10m0s -v - - - name: cache save - # Always save the cache, even if the job fails. The artifacts produced - # during the building of test binaries are not all for naught. They can - # be used to speed up subsequent runs. - if: always() - - uses: actions/cache/save@1bd1e32a3bdc45362d1e726936510720a7c30a57 # v4.2.0 - with: - # Note: unlike the other setups, this is only grabbing the mod download - # cache, rather than the whole mod directory, as the download cache - # contains zips that can be unpacked in parallel faster than they can be - # fetched and extracted by tar - path: | - ~/.cache/go-build - ~/go/pkg/mod/cache - ~\AppData\Local\go-build - # NOTE: The -3- here should be incremented when the scheme of data to be - # cached changes (e.g. path above changes). - key: ${{ github.job }}-${{ runner.os }}-${{ matrix.goarch }}-${{ matrix.buildflags }}-go-3-${{ hashFiles('**/go.sum') }}-${{ github.run_id }} - - patches: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - name: Verify patches apply cleanly and do not change files - run: | - make -f Makefile.sync clean checkout apply-patches sync - git diff --compact-summary --exit-code \ No newline at end of file