188 lines
7.5 KiB
YAML
188 lines
7.5 KiB
YAML
name: Build firmware LITE
|
||
|
||
on:
|
||
workflow_dispatch:
|
||
schedule:
|
||
- cron: '0 0 * * *' # Запуск каждый день в 00:00 UTC
|
||
push:
|
||
tags:
|
||
- '*'
|
||
|
||
jobs:
|
||
build:
|
||
runs-on: ubuntu-latest
|
||
container: registry.gitlab.com/hadzhioglu/padavan-ng
|
||
defaults: { run: { shell: bash } }
|
||
steps:
|
||
- uses: actions/checkout@v4
|
||
|
||
- name: Get variables
|
||
run: |
|
||
cp "build LITE.config" build.config
|
||
sed -i 's|\r$||g' variables build.config
|
||
. <(cat variables build.config)
|
||
PADAVAN_THEMES="${PADAVAN_THEMES[*]}"
|
||
for v in "${!PADAVAN_@}" "${!CONFIG_@}"; do
|
||
echo "$v=${!v}" >> $GITHUB_ENV
|
||
done
|
||
|
||
- name: Download sources and toolchain
|
||
run: |
|
||
git config --global --add safe.directory '*'
|
||
git clone -b "$PADAVAN_BRANCH" "$PADAVAN_REPO"
|
||
git -C padavan-ng checkout "$PADAVAN_COMMIT"
|
||
wget -qO- "$PADAVAN_TOOLCHAIN_URL" | tar -C padavan-ng --zstd -xf -
|
||
|
||
- name: Install themes
|
||
run: |
|
||
if [[ -n $PADAVAN_THEMES ]]; then
|
||
git clone --depth 1 -b "$PADAVAN_THEMES_BRANCH" "$PADAVAN_THEMES_REPO" themes
|
||
cp -r themes/common-theme themes/jquery.js padavan-ng/trunk/user/www/n56u_ribbon_fixed
|
||
|
||
for theme in $PADAVAN_THEMES; do
|
||
echo "Installing $theme theme"
|
||
cp -r "themes/$theme-theme" padavan-ng/trunk/user/www/n56u_ribbon_fixed
|
||
done
|
||
fi
|
||
|
||
- name: Run custom pre-build script
|
||
run: '[[ -f pre-build.sh ]] && . pre-build.sh || :'
|
||
|
||
- name: Build firmware
|
||
run: |
|
||
cp build.config padavan-ng/trunk/.config
|
||
pushd padavan-ng/trunk
|
||
./clear_tree.sh
|
||
./build_firmware.sh
|
||
popd
|
||
|
||
- name: Run custom post-build script
|
||
run: '[[ -f post-build.sh ]] && . post-build.sh || :'
|
||
|
||
- name: Prepare artifacts
|
||
run: |
|
||
FW_FILE_NAME="$(find padavan-ng/trunk/images -type f -regextype posix-extended -iregex ".*\.(trx|bin)$" \
|
||
-printf "%T@\t%f\n" | sort -V | tail -1 | cut -f2)"
|
||
cp "padavan-ng/trunk/images/$FW_FILE_NAME" .
|
||
|
||
# Create 128KB empty file and recovery firmware
|
||
dd if=/dev/zero of=128kempty.bin bs=128k count=1
|
||
cat 128kempty.bin "$FW_FILE_NAME" > tp_recovery.bin
|
||
|
||
# Download TFTP server
|
||
wget -O tftpd64.464.zip https://github.com/danayer/TP-Link-Archer-C5-V4-Padavan/releases/download/release-2025.04.22_01.20.13/tftpd64.464.zip
|
||
|
||
echo "FW_FILE_NAME=$FW_FILE_NAME" >> $GITHUB_ENV
|
||
echo "BUILD_TIMESTAMP=$(date '+%Y.%m.%d_%H.%M.%S')" >> $GITHUB_ENV
|
||
|
||
- name: Upload artifacts
|
||
uses: actions/upload-artifact@v4
|
||
with:
|
||
name: padavan-ng_${{ env.CONFIG_VENDOR }}_${{ env.CONFIG_FIRMWARE_PRODUCT_ID }}_${{ env.BUILD_TIMESTAMP }}
|
||
retention-days: 7
|
||
path: |
|
||
${{ env.FW_FILE_NAME }}
|
||
tp_recovery.bin
|
||
tftpd64.464.zip
|
||
|
||
- name: Create Release
|
||
id: create_release
|
||
uses: actions/create-release@v1
|
||
env:
|
||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||
with:
|
||
tag_name: release-${{ env.BUILD_TIMESTAMP }}
|
||
release_name: Padavan TP-Link Archer C5 V4 LITE (${{ env.BUILD_TIMESTAMP }})
|
||
body: |
|
||
## 💝 Поддержать разработку
|
||
|
||
Если вам нравится прошивка, вы можете поддержать разработку:
|
||
|
||
- [Купить кофе](https://pay.cloudtips.ru/p/afb55f71)
|
||
- [Поддержать на Boosty](https://boosty.to/danayer)
|
||
|
||
ℹ️ О прошивке
|
||
|
||
Данная прошивка является максимально чистой версией, созданной специально для обхода блокировок сайтов и комфортного пользования интернетом.
|
||
|
||
📋 Инструкция прошивки
|
||
|
||
🔰 Подготовка:
|
||
|
||
🛡️ Отключаем брандмауэр
|
||
🔌 Подключаем кабель в LAN порт
|
||
⚙️ Настраиваем IP: 192.168.0.66
|
||
💿 Распаковываем и запускаем Tftpd64
|
||
📁 Копируем tp_recovery.bin в папку TFTP
|
||
|
||
|
||
📝 Процесс прошивки:
|
||
|
||
🔌 Выключаем роутер
|
||
⚡ Зажимаем Reset + включаем питание
|
||
⏲️ Ждем 10-15 секунд
|
||
🔄 Отпускаем Reset
|
||
📊 Следим за процессом прошивки в окне Tftpd64
|
||
✅ Ждем завершения прошивки
|
||
|
||
|
||
⚠️ Важно: После прошивки верните автоматическое получение IP
|
||
|
||
|
||
🔄 Обновление прошивки
|
||
📥 Установка актуальной версии:
|
||
|
||
📱 Подключитесь к роутеру по кабелю LAN (не по Wi-Fi!)
|
||
🌐 Откройте веб-интерфейс http://192.168.1.1
|
||
⚙️ Перейдите в раздел Администрирование -> Обновление прошивки
|
||
📦 Скачайте последнюю версию прошивки с GitHub Releases
|
||
📤 Выберите скачанный файл .bin (не архив!)
|
||
✅ Нажмите "Обновить" и дождитесь перезагрузки (3-5 минут)
|
||
|
||
|
||
💡 Примечание: Первая прошивка через TFTP нужна только один раз. Все последующие обновления устанавливаются через веб-интерфейс.
|
||
draft: false
|
||
prerelease: false
|
||
|
||
- name: Upload Release Asset
|
||
uses: actions/upload-release-asset@v1
|
||
env:
|
||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||
with:
|
||
upload_url: ${{ steps.create_release.outputs.upload_url }}
|
||
asset_path: ./${{ env.FW_FILE_NAME }}
|
||
asset_name: ${{ env.FW_FILE_NAME }}
|
||
asset_content_type: application/octet-stream
|
||
|
||
- name: Upload Recovery Firmware Asset
|
||
uses: actions/upload-release-asset@v1
|
||
env:
|
||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||
with:
|
||
upload_url: ${{ steps.create_release.outputs.upload_url }}
|
||
asset_path: ./tp_recovery.bin
|
||
asset_name: tp_recovery.bin
|
||
asset_content_type: application/octet-stream
|
||
|
||
- name: Upload TFTP Server Asset
|
||
uses: actions/upload-release-asset@v1
|
||
env:
|
||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||
with:
|
||
upload_url: ${{ steps.create_release.outputs.upload_url }}
|
||
asset_path: ./tftpd64.464.zip
|
||
asset_name: tftpd64.464.zip
|
||
asset_content_type: application/zip
|
||
|
||
- name: Check firmware size
|
||
run: |
|
||
partitions=padavan-ng/trunk/configs/boards/$CONFIG_VENDOR/$CONFIG_FIRMWARE_PRODUCT_ID/partitions.config
|
||
max_fw_size="$(awk '/Firmware/ { getline; getline; sub(",", ""); print strtonum($2); }' "$partitions")"
|
||
fw_size="$(stat -c %s "$FW_FILE_NAME")"
|
||
|
||
if ((fw_size > max_fw_size)); then
|
||
fw_size_fmtd="$(numfmt --grouping "$fw_size") bytes"
|
||
max_fw_size_fmtd="$(numfmt --grouping "$max_fw_size") bytes"
|
||
echo "Firmware size ($fw_size_fmtd) exceeds max size ($max_fw_size_fmtd) for your target device"
|
||
exit 1
|
||
fi
|