diff --git a/.github/workflows/mikrotik_patch_7.yml b/.github/workflows/mikrotik_patch_7.yml index b8de1ad..4905a7f 100644 --- a/.github/workflows/mikrotik_patch_7.yml +++ b/.github/workflows/mikrotik_patch_7.yml @@ -323,6 +323,99 @@ jobs: - name: Create chr-${{ env.LATEST_VERSION }}${{ env.ARCH }}.img if: steps.get_latest.outputs.has_new_version == 'true' && (matrix.arch == 'x86' || matrix.arch == 'arm64') run: | + OVF_TEMPLATE=' + + + + + + Virtual disk information + + + + The list of logical networks + + The VM Network network + + + + A virtual machine + MikroTik_RouterOS_CHR + + The kind of installed guest operating system + + + Virtual hardware requirements + + Virtual Hardware Family + 0 + MikroTik_RouterOS_CHR + vmx-10 + + + + hertz * 10^6 + Number of Virtual CPUs + 1 virtual CPU(s) + 1 + 3 + 1 + + + byte * 2^20 + Memory Size + 1024MB of memory + 2 + 4 + 1024 + + + 0 + IDE Controller + ideController0 + 3 + 5 + + + 0 + disk0 + ovf:/disk/vmdisk1 + 4 + 3 + 17 + + + 1 + true + VM Network + VmxNet3 ethernet adapter on "VM Network" + ethernet0 + 5 + VmxNet3 + 10 + + + + + false + video + 6 + 24 + + + false + vmci + 7 + vmware.vmci + 1 + + + + A human-readable annotation + MikroTik RouterOS CHR v7.19.4 + + + ' sudo modprobe nbd sudo apt-get install -y qemu-utils > /dev/null truncate --size 128M chr-$LATEST_VERSION$ARCH.img @@ -369,7 +462,33 @@ jobs: sudo qemu-img convert -f raw -O vpc chr-$LATEST_VERSION$ARCH-legacy-bios.img chr-$LATEST_VERSION$ARCH-legacy-bios.vhd sudo qemu-img convert -f raw -O vhdx chr-$LATEST_VERSION$ARCH-legacy-bios.img chr-$LATEST_VERSION$ARCH-legacy-bios.vhdx sudo qemu-img convert -f raw -O vdi chr-$LATEST_VERSION$ARCH-legacy-bios.img chr-$LATEST_VERSION$ARCH-legacy-bios.vdi - + + sudo qemu-img convert -f raw -O vmdk -o subformat=streamOptimized chr-$LATEST_VERSION$ARCH-legacy-bios.img chr-$LATEST_VERSION$ARCH-legacy-bios-disk1.vmdk + VMDK=chr-$LATEST_VERSION$ARCH-legacy-bios-disk1.vmdk + OVF=${{ env.LATEST_VERSION }}-legacy-bios.ovf + MF=${{ env.LATEST_VERSION }}-legacy-bios.mf + OVA=${{ env.LATEST_VERSION }}-legacy-bios.ova + FILE_SIZE=$(stat -c %s "$VMDK") + VIRTUAL_SIZE=$(qemu-img info --output=json "$VMDK" | grep '"virtual-size":' | awk '{print $2}' | tr -d ',') + CAPACITY_MB=$((VIRTUAL_SIZE / 1024 / 1024)) + POPULATED_SIZE=$FILE_SIZE + FIRMWARE_TYPE="bios" + echo "$OVF_TEMPLATE" | sudo sed -e "s|{VMDK_FILE}|$VMDK|g" \ + -e "s|{FILE_SIZE}|$FILE_SIZE|g" \ + -e "s|{CAPACITY_MB}|$CAPACITY_MB|g" \ + -e "s|{POPULATED_SIZE}|$POPULATED_SIZE|g" \ + -e "s|{FIRMWARE_TYPE}|$FIRMWARE_TYPE|g" |sudo tee $OVF + { + echo "SHA1($(basename "$VMDK"))= $(sha1sum "$VMDK" | awk '{print $1}')" + echo "SHA1($(basename "$OVF"))= $(sha1sum "$OVF" | awk '{print $1}')" + } | sudo tee "$MF" + sudo tar -cvf "$OVA" "$OVF" "$VMDK" "$MF" + sudo rm $VMDK + sudo rm $OVF + sudo rm $MF + sudo zip chr-$LATEST_VERSION$ARCH-legacy-bios.ova.zip $OVA + sudo rm $OVA + sudo zip chr-$LATEST_VERSION$ARCH-legacy-bios.qcow2.zip chr-$LATEST_VERSION$ARCH-legacy-bios.qcow2 sudo zip chr-$LATEST_VERSION$ARCH-legacy-bios.vmdk.zip chr-$LATEST_VERSION$ARCH-legacy-bios.vmdk sudo zip chr-$LATEST_VERSION$ARCH-legacy-bios.vhd.zip chr-$LATEST_VERSION$ARCH-legacy-bios.vhd @@ -405,11 +524,37 @@ jobs: sudo qemu-nbd -d /dev/nbd0 sudo qemu-img convert -f raw -O qcow2 chr-$LATEST_VERSION$ARCH.img chr-$LATEST_VERSION$ARCH.qcow2 - sudo qemu-img convert -f raw -O vmdk chr-$LATEST_VERSION$ARCH.img chr-$LATEST_VERSION$ARCH.vmdk + sudo qemu-img convert -f raw -O vmdk chr-$LATEST_VERSION$ARCH.img chr-$LATEST_VERSION$ARCH.vmdk sudo qemu-img convert -f raw -O vpc chr-$LATEST_VERSION$ARCH.img chr-$LATEST_VERSION$ARCH.vhd sudo qemu-img convert -f raw -O vhdx chr-$LATEST_VERSION$ARCH.img chr-$LATEST_VERSION$ARCH.vhdx sudo qemu-img convert -f raw -O vdi chr-$LATEST_VERSION$ARCH.img chr-$LATEST_VERSION$ARCH.vdi + sudo qemu-img convert -f raw -O vmdk -o subformat=streamOptimized chr-$LATEST_VERSION$ARCH.img chr-$LATEST_VERSION$ARCH-disk1.vmdk + VMDK=chr-$LATEST_VERSION$ARCH-disk1.vmdk + OVF=${{ env.LATEST_VERSION }}.ovf + MF=${{ env.LATEST_VERSION }}.mf + OVA=${{ env.LATEST_VERSION }}.ova + FILE_SIZE=$(stat -c %s "$VMDK") + VIRTUAL_SIZE=$(qemu-img info --output=json "$VMDK" | grep '"virtual-size":' | awk '{print $2}' | tr -d ',') + CAPACITY_MB=$((VIRTUAL_SIZE / 1024 / 1024)) + POPULATED_SIZE=$FILE_SIZE + FIRMWARE_TYPE="efi" + echo "$OVF_TEMPLATE" | sudo sed -e "s|{VMDK_FILE}|$VMDK|g" \ + -e "s|{FILE_SIZE}|$FILE_SIZE|g" \ + -e "s|{CAPACITY_MB}|$CAPACITY_MB|g" \ + -e "s|{POPULATED_SIZE}|$POPULATED_SIZE|g" \ + -e "s|{FIRMWARE_TYPE}|$FIRMWARE_TYPE|g" |sudo tee $OVF + { + echo "SHA1($(basename "$VMDK"))= $(sha1sum "$VMDK" | awk '{print $1}')" + echo "SHA1($(basename "$OVF"))= $(sha1sum "$OVF" | awk '{print $1}')" + } | sudo tee "$MF" + sudo tar -cvf "$OVA" "$OVF" "$VMDK" "$MF" + sudo rm $VMDK + sudo rm $OVF + sudo rm $MF + sudo zip chr-$LATEST_VERSION$ARCH.ova.zip $OVA + sudo rm $OVA + sudo zip chr-$LATEST_VERSION$ARCH.qcow2.zip chr-$LATEST_VERSION$ARCH.qcow2 sudo zip chr-$LATEST_VERSION$ARCH.vmdk.zip chr-$LATEST_VERSION$ARCH.vmdk sudo zip chr-$LATEST_VERSION$ARCH.vhd.zip chr-$LATEST_VERSION$ARCH.vhd @@ -423,6 +568,7 @@ jobs: sudo rm chr-$LATEST_VERSION$ARCH.vhdx sudo rm chr-$LATEST_VERSION$ARCH.vdi sudo rm chr-$LATEST_VERSION$ARCH.img + - name: Cache all_packages${{ env.ARCH }}-${{ env.LATEST_VERSION }}.zip if: steps.get_latest.outputs.has_new_version == 'true' && matrix.arch != 'x86' && matrix.arch != 'arm64'