Cloud Hypervisor Linux Release #28
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: 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 zlib1g-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: Build kernel modules (aarch64) | |
| # HOSTLDFLAGS=-static makes scripts tools (modpost, etc.) statically linked | |
| # so they don't depend on the build host's glibc version. -lz needed for objtool. | |
| run: ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- HOSTLDFLAGS="-static -lz" make modules -j `nproc` | |
| - name: Package kernel headers (aarch64) | |
| run: | | |
| KVER=$(ARCH=arm64 make -s kernelrelease) | |
| HEADERS_DIR="$(pwd)/kernel-headers-arm64" | |
| # Use the kernel's built-in script via make run-command to ensure proper env vars | |
| mkdir -p "${HEADERS_DIR}" | |
| ARCH=arm64 make run-command KBUILD_RUN_COMMAND="\${srctree}/scripts/package/install-extmod-build ${HEADERS_DIR}" | |
| # Add System.map and .config | |
| cp System.map "${HEADERS_DIR}/" | |
| cp .config "${HEADERS_DIR}/" | |
| # Package just the headers contents (flat structure) | |
| tar czf kernel-headers-aarch64.tar.gz -C "${HEADERS_DIR}" . | |
| echo "Kernel headers packaged for ${KVER} (aarch64):" | |
| du -sh kernel-headers-aarch64.tar.gz | |
| - 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 | |
| - name: Build kernel (x86-64) | |
| run: CFLAGS="-Wa,-mx86-used-note=no" make bzImage -j `nproc` | |
| - name: Build kernel modules (x86-64) | |
| # HOSTLDFLAGS=-static makes scripts tools (modpost, etc.) statically linked | |
| # so they don't depend on the build host's glibc version. -lz needed for objtool. | |
| run: HOSTLDFLAGS="-static -lz" make modules -j `nproc` | |
| - name: Package kernel headers (x86-64) | |
| run: | | |
| KVER=$(make -s kernelrelease) | |
| HEADERS_DIR="$(pwd)/kernel-headers-x86" | |
| # Use the kernel's built-in script via make run-command to ensure proper env vars | |
| mkdir -p "${HEADERS_DIR}" | |
| make run-command KBUILD_RUN_COMMAND="\${srctree}/scripts/package/install-extmod-build ${HEADERS_DIR}" | |
| # Add System.map and .config (useful for debugging and some build scenarios) | |
| cp System.map "${HEADERS_DIR}/" | |
| cp .config "${HEADERS_DIR}/" | |
| # Package just the headers contents (flat structure) | |
| tar czf kernel-headers-x86_64.tar.gz -C "${HEADERS_DIR}" . | |
| echo "Kernel headers packaged for ${KVER}:" | |
| du -sh kernel-headers-x86_64.tar.gz | |
| - 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 kernel headers 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: kernel-headers-x86_64.tar.gz | |
| asset_name: kernel-headers-x86_64.tar.gz | |
| asset_content_type: application/gzip | |
| - name: Upload kernel headers 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: kernel-headers-aarch64.tar.gz | |
| asset_name: kernel-headers-aarch64.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 |