Skip to content

Cloud Hypervisor Linux Release #10

Cloud Hypervisor Linux Release

Cloud Hypervisor Linux Release #10

Workflow file for this run

name: Cloud Hypervisor Linux Release
on: [create]
permissions:
contents: write
jobs:
release:
if: github.event_name == 'create' && github.event.ref_type == 'tag'
name: Release
runs-on: [self-hosted, linux, x64, kvm]
steps:
- name: Code checkout
uses: actions/checkout@v4
with:
fetch-depth: 1
- name: Install build tools
run: sudo apt install -y build-essential flex bison libssl-dev libelf-dev bc gcc-aarch64-linux-gnu gcc-riscv64-linux-gnu
- name: Configure (aarch64)
run: ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- make ch_defconfig
- name: Build (aarch64)
run: ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- make Image.gz -j `nproc`
- name: Configure (riscv64)
run: ARCH=riscv CROSS_COMPILE=riscv64-linux-gnu- make ch_defconfig
- name: Build (riscv64)
run: ARCH=riscv CROSS_COMPILE=riscv64-linux-gnu- make Image.gz -j `nproc`
- name: Configure (x86-64)
run: |
make ch_defconfig
# Ensure DRM subsystem is properly configured for NVIDIA driver
echo "CONFIG_DRM=y" >> .config
echo "CONFIG_DRM_FBDEV_EMULATION=y" >> .config
echo "CONFIG_DRM_TTM=y" >> .config
echo "CONFIG_DRM_TTM_HELPER=y" >> .config
make olddefconfig
- name: Build kernel (x86-64)
run: CFLAGS="-Wa,-mx86-used-note=no" make bzImage -j `nproc`
- name: Build modules (x86-64)
run: make modules -j `nproc`
- name: Clone NVIDIA open-gpu-kernel-modules
run: git clone --depth 1 --branch 570.86.16 https://github.com/NVIDIA/open-gpu-kernel-modules.git
- name: Build NVIDIA modules (x86-64)
run: |
cd open-gpu-kernel-modules
make modules KERNEL_UNAME=$(cd .. && make -s kernelrelease) SYSSRC=$(pwd)/.. -j $(nproc)
- name: Package NVIDIA modules (x86-64)
run: |
KVER=$(make -s kernelrelease)
mkdir -p nvidia-modules/lib/modules/$KVER/kernel/drivers/gpu
cp open-gpu-kernel-modules/kernel-open/*.ko nvidia-modules/lib/modules/$KVER/kernel/drivers/gpu/
tar czf nvidia-modules-x86_64.tar.gz -C nvidia-modules .
- name: Create release
id: create_release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ github.ref }}
release_name: ${{ github.ref }}
draft: true
- name: Upload bzImage for x86_64
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: arch/x86/boot/bzImage
asset_name: bzImage-x86_64
asset_content_type: application/octet-stream
- name: Upload vmlinux for x86_64
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: vmlinux
asset_name: vmlinux-x86_64
asset_content_type: application/octet-stream
- name: Upload NVIDIA modules for x86_64
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: nvidia-modules-x86_64.tar.gz
asset_name: nvidia-modules-x86_64.tar.gz
asset_content_type: application/gzip
- name: Upload Image.gz for aarch64
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: arch/arm64/boot/Image.gz
asset_name: Image-arm64.gz
asset_content_type: application/octet-stream
- name: Upload Image for aarch64
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: arch/arm64/boot/Image
asset_name: Image-arm64
asset_content_type: application/octet-stream
- name: Upload Image.gz for riscv64
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: arch/riscv/boot/Image.gz
asset_name: Image-riscv.gz
asset_content_type: application/octet-stream
- name: Upload Image for riscv64
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: arch/riscv/boot/Image
asset_name: Image-riscv
asset_content_type: application/octet-stream