使用 GitHub Actions 编译树莓派内核
仓库地址:https://github.com/GreyCode9/make-raspberrypi-kernel
创建 Token
点击 GitHub 右上角头像 → Settings → Developer settings → Personal access tokens → Generate new token


创建后保存这个秘钥(秘钥只显示一次)
创建仓库
然后点击仓库的 Settings → Secrets → New repository secret,填入刚才生成的秘钥:

创建 Actions
点击 Actions,创建一个 Actions,填入如下内容:
name: Make RaspberryPi Kernel
on:
push:
tags:
- 'v*' # 当推送的 Tag 为 v 开头时触发构建
env:
USE_SSH_CONFIG: true # 是否使用 SSH 连接进行配置
jobs:
build:
runs-on: ubuntu-18.04
steps:
- uses: actions/checkout@v2
- name: pull RaspberryPi Kernel linux
run: |
cd ../
git clone https://github.com/raspberrypi/linux.git
- name: pull RaspberryPi Kernel Tool
run: |
cd ../
git clone https://github.com/raspberrypi/tools.git
- name: Move .config
if: env.USE_SSH_CONFIG == 'false'
run: |
cp .config ../linux
- name: Setup Debug Session # 用 SSH 连接 Actions
if: env.USE_SSH_CONFIG == 'true'
uses: csexton/debugger-action@master
- name: Make
run: |
cd ../
export WORKPATH=$(pwd)
export PATH=$PATH:$WORKPATH/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin
export PATH=$PATH:$WORKPATH/tools/arm-bcm2708/arm-bcm2708-linux-gnueabi/bin
cd linux/
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- zImage modules dtbs -j8
- name: Create Release
id: create_release
uses: actions/create-release@master
env:
GITHUB_TOKEN: ${{ secrets.TOKEN }}
with:
tag_name: ${{ github.ref }}
release_name: Release ${{ github.ref }}
draft: false
prerelease: false
- name: build TAR PACKAGE
run: |
tar -czvf raspberrypi-kernel.tar.gz ../linux/arch/arm/boot
- name: Upload Release Asset
id: upload-release-asset
uses: actions/upload-release-asset@master
env:
GITHUB_TOKEN: ${{ secrets.TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./raspberrypi-kernel.tar.gz
asset_name: raspberrypi-kernel.tar.gz
asset_content_type: application/gzip
两种使用方式:
- 在本地配置好
.config文件上传到仓库,把USE_SSH_CONFIG改成false - 直接在 Actions 中进行配置
.config文件,把USE_SSH_CONFIG改成true(会通过 SSH 连接到 Actions 环境)
触发构建
完成后,把代码 pull 到本地,根据需求配置 .config 文件,然后推送 tag:
git tag -a v1.0 -m 'build kernel'
git push origin v1.0
推送完成后,就可以看到 Actions 正在构建了:

构建完成后,可以在 Release 下载构建好的内核文件:

