其实去年开始就有过对Github的Actions的了解,那时候Actions好像只支持私有仓库,现在公有仓库也支持了,而现在Github个人也可以免费使用私有仓库,那其实也没什么区别。Actions顾名思义就是一系列流程操作,我们撰写流程操作文件,由Github提供的服务器代为执行,Github对此真的是超级大方的,据说每个私有仓库都配备了8g内存和100g硬盘空间,其实这操作上和自己买服务器操作没有很大区别,唯一不同的就是学习成本上,Actions的命令需要熟悉一下。
更新记录
2020/06/03
- 每日最新固件可前往仓库下载,直达https://github.com/skytotwo/NanoPi-R1S-Build-By-Actions/releases
2020/03/19
- 修复之前编译错误,参考klever1988修复错误,感谢。
- 项目每日定时编译最新Lean固件
- 这里放出本人最新编译好的固件,可供下载点我下载,每日最新固件可前往仓库下载,直达https://github.com/skytotwo/NanoPi-R1S-Build-By-Actions
2019/12/19
- 升级OpenWrt版本为19.07(R9.12.03为开发版版本号,12月3日发布)
- 更新最新的L大插件包,加入trojan支持,SmartDns等
- 预配置固件中包含众多插件
2019/12/14
- 修复12月12日开始固件编译失败的问题,原因为上游代码变动导致拉取文件编译失败
- 将固件体积由1G还原成原来的640M
- 修改Actions编译文件,优化流程
2019/12/10
- 1.修复config文件无法响应配置的问题
- 2.加入H3版本固件的编译支持
注意:
- 由于编译会出现很多问题,我这里也会尽快的尝试修复,请持续关注博客更新动态,如果有什么问题可以评论联系我,我会尽可能给予解答。
- 由于在编译出问题后我会更新github代码,如果之前你fork过我的项目代码,你的代码就不会是最新的,可以自行百度查找下“fork的项目如何获取更新”,这里给一个我随便找的教程,可以参考下。
点击——fork的项目如何获取更新教程
介绍
之前我们要编译OpenWrt固件,就需要自己准备好虚拟机,或者租好服务器,准备好梯子,编译一次耗时4,5个小时都有,很费力劳神。实际上像这种编译的操作完全可以放在Github上来执行,最近入手了NanoPi-R1s H5,自己也用传统方式编译了几个固件,但也想着能否尝试更方便的编译。随后,便尝试编写了NanoPi-R1s的Actions的YML执行文件,自己尝试了下,编译很成功,整个过程就是“简单,顺畅”,一共耗时大概2小时,一旦启动了Actions服务,你就可以关闭网页该干嘛干嘛,随时可以打开页面查看进度。下图是编译的结果页面:
可以看到它会按照你给的步骤一步步自动执行,随后编译完成,会打包压缩,直接点击下载即可。
需要的东西
- Github账号
- 乐于尝试的心
对的,只需要这两点就够啦!
步骤
1.fork我的项目(给个star是最好了)
注册或者登录了Github后,在个人中心或者首页搜索框中搜索“NanoPi-R1S-Build-By-Actions”。
或者直达https://github.com/skytotwo/NanoPi-R1S-Build-By-Actions
在搜索结果中找到用户名为“skytotwo”的结果项,进入,没错skytotwo才是我,其它都是fork我的。
进入项目首页,点击右上角的“fork”就好啦,别忘了给我点下左边的“star”哈。
2.配置Actions任务
现在你已经具备了一切需要的东西,我们用你fork下来的项目进行实际操作即可。
- 首先点击OpenWrt-Build-Cli-H5.yml文件(如果你要编译H3固件,就点击OpenWrt-Build-Cli-H3.yml),复制文件内容,然后点击上方的Actions选项
- 进入到Actions页面后点击右上角的“set up workflow yourself”按钮
- 将刚才复制的内容粘贴在编辑框里,文件标题随意取,然后点击右上角的“start commit”按钮,随后点击“commit new file”按钮
- 此时,会生成一个已刚才标题命名的yml文件,注意这时候Actions已经启动了,这时候点击进入Actions查看
- 点击查看任务
- 可以看到它正在按照我们定义的任务一步步执行着
- 这时候我们等待就好了,右边有时间统计,每一个环节耗时多久都能看到,我们关闭网页也没问题,这会儿可以玩会儿游戏,或者看个电影,出去玩耍一会儿,随时打开都能查看进度,大概2小时左右就编译好了。
- 编译成功,可以看到编译界面的步骤都走完了,右上角的Artifact也挂载了固件,可以点击下载
- 下载后解压就是我们要的固件了,其中的config文件是编译配置文件,你也可以用来编译
- 刷入固件演示
actions自动发布固件
我的项目已经设置好了每日定时编译固件,并且发布release版本,编译使用的源码是lean的,插件也会随之更新,想要最新的固件可以来获取最新日期的固件,就直接下载即可
注意:下载后需要解压刷入哦
配置文件详解
其实到这里已经够了,毕竟你已经能够编译固件了,但是如果能够更进一步的了解下如何制作Actions文件,那其实会更有意义,这里稍作解释。
详解
配置文件整体如下:
#
# This is free software, lisence use MIT.
#
# Copyright (C) 2019 Jolly <https://totoro.site>
#
# <https://github.com/skytotwo/NanoPi-R1S-Build-By-Actions>
#
# Write by Jolly 2019/12/7
# last update at 2019/12/19
name: NanoPi-R1s H5 OpenWrt 19.07 Build
on:
push:
branches:
- master
# schedule:
# - cron: 0 20 * * *
# release:
# types: [published]
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@master
with:
ref: master
- name: Initialization Environment
env:
DEBIAN_FRONTEND: noninteractive
run: |
wget -O - https://raw.githubusercontent.com/friendlyarm/build-env-on-ubuntu-bionic/master/install.sh | bash
- name: Install Repo
run: |
git clone https://github.com/friendlyarm/repo
sudo cp repo/repo /usr/bin/
- name: Download Source
run: |
mkdir friendlywrt-h5
cd friendlywrt-h5
repo init -u https://github.com/friendlyarm/friendlywrt_manifests -b master -m h5.xml --repo-url=https://github.com/friendlyarm/repo --no-clone-bundle
- name: Merge UpStearm OpenWrt
run: |
cd friendlywrt-h5
cd .repo/manifests
rm -f ./h5.xml
wget https://raw.githubusercontent.com/skytotwo/NanoPi-R1S-Build-By-Actions/master/source_xml/h5_19.07.xml
cp h5_19.07.xml h5.xml
rm -rf ./h5_19.07.xml
repo sync -c --no-clone-bundle
- name: Merge LEDE
run: |
cd friendlywrt-h5
git clone https://github.com/coolsnowwolf/lede
cd friendlywrt
cp -r ../lede/package/lean package/
sed -i 's/https:\/\/git.openwrt.org\/project\/luci.git^039ef1f4deba725d3591b159bbc9569885d68131/https:\/\/github.com\/coolsnowwolf\/luci/' feeds.conf.default
sed -i 's/https:\/\/git.openwrt.org\/feed\/packages.git^00803ffc91e80b16e9c1603ff32106d42e255923/https:\/\/github.com\/coolsnowwolf\/packages/' feeds.conf.default
- name: Custom Applications
run: |
cd friendlywrt-h5/friendlywrt/package
git clone https://github.com/Baozisoftware/luci-app-koolproxy
- name: Update Target.mk
run: |
cd friendlywrt-h5/friendlywrt/include
sed -i 's/dnsmasq /dnsmasq-full default-settings luci/' target.mk
- name: Update Feeds
run: |
cd friendlywrt-h5/friendlywrt
./scripts/feeds update -a
./scripts/feeds install -a
- name: Costom Configure File
run: |
cd friendlywrt-h5/friendlywrt
rm -f ./.config*
wget https://raw.githubusercontent.com/skytotwo/NanoPi-R1S-Build-By-Actions/master/r1s-h5-config
cp r1s-h5-config .config
- name: Download package
if: always()
run: |
cd friendlywrt-h5/friendlywrt
make download -j8
find dl -size -1024c -exec ls -l {} \;
find dl -size -1024c -exec rm -f {} \;
- name: Build OpenWrt
run: |
cd friendlywrt-h5
./build.sh nanopi_r1s.mk
- name: Zip Files
run: |
find friendlywrt-h5/out/ -name "FriendlyWrt_*img*" | xargs -i zip -r {}.zip {}
- name: Assemble Artifact
run: |
rm -rf ./artifact/
mkdir -p ./artifact/
find friendlywrt-h5/out/ -name "FriendlyWrt_*img.zip*" | xargs -i mv -f {} ./artifact/
- name: Upload Artifact
uses: actions/upload-artifact@master
with:
name: FriendlyWrt_NanoPi-R1S H5 v19.07
path: ./artifact/
这里对大致的点进行解释:
- name:最开始的name是整个任务的名称
- jobs-build-name:这里的name是每一个流程的名称,也就是我们看到的执行过程中一排每一步的名称
下面对具体流程讲解:
- Checkout:是切换项目分支,默认主分支
- Initialization Environment:初始化编译环境,安装编译包,库
- Install Env Tools:安装编译工具
- Install Repo:安装repo工具
- Download Source:下载友善官方固件源码
- Merge UpStearm OpenWrt:因为OpenWrt官方在18.06后就不再支持NanoPi R1,所以我们需要追踪到18.06前的代码
- Merge LEDE:下载L大的固件,复制插件包文件,修改feeds.conf.default
- Update Target.mk:将dnsmasq修改成dnsmasq-full
- Update Feeds:更新feed
- Costom Configure File:将一开始提供的r1s-h5-config文件拷贝成为编译文件.config
- Download package:下载所有包文件
- Build OpenWrt:编译固件,这里最耗时
- Zip Files:将编译好的固件压缩
- Assemble Artifact:将压缩好的固件移动到artifact文件夹中
- Upload Artifact:将artifact上传挂载,以便提供外部下载
后记
整个流程就是这样的,希望你能一步跑通,如有错误,请评论告诉我吧。
版权属于:Jolly
本文链接:https://totoro.site/index.php/archives/70/
关于转载:原创文章,禁止转载