Skip to content

padavanonly-ghl001

padavanonly-ghl001 #30

#=================================================
# 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 }}