-
Notifications
You must be signed in to change notification settings - Fork 21
143 lines (118 loc) · 4.24 KB
/
build.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
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