Skip to content

Release Stage 4 - Package for VirtualBox - Run 19988212442 - beta-2025-12-06 - beta #87

Release Stage 4 - Package for VirtualBox - Run 19988212442 - beta-2025-12-06 - beta

Release Stage 4 - Package for VirtualBox - Run 19988212442 - beta-2025-12-06 - beta #87

name: Release Stage 4 - Package for VirtualBox Appliance
run-name: Release Stage 4 - Package for VirtualBox - Run ${{ inputs.run_id }} - ${{ inputs.HOMEBRIDGE_VM_IMAGE_VERSION }} - ${{ inputs.release_stream }}
on:
workflow_dispatch:
inputs:
run_id:
description: 'GitHub Run ID of the build workflow that produced the artifacts'
required: true
type: string
release_stream:
description: 'Release stream (stable, beta, alpha)'
required: true
type: choice
options:
- stable
- beta
- alpha
default: beta
HOMEBRIDGE_VM_IMAGE_VERSION:
description: 'Homebridge VM image version aka release tag'
required: true
type: string
concurrency:
group: package-virtualbox
cancel-in-progress: false
jobs:
package-for-virtual-box:
runs-on: ubuntu-22.04
strategy:
max-parallel: 1
fail-fast: false
matrix:
arch: [arm64, amd64]
steps:
- name: Checkout repository
uses: actions/checkout@v6
- name: Download Artifacts
uses: actions/download-artifact@v6
with:
name: homebridge-image-${{ matrix.arch }}
path: ./output
run-id: ${{ inputs.run_id }}
merge-multiple: true
github-token: ${{ secrets.GITHUB_TOKEN }}
- name: List Downloaded Artifacts
run: ls -lR ./output
- name: Install VirtualBox
uses: ./.github/actions/install-virtualbox
- name: Package VirtualBox Appliance
id: package_appliance
run: |
./scripts/package-for-virtual-box.sh "${{ matrix.arch }}" "${{ inputs.release_stream }}" "${{ inputs.HOMEBRIDGE_VM_IMAGE_VERSION }}"
echo "OVA_FILE=./output/homebridge-vm-image-${{ inputs.release_stream }}-${{ matrix.arch }}.ova" >> $GITHUB_OUTPUT
echo "VDI_FILE=./output/homebridge-vm-image-${{ inputs.release_stream }}-${{ matrix.arch }}.vdi.gz" >> $GITHUB_OUTPUT
- name: Upload image and manifest artifacts
uses: actions/upload-artifact@v5
with:
retention-days: 7
name: virtualbox-appliance-${{ matrix.arch }}
path: |
${{ steps.package_appliance.outputs.OVA_FILE }}
./output/*.manifest
./output/*.img
- name: Upload OVA and VDI to GitHub Release
run: |
set -e
RELEASE_ID=$(gh release view "${{ inputs.HOMEBRIDGE_VM_IMAGE_VERSION }}" --json id -q .id)
gh release upload "${{ inputs.HOMEBRIDGE_VM_IMAGE_VERSION }}" "${{ steps.package_appliance.outputs.OVA_FILE }}" "${{ steps.package_appliance.outputs.VDI_FILE }}" --clobber
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Packaging complete
run: |
echo "::notice::Homebridge VM image version: ${{ inputs.HOMEBRIDGE_VM_IMAGE_VERSION }}"
echo "::notice::Run ID: ${{ inputs.run_id }}"
echo "::notice::Architecture: ${{ matrix.arch }}"
echo "::notice::Release Stream: ${{ inputs.release_stream }}"