From bff58d10bb7f0a2a4c3a1a4d7afd9121a3c1911d Mon Sep 17 00:00:00 2001 From: Charalampos Mainas Date: Fri, 26 Jun 2026 14:24:58 +0300 Subject: [PATCH] feat(cloud-hypervisor): Include cloud-hypervisor binary in release Include cloud-hypervisor binary to the bundle of the release. Starting with v50.0 Signed-off-by: Charalampos Mainas --- .github/workflows/provide-artifacts.yaml | 34 +++++++++++++++++++++--- README.md | 7 ++--- cloud-hypervisor/VERSION | 1 + 3 files changed, 36 insertions(+), 6 deletions(-) create mode 100644 cloud-hypervisor/VERSION diff --git a/.github/workflows/provide-artifacts.yaml b/.github/workflows/provide-artifacts.yaml index 4dd2e0f..f1d8dfc 100644 --- a/.github/workflows/provide-artifacts.yaml +++ b/.github/workflows/provide-artifacts.yaml @@ -8,6 +8,7 @@ on: - qemu/** - solo5/** - firecracker/** + - cloud-hypervisor/** - virtiofsd/** push: branches: @@ -16,6 +17,7 @@ on: - qemu/** - solo5/** - firecracker/** + - cloud-hypervisor/** - virtiofsd/** jobs: @@ -26,6 +28,7 @@ jobs: qemu_version: ${{ steps.versions.outputs.qemu_version }} solo5_version: ${{ steps.versions.outputs.solo5_version }} firecracker_version: ${{ steps.versions.outputs.firecracker_version }} + cloud-hypervisor_version: ${{ steps.versions.outputs.cloud-hypervisor_version }} virtiofsd_version: ${{ steps.versions.outputs.virtiofsd_version }} steps: @@ -45,14 +48,17 @@ jobs: QEMU_VERSION="$(cat qemu/VERSION)" SOLO5_VERSION="$(cat solo5/VERSION)" FIRECRACKER_VERSION="$(cat firecracker/VERSION)" + CLOUD_HYPERVISOR_VERSION="$(cat cloud-hypervisor/VERSION)" VIRTIOFSD_VERSION="$(cat virtiofsd/VERSION)" echo "qemu_version=$QEMU_VERSION" >> $GITHUB_OUTPUT echo "solo5_version=$SOLO5_VERSION" >> $GITHUB_OUTPUT echo "firecracker_version=$FIRECRACKER_VERSION" >> $GITHUB_OUTPUT + echo "cloud-hypervisor_version=$CLOUD_HYPERVISOR_VERSION" >> $GITHUB_OUTPUT echo "virtiofsd_version=$VIRTIOFSD_VERSION" >> $GITHUB_OUTPUT echo "$QEMU_VERSION" echo "$SOLO5_VERSION" echo "$FIRECRACKER_VERSION" + echo "$CLOUD_HYPERVISOR_VERSION" echo "$VIRTIOFSD_VERSION" check-release-existence: @@ -89,7 +95,7 @@ jobs: id: release run: | SHORT_HASH=$(echo ${{ steps.name.outputs.hash }} | cut -c1-5) - echo "name=FC-${{ needs.get-versions.outputs.firecracker_version }}_S5-${{ needs.get-versions.outputs.solo5_version }}_VFS_-${{ needs.get-versions.outputs.virtiofsd_version }}_QM-${{ needs.get-versions.outputs.qemu_version }}-${SHORT_HASH}" >> $GITHUB_OUTPUT + echo "name=FC-${{ needs.get-versions.outputs.firecracker_version }}_CLH-${{ needs.get-versions.outputs.cloud-hypervisor_version }}_S5-${{ needs.get-versions.outputs.solo5_version }}_VFS_-${{ needs.get-versions.outputs.virtiofsd_version }}_QM-${{ needs.get-versions.outputs.qemu_version }}-${SHORT_HASH}" >> $GITHUB_OUTPUT echo "qemu=${{ needs.get-versions.outputs.qemu_version }}-${SHORT_HASH}" >> $GITHUB_OUTPUT - name: Check if release exists @@ -257,10 +263,24 @@ jobs: mkdir /tmp/fc_arm64 mv release-${{ needs.get-versions.outputs.firecracker_version }}-aarch64/firecracker-${{ needs.get-versions.outputs.firecracker_version }}-aarch64 /tmp/fc_arm64/firecracker + - name: Download Cloud-Hypervisor amd64 binary + run: | + mkdir /tmp/clh_amd64 + CLH_RELEASE_URL=https://github.com/cloud-hypervisor/cloud-hypervisor/releases + curl -L -o /tmp/clh_amd64/cloud-hypervisor ${CLH_RELEASE_URL}/download/${{ needs.get-versions.outputs.cloud-hypervisor_version }}/cloud-hypervisor-static + + - name: Download Cloud-Hypervisor arm64 binary + run: | + mkdir /tmp/clh_arm64 + CLH_RELEASE_URL=https://github.com/cloud-hypervisor/cloud-hypervisor/releases + curl -L -o /tmp/clh_arm64/cloud-hypervisor ${CLH_RELEASE_URL}/download/${{ needs.get-versions.outputs.cloud-hypervisor_version }}/cloud-hypervisor-static-aarch64 + - name: Package all artifacts run: | chmod +x /tmp/fc_amd64/firecracker mv /tmp/fc_amd64/firecracker /tmp/qemu_amd64/opt/urunc/bin/ + chmod +x /tmp/clh_amd64/cloud-hypervisor + mv /tmp/clh_amd64/cloud-hypervisor /tmp/qemu_amd64/opt/urunc/bin/ chmod +x /tmp/solo5_amd64/solo5-hvt mv /tmp/solo5_amd64/solo5-hvt /tmp/qemu_amd64/opt/urunc/bin/ chmod +x /tmp/solo5_amd64/solo5-spt @@ -271,6 +291,8 @@ jobs: tar -C /tmp/qemu_amd64/opt -czf release-amd64-${{ needs.check-release-existence.outputs.release }}.tar.gz . chmod +x /tmp/fc_arm64/firecracker mv /tmp/fc_arm64/firecracker /tmp/qemu_arm64/opt/urunc/bin/ + chmod +x /tmp/clh_arm64/cloud-hypervisor + mv /tmp/clh_arm64/cloud-hypervisor /tmp/qemu_arm64/opt/urunc/bin/ chmod +x /tmp/solo5_arm64/solo5-hvt mv /tmp/solo5_arm64/solo5-hvt /tmp/qemu_arm64/opt/urunc/bin/ chmod +x /tmp/solo5_arm64/solo5-spt @@ -280,9 +302,10 @@ jobs: chmod +x /tmp/qemu_arm64/opt/urunc/bin/qemu-system-aarch64 tar -C /tmp/qemu_arm64/opt -czf release-arm64-${{ needs.check-release-existence.outputs.release }}.tar.gz . echo "This release contains statically-built artifacts for both amd64 and arm64 of the following monitors and tools:" > release_notes.txt - echo "- Qemu: ${{ needs.get-versions.outputs.firecracker_version }}" >> release_notes.txt + echo "- Qemu: ${{ needs.get-versions.outputs.qemu_version }}" >> release_notes.txt echo "- Solo5(hvt and spt): ${{ needs.get-versions.outputs.solo5_version }}" >> release_notes.txt echo "- Firecracker: ${{ needs.get-versions.outputs.firecracker_version }}" >> release_notes.txt + echo "- Cloud-Hypervisor: ${{ needs.get-versions.outputs.cloud-hypervisor_version }}" >> release_notes.txt echo "- Virtiofsd: ${{ needs.get-versions.outputs.virtiofsd_version }}" >> release_notes.txt echo "" >> release_notes.txt echo "The hash of the Qemu files is: ${{ needs.check-release-existence.outputs.qemu_hash }}" >> release_notes.txt @@ -328,11 +351,14 @@ jobs: VIRTIOFSD_LINK="${RUNS_URL}/${{ needs.build-Virtiofsd-artifacts.outputs.artifact_run_id }}" FC_RELEASE_URL="https://github.com/firecracker-microvm/firecracker/releases" - FC_LINK="${FC_RELEASE_URL}/download/${{ needs.get-versions.outputs.firecracker_version }}" + FC_LINK="${FC_RELEASE_URL}/tag/${{ needs.get-versions.outputs.firecracker_version }}" + CLH_RELEASE_URL=https://github.com/cloud-hypervisor/cloud-hypervisor/releases + CLH_LINK="${CLH_RELEASE_URL}/tag/${{ needs.get-versions.outputs.cloud-hypervisor_version }}" echo "qemu=${QEMU_LINK}" >> $GITHUB_OUTPUT echo "solo5=${SOLO5_LINK}" >> $GITHUB_OUTPUT echo "virtiofsd=${VIRTIOFSD_LINK}" >> $GITHUB_OUTPUT echo "firecracker=${FC_LINK}" >> $GITHUB_OUTPUT + echo "cloud-hypervisor=${CLH_LINK}" >> $GITHUB_OUTPUT if ${{ needs.check-release-existence.outputs.exists == 'false' }} then echo "release=" >> $GITHUB_OUTPUT @@ -347,6 +373,7 @@ jobs: SOLO5_TEXT: "Solo5 ${{ needs.build-Solo5-artifacts.outputs.artifact_suffix }}: ${{ steps.links.outputs.solo5 }}" VFS_TEXT: "Virtiofsd ${{ needs.build-Virtiofsd-artifacts.outputs.artifact_suffix }}: ${{ steps.links.outputs.virtiofsd }}" FC_TEXT: "Firecracker ${{ needs.get-versions.outputs.firecracker_version }}: ${{ steps.links.outputs.firecracker }}" + CLH_TEXT: "Cloud-Hypervisor ${{ needs.get-versions.outputs.cloud-hypervisor_version }}: ${{ steps.links.outputs.cloud-hypervisor }}" with: script: | const body = ` @@ -355,6 +382,7 @@ jobs: - ${process.env.SOLO5_TEXT} - ${process.env.VFS_TEXT} - ${process.env.FC_TEXT} + - ${process.env.CLH_TEXT} `; await github.rest.issues.createComment({ issue_number: context.issue.number, diff --git a/README.md b/README.md index 75cfd2c..fcc1060 100644 --- a/README.md +++ b/README.md @@ -10,6 +10,7 @@ The following components are currently supported: - [**QEMU**](https://www.qemu.org/) - [**Firecracker**](https://firecracker-microvm.github.io/) +- [**Cloud-Hypervisor**](https://www.cloudhypervisor.org/) - [**Solo5**](https://github.com/Solo5/solo5) - [**virtiofsd**](https://gitlab.com/virtio-fs/virtiofsd) @@ -53,14 +54,14 @@ following configuration files: Releases follow this naming format: ``` -FC-_S5-_VFS-_QM-- +FC-_CLH-_S5-_VFS-_QM-- ``` -For example `FC-v1.7.0_S5-v0.9.3_VFS_-v1.13.1_QM-v10.1.1-d4dd3` contains +For example `FC-v1.7.0_CLH-v50.0_S5-v0.9.3_VFS_-v1.13.1_QM-v10.1.1-d4dd3` contains statically built artifacts for: - Firecracker v1.7.0 +- Cloud Hypervisor v50.0 - Solo5 v0.9.3 - Virtiofsd v1.13.1 - Qemu v10.1.1 with a hash generated by the config files and the excluded files file under Qemu's directory. - diff --git a/cloud-hypervisor/VERSION b/cloud-hypervisor/VERSION new file mode 100644 index 0000000..16e3bd4 --- /dev/null +++ b/cloud-hypervisor/VERSION @@ -0,0 +1 @@ +v50.0