X86_64 #56
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
# | |
# Copyright (c) 2019-2020 P3TERX <https://p3terx.com> | |
# | |
# This is free software, licensed under the MIT License. | |
# See /LICENSE for more information. | |
# | |
# https://github.com/P3TERX/Actions-OpenWrt | |
# Description: Build OpenWrt using GitHub Actions | |
# | |
name: X86_64 | |
on: | |
push: | |
branches: | |
- main | |
paths: | |
- 'X86_64/.config' | |
workflow_dispatch: | |
schedule: | |
- cron: '0 0 1 * *' | |
env: | |
REPO_URL: https://github.com/coolsnowwolf/lede | |
REPO_BRANCH: master | |
FEEDS_CONF: X86_64/feeds.conf.default | |
CONFIG_FILE: X86_64/.config | |
DIY_P1_SH: X86_64/diy1.sh | |
DIY_P2_SH: X86_64/diy2.sh | |
UPLOAD_FIRMWARE: false | |
UPLOAD_RELEASE: true | |
PUSHPLUS_TOKEN: ${{ secrets.PUSHPLUS_TOKEN }} | |
TZ: Asia/Shanghai | |
jobs: | |
build: | |
runs-on: ubuntu-20.04 | |
steps: | |
- name: 检查项目分支 | |
uses: actions/checkout@main | |
- name: 初始化编译环境 | |
env: | |
DEBIAN_FRONTEND: noninteractive | |
run: | | |
sudo rm -rf /etc/apt/sources.list.d/* /usr/share/dotnet /usr/local/lib/android /opt/ghc | |
sudo sed -i "s|http://.*/ubuntu|http://mirror.arizona.edu/ubuntu|g" /etc/apt/sources.list | |
sudo -E apt-get -qq update | |
sudo -E apt-get -qq install $(curl -fsSL git.io/depends-ubuntu-2004) | |
sudo -E apt-get -qq autoremove --purge | |
sudo -E apt-get -qq clean | |
sudo timedatectl set-timezone "$TZ" | |
sudo mkdir -p /workdir | |
sudo chown $USER:$GROUPS /workdir | |
echo "FIRMWARE_VERSION=$(date +"%y%m%d")" >> $GITHUB_ENV | |
echo "START_DATE=$(date +%s)" >> $GITHUB_ENV | |
- name: PushPlus 通知 | |
if: env.PUSHPLUS_TOKEN | |
run: | | |
curl -k -d "title=开始编译X86_64固件" -d "content=编译固件版本:${{ env.FIRMWARE_VERSION }}%0A编译开始时间:$(date -d "@${{ env.START_DATE }}" +"%Y年%m月%d日 %H点%M分")" -d "token=${{ env.PUSHPLUS_TOKEN }}&channel=cp&webhook=server" "http://www.pushplus.plus/send" | |
- name: 下载源码 | |
working-directory: /workdir | |
run: | | |
df -hT $PWD | |
git clone --single-branch -b $REPO_BRANCH $REPO_URL openwrt | |
ln -sf /workdir/openwrt $GITHUB_WORKSPACE/openwrt | |
- name: 加载软件源 | |
run: | | |
[ -e $FEEDS_CONF ] && mv $FEEDS_CONF openwrt/feeds.conf.default | |
chmod +x $DIY_P1_SH | |
cd openwrt | |
$GITHUB_WORKSPACE/$DIY_P1_SH | |
- name: 更新并安装软件源 | |
run: cd openwrt && ./scripts/feeds update -a && ./scripts/feeds install -a | |
- name: 加载自定义配置 | |
run: | | |
[ -e X86_64/files ] && mv X86_64/files openwrt/files | |
[ -e $CONFIG_FILE ] && mv $CONFIG_FILE openwrt/.config | |
chmod +x $DIY_P2_SH | |
cd openwrt | |
$GITHUB_WORKSPACE/$DIY_P2_SH | |
- name: 下载包 | |
id: package | |
run: | | |
cd openwrt | |
make defconfig | |
make download -j8 | |
find dl -size -1024c -exec ls -l {} \; | |
find dl -size -1024c -exec rm -f {} \; | |
- name: 编译固件 | |
id: compile | |
run: | | |
cd openwrt | |
echo -e "$(nproc) thread compile" | |
if make -j$(nproc); then | |
echo "status=success" >> $GITHUB_OUTPUT | |
else | |
duration=$(( ($(date +%s) - ${{ env.START_DATE }}) / 60 )) && time=$(( duration / 60 ))小时$(( duration % 60 ))分钟 | |
curl -k -d "title=X86_64固件编译失败" -d "content=多线程编译失败,尝试单线程编译%0A固件版本:${{ env.FIRMWARE_VERSION }}%0A编译用时:${time}" -d "token=${{ env.PUSHPLUS_TOKEN }}&channel=cp&webhook=server" "http://www.pushplus.plus/send" | |
second_time=$(date +%s) | |
if make -j1 V=s; then | |
echo "status=success" >> $GITHUB_OUTPUT | |
else | |
duration=$(( ($(date +%s) - ${second_time}) / 60 )) && time=$(( duration / 60 ))小时$(( duration % 60 ))分钟 | |
curl -k -d "title=X86_64固件编译失败" -d "content=单线程编译失败%0A固件版本:${{ env.FIRMWARE_VERSION }}%0A编译用时:${time}" -d "token=${{ env.PUSHPLUS_TOKEN }}&channel=cp&webhook=server" "http://www.pushplus.plus/send" | |
fi | |
fi | |
- name: 整理文件 | |
id: organize | |
if: steps.compile.outputs.status == 'success' && !cancelled() | |
run: | | |
# 整理固件包时候,删除您不想要的固件或者文件,让它不需要上传到Actions空间 | |
cd openwrt/bin/targets/*/* | |
mkdir -p package | |
mv packages package/core | |
mv package packages | |
mv $GITHUB_WORKSPACE/openwrt/bin/packages/*/* packages | |
tar -czf packages.tar.gz packages | |
rm -rf packages | |
rm -rf version.buildinfo | |
rm -rf profiles.json | |
rm -rf *rootfs* | |
rm -rf *kernel* | |
rm -rf *.manifest | |
rm -rf feeds.buildinfo | |
rm -rf sha256sums | |
mv *combined.img* X86_64-${{ env.FIRMWARE_VERSION }}-squashfs.img.gz || echo 没有找到 *combined.img* 文件 | |
mv *combined-efi.img* X86_64-${{ env.FIRMWARE_VERSION }}-squashfs-efi.img.gz || echo 没有找到 *combined-efi.img* 文件 | |
echo -e "$(sha256sum *)\n" > sha256sums | |
echo "FIRMWARE=$PWD" >> $GITHUB_ENV | |
echo "status=success" >> $GITHUB_OUTPUT | |
- name: 上传固件到Github Actions空间 | |
if: steps.organize.outputs.status == 'success' && env.UPLOAD_FIRMWARE == 'true' | |
continue-on-error: true | |
uses: actions/upload-artifact@main | |
with: | |
name: X86_64-${{ env.FIRMWARE_VERSION }} | |
path: ${{ env.FIRMWARE }} | |
- name: 创建release标签 | |
id: tag | |
if: steps.organize.outputs.status == 'success' && env.UPLOAD_RELEASE == 'true' && !cancelled() | |
run: | | |
release_tag="X86_64-${{ env.FIRMWARE_VERSION }}" | |
echo "编译时间:$(date -d "@${{ env.START_DATE }}" +"%Y年%m月%d日 %H点%M分")" >> release.txt | |
echo "默认网关:172.16.1.1" >> release.txt | |
echo "默认密码:password" >> release.txt | |
echo 包含插件:$(grep "CONFIG_PACKAGE_luci-app-\(.*\)=y" openwrt/.config | sed "s/CONFIG_PACKAGE_luci-app-\(.*\)=y/\1/g" | grep -v "_\|arpbind\|autoreboot\|firewall") >> release.txt | |
echo "release_tag=$release_tag" >> $GITHUB_OUTPUT | |
echo "status=success" >> $GITHUB_OUTPUT | |
- name: 将固件上传到release | |
uses: softprops/action-gh-release@v1 | |
if: steps.tag.outputs.status == 'success' && !cancelled() | |
continue-on-error: true | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
id: upload-release | |
with: | |
name: X86_64-${{ env.FIRMWARE_VERSION }} | |
tag_name: ${{ steps.tag.outputs.release_tag }} | |
body_path: release.txt | |
files: ${{ env.FIRMWARE }}/* | |
- name: PushPlus 通知 | |
if: steps.compile.outputs.status == 'success' && env.PUSHPLUS_TOKEN | |
run: | | |
duration=$(( ($(date +%s) - ${{ env.START_DATE }}) / 60 )) && time=$(( duration / 60 ))小时$(( duration % 60 ))分钟 | |
curl -k -d "title=X86_64固件编译成功" -d "content=固件版本:${{ env.FIRMWARE_VERSION }}%0A编译用时:${time}" -d "token=${{ env.PUSHPLUS_TOKEN }}&channel=cp&webhook=server" "http://www.pushplus.plus/send" | |