AutoBuild-Actions: 20211212 功能更新

2021/12/12 更新内容

1. 新增固件标签 Default_FLAG, 一键更新固件时会自动检测带该标签的固件版本, e.g. 若固件标签为 Full, 则更新固件时仅可以更新到固件名称中带 Full 标签的版本
   补充: 用户自定义变量 Default_FLAG, 支持数字与字母的组合 [0-9a-zA-Z] 例如 [Full Lite Daily1 Test2], 不支持标点符号, 不能为空
         当该值为 AUTO 时, 将自动从配置文件名称获取, 格式为 <TARGET_PROFILE>-<FLAG>, e.g. 配置文件名称为 [x86_64-Test 或 d-team_newifi-d2-Lite], 则标签分别为 [Test Lite]; 配置文件若为不规则命名或无标签例如 [x86_64 X86 NEWIFI-D2], 则标签自动设定为 Full
		 同时支持在手动编译时临时修改, 点击 Run workflow 后修改 固件名称后缀 [可选] 值即可, 优先级高于用户自定义变量 Default_FLAG
         固件内支持标签的快速切换, 切换方法 autoupdate --flag <标签名>, 恢复默认 autoupdate --flag reset
2. AutoBuild_Function.sh Firmware_Diy 函数中新增 CONFIG_FILE TARGET_FLAG 等可调用变量
3. 新增一些设备支持 (也许, 我也不知道)

