├── diy-part2.sh ├── diy-part1.sh ├── LICENSE ├── .github └── workflows │ ├── update-checker.yml │ ├── build-openwrt-2203.yml │ └── build-openwrt-master.yml └── README.md /diy-part2.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # 3 | # Copyright (c) 2019-2020 P3TERX 4 | # 5 | # This is free software, licensed under the MIT License. 6 | # See /LICENSE for more information. 7 | # 8 | # https://github.com/P3TERX/Actions-OpenWrt 9 | # File name: diy-part2.sh 10 | # Description: OpenWrt DIY script part 2 (After Update feeds) 11 | # 12 | 13 | # Modify default IP 14 | #sed -i 's/192.168.1.1/192.168.50.5/g' package/base-files/files/bin/config_generate 15 | 16 | cd package 17 | git clone https://github.com/jerrykuku/luci-theme-argon.git 18 | git clone https://github.com/gSpotx2f/ruantiblock_openwrt.git 19 | cd - -------------------------------------------------------------------------------- /diy-part1.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # 3 | # Copyright (c) 2019-2020 P3TERX 4 | # 5 | # This is free software, licensed under the MIT License. 6 | # See /LICENSE for more information. 7 | # 8 | # https://github.com/P3TERX/Actions-OpenWrt 9 | # File name: diy-part1.sh 10 | # Description: OpenWrt DIY script part 1 (Before Update feeds) 11 | # 12 | 13 | # Uncomment a feed source 14 | #sed -i 's/^#\(.*helloworld\)/\1/' feeds.conf.default 15 | 16 | # Add a feed source 17 | #echo 'src-git helloworld https://github.com/fw876/helloworld' >>feeds.conf.default 18 | #echo 'src-git passwall https://github.com/xiaorouji/openwrt-passwall' >>feeds.conf.default 19 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2019-2020 P3TERX 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /.github/workflows/update-checker.yml: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2019-2021 P3TERX 3 | # 4 | # This is free software, licensed under the MIT License. 5 | # See /LICENSE for more information. 6 | # 7 | # https://github.com/P3TERX/Actions-OpenWrt 8 | # File: .github/workflows/update-checker.yml 9 | # Description: Source code update checker 10 | # 11 | 12 | name: Update Checker 13 | 14 | env: 15 | REPO_URL: https://github.com/openwrt/openwrt 16 | REPO_BRANCH: master 17 | 18 | on: 19 | workflow_dispatch: 20 | schedule: 21 | - cron: 0 0 * * * 22 | 23 | jobs: 24 | check: 25 | runs-on: ubuntu-latest 26 | permissions: 27 | contents: write 28 | 29 | steps: 30 | - name: Get Commit Hash 31 | id: getHash 32 | run: | 33 | git clone --depth 1 $REPO_URL -b $REPO_BRANCH . 34 | echo "::set-output name=commitHash::$(git rev-parse HEAD)" 35 | 36 | - name: Compare Commit Hash 37 | id: cacheHash 38 | uses: actions/cache@v3 39 | with: 40 | path: .commitHash 41 | key: HEAD-${{ steps.getHash.outputs.commitHash }} 42 | 43 | - name: Save New Commit Hash 44 | if: steps.cacheHash.outputs.cache-hit != 'true' 45 | run: | 46 | echo ${{ steps.getHash.outputs.commitHash }} | tee .commitHash 47 | 48 | - name: Trigger build 49 | if: steps.cacheHash.outputs.cache-hit != 'true' 50 | uses: peter-evans/repository-dispatch@v2 51 | with: 52 | token: ${{ secrets.ACTIONS_TRIGGER_PAT }} 53 | event-type: Source Code Update 54 | 55 | - name: Delete workflow runs 56 | uses: GitRML/delete-workflow-runs@main 57 | with: 58 | token: ${{ secrets.ACTIONS_TRIGGER_PAT }} 59 | retain_days: 2 60 | keep_minimum_runs: 2 61 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 | # Automatic OpenWRT builds for Xiaomi Redmi AX6S (AX3200) 3 | 4 | [![LICENSE](https://img.shields.io/github/license/mashape/apistatus.svg?style=flat-square&label=LICENSE)](https://github.com/P3TERX/Actions-OpenWrt/blob/master/LICENSE) 5 | 6 | 7 | # Инструкция по установке для Windows (гайд от [stroti](https://4pda.to/forum/index.php?showuser=4540991)) 8 | 1. Скачиваем и устанавливаем через стандартное обновление роутера dev версию официальной прошивки [miwifi_rb03_firmware_stable_1.2.7.bin](https://raw.githubusercontent.com/YangWang92/AX6S-unlock/master/miwifi_rb03_firmware_stable_1.2.7.bin) (MD5: 5eedf1632ac97bb5a6bb072c08603ed7). 9 | 10 | 2. Скачиваем и устанавливаем [Python](https://www.python.org/ftp/python/3.10.10/python-3.10.10-amd64.exe) 11 | 12 | 2.1 Скачиваем [скрипт](https://raw.githubusercontent.com/mikeeq/xiaomi_ax3200_openwrt/main/password.py) перейдя по ссылке и кликнув "Сохранить как" password.py 13 | 14 | 2.2 Запускаем ранее установленный IDLE (Python 3.10 64-bit) >> File > Open > password.py в открывшимся окне жмем Shift+F5 > в поле ввода вставляем серийный номер роутера и жмем Ok. На выходе получаем пароль от Telnet 15 | 16 | 3. Скачиваем программу [PuTTY](https://www.putty.org/) 17 | 18 | 4. Запускаем PuTTY, в адресную строку вбиваем 192.168.31.1, в выпадающем списке под портом выбираем Telnet и жмем Open 19 | 20 | 4.1. Откроется консоль, в поле логина вводим root в поле пароль вставляем ранее полученный пароль из скрипта (ввод символов в пароле не отображается) 21 | 22 | 4.2. Копируем и вставляем следующие команды (Можно последовательно, можно скопом, если будите вставлять скопом не забудьте нажать Enter для выполнения последней в списке команды) 23 | 24 | ``` 25 | nvram set ssh_en=1 26 | nvram set uart_en=1 27 | nvram set boot_wait=on 28 | nvram commit 29 | sed -i '/flg_ssh.*release/ { :a; N; /fi/! ba };/return 0/d' /etc/init.d/dropbear 30 | /etc/init.d/dropbear enable 31 | /etc/init.d/dropbear start 32 | ``` 33 | 34 | 35 | 5. Скачиваем программу [WinSCP](https://winscp.net/eng/download.php) 36 | 37 | 5.1. Запускаем 38 | 39 | 5.2 Протокол передачи выбираем SCP, Имя хоста: 192.168.31.1 Имя пользователя: root Пароль: сгенерированный из скрипта 40 | 41 | 5.3. В правой части программы поднимаемся в корневой каталог нажав на пиктограмму папки с стрелкой, после чего находим папку /tmp и переходим в нее 42 | 43 | 5.4. Скачиваем прошивку [OpenWRT](https://github.com/kyoto44/openwrt-ax6s/releases), а именно файл openwrt-mediatek-mt7622-xiaomi_redmi-router-ax6s-squashfs-factory.bin и сохраняем ее как factory.bin 44 | 45 | 5.5. Перетаскиваем наш factory.bin в открытую на WinSCP папку /tmp и дожидаемся загрузки 46 | 47 | 6. Заново открываем PyTTY в адресную строку вбиваем 192.168.31.1 (протокол в этот раз по умолчанию SSH) и жмем Open 48 | 49 | 6.1. Логин root, пароль ранее полученный из скрипта (ввод символов в пароле не отображается) 50 | 51 | 6.2. Вводим следующие команды (последняя команда запускает процесс прошивки, дороги назад уже не будет, будьте внимательнее) 52 | ``` 53 | nvram set flag_boot_success=1 54 | nvram set flag_try_sys1_failed=0 55 | nvram set flag_try_sys2_failed=0 56 | nvram commit 57 | 58 | cd /tmp 59 | mtd -r write factory.bin firmware 60 | ``` 61 | 62 | Если после ввода этих комманд роутер (RB03, AX6S) перегрузился со стоковой прошивкой, то используем повторяем пункт 6 со следующими комманды: 63 | 64 | ``` 65 | nvram set flag_boot_rootfs=0 66 | nvram set "boot_fw1=run boot_rd_img;bootm" 67 | nvram set flag_boot_success=1 68 | nvram set flag_try_sys1_failed=0 69 | nvram set flag_try_sys2_failed=0 70 | nvram commit 71 | 72 | cd /tmp 73 | mtd -r write factory.bin firmware 74 | ``` 75 | 76 | 7. Сидим и ждем, после прошивки роутер сам перезагрузится, а новая прошивка OpenWRT запустится по адресу 192.168.1.1 логин root пароль по молчанию не установлен, оставляем пустым и ждем войти. 77 | 78 | 7.1 Если по новому адресу ни чего не появилось в течении 10 минут, а на роутере горит "индикатор питания" (Оранжевый диод System) тогда поздравляю, вы что то сделали не так и закирпичили роутер, скорее всего подсунули не тот образ прошивки. В таком случае переходим к пункту раскирпичивания 79 | 80 | # Раскирпичивание в случае неудачной прошивки (гайд от [stroti](https://4pda.to/forum/index.php?showuser=4540991)) 81 | 82 | Тут есть 2 пути, воспользоваться программой заботливо сделанной китайцами из Xiaomi или поднять свой tftp сервер, мы пойдем по пути наименьшего сопротивления и выберем первый вариант. 83 | 84 | Оригинальная инструкция с картинками 85 | 86 | 1. Скачиваем [Xiaomi Recovery Tool](http://bigota.miwifi.com/xiaoqiang/tools/MIWIFIRepairTool.x86.zip) (если не качается скопируйте адрес ссылки и вставьте в адресную строку новой вкладки) 87 | 88 | 2. Выставляем настройки сетевого интерфейса на ПК: IP 192.168.31.100 маска 255.255.255.0 и жмем окей 89 | 90 | 3. Распаковываем и запускаем MIWIFIRepairTool.x86.exe 91 | 92 | 3.1. На первой странице программы выбираем стоковую прошивку, подойдет и dev версия miwifi_rb03_firmware_stable_1.2.7.bin (проверял лично) далее жмем на 3 вопросика в правом нижнем углу, на след странице оставляем все как есть и жмем на самые правые ??? в правом нижнем углу 93 | 94 | 3.2. Подходим к роутеру -> отсоединяем кабель питания -> зажимаем кнопку reset > вставляем кабель питания и не отпускаем кнопку reset, пока не заморгает желтый светодиод system 95 | 96 | 3.3. После того как заморгает, отпускаем кнопку reset, а на экране компьютера с программой можно наблюдать полоску с процессом восстановления прошивки, дожидаемся окончания, на роутере светодиоды загорятся синими начнут моргать, заходим на роутер по адресу 192.168.31.1 (не забываем сбросить настройку сетевого интерфейса в винде) 97 | 98 | На этом кирпич восстановлен, и можно повторить путь прошивки с начала. 99 | 100 | ## Credits 101 | 102 | - [Microsoft Azure](https://azure.microsoft.com) 103 | - [GitHub Actions](https://github.com/features/actions) 104 | - [OpenWrt](https://github.com/openwrt/openwrt) 105 | - [Lean's OpenWrt](https://github.com/coolsnowwolf/lede) 106 | - [tmate](https://github.com/tmate-io/tmate) 107 | - [mxschmitt/action-tmate](https://github.com/mxschmitt/action-tmate) 108 | - [csexton/debugger-action](https://github.com/csexton/debugger-action) 109 | - [Cowtransfer](https://cowtransfer.com) 110 | - [WeTransfer](https://wetransfer.com/) 111 | - [Mikubill/transfer](https://github.com/Mikubill/transfer) 112 | - [softprops/action-gh-release](https://github.com/softprops/action-gh-release) 113 | - [ActionsRML/delete-workflow-runs](https://github.com/ActionsRML/delete-workflow-runs) 114 | - [dev-drprasad/delete-older-releases](https://github.com/dev-drprasad/delete-older-releases) 115 | - [peter-evans/repository-dispatch](https://github.com/peter-evans/repository-dispatch) 116 | 117 | ## License 118 | 119 | [MIT](https://github.com/P3TERX/Actions-OpenWrt/blob/main/LICENSE) © [**P3TERX**](https://p3terx.com) 120 | -------------------------------------------------------------------------------- /.github/workflows/build-openwrt-2203.yml: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2019-2020 P3TERX 3 | # 4 | # This is free software, licensed under the MIT License. 5 | # See /LICENSE for more information. 6 | # 7 | # https://github.com/P3TERX/Actions-OpenWrt 8 | # Description: Build OpenWrt using GitHub Actions 9 | # 10 | 11 | name: Build OpenWrt 22.03 branch 12 | 13 | on: 14 | push: 15 | branches: 16 | - "*" 17 | repository_dispatch: 18 | workflow_dispatch: 19 | inputs: 20 | ssh: 21 | description: "SSH connection to Actions" 22 | required: false 23 | default: "false" 24 | 25 | env: 26 | REPO_URL: https://github.com/openwrt/openwrt 27 | REPO_BRANCH: openwrt-22.03 28 | FEEDS_CONF: feeds.conf.default 29 | CONFIG_FILE: .config 30 | DIY_P1_SH: diy-part1.sh 31 | DIY_P2_SH: diy-part2.sh 32 | UPLOAD_BIN_DIR: false 33 | UPLOAD_FIRMWARE: true 34 | UPLOAD_COWTRANSFER: false 35 | UPLOAD_WETRANSFER: false 36 | UPLOAD_RELEASE: true 37 | TZ: Asia/Yekaterinburg 38 | 39 | jobs: 40 | build: 41 | runs-on: ubuntu-22.04 42 | permissions: 43 | contents: write 44 | 45 | steps: 46 | - name: Checkout 47 | uses: actions/checkout@v3 48 | 49 | - name: Initialization environment 50 | env: 51 | DEBIAN_FRONTEND: noninteractive 52 | run: | 53 | sudo rm -rf /etc/apt/sources.list.d/* /usr/share/dotnet /usr/local/lib/android /opt/ghc 54 | sudo -E apt-get -qq update 55 | sudo -E apt-get -qq install build-essential clang flex g++ gawk gcc-multilib gettext git libncurses5-dev libssl-dev python3-distutils rsync unzip zlib1g-dev file wget 56 | sudo -E apt-get -qq autoremove --purge 57 | sudo -E apt-get -qq clean 58 | sudo timedatectl set-timezone "$TZ" 59 | sudo mkdir -p /workdir 60 | sudo chown $USER:$GROUPS /workdir 61 | 62 | - name: Clone source code 63 | working-directory: /workdir 64 | run: | 65 | df -hT $PWD 66 | git clone $REPO_URL -b $REPO_BRANCH openwrt 67 | ln -sf /workdir/openwrt $GITHUB_WORKSPACE/openwrt 68 | 69 | - name: Load custom feeds 70 | run: | 71 | [ -e $FEEDS_CONF ] && mv $FEEDS_CONF openwrt/feeds.conf.default 72 | chmod +x $DIY_P1_SH 73 | cd openwrt 74 | $GITHUB_WORKSPACE/$DIY_P1_SH 75 | 76 | - name: Update feeds 77 | run: cd openwrt && ./scripts/feeds update -a 78 | 79 | - name: Install feeds 80 | run: cd openwrt && ./scripts/feeds install -a 81 | 82 | - name: Load custom configuration 83 | run: | 84 | [ -e files ] && mv files openwrt/files 85 | [ -e $CONFIG_FILE ] && mv $CONFIG_FILE openwrt/.config 86 | chmod +x $DIY_P2_SH 87 | cd openwrt 88 | $GITHUB_WORKSPACE/$DIY_P2_SH 89 | 90 | - name: SSH connection to Actions 91 | uses: P3TERX/ssh2actions@v1.0.0 92 | if: (github.event.inputs.ssh == 'true' && github.event.inputs.ssh != 'false') || contains(github.event.action, 'ssh') 93 | env: 94 | TELEGRAM_CHAT_ID: ${{ secrets.TELEGRAM_CHAT_ID }} 95 | TELEGRAM_BOT_TOKEN: ${{ secrets.TELEGRAM_BOT_TOKEN }} 96 | 97 | - name: Download package 98 | id: package 99 | run: | 100 | cd openwrt 101 | make defconfig 102 | make download -j8 103 | find dl -size -1024c -exec ls -l {} \; 104 | find dl -size -1024c -exec rm -f {} \; 105 | 106 | - name: Compile the firmware 107 | id: compile 108 | run: | 109 | cd openwrt 110 | echo -e "$(nproc) thread compile" 111 | make -j$(nproc) || make -j1 || make -j1 V=s 112 | echo "status=success" >> $GITHUB_OUTPUT 113 | grep '^CONFIG_TARGET.*DEVICE.*=y' .config | sed -r 's/.*DEVICE_(.*)=y/\1/' > DEVICE_NAME 114 | [ -s DEVICE_NAME ] && echo "DEVICE_NAME=_$(cat DEVICE_NAME)" >> $GITHUB_ENV 115 | echo "FILE_DATE=_$(date +"%Y%m%d%H%M")" >> $GITHUB_ENV 116 | 117 | - name: Check space usage 118 | if: (!cancelled()) 119 | run: df -hT 120 | 121 | - name: Upload bin directory 122 | uses: actions/upload-artifact@v3 123 | if: steps.compile.outputs.status == 'success' && env.UPLOAD_BIN_DIR == 'true' 124 | with: 125 | name: OpenWrt_bin${{ env.DEVICE_NAME }}${{ env.FILE_DATE }} 126 | path: openwrt/bin 127 | 128 | - name: Organize files 129 | id: organize 130 | if: env.UPLOAD_FIRMWARE == 'true' && !cancelled() 131 | run: | 132 | cd openwrt/bin/targets/*/* 133 | rm -rf packages 134 | echo "FIRMWARE=$PWD" >> $GITHUB_ENV 135 | echo "status=success" >> $GITHUB_OUTPUT 136 | 137 | - name: Upload firmware directory 138 | uses: actions/upload-artifact@v3 139 | if: steps.organize.outputs.status == 'success' && !cancelled() 140 | with: 141 | name: OpenWrt_firmware${{ env.DEVICE_NAME }}${{ env.FILE_DATE }} 142 | path: ${{ env.FIRMWARE }} 143 | 144 | - name: Upload firmware to cowtransfer 145 | id: cowtransfer 146 | if: steps.organize.outputs.status == 'success' && env.UPLOAD_COWTRANSFER == 'true' && !cancelled() 147 | run: | 148 | curl -fsSL git.io/file-transfer | sh 149 | ./transfer cow --block 2621440 -s -p 64 --no-progress ${FIRMWARE} 2>&1 | tee cowtransfer.log 150 | echo "::warning file=cowtransfer.com::$(cat cowtransfer.log | grep https)" 151 | echo "url=$(cat cowtransfer.log | grep https | cut -f3 -d" ")" >> $GITHUB_OUTPUT 152 | 153 | - name: Upload firmware to WeTransfer 154 | id: wetransfer 155 | if: steps.organize.outputs.status == 'success' && env.UPLOAD_WETRANSFER == 'true' && !cancelled() 156 | run: | 157 | curl -fsSL git.io/file-transfer | sh 158 | ./transfer wet -s -p 16 --no-progress ${FIRMWARE} 2>&1 | tee wetransfer.log 159 | echo "::warning file=wetransfer.com::$(cat wetransfer.log | grep https)" 160 | echo "url=$(cat wetransfer.log | grep https | cut -f3 -d" ")" >> $GITHUB_OUTPUT 161 | 162 | - name: Generate release tag 163 | id: tag 164 | if: env.UPLOAD_RELEASE == 'true' && !cancelled() 165 | run: | 166 | echo "release_tag=$(date +"%Y.%m.%d-%H%M")-22.03" >> $GITHUB_OUTPUT 167 | touch release.txt 168 | [ $UPLOAD_COWTRANSFER = true ] && echo "🔗 [Cowtransfer](${{ steps.cowtransfer.outputs.url }})" >> release.txt 169 | [ $UPLOAD_WETRANSFER = true ] && echo "🔗 [WeTransfer](${{ steps.wetransfer.outputs.url }})" >> release.txt 170 | echo "status=success" >> $GITHUB_OUTPUT 171 | 172 | - name: Upload firmware to release 173 | uses: softprops/action-gh-release@v1 174 | if: steps.tag.outputs.status == 'success' && !cancelled() 175 | env: 176 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 177 | with: 178 | tag_name: ${{ steps.tag.outputs.release_tag }} 179 | body_path: release.txt 180 | files: ${{ env.FIRMWARE }}/* 181 | 182 | - name: Delete workflow runs 183 | uses: GitRML/delete-workflow-runs@main 184 | with: 185 | token: ${{ secrets.ACTIONS_TRIGGER_PAT }} 186 | retain_days: 1 187 | keep_minimum_runs: 3 188 | 189 | - name: Remove old Releases 190 | uses: dev-drprasad/delete-older-releases@v0.2.1 191 | if: env.UPLOAD_RELEASE == 'true' && !cancelled() 192 | with: 193 | keep_latest: 3 194 | delete_tags: true 195 | env: 196 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 197 | -------------------------------------------------------------------------------- /.github/workflows/build-openwrt-master.yml: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2019-2020 P3TERX 3 | # 4 | # This is free software, licensed under the MIT License. 5 | # See /LICENSE for more information. 6 | # 7 | # https://github.com/P3TERX/Actions-OpenWrt 8 | # Description: Build OpenWrt using GitHub Actions 9 | # 10 | 11 | name: Build OpenWrt master branch 12 | 13 | on: 14 | push: 15 | branches: 16 | - "*" 17 | repository_dispatch: 18 | workflow_dispatch: 19 | inputs: 20 | ssh: 21 | description: "SSH connection to Actions" 22 | required: false 23 | default: "false" 24 | 25 | env: 26 | REPO_URL: https://github.com/openwrt/openwrt 27 | REPO_BRANCH: master 28 | FEEDS_CONF: feeds.conf.default 29 | CONFIG_FILE: .config 30 | DIY_P1_SH: diy-part1.sh 31 | DIY_P2_SH: diy-part2.sh 32 | UPLOAD_BIN_DIR: false 33 | UPLOAD_FIRMWARE: true 34 | UPLOAD_COWTRANSFER: false 35 | UPLOAD_WETRANSFER: false 36 | UPLOAD_RELEASE: true 37 | TZ: Asia/Yekaterinburg 38 | 39 | jobs: 40 | build: 41 | runs-on: ubuntu-22.04 42 | permissions: 43 | contents: write 44 | 45 | steps: 46 | - name: Checkout 47 | uses: actions/checkout@v3 48 | 49 | - name: Initialization environment 50 | env: 51 | DEBIAN_FRONTEND: noninteractive 52 | run: | 53 | sudo rm -rf /etc/apt/sources.list.d/* /usr/share/dotnet /usr/local/lib/android /opt/ghc 54 | sudo -E apt-get -qq update 55 | sudo -E apt-get -qq install build-essential clang flex g++ gawk gcc-multilib gettext git libncurses5-dev libssl-dev python3-distutils rsync unzip zlib1g-dev file wget 56 | sudo -E apt-get -qq autoremove --purge 57 | sudo -E apt-get -qq clean 58 | sudo timedatectl set-timezone "$TZ" 59 | sudo mkdir -p /workdir 60 | sudo chown $USER:$GROUPS /workdir 61 | 62 | - name: Clone source code 63 | working-directory: /workdir 64 | run: | 65 | df -hT $PWD 66 | git clone $REPO_URL -b $REPO_BRANCH openwrt 67 | ln -sf /workdir/openwrt $GITHUB_WORKSPACE/openwrt 68 | 69 | - name: Load custom feeds 70 | run: | 71 | [ -e $FEEDS_CONF ] && mv $FEEDS_CONF openwrt/feeds.conf.default 72 | chmod +x $DIY_P1_SH 73 | cd openwrt 74 | $GITHUB_WORKSPACE/$DIY_P1_SH 75 | 76 | - name: Update feeds 77 | run: cd openwrt && ./scripts/feeds update -a 78 | 79 | - name: Install feeds 80 | run: cd openwrt && ./scripts/feeds install -a 81 | 82 | - name: Load custom configuration 83 | run: | 84 | [ -e files ] && mv files openwrt/files 85 | [ -e $CONFIG_FILE ] && mv $CONFIG_FILE openwrt/.config 86 | chmod +x $DIY_P2_SH 87 | cd openwrt 88 | $GITHUB_WORKSPACE/$DIY_P2_SH 89 | 90 | - name: SSH connection to Actions 91 | uses: P3TERX/ssh2actions@v1.0.0 92 | if: (github.event.inputs.ssh == 'true' && github.event.inputs.ssh != 'false') || contains(github.event.action, 'ssh') 93 | env: 94 | TELEGRAM_CHAT_ID: ${{ secrets.TELEGRAM_CHAT_ID }} 95 | TELEGRAM_BOT_TOKEN: ${{ secrets.TELEGRAM_BOT_TOKEN }} 96 | 97 | - name: Download package 98 | id: package 99 | run: | 100 | cd openwrt 101 | make defconfig 102 | make download -j8 103 | find dl -size -1024c -exec ls -l {} \; 104 | find dl -size -1024c -exec rm -f {} \; 105 | 106 | - name: Compile the firmware 107 | id: compile 108 | run: | 109 | cd openwrt 110 | echo -e "$(nproc) thread compile" 111 | make -j$(nproc) || make -j1 || make -j1 V=s 112 | echo "status=success" >> $GITHUB_OUTPUT 113 | grep '^CONFIG_TARGET.*DEVICE.*=y' .config | sed -r 's/.*DEVICE_(.*)=y/\1/' > DEVICE_NAME 114 | [ -s DEVICE_NAME ] && echo "DEVICE_NAME=_$(cat DEVICE_NAME)" >> $GITHUB_ENV 115 | echo "FILE_DATE=_$(date +"%Y%m%d%H%M")" >> $GITHUB_ENV 116 | 117 | - name: Check space usage 118 | if: (!cancelled()) 119 | run: df -hT 120 | 121 | - name: Upload bin directory 122 | uses: actions/upload-artifact@v3 123 | if: steps.compile.outputs.status == 'success' && env.UPLOAD_BIN_DIR == 'true' 124 | with: 125 | name: OpenWrt_bin${{ env.DEVICE_NAME }}${{ env.FILE_DATE }} 126 | path: openwrt/bin 127 | 128 | - name: Organize files 129 | id: organize 130 | if: env.UPLOAD_FIRMWARE == 'true' && !cancelled() 131 | run: | 132 | cd openwrt/bin/targets/*/* 133 | rm -rf packages 134 | echo "FIRMWARE=$PWD" >> $GITHUB_ENV 135 | echo "status=success" >> $GITHUB_OUTPUT 136 | 137 | - name: Upload firmware directory 138 | uses: actions/upload-artifact@v3 139 | if: steps.organize.outputs.status == 'success' && !cancelled() 140 | with: 141 | name: OpenWrt_firmware${{ env.DEVICE_NAME }}${{ env.FILE_DATE }} 142 | path: ${{ env.FIRMWARE }} 143 | 144 | - name: Upload firmware to cowtransfer 145 | id: cowtransfer 146 | if: steps.organize.outputs.status == 'success' && env.UPLOAD_COWTRANSFER == 'true' && !cancelled() 147 | run: | 148 | curl -fsSL git.io/file-transfer | sh 149 | ./transfer cow --block 2621440 -s -p 64 --no-progress ${FIRMWARE} 2>&1 | tee cowtransfer.log 150 | echo "::warning file=cowtransfer.com::$(cat cowtransfer.log | grep https)" 151 | echo "url=$(cat cowtransfer.log | grep https | cut -f3 -d" ")" >> $GITHUB_OUTPUT 152 | 153 | - name: Upload firmware to WeTransfer 154 | id: wetransfer 155 | if: steps.organize.outputs.status == 'success' && env.UPLOAD_WETRANSFER == 'true' && !cancelled() 156 | run: | 157 | curl -fsSL git.io/file-transfer | sh 158 | ./transfer wet -s -p 16 --no-progress ${FIRMWARE} 2>&1 | tee wetransfer.log 159 | echo "::warning file=wetransfer.com::$(cat wetransfer.log | grep https)" 160 | echo "url=$(cat wetransfer.log | grep https | cut -f3 -d" ")" >> $GITHUB_OUTPUT 161 | 162 | - name: Generate release tag 163 | id: tag 164 | if: env.UPLOAD_RELEASE == 'true' && !cancelled() 165 | run: | 166 | echo "release_tag=$(date +"%Y.%m.%d-%H%M")-master" >> $GITHUB_OUTPUT 167 | touch release.txt 168 | [ $UPLOAD_COWTRANSFER = true ] && echo "🔗 [Cowtransfer](${{ steps.cowtransfer.outputs.url }})" >> release.txt 169 | [ $UPLOAD_WETRANSFER = true ] && echo "🔗 [WeTransfer](${{ steps.wetransfer.outputs.url }})" >> release.txt 170 | echo "status=success" >> $GITHUB_OUTPUT 171 | 172 | - name: Upload firmware to release 173 | uses: softprops/action-gh-release@v1 174 | if: steps.tag.outputs.status == 'success' && !cancelled() 175 | env: 176 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 177 | with: 178 | tag_name: ${{ steps.tag.outputs.release_tag }} 179 | body_path: release.txt 180 | files: ${{ env.FIRMWARE }}/* 181 | 182 | - name: Delete workflow runs 183 | uses: GitRML/delete-workflow-runs@main 184 | with: 185 | token: ${{ secrets.ACTIONS_TRIGGER_PAT }} 186 | retain_days: 1 187 | keep_minimum_runs: 3 188 | 189 | - name: Remove old Releases 190 | uses: dev-drprasad/delete-older-releases@v0.2.1 191 | if: env.UPLOAD_RELEASE == 'true' && !cancelled() 192 | with: 193 | keep_latest: 3 194 | delete_tags: true 195 | env: 196 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 197 | --------------------------------------------------------------------------------