Skip to content

build

build #20

Workflow file for this run

name: build
on:
workflow_dispatch:
permissions:
contents: read
jobs:
build:
permissions:
contents: write # for release creation
name: Build ${{matrix.version}}
runs-on: ubuntu-latest
if: github.event.repository.owner.id == github.event.sender.id || ! github.event.sender.id
strategy:
fail-fast: false
# max-parallel: 2
matrix:
version:
# - 6.49.10
- 7.16.2
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Check server configuration
run: |
echo -e "--------------------------CPU Info--------------------------"
echo "CPU Physical Num: $(cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l)"
echo -e "CPU Core Num: $(cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c) \n"
echo "--------------------------Memory Info--------------------------"
echo "Installed Memory Details:"
sudo lshw -short -C memory | grep GiB
echo -e "\n"
echo "---------------------------Disk Info---------------------------"
echo -e "Disk Num: $(ls /dev/sd* | grep -v [1-9] | wc -l) \n"
echo "Disk Details:"
df -Th
- name: Initialize environment
env:
DEBIAN_FRONTEND: noninteractive
run: |
sudo -E apt update
sudo -E apt -y install curl qemu-utils rsync unzip zip
sudo -E timedatectl set-timezone "Asia/Shanghai"
- name: Load nbd module
run: |
sudo -E modprobe nbd
- name: Download
run: |
curl -skL --retry 3 --connect-timeout 3 -o chr.img.zip https://download.mikrotik.com/routeros/${{matrix.version}}/chr-${{matrix.version}}.img.zip
unzip chr.*.zip
rm -rf chr.*.zip
- name: Convert to qcow2
run: |
qemu-img convert -f raw -O qcow2 chr-*.img chr.qcow2
cp -af chr.qcow2 chr-efi.qcow2
rm -rf chr-*.img
- name: Connect ndb
run: |
sudo -E qemu-nbd -c /dev/nbd0 chr.qcow2
sudo -E qemu-nbd -c /dev/nbd1 chr-efi.qcow2
- name: Format boot partition
run: |
sudo -E mkfs -t fat /dev/nbd1p1
- name: Create tmp dir
run: |
sudo -E rm -rf /tmp/chr*
sudo -E mkdir /tmp/chr-bios/
sudo -E mkdir /tmp/chr-efi/
- name: Mount
run: |
sudo -E mount /dev/nbd0p1 /tmp/chr-bios/
sudo -E mount /dev/nbd1p1 /tmp/chr-efi/
- name: Sync files
run: |
sudo -E rsync -a /tmp/chr-bios/ /tmp/chr-efi/
- name: Umount
run: |
sudo -E umount /dev/nbd0p1
sudo -E umount /dev/nbd1p1
- name: remove tmp dir
run: |
sudo -E rm -rf /tmp/chr*
- name: Disconnect ndb
run: |
sudo -E qemu-nbd -d /dev/nbd0
sudo -E qemu-nbd -d /dev/nbd1
- name: Remove old
run: |
rm -rf chr.qcow2
- name: Convert images
run: |
mkdir -p ./Firmware/
cp -f chr-efi.qcow2 ./Firmware/
qemu-img convert -f qcow2 -O vmdk chr-efi.qcow2 ./Firmware/chr-efi.vmdk
qemu-img convert -f qcow2 -O vpc chr-efi.qcow2 ./Firmware/chr-efi.vhd
qemu-img convert -f qcow2 -O vhdx chr-efi.qcow2 ./Firmware/chr-efi.vhdx
qemu-img convert -f qcow2 -O vdi chr-efi.qcow2 ./Firmware/chr-efi.vdi
qemu-img convert -f qcow2 -O raw chr-efi.qcow2 ./Firmware/chr-efi.img
ls -l ./Firmware
- name: Zip images
run: |
cd ./Firmware/
zip chr-${{matrix.version}}.qcow2.zip chr-efi.qcow2
zip chr-${{matrix.version}}.vmdk.zip chr-efi.vmdk
zip chr-${{matrix.version}}.vhd.zip chr-efi.vhd
zip chr-${{matrix.version}}.vhdx.zip chr-efi.vhdx
zip chr-${{matrix.version}}.vdi.zip chr-efi.vdi
zip chr-${{matrix.version}}.img.zip chr-efi.img
ls -l ./
- name: Upload Firmware to release
uses: ncipollo/release-action@v1
with:
name: ${{matrix.version}}
allowUpdates: true
removeArtifacts: true
tag: ${{matrix.version}}
commit: master
token: ${{ secrets.PERSONAL_TOKEN }}
artifacts: ./Firmware/*.zip