前言
NexusCI/CDNexus APIGithub ActionCloseRelease
-
效果图
Maven
使用
首先最好是对 Github Action 有一定的了解,如果不了解也没关系,可以通过我之前的文章快速过一遍:Github Actions 尝鲜
准备
托管在 Github 上的 Maven 项目
pom.xmlmaven-gpg-plugin
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-gpg-plugin</artifactId>
<executions>
<execution>
<id>sign-artifacts</id>
<phase>verify</phase>
<goals>
<goal>sign</goal>
</goals>
</execution>
</executions>
<configuration>
<!-- 这个configuration必须配置,用于gpg非交互式密码输入 -->
<gpgArguments>
<arg>--pinentry-mode</arg>
<arg>loopback</arg>
</gpgArguments>
</configuration>
</plugin>
Nexus 用户名和密码
https://oss.sonatype.org
gpg private key
Base64
- 列出秘钥
gpg --list-secret-keys --keyid-format LONG
------------------------------------------------
sec rsa4096/2A6B618785DD7899 2020-11-05 [SC]
992BB9305698C72B846EF4982A6B618785DD7899
uid [ultimate] monkeyWie <liwei-8466@qq.com>
ssb rsa4096/F8E9F8CBD90028C5 2020-11-05 [E]
2A6B618785DD7899
- 导出私钥
gpg --armo --export-secret-keys 2A6B618785DD7899
-----BEGIN PGP PRIVATE KEY BLOCK----------END PGP PRIVATE KEY BLOCK-----
gpg passphrase
在生成 gpg 秘钥的时候会需要输入一个短密码,应该还记得吧。
将秘钥配置到 Github Secrets 中
SecretsNew secret
最终 Secrets 如下:
编写 Github Action 配置文件
.github/workflows/deploy.yml
name: deploy
on:
# 支持手动触发构建
workflow_dispatch:
release:
# 创建release的时候触发
types: [published]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
# 拉取源码
- uses: actions/checkout@v2
# 安装JDK环境
- name: Set up JDK 1.8
uses: actions/setup-java@v1
with:
java-version: 1.8
# 设置Maven中央仓库配置
- name: Set up Apache Maven Central
uses: actions/setup-java@v1
with:
java-version: 1.8
server-id: releases
# Nexus用户名环境变量
server-username: MAVEN_USERNAME
# Nexus密码环境变量
server-password: MAVEN_CENTRAL_TOKEN
# gpg短密码环境变量
gpg-passphrase: MAVEN_GPG_PASSPHRASE
# gpg私钥
gpg-private-key: ${{ secrets.MAVEN_GPG_PRIVATE_KEY }}
# 推送jar包至maven中央仓库
- name: Publish to Apache Maven Central
# 执行maven deploy命令
run: mvn clean deploy
# 环境变量设置
env:
# Nexus用户名,如果觉得不想暴露也可以配置到secrets中
MAVEN_USERNAME: xxx
# Nexus密码
MAVEN_CENTRAL_TOKEN: ${{ secrets.MAVEN_CENTRAL_TOKEN }}
# gpg短密码
MAVEN_GPG_PASSPHRASE: ${{ secrets.MAVEN_GPG_PASSPHRASE }}
# Nexus自动部署
- name: Release on nexus
uses: monkeyWie/maven-nexus-release@v1
with:
# Nexus用户名
maven-repo-server-username: xxx
# Nexus密码
maven-repo-server-password: ${{ secrets.MAVEN_CENTRAL_TOKEN }}
Action
-
手动触发
通过 Github 可以手动的触发构建,方便测试,操作如下图:
发布 release 时自动触发
在 Github 项目中创建 release,会自动的触发构建,适用于项目稳定之后。
后记
以上步骤都在我的项目proxyee中通过验证,另外maven-nexus-release项目还是刚起步,功能可能不够完善,大家如果有什么好的想法和建议欢迎提出 issue 和 pr。
proxyeenettyHTTPHTTPSWebSocketHTTPHTTPS
JAVAGolang前端dockerk8s