跳到主要内容

使用 GitHub Actions

什么是 GitHub Actions?

GitHub Actions 是 GitHub 提供的自动化工具,可以自动执行构建、测试和部署等任务。使用它可以让你的插件在每次代码更新时自动构建。

配置步骤

1. 创建工作流文件

在项目根目录创建 .github/workflows/build.yml 文件:

Maven 项目模板

name: Build Plugin

on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
release:
types: [ created ]

jobs:
build:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v2

- name: Set up JDK
uses: actions/setup-java@v2
with:
java-version: '8'
distribution: 'adopt'

- name: Build with Maven
run: mvn -B package

- name: Upload artifact
uses: actions/upload-artifact@v2
with:
name: Plugin
path: target/*.jar

- name: Upload to release
if: github.event_name == 'release'
uses: softprops/action-gh-release@v1
with:
files: target/*.jar

Gradle 项目模板

name: Build Plugin

on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
release:
types: [ created ]

jobs:
build:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v2

- name: Set up JDK
uses: actions/setup-java@v2
with:
java-version: '8'
distribution: 'adopt'

- name: Build with Gradle
run: ./gradlew build

- name: Upload artifact
uses: actions/upload-artifact@v2
with:
name: Plugin
path: build/libs/*.jar

- name: Upload to release
if: github.event_name == 'release'
uses: softprops/action-gh-release@v1
with:
files: build/libs/*.jar

2. 配置说明

  1. 触发条件

    on:
    push:
    branches: [ main ] # 推送到 main 分支时触发
    pull_request:
    branches: [ main ] # PR 到 main 分支时触发
    release:
    types: [ created ] # 创建新版本时触发
  2. 构建环境

    runs-on: ubuntu-latest  # 使用最新的 Ubuntu 系统
  3. Java 配置

    - name: Set up JDK
    uses: actions/setup-java@v2
    with:
    java-version: '8' # 使用 Java 8
    distribution: 'adopt' # 使用 AdoptOpenJDK

使用方法

1. 自动构建

  • 每次推送代码到 main 分支时自动构建
  • 每次创建 Pull Request 时自动构建
  • 构建结果可在 Actions 页面查看

2. 发布新版本

  1. 在 GitHub 上点击"Create release"
  2. 填写版本号和说明
  3. 发布后自动构建并附加到发布页面

3. 下载构建结果

  1. 进入 Actions 页面
  2. 选择最新的构建
  3. 在 Artifacts 中下载 jar 文件

进阶配置

1. 缓存依赖

- name: Cache Maven packages
uses: actions/cache@v2
with:
path: ~/.m2
key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}

2. 多版本测试

strategy:
matrix:
java: [ '8', '11', '16' ]
steps:
- uses: actions/setup-java@v2
with:
java-version: ${{ matrix.java }}

3. 自动更新依赖

- name: Update dependencies
uses: renovatebot/renovate@v24
with:
token: ${{ secrets.GITHUB_TOKEN }}

常见问题

1. 构建失败

  1. 检查 Actions 日志
  2. 确认 JDK 版本正确
  3. 验证所有依赖可访问

2. 文件未上传

  1. 检查文件路径是否正确
  2. 确认构建产物存在
  3. 验证上传步骤配置

3. 权限问题

  1. 检查仓库设置
  2. 确认 Token 权限
  3. 验证工作流权限