嘿,小伙伴们👋,今天带来的是一篇非常给力的教程!这次我们要揭秘如何使用GitHub Action构建OpenWrt IPK包。小白也能轻松搞定,快来看看吧!
准备工作:在Github上创建一个账号,并新建一个项目,然后打开Actions面板,创建一条新的工作流new workflow,命名为build-openwrt-ipk.yml。下面开始对里面的内容进行介绍。
一、基础配置
在GitHub Action中,先来看看我们的基础配置部分,从基本的name和on事件开始配置:
name: Build OpenWrt IPK
on:
workflow_dispatch:
inputs:
architecture:
description: 'Target architecture'
required: true
default: 'x86-64'
package:
description: 'Package to build'
required: true
default: 'luci-app-alwaysonline'这里,我们设置了一个手动触发的workflow,并且允许用户选择目标架构和要构建的包。
二、构建工作流程
接下来是构建的核心部分。我们在jobs下定义了一个名为build的工作流程:
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v2
- name: Set up Docker
uses: docker/setup-buildx-action@v1第一步是检查出代码库,第二步是设置Docker环境。Docker是我们构建OpenWrt IPK包的关键工具。
三、构建IPK包
下面是构建IPK包的具体步骤:
- name: Build IPK
run: |
docker pull openwrt/sdk:${{ github.event.inputs.architecture }}
docker run --name openwrtsdk -e FORCE_UNSAFE_CONFIGURE=1 -e TERM=xterm openwrt/sdk:${{ github.event.inputs.architecture }} /bin/bash -c "
echo 'src-git kiddin9 https://github.com/kiddin9/openwrt-packages' >>feeds.conf.default &&
./scripts/feeds update -a &&
./scripts/feeds install ${{ github.event.inputs.package }} &&
make defconfig &&
make package/${{ github.event.inputs.package }}/{clean,compile} -j$(nproc) &&
find /builder/bin/packages -name '*${{ github.event.inputs.package }}*.ipk'
"
docker cp openwrtsdk:/builder/bin/packages ./packages这一部分代码解释起来很简单:我们先从Docker拉取OpenWrt的SDK镜像,然后运行一些脚本来更新feeds,安装指定的包,最后编译生成IPK包并复制到本地。
备注:这里引用的包源为: github.com/kiddin9/openwrt-packages ,可以到此项目下查询有哪些可用的包哦,如有更好的包源也可用自行增加或替换哦。
四、上传IPK包和生成Release
构建完IPK包后,我们需要上传这些包作为artifact:
- name: Upload IPK as artifact
uses: actions/upload-artifact@v2
with:
name: ipk-files
path: packages/**/*.ipk然后,我们生成一个release tag,并创建一个新的GitHub Release:
- name: Generate release tag
id: tag
run: |
echo "::set-output name=release_tag::$(date +"%Y.%m.%d_%H-%M")_${{ github.event.inputs.architecture }}_${{ github.event.inputs.package }}"
- name: Create Release and Upload Asset
uses: softprops/action-gh-release@v1
with:
files: ./packages/**/*${{ github.event.inputs.package }}*.ipk
tag_name: ${{ steps.tag.outputs.release_tag }}
name: Release ${{ steps.tag.outputs.release_tag }}
draft: false
prerelease: false
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}备注:如遇到GITHUB_TOKEN权限问题,请打开github项目Settings->Actions->General->Workflow permissions,圈选 Read and write permissions后Save。
将所有内容合并配置到yml文件后,我们就可以run workflow,根据你的实际情况填入OpenWrt设备的架构和luci-app-xxx的包名,就可以开始运行了。

完成后,我们的IPK包就被上传到了GitHub Release,方便进行下载和使用啦!

看吧,是不是很简单?整个过程只需要配置几个步骤,就可以自动化地构建和发布OpenWrt IPK包。绝绝子,实在是太方便了!希望大家都能学会这个技能,赶快去试试吧!👨💻👩💻
更多关注:www.9418666.xyz
评论 (0)