改动内容较大, 建议重新 Fork 本仓库
This commit is contained in:
Hyy2001X
2021-12-12 01:05:38 +08:00
parent 12282b826e
commit a4c4df601d
9 changed files with 223 additions and 97 deletions
+73 -35
View File
@@ -51,25 +51,48 @@ Firmware_Diy_Before() {
TARGET_SUBTARGET="$(awk -F '[="]+' '/TARGET_SUBTARGET/{print $2}' ${CONFIG_TEMP})"
[[ -z ${Firmware_Format} || ${Firmware_Format} =~ (false|AUTO) ]] && {
case "${TARGET_BOARD}" in
ramips | reltek | ipq40xx | ath79 | ipq807x)
ramips | reltek | ath* | ipq* | bcm47xx | bmips | kirkwood | mediatek)
Firmware_Format=bin
;;
rockchip | x86)
[[ $(cat ${CONFIG_TEMP}) =~ CONFIG_TARGET_IMAGES_GZIP=y ]] && {
Firmware_Format=img.gz
} || Firmware_Format=img
rockchip | x86 | bcm27xx | mxs | sunxi | zynq)
Firmware_Format=$(if_IMG)
;;
mvebu)
case "${TARGET_SUBTARGET}" in
cortexa53 | cortexa72)
Firmware_Format=$(if_IMG)
;;
esac
;;
octeon | oxnas | pistachio)
Firmware_Format=tar
;;
esac
}
[[ ${Author_URL} != false && ${Author_URL} == AUTO ]] && Author_URL=${Github}
[[ ${Author_URL} == false ]] && unset Author_URL
if [[ ${Default_FLAG} == AUTO ]]
then
TARGET_FLAG=${CONFIG_FILE/${TARGET_PROFILE}-/}
[[ ${TARGET_FLAG} =~ ${TARGET_PROFILE} || -z ${TARGET_FLAG} || ${TARGET_FLAG} == ${CONFIG_FILE} ]] && TARGET_FLAG=Full
else
if [[ ! ${Default_FLAG} =~ (\"|=|-|_|\.|\#|\|) && ${Default_FLAG} =~ [a-zA-Z0-9] ]]
then
TARGET_FLAG="${Default_FLAG}"
fi
fi
if [[ ! ${Tempoary_FLAG} =~ (\"|=|-|_|\.|\#|\|) && ${Tempoary_FLAG} =~ [a-zA-Z0-9] ]]
then
TARGET_FLAG="${Tempoary_FLAG}"
fi
case "${TARGET_BOARD}" in
x86)
AutoBuild_Firmware="AutoBuild-${OP_REPO}-${TARGET_PROFILE}-${OP_VERSION}-BOOT-SHA256.FORMAT"
AutoBuild_Firmware="AutoBuild-${OP_REPO}-${TARGET_PROFILE}-${OP_VERSION}-BOOT-${TARGET_FLAG}-SHA256.FORMAT"
;;
*)
AutoBuild_Firmware="AutoBuild-${OP_REPO}-${TARGET_PROFILE}-${OP_VERSION}-SHA256.FORMAT"
AutoBuild_Firmware="AutoBuild-${OP_REPO}-${TARGET_PROFILE}-${OP_VERSION}-${TARGET_FLAG}-SHA256.FORMAT"
;;
esac
cat >> ${GITHUB_ENV} <<EOF
Home=${Home}
CONFIG_TEMP=${CONFIG_TEMP}
@@ -119,6 +142,7 @@ Github=${Github}
TARGET_PROFILE=${TARGET_PROFILE}
TARGET_BOARD=${TARGET_BOARD}
TARGET_SUBTARGET=${TARGET_SUBTARGET}
TARGET_FLAG=${TARGET_FLAG}
OP_VERSION=${OP_VERSION}
OP_AUTHOR=${OP_AUTHOR}
OP_REPO=${OP_REPO}
@@ -151,9 +175,6 @@ EOF
cat >> ${Version_File} <<EOF
sed -i '/check_signature/d' /etc/opkg.conf
# sed -i 's#mirrors.cloud.tencent.com/lede#downloads.immortalwrt.cnsztl.eu.org#g' /etc/opkg/distfeeds.conf
# sed -i 's#18.06.9/##g' /etc/opkg/distfeeds.conf
# sed -i 's#releases/#snapshots/#g' /etc/opkg/distfeeds.conf
sed -i 's/\"services\"/\"nas\"/g' /usr/lib/lua/luci/controller/aliyundrive-webdav.lua
sed -i 's/services/nas/g' /usr/lib/lua/luci/view/aliyundrive-webdav/aliyundrive-webdav_log.htm
@@ -176,19 +197,37 @@ then
fi
exit 0
EOF
sed -i "s?${zzz_Default_Version}?${zzz_Default_Version} @ ${Author} [${Display_Date}]?g" ${Version_File}
if [[ -n ${TARGET_FLAG} ]]
then
sed -i "s?${zzz_Default_Version}?${TARGET_FLAG} ${zzz_Default_Version} @ ${Author} [${Display_Date}]?g" ${Version_File}
else
sed -i "s?${zzz_Default_Version}?${zzz_Default_Version} @ ${Author} [${Display_Date}]?g" ${Version_File}
fi
ECHO "Downloading [ShadowSocksR Plus+] for coolsnowwolf/lede ..."
AddPackage git other helloworld fw876 master
sed -i 's/143/143,8080,8443/' $(PKG_Finder d package luci-app-ssr-plus)/root/etc/init.d/shadowsocksr
;;
immortalwrt/immortalwrt)
Copy ${CustomFiles}/Depends/openwrt_release_${OP_AUTHOR} ${BASE_FILES}/etc openwrt_release
sed -i "s?ImmortalWrt?ImmortalWrt @ ${Author} [${Display_Date}]?g" ${Version_File}
if [[ -n ${TARGET_FLAG} ]]
then
sed -i "s?ImmortalWrt?ImmortalWrt ${TARGET_FLAG} @ ${Author} [${Display_Date}]?g" ${Version_File}
else
sed -i "s?ImmortalWrt?ImmortalWrt @ ${Author} [${Display_Date}]?g" ${Version_File}
fi
;;
esac
sed -i "s?By?By ${Author}?g" ${CustomFiles}/Depends/banner
sed -i "s?Openwrt?Openwrt ${OP_VERSION} / AutoUpdate ${AutoUpdate_Version}?g" ${CustomFiles}/Depends/banner
[[ -n ${Banner_Message} ]] && sed -i "s?Powered by AutoBuild-Actions?${Banner_Message}?g" ${CustomFiles}/Depends/banner
if [[ -n ${Banner_Message} ]]
then
if [[ -n ${TARGET_FLAG} ]]
then
sed -i "s?Powered by AutoBuild-Actions?${Banner_Message} @ ${TARGET_FLAG}?g" ${CustomFiles}/Depends/banner
else
sed -i "s?Powered by AutoBuild-Actions?${Banner_Message}?g" ${CustomFiles}/Depends/banner
fi
fi
case "${OP_AUTHOR}/${OP_REPO}" in
immortalwrt/immortalwrt)
Copy ${CustomFiles}/Depends/banner ${Home}/$(PKG_Finder d package default-settings)/files openwrt_banner
@@ -271,9 +310,8 @@ EOF
ECHO "[${OP_AUTHOR}]: Current OP_AUTHOR is not supported !"
fi
fi
if [[ ${Author_URL} != false ]]
if [[ -n ${Author_URL} ]]
then
[[ ${Author_URL} == AUTO ]] && Author_URL=${Github}
cat >> ${CONFIG_TEMP} <<EOF
CONFIG_KERNEL_BUILD_USER="${Author}"
@@ -300,7 +338,12 @@ Firmware_Diy_End() {
}
;;
*)
Process_Firmware ${Firmware_Format}
if [[ -n ${Firmware_Format} ]]
then
Process_Firmware ${Firmware_Format}
else
Process_Firmware $(List_Format)
fi
;;
esac
[[ $(ls) =~ 'AutoBuild-' ]] && {
@@ -322,21 +365,21 @@ Process_Firmware_Core() {
Firmware_Format_Defined=$1
shift
while [[ $1 ]];do
AutoBuild_Firmware=$(Get_Variable AutoBuild_Firmware)
Firmware=${AutoBuild_Firmware}
case "${TARGET_BOARD}" in
x86)
[[ $1 =~ efi ]] && {
FW_Boot_Method=UEFI
} || FW_Boot_Method=BIOS
AutoBuild_Firmware=${AutoBuild_Firmware/BOOT/${FW_Boot_Method}}
Firmware=${Firmware/BOOT/${FW_Boot_Method}}
;;
esac
AutoBuild_Firmware=${AutoBuild_Firmware/SHA256/$(Get_SHA256 $1)}
AutoBuild_Firmware=${AutoBuild_Firmware/FORMAT/${Firmware_Format_Defined}}
Firmware=${Firmware/SHA256/$(Get_SHA256 $1)}
Firmware=${Firmware/FORMAT/${Firmware_Format_Defined}}
[[ -f $1 ]] && {
ECHO "Copying [$1] to [${AutoBuild_Firmware}] ..."
cp -a $1 ${AutoBuild_Firmware}
} || ECHO "Unable to access [${AutoBuild_Firmware}] ..."
ECHO "Copying [$1] to [${Firmware}] ..."
cp -a $1 ${Firmware}
} || ECHO "Unable to access [${Firmware}] ..."
shift
done
}
@@ -370,23 +413,18 @@ Get_SHA256() {
List_REGEX | grep "$1" | cut -c1-5
}
Get_Variable() {
local Result="$(grep "$1" ${ENV_FILE} | grep -v "#" | awk -F '=' '{print $2}')"
if [[ -n ${Result} ]]
then
eval echo "${Result}"
return 0
else
return 1
fi
}
GET_Branch() {
git -C $(pwd) rev-parse --abbrev-ref HEAD | grep -v HEAD || \
git -C $(pwd) describe --exact-match HEAD || \
git -C $(pwd) rev-parse HEAD
}
if_IMG() {
[[ $(cat ${CONFIG_TEMP}) =~ CONFIG_TARGET_IMAGES_GZIP=y ]] && {
echo img.gz
} || echo img
}
ECHO() {
echo "[$(date "+%H:%M:%S")] $*"
}