Java SDK 发布
本文介绍如何通过 GitHub Action 自动化发布 dingtalk-stream 这个 SDK。
核心思想是通过 GitHub Release 触发 GitHub Action 执行,在 GitHub Action 中实现了自动化构建与发布。
步骤说明
- 更新版本号:
- 修改版本号:按照规范,确定准备发布的版本号,例如 x.y.z。并将该版本号更新到
version.sh
文件中,替换掉旧的版本号。 - 更新版本号:执行
sh version.sh
命令来更新 pom.xml 中的版本号 - 提交代码:git commit 并 push 到 GitHub 中
- 修改版本号:按照规范,确定准备发布的版本号,例如 x.y.z。并将该版本号更新到
- 创建 Release:在项目首页,点击右侧 Releases 后,点击
Draft a new release
,填写表单完成发布- 要求:对于常规发布,Release title 中只写版本号,格式为
vX.Y.Z
- 要求:如果是 Breaking change,需要 title 中备注,格式为
vX.Y.Z Breaking change
- 要求:对于常规发布,Release title 中只写版本号,格式为
- 检查 CI 结果:完成步骤 2 的 Release 之后,GitHub action 就会自动执行,可以进入 Actions 中检查构建状态及结果。
推荐的流程
- Fork 和开发:Fork 该项目代码,完成开发和测试,version 采用 SNAPSHOT 后缀
- PR 和 测试构建:发起 Pull Request,目标是 open-dingtalk/dingtalk-stream-sdk-java 的
develop
分支 - CR 和 Merge:管理员完成 CodeReview 并 Merge
- Release:管理员将 develop 分支合并到 main 分支后,更新版本号为 Release 版本号,并创建 Release Notes,触发正式的构建和发布
深入理解原理
该项目使用了 GitHub Actions 实现自动化构建与 NPM 发布。对应的构建脚本在 .github/workflows/release.yml 中
触发条件有两类:
- 通过 GitHub release 触发(本文步骤说明章节有相关说明),用于发布 release 包
- 提交到 develop 分支触发,用于发布 SNAPSHOT 包
on:
push:
branches:
- develop
release:
types: [published]
构建脚本:
- name: Set up JDK 8
uses: actions/setup-java@v3
with:
distribution: 'temurin'
java-version: 8
- name: Import GPG private key
uses: crazy-max/ghaction-import-gpg@v6
with:
gpg_private_key: ${{ secrets.GPG_PRIVATE_KEY }}
passphrase: ${{ secrets.GPG_PASSPHRASE }}
- name: Build with Maven
run: mvn clean install
- name: Deploy to Sonatype Nexus
run: mvn deploy --settings settings.xml
env:
MAVEN_USERNAME: ${{ secrets.MAVEN_USERNAME }}
MAVEN_PASSWORD: ${{ secrets.MAVEN_PASSWORD }}
Maven Central 发布的密钥信息,通过 GitHub secrets 管理):
- name: Import GPG private key
uses: crazy-max/ghaction-import-gpg@v6
with:
gpg_private_key: ${{ secrets.GPG_PRIVATE_KEY }}
passphrase: ${{ secrets.GPG_PASSPHRASE }}
...
- name: Deploy to Sonatype Nexus
run: mvn deploy --settings settings.xml
env:
MAVEN_USERNAME: ${{ secrets.MAVEN_USERNAME }}
MAVEN_PASSWORD: ${{ secrets.MAVEN_PASSWORD }}