build #20
This file contains 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: 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 |