padavanonly-ghl001 #30
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#================================================= | |
# Description: Build OpenWrt using GitHub Actions | |
# Lisence: MIT | |
# Author: kenzo | |
#================================================= | |
name: padavanonly-ghl001 | |
on: | |
repository_dispatch: | |
workflow_dispatch: | |
inputs: | |
ssh: | |
description: 'ssh' | |
required: false | |
default: 'false' | |
env: | |
UPLOAD_BIN_DIR: true | |
UPLOAD_FIRMWARE: true | |
UPLOAD_COWTRANSFER: false | |
UPLOAD_WETRANSFER: false | |
UPLOAD_RELEASE: true | |
SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }} | |
PASSWORD: ${{ secrets.PASSWORD }} | |
REMOTE_HOST: ${{ secrets.REMOTE_HOST }} | |
REMOTE_PORT: ${{ secrets.REMOTE_PORT }} | |
DOCKER_ID: ${{ secrets.DOCKER_ID }} | |
DOCKER_PASSWD: ${{ secrets.DOCKER_PASSWD }} | |
TZ: Asia/Shanghai | |
jobs: | |
merge: | |
runs-on: Ubuntu-22.04 | |
if: github.event.repository.owner.id == github.event.sender.id | |
name: Build ${{matrix.target}} | |
strategy: | |
fail-fast: false | |
matrix: | |
target: [ghl-r-001] | |
steps: | |
- name: 检查 | |
uses: actions/checkout@main | |
- name: 初始化环境 | |
env: | |
DEBIAN_FRONTEND: noninteractive | |
run: | | |
( sudo -E apt-get -qq update | |
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 swig libpython3-dev aria2 jq subversion qemu-utils ccache rename libelf-dev libfuse-dev | |
sudo -E apt-get -qq purge azure-cli ghc* zulu* hhvm llvm* firefox powershell openjdk* dotnet* google* mysql* php* android* | |
sudo rm -rf /etc/apt/sources.list.d/* /usr/share/dotnet /usr/local/lib/android /opt/ghc | |
sudo -E apt-get -qq autoremove --purge | |
sudo -E apt-get -qq clean ) & | |
sudo timedatectl set-timezone "$TZ" | |
- name: 设置当前的日期 | |
id: date | |
run: | | |
echo "date=$(date +'%m/%d_%Y_%H/%M')" >> $GITHUB_ENV | |
echo "date2=$(date +'%Y/%m %d')" >> $GITHUB_ENV | |
echo "date3=$(date +'%m.%d')" >> $GITHUB_ENV | |
echo "DOCKERTAG=${{ secrets.DOCKER_ID }}/openwrt-6p:latest" >> $GITHUB_ENV | |
VERSION="$(echo "${{github.event.action}}" | grep -Eo " [0-9.]+" | sed -e 's/ //')" || true | |
[ "$VERSION" ] && echo "VERSION=$VERSION" >> $GITHUB_ENV || echo "VERSION=$(date +'%m.%d')" >> $GITHUB_ENV | |
- name: 克隆源代码 | |
env: | |
REPO_URL: https://github.com/padavanonly/immortalwrt | |
REPO_BRANCH: master | |
run: | | |
git clone --depth 1 $REPO_URL -b $REPO_BRANCH openwrt | |
cd openwrt | |
sed -i '$a src-git smpackage https://github.com/kenzok8/small-package' feeds.conf.default | |
- name: 自定义安装源 | |
working-directory: ./openwrt | |
run: | | |
find ./ | grep Makefile | grep v2ray-geodata | xargs rm -f | |
find ./ | grep Makefile | grep mosdns | xargs rm -f | |
git clone https://github.com/sbwml/luci-app-mosdns -b v5 package/mosdns | |
git clone https://github.com/sbwml/v2ray-geodata package/v2ray-geodata | |
rm -rf feeds/luci/applications/luci-app-mosdns | |
rm -rf feeds/packages/net/mosdns | |
rm -rf feeds/packages/net/v2ray-geodata | |
git clone https://github.com/tty228/luci-app-adguardhome.git package/luci-app-adguardhome | |
git clone -b luci https://github.com/pexcn/openwrt-chinadns-ng.git package/luci-app-chinadns-ng | |
#git clone https://github.com/kuoruan/openwrt-upx.git package/openwrt-upx | |
#git clone https://github.com/QiuSimons/openwrt-mos.git package/openwrt-mos | |
#git clone https://github.com/QiuSimons/openwrt-mos.git && mv -n openwrt-mos/luci-* package/openwrt-upx ; rm -rf openwrt-mos | |
#find -type f -name Makefile -exec sed -ri 's#mosdns[-_]neo#mosdns#g' {} \; | |
#find -type f -name Makefile -exec sed -ri 's#mosdns[-_]v5#mosdns#g' {} \; | |
#git clone https://github.com/kenzok8/small-package package/jeii | |
- name: 更新 & 安装 feeds | |
working-directory: ./openwrt | |
run: | | |
./scripts/feeds update -a | |
./scripts/feeds install -a | |
cp -r -f ./feeds/smpackage/smartdns/Makefile ./feeds/packages/net/smartdns/Makefile | |
cp -r -f ./feeds/smpackage/luci-app-smartdns/Makefile ./feeds/luci/applications/luci-app-smartdns/Makefile | |
- name: 自定义配置 ${{matrix.target}} | |
env: | |
CONFIG_FILE: '${{matrix.target}}.config' | |
run: | | |
[ -e $CONFIG_FILE ] && mv $CONFIG_FILE openwrt/.config | |
chmod +x ./customize.sh && ./customize.sh | |
cd openwrt | |
cp -f feeds/smpackage/.github/diy/default-settings package/emortal/default-settings/files/99-default-settings | |
cp -f feeds/smpackage/.github/diy/banner package/emortal/default-settings/files/openwrt_banner | |
cp -f feeds/smpackage/.github/diy/banner package/base-files/files/etc/banner | |
cp -f feeds/smpackage/.github/diy/index_x86.htm package/emortal/autocore/files/generic/index.htm | |
sed -i "s/%D %V, %C/openwrt $(date +'%m.%d') by kenzo/g" package/base-files/files/etc/banner | |
#cp -f feeds/smpackage/.github/diy/${{matrix.target}}.config .config && make defconfig | |
make defconfig | |
- name: 下载包文件 | |
working-directory: ./openwrt | |
run: | | |
make download -j$(nproc) | |
find dl -size -1024c -exec rm -f {} \; | |
- name: 编译固件 | |
id: compile | |
working-directory: ./openwrt | |
run: | | |
echo -e "$(($(nproc)+1)) thread compile" | |
make -j$(($(nproc)+1)) || make -j1 V=s | |
echo "status=success" >> $GITHUB_OUTPUT | |
- name: 检查空间使用情况 | |
if: (!cancelled()) | |
run: df -hT | |
- name: 上传bin目录 | |
uses: actions/upload-artifact@main | |
if: steps.compile.outputs.status == 'success' && env.UPLOAD_BIN_DIR == 'true' | |
with: | |
name: OpenWrt_bin${{ env.DEVICE_NAME }}${{ env.FILE_DATE }} | |
path: openwrt/bin | |
- name: 整理文件 | |
id: organize | |
if: env.UPLOAD_FIRMWARE == 'true' && !cancelled() | |
run: | | |
mkdir firmware | |
mv -f openwrt/bin/targets/*/*/{*combined*,*sysupgrade*} ./firmware/ 2>/dev/null || true | |
mv -f openwrt/bin/packages/*/base/{*smartdns*,*adguardhome*,*mosdns*} ./firmware/ || true | |
mv -f openwrt/bin/packages/*/packages/{*smartdns*,*adguardhome*,*mosdns*,*dnscrypt*} ./firmware/ || true | |
mv -f openwrt/bin/packages/*/smpackage/{*smartdns*,*adguardhome*,*mosdns*,*dnscrypt*} ./firmware/ || true | |
cp openwrt/.config ./firmware/${{matrix.target}}.config | |
cp openwrt/build_dir/target-*/linux-*/linux-*/.config ./firmware/${{matrix.target}}_kernel.config | |
cd firmware | |
echo "v${{ env.date2 }}" > version.txt | |
md5=$((md5sum *squashfs-sysupgrade* || md5sum *squashfs-combined-efi*) | awk '{print $1}') 2>/dev/null | |
echo $md5 >> version.txt | |
rename -v "s/^openwrt/${{ env.VERSION }}-openwrt/" * || true | |
rename -v "s/friendlyarm_//" *gz || true | |
echo $md5 >> version.txt | |
echo ${{matrix.target}} >> version.txt | |
rm -rf sha256sums | |
echo "FIRMWARE=$PWD" >> $GITHUB_ENV | |
- name: 上传固件目录 | |
uses: actions/upload-artifact@main | |
if: steps.organize.outputs.status == 'success' && !cancelled() | |
with: | |
name: ${{ env.date3 }}_${{matrix.target}} | |
path: ${{ env.FIRMWARE }} | |
- name: 上传固件cowtransfer | |
id: cowtransfer | |
if: steps.organize.outputs.status == 'success' && env.UPLOAD_COWTRANSFER == 'true' && !cancelled() | |
run: | | |
curl -fsSL git.io/file-transfer | sh | |
./transfer cow --block 2621440 -s -p 64 --no-progress ${FIRMWARE} 2>&1 | tee cowtransfer.log | |
echo "::warning file=cowtransfer.com::$(cat cowtransfer.log | grep https)" | |
echo "url=$(cat cowtransfer.log | grep https | cut -f3 -d" ")" >> $GITHUB_OUTPUT | |
- name: 上传固件WeTransfer | |
id: wetransfer | |
if: steps.organize.outputs.status == 'success' && env.UPLOAD_WETRANSFER == 'true' && !cancelled() | |
run: | | |
curl -fsSL git.io/file-transfer | sh | |
./transfer wet -s -p 16 --no-progress ${FIRMWARE} 2>&1 | tee wetransfer.log | |
echo "::warning file=wetransfer.com::$(cat wetransfer.log | grep https)" | |
echo "url=$(cat wetransfer.log | grep https | cut -f3 -d" ")" >> $GITHUB_OUTPUT | |
- name: 生成发布标签 | |
id: tag | |
if: env.UPLOAD_RELEASE == 'true' && !cancelled() | |
run: | | |
touch release.txt | |
[ $UPLOAD_COWTRANSFER = true ] && echo "🔗 [Cowtransfer](${{ steps.cowtransfer.outputs.url }})" >> release.txt | |
[ $UPLOAD_WETRANSFER = true ] && echo "🔗 [WeTransfer](${{ steps.wetransfer.outputs.url }})" >> release.txt | |
echo "status=success" >> $GITHUB_OUTPUT | |
- name: 上传固件发布 | |
uses: softprops/action-gh-release@master | |
if: steps.tag.outputs.status == 'success' && !cancelled() | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
files: "${{ env.FIRMWARE }}/*" | |
name: ${{ env.date2 }} ${{matrix.target}} | |
tag_name: ${{ env.date }}_${{matrix.target}} | |
body_path: release.txt | |
- name: 删除工作流 | |
uses: Mattraks/delete-workflow-runs@main | |
with: | |
retain_days: 2 | |
keep_minimum_runs: 1 | |
- name: 删除旧版本 | |
uses: dev-drprasad/delete-older-releases@master | |
if: env.UPLOAD_RELEASE == 'true' && !cancelled() | |
with: | |
keep_latest: 6 | |
delete_tags: true | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |