Patch v6 #6
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: Patch v6 | |
on: | |
workflow_dispatch: | |
permissions: | |
contents: write | |
env: | |
MIKRO_NPK_SIGN_PUBLIC_KEY: C293CED638A2A33C681FC8DE98EE26C54EADC5390C2DFCE197D35C83C416CF59 | |
MIKRO_LICENSE_PUBLIC_KEY: 8E1067E4305FCDC0CFBF95C10F96E5DFE8C49AEF486BD1A4E2E96C27F01E3E32 | |
CUSTOM_NPK_SIGN_PRIVATE_KEY: 7D008D9B80B036FB0205601FEE79D550927EBCA937B7008CC877281F2F8AC640 | |
CUSTOM_NPK_SIGN_PUBLIC_KEY: 28F886E32C141123126CFBCAD56766E99D1720CEB1F12BE2468BEBE7662FBEDB | |
CUSTOM_LICENSE_PRIVATE_KEY: 9DBC845E9018537810FDAE62824322EEE1B12BAD81FCA28EC295FB397C61CE0B | |
CUSTOM_LICENSE_PUBLIC_KEY: 723A34A6E3300F23E4BAA06156B9327514AEC170732655F16E04C17928DD770F | |
jobs: | |
patch: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Setup Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: '3.x' | |
- name: Install dependencies | |
run: | | |
sudo apt-get update | |
sudo apt-get install -y mkisofs xorriso qemu-utils extlinux --no-install-recommends | |
- name: Check latest version | |
id: get_latest | |
run: | | |
echo $(uname -a) | |
NEWEST=$(curl -s https://upgrade.mikrotik.com/routeros/NEWEST6.stable) | |
LATEST_VERSION=$(echo "$NEWEST" | cut -d' ' -f1) | |
BUILD_TIME=$(echo "$NEWEST" | cut -d' ' -f2) | |
echo Latest Version: $LATEST_VERSION | |
echo Build Time: $BUILD_TIME | |
_LATEST_VERSION=$(cat latest6.txt | cut -d ' ' -f1) | |
if [ "$_LATEST_VERSION" == "$LATEST_VERSION" ]; then | |
echo "No new version found" | |
echo "has_new_version=false" >> $GITHUB_OUTPUT | |
exit 0 | |
fi | |
echo "has_new_version=true" >> $GITHUB_OUTPUT | |
curl -s -o CHANGELOG https://upgrade.mikrotik.com/routeros/$LATEST_VERSION/CHANGELOG | |
cat CHANGELOG | |
echo "NEWEST=${NEWEST}" >> $GITHUB_ENV | |
echo "LATEST_VERSION=${LATEST_VERSION}" >> $GITHUB_ENV | |
- name: Cache mikrotik-${{ env.LATEST_VERSION }}.iso | |
if: steps.get_latest.outputs.has_new_version == 'true' | |
id: cache_mikrotik | |
uses: actions/cache@v4 | |
with: | |
path: mikrotik.iso | |
key: mikrotik-${{ env.LATEST_VERSION }}-x86 | |
- name: Get mikrotik-${{ env.LATEST_VERSION }}.iso | |
if: steps.get_latest.outputs.has_new_version == 'true' && steps.cache_mikrotik.outputs.cache-hit != 'true' | |
run: | | |
sudo curl -s -o mikrotik.iso https://download.mikrotik.com/routeros/$LATEST_VERSION/mikrotik-$LATEST_VERSION.iso | |
- name: Patch mikrotik-${{ env.LATEST_VERSION }}.iso | |
if: steps.get_latest.outputs.has_new_version == 'true' | |
run: | | |
sudo mkdir iso | |
sudo mount -o loop,ro mikrotik.iso iso/ | |
sudo mkdir new_iso/ | |
sudo cp -r iso/* new_iso/ | |
sudo rsync -a iso/ new_iso/ | |
sudo umount iso/ | |
sudo rm -rf iso/ | |
sudo -E python3 patch.py kernel new_iso/isolinux/initrd.rgz | |
NPK_FILES=$(find new_iso/*.npk) | |
for file in $NPK_FILES; do | |
sudo -E python3 patch.py npk $file | |
done | |
sudo mkisofs -o mikrotik-$LATEST_VERSION-patched.iso \ | |
-V "MikroTik $LATEST_VERSION" \ | |
-sysid "" -preparer "MiKroTiK" \ | |
-publisher "" -A "MiKroTiK RouterOS" \ | |
-input-charset utf-8 \ | |
-b isolinux/isolinux.bin \ | |
-c isolinux/boot.cat \ | |
-no-emul-boot \ | |
-boot-load-size 4 \ | |
-boot-info-table \ | |
-R -J \ | |
new_iso/ | |
sudo mkdir all_packages | |
sudo cp new_iso/*.npk all_packages/ | |
sudo rm -rf new_iso/ | |
cd all_packages/ | |
sudo zip ../all_packages-x86-$LATEST_VERSION-patched.zip *.npk | |
cd ../ | |
- name: Cache install-image-${{ env.LATEST_VERSION }}.zip | |
if: steps.get_latest.outputs.has_new_version == 'true' | |
id: cache_install_image | |
uses: actions/cache@v4 | |
with: | |
path: install-image.zip | |
key: install-image-${{ env.LATEST_VERSION }}-x86 | |
- name: Get install-image-${{ env.LATEST_VERSION }}.zip | |
if: steps.get_latest.outputs.has_new_version == 'true' && steps.cache_install_image.outputs.cache-hit != 'true' | |
run: | | |
sudo curl -s -o install-image.zip https://download.mikrotik.com/routeros/$LATEST_VERSION/install-image-$LATEST_VERSION.zip | |
- name: Patch install-image-${{ env.LATEST_VERSION }}.img | |
if: steps.get_latest.outputs.has_new_version == 'true' | |
run: | | |
sudo unzip install-image.zip | |
sudo modprobe nbd | |
sudo qemu-nbd -c /dev/nbd0 -f raw install-image-$LATEST_VERSION.img | |
sudo mkdir install-image | |
sudo mount /dev/nbd0 install-image/ | |
sudo -E python3 patch.py kernel install-image/initrd.rgz | |
NPK_FILES=$(find install-image/*.npk) | |
for file in $NPK_FILES; do | |
sudo -E python3 patch.py npk $file | |
done | |
sudo umount /dev/nbd0 | |
sudo qemu-nbd -d /dev/nbd0 | |
sudo rm -rf install-image/ | |
sudo mv install-image-$LATEST_VERSION.img install-image-$LATEST_VERSION-patched.img | |
sudo qemu-img convert -f raw -O qcow2 install-image-$LATEST_VERSION-patched.img install-image-$LATEST_VERSION-patched.qcow2 | |
sudo qemu-img convert -f raw -O vmdk install-image-$LATEST_VERSION-patched.img install-image-$LATEST_VERSION-patched.vmdk | |
sudo qemu-img convert -f raw -O vpc install-image-$LATEST_VERSION-patched.img install-image-$LATEST_VERSION-patched.vhd | |
sudo qemu-img convert -f raw -O vhdx install-image-$LATEST_VERSION-patched.img install-image-$LATEST_VERSION-patched.vhdx | |
sudo qemu-img convert -f raw -O vdi install-image-$LATEST_VERSION-patched.img install-image-$LATEST_VERSION-patched.vdi | |
sudo zip install-image-$LATEST_VERSION-patched.qcow2.zip install-image-$LATEST_VERSION-patched.qcow2 | |
sudo zip install-image-$LATEST_VERSION-patched.vmdk.zip install-image-$LATEST_VERSION-patched.vmdk | |
sudo zip install-image-$LATEST_VERSION-patched.vhd.zip install-image-$LATEST_VERSION-patched.vhd | |
sudo zip install-image-$LATEST_VERSION-patched.vhdx.zip install-image-$LATEST_VERSION-patched.vhdx | |
sudo zip install-image-$LATEST_VERSION-patched.vdi.zip install-image-$LATEST_VERSION-patched.vdi | |
sudo zip install-image-$LATEST_VERSION-patched.img.zip install-image-$LATEST_VERSION-patched.img | |
sudo rm install-image-$LATEST_VERSION-patched.qcow2 | |
sudo rm install-image-$LATEST_VERSION-patched.vmdk | |
sudo rm install-image-$LATEST_VERSION-patched.vhd | |
sudo rm install-image-$LATEST_VERSION-patched.vhdx | |
sudo rm install-image-$LATEST_VERSION-patched.vdi | |
sudo rm install-image-$LATEST_VERSION-patched.img | |
- name: Cache chr-${{ env.LATEST_VERSION }}.zip | |
if: steps.get_latest.outputs.has_new_version == 'true' | |
id: cache_chr_img | |
uses: actions/cache@v4 | |
with: | |
path: chr.img.zip | |
key: chr-${{ env.LATEST_VERSION }}-x86 | |
- name: Get chr-${{ env.LATEST_VERSION }}.zip | |
if: steps.get_latest.outputs.has_new_version == 'true' && steps.cache_chr_img.outputs.cache-hit != 'true' | |
run: | | |
sudo curl -s -o chr.img.zip https://download.mikrotik.com/routeros/$LATEST_VERSION/chr-$LATEST_VERSION.img.zip | |
- name: Patch chr-${{ env.LATEST_VERSION }}.img | |
if: steps.get_latest.outputs.has_new_version == 'true' | |
run: | | |
sudo unzip chr.img.zip | |
sudo modprobe nbd | |
sudo qemu-nbd -c /dev/nbd0 -f raw chr-$LATEST_VERSION.img | |
sudo mkdir -p chr/{boot,routeros} | |
sudo -E python3 patch.py block /dev/nbd0p1 boot/initrd.rgz | |
sudo mount /dev/nbd0p1 chr/ | |
sudo -E python3 patch.py npk chr/var/pdb/dude/image | |
sudo -E python3 patch.py npk chr/var/pdb/routeros-x86/image | |
sudo cp chr/var/pdb/routeros-x86/image all_packages/routeros-x86-$LATEST_VERSION.npk | |
sudo cp all_packages/routeros-x86-$LATEST_VERSION.npk routeros-x86-$LATEST_VERSION-patched.npk | |
sudo umount chr/ | |
sudo qemu-nbd -d /dev/nbd0 | |
sudo rm -rf chr/ | |
sudo cp chr-$LATEST_VERSION.img chr-$LATEST_VERSION-patched.img | |
sudo qemu-img convert -f raw -O qcow2 chr-$LATEST_VERSION-patched.img chr-$LATEST_VERSION-patched.qcow2 | |
sudo qemu-img convert -f raw -O vmdk chr-$LATEST_VERSION-patched.img chr-$LATEST_VERSION-patched.vmdk | |
sudo qemu-img convert -f raw -O vpc chr-$LATEST_VERSION-patched.img chr-$LATEST_VERSION-patched.vhd | |
sudo qemu-img convert -f raw -O vhdx chr-$LATEST_VERSION-patched.img chr-$LATEST_VERSION-patched.vhdx | |
sudo qemu-img convert -f raw -O vdi chr-$LATEST_VERSION-patched.img chr-$LATEST_VERSION-patched.vdi | |
sudo zip chr-$LATEST_VERSION-patched.qcow2.zip chr-$LATEST_VERSION-patched.qcow2 | |
sudo zip chr-$LATEST_VERSION-patched.vmdk.zip chr-$LATEST_VERSION-patched.vmdk | |
sudo zip chr-$LATEST_VERSION-patched.vhd.zip chr-$LATEST_VERSION-patched.vhd | |
sudo zip chr-$LATEST_VERSION-patched.vhdx.zip chr-$LATEST_VERSION-patched.vhdx | |
sudo zip chr-$LATEST_VERSION-patched.vdi.zip chr-$LATEST_VERSION-patched.vdi | |
sudo zip chr-$LATEST_VERSION-patched.img.zip chr-$LATEST_VERSION-patched.img | |
sudo rm chr-$LATEST_VERSION-patched.qcow2 | |
sudo rm chr-$LATEST_VERSION-patched.vmdk | |
sudo rm chr-$LATEST_VERSION-patched.vhd | |
sudo rm chr-$LATEST_VERSION-patched.vhdx | |
sudo rm chr-$LATEST_VERSION-patched.vdi | |
sudo rm chr-$LATEST_VERSION-patched.img | |
- name: Update latest version | |
if: steps.get_latest.outputs.has_new_version == 'true' | |
run: | | |
echo $NEWEST > latest6.txt | |
git config user.name "github-actions[bot]" | |
git config user.email "41898282+github-actions[bot]@users.noreply.github.com" | |
git add latest6.txt | |
git commit -m "Update latest version" | |
git push | |
- name: Create Release tag ${{ env.LATEST_VERSION }} | |
if: steps.get_latest.outputs.has_new_version == 'true' | |
uses: softprops/action-gh-release@v2 | |
with: | |
name: "RouterOS ${{ env.LATEST_VERSION }}" | |
body_path: "CHANGELOG" | |
tag_name: ${{ env.LATEST_VERSION }} | |
make_latest: true | |
files: | | |
mikrotik-${{ env.LATEST_VERSION }}-patched.iso | |
install-image-${{ env.LATEST_VERSION }}-patched.*.zip | |
chr-${{ env.LATEST_VERSION }}-patched.*.zip | |
routeros-x86-${{ env.LATEST_VERSION }}-patched.npk | |
all_packages-x86-${{ env.LATEST_VERSION }}-patched.zip |