Browse Source

Update mikrotik_patch_6.yml

Signed-off-by: elseif <elseif@live.cn>
pull/110/head
elseif 1 year ago
committed by GitHub
parent
commit
a951a224b0
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 86
      .github/workflows/mikrotik_patch_6.yml

86
.github/workflows/mikrotik_patch_6.yml

@ -6,7 +6,25 @@ on:
# schedule: # schedule:
# - cron: "0 0 * * *" # - cron: "0 0 * * *"
workflow_dispatch: workflow_dispatch:
inputs:
channel:
description: 'Channel (stable, long-term)'
required: true
default: 'stable'
type: choice
options:
- stable
- long-term
version:
description: "Version ('', 6.49.17, 6.49.18,...)"
required: false
default: ''
type: string
buildtime:
description: "Build Time"
required: false
default: ''
type: string
permissions: permissions:
contents: write contents: write
@ -36,14 +54,20 @@ jobs:
steps: steps:
- name: Set build time - name: Set build time
id: set_buildtime id: set_buildtime
run: echo "BUILD_TIME=$(date +'%s')" >> $GITHUB_OUTPUT
run: |
_BUILD_TIME=${{ github.event.inputs.buildtime }}
if [ -z "$_BUILD_TIME" ]; then
echo "BUILD_TIME=$(date +'%s')" >> $GITHUB_OUTPUT
else
echo "BUILD_TIME=$_BUILD_TIME" >> $GITHUB_OUTPUT
fi
Patch_RouterOS: Patch_RouterOS:
needs: Set_BuildTime needs: Set_BuildTime
runs-on: ubuntu-22.04 runs-on: ubuntu-22.04
strategy: strategy:
matrix: matrix:
channel: [long-term,stable]
channel: ${{ fromJSON(format('["{0}"]', github.event.inputs.channel || 'stable')) }}
env: env:
TZ: 'Asia/Shanghai' TZ: 'Asia/Shanghai'
LATEST_VERSION: "" LATEST_VERSION: ""
@ -60,7 +84,10 @@ jobs:
id: get_latest id: get_latest
run: | run: |
echo $(uname -a) echo $(uname -a)
LATEST_VERSION=$(wget -nv -O - https://upgrade.mikrotik.com/routeros/NEWEST6.${{ matrix.channel }} | cut -d ' ' -f1)
LATEST_VERSION=${{ github.event.inputs.version }}
if [ -z "$_LATEST_VERSION" ]; then
LATEST_VERSION=$(wget -nv -O - https://${{ env.MIKRO_UPGRADE_URL }}/routeros/NEWEST6.${{ matrix.channel }} | cut -d ' ' -f1)
fi
echo Latest Version:$LATEST_VERSION echo Latest Version:$LATEST_VERSION
if [ "${{ github.event_name }}" == "schedule" ]; then if [ "${{ github.event_name }}" == "schedule" ]; then
_LATEST_VERSION=$(wget -nv -O - https://${{ env.CUSTOM_UPGRADE_URL }}/routeros/NEWEST6.${{ matrix.channel }} | cut -d ' ' -f1) _LATEST_VERSION=$(wget -nv -O - https://${{ env.CUSTOM_UPGRADE_URL }}/routeros/NEWEST6.${{ matrix.channel }} | cut -d ' ' -f1)
@ -78,6 +105,20 @@ jobs:
echo "LATEST_VERSION=${LATEST_VERSION}" >> $GITHUB_ENV echo "LATEST_VERSION=${LATEST_VERSION}" >> $GITHUB_ENV
echo "BUILD_TIME=${BUILD_TIME}" >> $GITHUB_ENV echo "BUILD_TIME=${BUILD_TIME}" >> $GITHUB_ENV
has_patched_npk=false
if wget -nv --spider https://${{ env.CUSTOM_UPGRADE_URL }}/routeros/$LATEST_VERSION/routeros-x86-$LATEST_VERSION.npk; then
echo "RouterOS NPK file exists, attempting to download..."
if wget -nv -O routeros-x86-$LATEST_VERSION.npk https://${{ env.CUSTOM_UPGRADE_URL }}/routeros/$LATEST_VERSION/routeros-x86-$LATEST_VERSION.npk; then
echo "RouterOS NPK file downloaded successfully."
if wget -nv --spider https://${{ env.CUSTOM_UPGRADE_URL }}/routeros/$LATEST_VERSION/system-$LATEST_VERSION.npk; then
echo "System NPK file exists, attempting to download..."
if wget -nv -O system-$LATEST_VERSION.npk https://${{ env.CUSTOM_UPGRADE_URL }}/routeros/$LATEST_VERSION/system-$LATEST_VERSION.npk; then
has_patched_npk=true
fi
fi
fi
fi
echo "has_patched_npk=$has_patched_npk" >> $GITHUB_OUTPUT
- name: Cache mikrotik-${{ env.LATEST_VERSION }}.iso - name: Cache mikrotik-${{ env.LATEST_VERSION }}.iso
if: steps.get_latest.outputs.has_new_version == 'true' if: steps.get_latest.outputs.has_new_version == 'true'
@ -105,8 +146,12 @@ jobs:
sudo rsync -a ./iso/ ./new_iso/ sudo rsync -a ./iso/ ./new_iso/
sudo umount ./iso sudo umount ./iso
sudo rm -rf ./iso sudo rm -rf ./iso
if [ "${{ steps.get_latest.outputs.has_patched_npk }}" == "false" ]; then
sudo mv ./new_iso/system-$LATEST_VERSION.npk ./ sudo mv ./new_iso/system-$LATEST_VERSION.npk ./
sudo -E python3 patch.py npk system-$LATEST_VERSION.npk sudo -E python3 patch.py npk system-$LATEST_VERSION.npk
else
sudo -E python3 npk.py sign system-$LATEST_VERSION.npk system-$LATEST_VERSION.npk
fi
sudo -E python3 patch.py kernel ./new_iso/isolinux/initrd.rgz sudo -E python3 patch.py kernel ./new_iso/isolinux/initrd.rgz
NPK_FILES=$(find ./new_iso/*.npk) NPK_FILES=$(find ./new_iso/*.npk)
for file in $NPK_FILES; do for file in $NPK_FILES; do
@ -129,13 +174,9 @@ jobs:
sudo mkdir ./all_packages sudo mkdir ./all_packages
sudo cp ./new_iso/*.npk ./all_packages/ sudo cp ./new_iso/*.npk ./all_packages/
sudo rm -rf ./new_iso sudo rm -rf ./new_iso
cd ./all_packages
sudo zip ../all_packages-x86-$LATEST_VERSION.zip *.npk
cd ..
- name: Create install-image-${{ env.LATEST_VERSION }}.img - name: Create install-image-${{ env.LATEST_VERSION }}.img
if: steps.get_latest.outputs.has_new_version == 'true'
if: steps.get_latest.outputs.has_new_version == 'true' && steps.get_latest.outputs.has_patched_npk == 'true'
run: | run: |
sudo modprobe nbd sudo modprobe nbd
sudo apt-get update sudo apt-get update
@ -190,13 +231,18 @@ jobs:
sudo -E python3 patch.py block /dev/nbd0p1 boot/initrd.rgz sudo -E python3 patch.py block /dev/nbd0p1 boot/initrd.rgz
sudo mount /dev/nbd0p1 ./chr sudo mount /dev/nbd0p1 ./chr
sudo cp ./all_packages/dude-$LATEST_VERSION.npk ./chr/var/pdb/dude/image sudo cp ./all_packages/dude-$LATEST_VERSION.npk ./chr/var/pdb/dude/image
if [ "${{ steps.get_latest.outputs.has_patched_npk }}" == "false" ]; then
sudo -E python3 patch.py npk ./chr/var/pdb/routeros-x86/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 ./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.npk sudo cp ./all_packages/routeros-x86-$LATEST_VERSION.npk routeros-x86-$LATEST_VERSION.npk
else
sudo -E python3 npk.py sign routeros-x86-$LATEST_VERSION.npk routeros-x86-$LATEST_VERSION.npk
sudo cp -f routeros-x86-$LATEST_VERSION.npk ./chr/var/pdb/routeros-x86/image
sudo cp routeros-x86-$LATEST_VERSION.npk ./all_packages/routeros-x86-$LATEST_VERSION.npk
fi
sudo umount ./chr sudo umount ./chr
sudo qemu-nbd -d /dev/nbd0 sudo qemu-nbd -d /dev/nbd0
sudo rm -rf ./chr sudo rm -rf ./chr
sudo qemu-img convert -f raw -O qcow2 chr-$LATEST_VERSION.img chr-$LATEST_VERSION.qcow2 sudo qemu-img convert -f raw -O qcow2 chr-$LATEST_VERSION.img chr-$LATEST_VERSION.qcow2
sudo qemu-img convert -f raw -O vmdk chr-$LATEST_VERSION.img chr-$LATEST_VERSION.vmdk sudo qemu-img convert -f raw -O vmdk chr-$LATEST_VERSION.img chr-$LATEST_VERSION.vmdk
sudo qemu-img convert -f raw -O vpc chr-$LATEST_VERSION.img chr-$LATEST_VERSION.vhd sudo qemu-img convert -f raw -O vpc chr-$LATEST_VERSION.img chr-$LATEST_VERSION.vhd
@ -217,14 +263,21 @@ jobs:
sudo rm chr-$LATEST_VERSION$ARCH.vdi sudo rm chr-$LATEST_VERSION$ARCH.vdi
sudo rm chr-$LATEST_VERSION$ARCH.img sudo rm chr-$LATEST_VERSION$ARCH.img
cd ./all_packages
sudo zip ../all_packages-x86-$LATEST_VERSION.zip *.npk
cd ..
- name: Upload Files - name: Upload Files
if: steps.get_latest.outputs.has_new_version == 'true' if: steps.get_latest.outputs.has_new_version == 'true'
run: | run: |
sudo mkdir -p ./publish/$LATEST_VERSION
echo $LATEST_VERSION $BUILD_TIME | sudo tee ./publish/NEWEST6.${{ matrix.channel }}
sudo cp CHANGELOG ./publish/$LATEST_VERSION/
sudo cp ./all_packages/*.npk ./publish/$LATEST_VERSION/
if [ "${{ steps.get_latest.outputs.has_patched_npk }}" == "false" ]; then
OUTDIR="$LATEST_VERSION-UNDONE"
else
OUTDIR="$LATEST_VERSION"
fi
sudo mkdir -p ./publish/$OUTDIR
sudo cp CHANGELOG ./publish/$OUTDIR/
sudo cp ./all_packages/*.npk ./publish/$OUTDIR/
sudo chown -R root:root ./publish/ sudo chown -R root:root ./publish/
sudo apt-get install -y lftp ssh sshpass > /dev/null 2>&1 sudo apt-get install -y lftp ssh sshpass > /dev/null 2>&1
sudo -E lftp -u ${{ secrets.SSH_USERNAME }},'${{ secrets.SSH_PASSWORD }}' sftp://${{ secrets.SSH_SERVER }}:${{ secrets.SSH_PORT }} <<EOF sudo -E lftp -u ${{ secrets.SSH_USERNAME }},'${{ secrets.SSH_PASSWORD }}' sftp://${{ secrets.SSH_SERVER }}:${{ secrets.SSH_PORT }} <<EOF
@ -233,6 +286,7 @@ jobs:
bye bye
EOF EOF
sshpass -p "${{ secrets.SSH_PASSWORD }}" ssh -o StrictHostKeyChecking=no -p ${{ secrets.SSH_PORT }} ${{ secrets.SSH_USERNAME }}@${{ secrets.SSH_SERVER }} "chown -R 32768:32768 /rw/disk/${{ secrets.SSH_DIRECTORY }}/" sshpass -p "${{ secrets.SSH_PASSWORD }}" ssh -o StrictHostKeyChecking=no -p ${{ secrets.SSH_PORT }} ${{ secrets.SSH_USERNAME }}@${{ secrets.SSH_SERVER }} "chown -R 32768:32768 /rw/disk/${{ secrets.SSH_DIRECTORY }}/"
- name: Clear Cloudflare cache - name: Clear Cloudflare cache
if: steps.get_latest.outputs.has_new_version == 'true' if: steps.get_latest.outputs.has_new_version == 'true'
run: | run: |
@ -242,7 +296,7 @@ jobs:
--data '{"purge_everything": true}' --data '{"purge_everything": true}'
- name: Delete Release tag ${{ env.LATEST_VERSION }} - name: Delete Release tag ${{ env.LATEST_VERSION }}
if: steps.get_latest.outputs.has_new_version == 'true'
if: steps.get_latest.outputs.has_new_version == 'true' && steps.get_latest.outputs.has_patched_npk == 'true'
run: | run: |
HEADER="Authorization: token ${{ secrets.GITHUB_TOKEN }}" HEADER="Authorization: token ${{ secrets.GITHUB_TOKEN }}"
RELEASE_INFO=$(curl -s -H $HEADER https://api.github.com/repos/${{ github.repository }}/releases/tags/$LATEST_VERSION$ARCH) RELEASE_INFO=$(curl -s -H $HEADER https://api.github.com/repos/${{ github.repository }}/releases/tags/$LATEST_VERSION$ARCH)
@ -258,7 +312,7 @@ jobs:
fi fi
- name: Create Release tag ${{ env.LATEST_VERSION }} - name: Create Release tag ${{ env.LATEST_VERSION }}
if: steps.get_latest.outputs.has_new_version == 'true'
if: steps.get_latest.outputs.has_new_version == 'true' && steps.get_latest.outputs.has_patched_npk == 'true'
uses: softprops/action-gh-release@v2 uses: softprops/action-gh-release@v2
with: with:
name: "RouterOS ${{ env.LATEST_VERSION }}" name: "RouterOS ${{ env.LATEST_VERSION }}"

Loading…
Cancel
Save