├── .github └── workflows │ └── 798x-UBOOT.yml └── README.md /.github/workflows/798x-UBOOT.yml: -------------------------------------------------------------------------------- 1 | name: 798x-UBOOT 2 | 3 | on: 4 | #自动编译:每周日早上4点 5 | #schedule: 6 | #- cron: 0 20 * * 0 7 | #手动编译 8 | workflow_dispatch: 9 | 10 | env: 11 | GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} 12 | WRT_TARGET: MTK-798x 13 | WRT_REPO: https://github.com/1715173329/bl-mt798x-oss.git 14 | WRT_BRANCH: atf-2025 15 | 16 | permissions: write-all 17 | 18 | jobs: 19 | cleanup: 20 | runs-on: ubuntu-latest 21 | steps: 22 | - name: Delete old Releases and Workflows 23 | uses: ophub/delete-releases-workflows@main 24 | with: 25 | gh_token: ${{secrets.GITHUB_TOKEN}} 26 | delete_releases: true 27 | releases_keep_latest: 0 28 | delete_tags: true 29 | delete_workflows: true 30 | workflows_keep_day: 0 31 | 32 | build: 33 | runs-on: ubuntu-latest 34 | needs: cleanup 35 | strategy: 36 | fail-fast: false 37 | #max-parallel: 4 38 | matrix: 39 | WRT_ATF: [atf-20220606-637ba581b, atf-20240117-bacca82a8] 40 | WRT_MTK: [uboot-mtk-20230718-09eda825] 41 | 42 | steps: 43 | - name: Checkout Projects 44 | uses: actions/checkout@main 45 | 46 | - name: Initialization Environment 47 | env: 48 | DEBIAN_FRONTEND: noninteractive 49 | run: | 50 | sudo -E apt -yqq purge firefox 51 | sudo -E apt -yqq update 52 | sudo -E apt -yqq full-upgrade 53 | sudo -E apt -yqq autoremove --purge 54 | sudo -E apt -yqq autoclean 55 | sudo -E apt -yqq clean 56 | sudo -E apt -yqq install dos2unix bison build-essential device-tree-compiler flex gcc-aarch64-linux-gnu libssl-dev qemu-user-static 57 | sudo -E systemctl daemon-reload 58 | sudo -E timedatectl set-timezone "Asia/Shanghai" 59 | 60 | sudo mkdir -p /mnt/build_wrt 61 | sudo chown $USER:$USER /mnt/build_wrt 62 | sudo ln -s /mnt/build_wrt $GITHUB_WORKSPACE/wrt 63 | 64 | - name: Initialization Values 65 | run: | 66 | echo "WRT_AUTHOR=$(echo $WRT_REPO | cut -d '/' -f 4)" >> $GITHUB_ENV 67 | echo "WRT_DATE=$(TZ=UTC-8 date +"%y.%m.%d")" >> $GITHUB_ENV 68 | echo "WRT_VER=$(echo ${{matrix.WRT_ATF}} | grep -oP 'atf-\d+')_$(echo ${{matrix.WRT_MTK}} | grep -oP 'mtk-\d+')" >> $GITHUB_ENV 69 | 70 | - name: Clone Code 71 | run: | 72 | git clone --depth=1 --single-branch --branch $WRT_BRANCH $WRT_REPO ./wrt/ 73 | 74 | - name: Compile Prepare 75 | run: | 76 | sed -i "5s/UBOOT_DIR=.*/UBOOT_DIR=${{matrix.WRT_MTK}}/" ./wrt/build.sh 77 | sed -i "7s/ATF_DIR=.*/ATF_DIR=${{matrix.WRT_ATF}}/" ./wrt/build.sh 78 | 79 | # 收集 uboot 配置并生成 Uboots.txt 80 | declare -A lines_map 81 | while IFS= read -r f; do 82 | [[ $(basename "$f") =~ ^(mt798[16])_(.*)_defconfig$ ]] || continue 83 | soc="${BASH_REMATCH[1]}" 84 | rest="${BASH_REMATCH[2]}" 85 | board="${rest%_multi_layout}" 86 | 87 | key="$soc:$board" 88 | if [[ $rest == *_multi_layout ]]; then 89 | lines_map["$key"]="SOC=$soc BOARD=$board MULTI_LAYOUT=1 ./build.sh" 90 | elif [[ -z "${lines_map[$key]}" ]]; then 91 | lines_map["$key"]="SOC=$soc BOARD=$board ./build.sh" 92 | fi 93 | done < <(find ./wrt/uboot-mtk-*/configs -type f -name 'mt798*defconfig' | grep -iE 'mt798[16]_' | grep -ivE 'rfb|fpga') 94 | 95 | # 输出 Uboots.txt 96 | printf "%s\n" "${lines_map[@]}" | sort > ./Uboots.txt 97 | 98 | # 生成 TYPE_7981 和 TYPE_7986(按 SOC 分类,BOARD 大写 + 排序) 99 | for soc in 7981 7986; do 100 | boards=$(awk -v s="SOC=mt$soc" '$0 ~ s { 101 | for (i=1; i<=NF; i++) if ($i ~ /^BOARD=/) { 102 | split($i, a, "="); print toupper(a[2]); 103 | } 104 | }' ./Uboots.txt | sort -u | xargs) 105 | eval "TYPE_$soc=\"$boards\"" 106 | done 107 | 108 | # 检查权限 109 | mv -f Uboots.txt Uboots.sh 110 | find ./ -maxdepth 3 -type f -iregex ".*\(txt\|sh\)$" -exec dos2unix {} \; -exec chmod +x {} \; 111 | 112 | echo "WRT_TYPE_7981=$TYPE_7981" >> $GITHUB_ENV 113 | echo "WRT_TYPE_7986=$TYPE_7986" >> $GITHUB_ENV 114 | 115 | - name: Compile Firmware 116 | run: | 117 | cd ./wrt/ 118 | 119 | $GITHUB_WORKSPACE/Uboots.sh 120 | 121 | - name: Machine Information 122 | run: | 123 | cd ./wrt/ 124 | 125 | echo "=======================" 126 | lscpu | grep -E "name|Core|Thread" 127 | echo "=======================" 128 | df -h 129 | echo "=======================" 130 | du -h --max-depth=1 131 | echo "=======================" 132 | 133 | - name: Package Firmware 134 | run: | 135 | cd ./wrt/ && mkdir ./upload/ 136 | 137 | for FILE in $(find ./output/ -type f -iname "*.*") ; do 138 | EXT=$(basename $FILE | cut -d '.' -f 2-) 139 | NAME=$(basename $FILE | cut -d '.' -f 1) 140 | NEW_FILE="$NAME"_"$WRT_VER"_"$WRT_DATE"."$EXT" 141 | mv -f $FILE ./upload/$NEW_FILE 142 | done 143 | 144 | zip -r ./upload/"$WRT_AUTHOR"_"$WRT_VER"_"$WRT_DATE".zip ./upload/*.* 145 | 146 | - name: Release Firmware 147 | uses: softprops/action-gh-release@v2 148 | with: 149 | tag_name: ${{env.WRT_AUTHOR}}_${{env.WRT_VER}}_${{env.WRT_DATE}} 150 | files: ./wrt/upload/*.* 151 | body: | 152 | 这是个平台固件包,内含多个设备! 153 | 请注意选择你需要的设备固件! 154 | 不要问,刷就完事了! 155 | 156 | 平台:${{env.WRT_TARGET}} 157 | 源码:${{env.WRT_REPO}} 158 | 分支:${{env.WRT_BRANCH}} 159 | 160 | ATF版本:${{matrix.WRT_ATF}} 161 | MTK版本:${{matrix.WRT_MTK}} 162 | 163 | 7981设备:${{env.WRT_TYPE_7981}} 164 | 7986设备:${{env.WRT_TYPE_7986}} 165 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # UBOOT-CI 2 | 云编译UBOOT固件 3 | 4 | UBOOT源码: 5 | 6 | https://github.com/hanwckf/bl-mt798x.git 7 | 8 | https://github.com/1715173329/bl-mt798x-oss.git 9 | 10 | # 固件简要说明: 11 | 12 | 固件每周一早上4点自动编译。 13 | 14 | 固件信息里的时间为编译开始的时间,方便核对上游源码提交时间。 15 | 16 | MEDIATEK系列。 17 | 18 | # 目录简要说明: 19 | 20 | Depends.txt——环境依赖列表 21 | 22 | Uboots.sh——Uboot型号脚本 23 | 24 | workflows——自定义CI配置 25 | --------------------------------------------------------------------------------