Skip to content

GreenDamTan build dev sha 3a4fd924a27c46901af4641ed6ec51037d85fdb5 #22

GreenDamTan build dev sha 3a4fd924a27c46901af4641ed6ec51037d85fdb5

GreenDamTan build dev sha 3a4fd924a27c46901af4641ed6ec51037d85fdb5 #22

Workflow file for this run

name: Test Release
run-name: ${{ github.actor }} build ${{ github.ref_name }} sha ${{ github.sha }}
permissions:
contents: write
actions: write
concurrency:
group: release-${{ github.ref }}
cancel-in-progress: true
on:
workflow_dispatch:
inputs:
make_release:
description: "Do you want to create a release?"
required: true
type: boolean
default: false
enable_ccache:
description: "Do you want to enable ccache?"
required: true
type: boolean
default: true
env:
proj_name: "appstore.driver.gpu.nvidia.grid"
kernel_module_package_name: "appstore.driver.gpu.nvidia.ko"
jobs:
validate_version_matrix:
runs-on: ubuntu-latest
steps:
- name: Check out repository code
uses: actions/checkout@v6
- name: Validate driver version matrix
run: |
python3 - <<'PY'
import re
from collections import Counter
from pathlib import Path
workflow = Path(".github/workflows/test_release.yml").read_text(encoding="utf-8")
expected = {
("580.159.03-3", "580.159.03"),
("535.309.01-1", "535.309.01"),
}
expected_counts = {
"580.159.03-3": 8,
"535.309.01-1": 7,
}
pairs = set(re.findall(
r'^\s+- this_pack_version: "([^"]+)"\n\s+this_pack_nvidia_driver_version: "([^"]+)"',
workflow,
flags=re.M,
))
if pairs != expected:
print(f"Unexpected package/driver pairs: {sorted(pairs)}")
raise SystemExit(1)
versions = Counter(re.findall(r'^\s+- this_pack_version: "([^"]+)"', workflow, flags=re.M))
for this_pack_version, expected_count in sorted(expected_counts.items()):
if versions[this_pack_version] != expected_count:
print(f"{this_pack_version}: expected {expected_count} matrix entries, found {versions[this_pack_version]}")
raise SystemExit(1)
PY
prepare_driver_package:
uses: ./.github/workflows/nvidia-grid-kernel-src.yml
secrets: inherit
needs:
- validate_version_matrix
strategy:
fail-fast: false
matrix:
include:
- this_pack_version: "580.159.03-3"
this_pack_nvidia_driver_version: "580.159.03"
this_pack_nvidia_driver_page_url: "https://www.nvidia.com/en-us/drivers/details/267577/"
this_pack_grid_download_url: "https://alist.homelabproject.cc/d/foxipan/vGPU/19.5/NVIDIA-GRID-Linux-KVM-580.159.01-580.159.03-582.53/Guest_Drivers/NVIDIA-Linux-x86_64-580.159.03-grid.run"
this_pack_grid_run: "NVIDIA-Linux-x86_64-580.159.03-grid.run"
this_pack_nvlts_version: ""
- this_pack_version: "535.309.01-1"
this_pack_nvidia_driver_version: "535.309.01"
this_pack_nvidia_driver_page_url: "https://www.nvidia.cn/drivers/details/267227/"
this_pack_grid_download_url: "https://alist.homelabproject.cc/d/foxipan/vGPU/16.14/NVIDIA-GRID-Linux-KVM-535.309.01-539.72/Guest_Drivers/NVIDIA-Linux-x86_64-535.309.01-grid.run"
this_pack_grid_run: "NVIDIA-Linux-x86_64-535.309.01-grid.run"
this_pack_nvlts_version: ""
with:
driver_pkg_artifact: nvidia-grid-kernel-src-${{ matrix.this_pack_nvidia_driver_version }}
firmware_artifact: nvidia-grid-firmware-${{ matrix.this_pack_nvidia_driver_version }}
runfile_artifact: nvidia-grid-runfile-${{ matrix.this_pack_nvidia_driver_version }}
this_pack_grid_download_url: ${{ matrix.this_pack_grid_download_url }}
this_pack_grid_run: ${{ matrix.this_pack_grid_run }}
prepare_nvlts:
uses: ./.github/workflows/nvlts.yml
secrets: inherit
needs:
- validate_version_matrix
strategy:
fail-fast: false
matrix:
include:
- this_pack_version: "580.159.03-3"
this_pack_nvidia_driver_version: "580.159.03"
this_pack_nvlts_version: ""
with:
nvlts_version: ${{ matrix.this_pack_nvlts_version }}
nvlts_artifact: nvlts-${{ matrix.this_pack_nvidia_driver_version }}
package_kernel_space:
uses: ./.github/workflows/kernel_space.yml
secrets: inherit
needs:
- prepare_driver_package
strategy:
fail-fast: false
matrix:
include:
- this_pack_version: "580.159.03-3"
this_pack_nvidia_driver_version: "580.159.03"
this_pack_nvidia_driver_page_url: "https://www.nvidia.com/en-us/drivers/details/267577/"
- this_pack_version: "535.309.01-1"
this_pack_nvidia_driver_version: "535.309.01"
this_pack_nvidia_driver_page_url: "https://www.nvidia.cn/drivers/details/267227/"
with:
kernel_module_package_name: appstore.driver.gpu.nvidia.ko
this_pack_version: ${{ matrix.this_pack_version }}
this_pack_nvidia_driver_version: ${{ matrix.this_pack_nvidia_driver_version }}
this_pack_nvidia_driver_page_url: ${{ matrix.this_pack_nvidia_driver_page_url }}
driver_pkg_artifact: nvidia-grid-kernel-src-${{ matrix.this_pack_nvidia_driver_version }}
firmware_artifact: nvidia-grid-firmware-${{ matrix.this_pack_nvidia_driver_version }}
enable_ccache: ${{ inputs.enable_ccache }}
prune_ccache:
if: ${{ always() && inputs.enable_ccache }}
needs:
- package_kernel_space
runs-on: ubuntu-latest
permissions:
actions: write
steps:
- name: Keep latest two ccache entries per kernel and driver
continue-on-error: true
env:
GH_TOKEN: ${{ github.token }}
GH_REPO: ${{ github.repository }}
run: |
set -euo pipefail
echo "Repository: $GH_REPO"
echo "Authenticated as: $(gh api user --jq .login 2>/dev/null || echo unknown)"
echo "Listing ccache entries..."
caches_file="$(mktemp)"
delete_file="$(mktemp)"
gh cache list --key ccache- --limit 1000 --json id,key,createdAt,lastAccessedAt,sizeInBytes > "$caches_file"
cache_count="$(jq 'length' "$caches_file")"
echo "Found $cache_count cache entries with ccache- prefix."
jq -r '
sort_by(.key)
| .[]
| "- id=\(.id) key=\(.key) createdAt=\(.createdAt) lastAccessedAt=\(.lastAccessedAt) size=\(.sizeInBytes)"
' "$caches_file"
jq -c '
map(select(.key | test("^ccache-.+-[0-9]+-[0-9]+$")))
| group_by(.key | sub("-[0-9]+-[0-9]+$"; ""))
| map(sort_by(.createdAt) | reverse | .[2:][]?)
| .[]
' "$caches_file" > "$delete_file"
delete_count="$(jq -s 'length' "$delete_file")"
if [ "$delete_count" -eq 0 ]; then
echo "No old ccache entries to delete."
exit 0
fi
echo "Deleting $delete_count old ccache entries. Keeping latest two entries per key prefix."
jq -r '
"- id=\(.id) key=\(.key) createdAt=\(.createdAt) lastAccessedAt=\(.lastAccessedAt) size=\(.sizeInBytes)"
' "$delete_file"
while IFS= read -r cache; do
[ -n "$cache" ] || continue
cache_id="$(jq -r '.id' <<< "$cache")"
cache_key="$(jq -r '.key' <<< "$cache")"
cache_created_at="$(jq -r '.createdAt' <<< "$cache")"
echo "::group::Delete cache id=$cache_id key=$cache_key"
echo "createdAt=$cache_created_at"
if output="$(gh cache delete "$cache_id" 2>&1)"; then
echo "Deleted cache id=$cache_id key=$cache_key"
else
status="$?"
echo "::warning::Failed to delete cache id=$cache_id key=$cache_key exit=$status"
echo "$output"
fi
echo "::endgroup::"
done < "$delete_file"
package_user_space:
uses: ./.github/workflows/user_space.yml
secrets: inherit
needs:
- prepare_driver_package
- prepare_nvlts
strategy:
fail-fast: false
matrix:
include:
- this_pack_version: "580.159.03-3"
this_pack_nvidia_driver_version: "580.159.03"
this_pack_nvidia_driver_page_url: "https://www.nvidia.com/en-us/drivers/details/267577/"
this_pack_grid_run: "NVIDIA-Linux-x86_64-580.159.03-grid.run"
this_pack_enable_nvlts: true
- this_pack_version: "535.309.01-1"
this_pack_nvidia_driver_version: "535.309.01"
this_pack_nvidia_driver_page_url: "https://www.nvidia.cn/drivers/details/267227/"
this_pack_grid_run: "NVIDIA-Linux-x86_64-535.309.01-grid.run"
this_pack_enable_nvlts: false
with:
this_pack_version: ${{ matrix.this_pack_version }}
this_pack_nvidia_driver_version: ${{ matrix.this_pack_nvidia_driver_version }}
this_pack_nvidia_driver_page_url: ${{ matrix.this_pack_nvidia_driver_page_url }}
this_pack_grid_run: ${{ matrix.this_pack_grid_run }}
runfile_artifact: nvidia-grid-runfile-${{ matrix.this_pack_nvidia_driver_version }}
nvlts_artifact: nvlts-${{ matrix.this_pack_nvidia_driver_version }}
enable_nvlts: ${{ matrix.this_pack_enable_nvlts }}
manifest_platform: x86
create_release:
if: ${{ inputs.make_release }}
needs:
- package_kernel_space
- package_user_space
runs-on: ubuntu-latest
outputs:
release_tag: ${{ steps.vars.outputs.release_tag }}
release_title: ${{ steps.vars.outputs.release_title }}
steps:
- name: Prepare release tag
id: vars
run: |
release_title="$(TZ=Asia/Shanghai date '+%Y.%m.%d %H:%M:%S')"
release_tag="$(printf '%s' "${release_title}" | tr ' :' '--')"
{
echo "release_title=${release_title}"
echo "release_tag=${release_tag}"
} >> "$GITHUB_OUTPUT"
echo "Release title: ${release_title}"
echo "Release tag: ${release_tag}"
- name: Create GitHub Release
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
if gh release view "${{ steps.vars.outputs.release_tag }}" --repo "${GITHUB_REPOSITORY}" >/dev/null 2>&1; then
echo "Release ${{ steps.vars.outputs.release_tag }} already exists, skipping create."
else
gh release create "${{ steps.vars.outputs.release_tag }}" \
--repo "${GITHUB_REPOSITORY}" \
--title "fnnas.appstore.driver.gpu.nvidia.grid ${{ steps.vars.outputs.release_title }}" \
--prerelease
fi
upload_release_assets:
if: ${{ inputs.make_release }}
needs:
- create_release
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
include:
- this_pack_version: "580.159.03-3"
package_name_prefix: "appstore.driver.gpu.nvidia.ko"
package_name_suffix: "6.18.18-trim-427-amd64"
- this_pack_version: "580.159.03-3"
package_name_prefix: "appstore.driver.gpu.nvidia.ko"
package_name_suffix: "6.18.18-trim-570-amd64"
- this_pack_version: "580.159.03-3"
package_name_prefix: "appstore.driver.gpu.nvidia.ko"
package_name_suffix: "6.18.18-trim-587-amd64"
- this_pack_version: "580.159.03-3"
package_name_prefix: "appstore.driver.gpu.nvidia.user"
package_name_suffix: "x86"
- this_pack_version: "535.309.01-1"
package_name_prefix: "appstore.driver.gpu.nvidia.ko"
package_name_suffix: "6.18.18-trim-427-amd64"
- this_pack_version: "535.309.01-1"
package_name_prefix: "appstore.driver.gpu.nvidia.ko"
package_name_suffix: "6.18.18-trim-570-amd64"
- this_pack_version: "535.309.01-1"
package_name_prefix: "appstore.driver.gpu.nvidia.ko"
package_name_suffix: "6.18.18-trim-587-amd64"
- this_pack_version: "535.309.01-1"
package_name_prefix: "appstore.driver.gpu.nvidia.user"
package_name_suffix: "x86"
steps:
- name: Download package
uses: actions/download-artifact@v7
with:
name: ${{ matrix.package_name_prefix }}-${{ matrix.this_pack_version }}-${{ matrix.package_name_suffix }}.tgz
path: release-assets/
- name: Rename package extension to fpk
run: |
set -euo pipefail
package_name="${{ matrix.package_name_prefix }}-${{ matrix.this_pack_version }}-${{ matrix.package_name_suffix }}.tgz"
fpk_name="${package_name}.fpk"
echo "Renaming ${package_name} to ${fpk_name}"
mv "release-assets/${package_name}" "release-assets/${fpk_name}"
- name: Upload Release Assets
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
echo "Uploading release assets..."
package_name="${{ matrix.package_name_prefix }}-${{ matrix.this_pack_version }}-${{ matrix.package_name_suffix }}.tgz.fpk"
echo "Uploading ${package_name}"
gh release upload "${{ needs.create_release.outputs.release_tag }}" "release-assets/${package_name}" --repo "${GITHUB_REPOSITORY}" --clobber
echo "Upload completed!"
verify_release_assets:
if: ${{ inputs.make_release }}
needs:
- upload_release_assets
- create_release
runs-on: ubuntu-latest
steps:
- name: Verify Uploaded Assets
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
echo "Uploaded assets for ${{ needs.create_release.outputs.release_tag }}:"
gh release view "${{ needs.create_release.outputs.release_tag }}" --repo "${GITHUB_REPOSITORY}" --json assets -q '.assets[].name'