赞
踩
参考官方文档:
本文对应的演示项目:
上面官方文档也有用法。
插件详细文档: https://help.sonatype.com/repomanager2/staging-releases/configuring-your-project-for-deployment
使用 oss 官方推荐的发布插件:
<plugin>
<groupId>org.sonatype.plugins</groupId>
<artifactId>nexus-staging-maven-plugin</artifactId>
<extensions>true</extensions>
<configuration>
<serverId>ossrh</serverId>
<nexusUrl>https://oss.sonatype.org/</nexusUrl>
<autoReleaseAfterClose>true</autoReleaseAfterClose>
</configuration>
</plugin>
这里配置的 autoReleaseAfterClose
会自动在 close 后执行 release 发布操作,如果想手工执行,可以去掉这里的配置。
添加 .github/workflows/release.yml
文件,内容如下:
name: Publish package to the Maven Central Repository on: push: tags: [ "*" ] jobs: publish: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Set up Maven Central Repository uses: actions/setup-java@v2 with: java-version: '8' distribution: 'adopt' server-id: ossrh server-username: MAVEN_USERNAME server-password: MAVEN_PASSWORD - id: install-secret-key name: Install gpg secret key run: | cat <(echo -e "${{ secrets.OSSRH_GPG_SECRET_KEY }}") | gpg --batch --import gpg --list-secret-keys --keyid-format LONG - name: Publish package env: MAVEN_USERNAME: ${{ secrets.OSSRH_USERNAME }} MAVEN_PASSWORD: ${{ secrets.OSSRH_TOKEN }} run: mvn --batch-mode -Dgpg.passphrase=${{ secrets.OSSRH_GPG_SECRET_KEY_PASSWORD }} clean deploy
这里的 on.push.tags
意思是当推送一个 tag 时,自动执行发布操作。
在 jobs 的具体配置中,用到了下面几个 Actions secrets
的配置:
OSSRH_USERNAME
: oss 用户名OSSRH_TOKEN
: oss 密码OSSRH_GPG_SECRET_KEY
: gpg 签名密钥OSSRH_GPG_SECRET_KEY_PASSWORD
: gpg 签名密码这几个配置需要在当前项目的 Settings 中配置好。
基础的配置还参考开头提供的官方文档。
参考: https://gist.github.com/sualeh/ae78dc16123899d7942bc38baba5203c
<configuration>
<gpgArguments>
<arg>--pinentry-mode</arg>
<arg>loopback</arg>
</gpgArguments>
</configuration>
gpg --list-secret-keys --keyid-format=long
gpg --export-secret-keys -a <key-id> > secret.txt
,不用按参考中替换换行符,用完整的内容即可。cat <(echo -e "${{ secrets.OSSRH_GPG_SECRET_KEY }}") | gpg --batch --import
。-Dgpg.passphrase=${{ secrets.OSSRH_GPG_SECRET_KEY_PASSWORD }}
指定密钥的密码。
oss 的 deploy 插件,和正常的相比,增加了 close 和 release 两个操作,对应的日志如下:
[INFO] * Upload of locally staged artifacts finished. [INFO] * Closing staging repository with ID "comgithubabel533-1055". Waiting for operation to complete... .............. [INFO] Remote staged 1 repositories, finished with success. [INFO] Remote staging repositories are being released... Waiting for operation to complete... ....... [INFO] Remote staging repositories released. [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 02:18 min [INFO] Finished at: 2022-04-04T23:21:53+08:00 [INFO] ------------------------------------------------------------------------
正常发布后,就能从 oss 查询到构件,其他仓库大概经过几小时才能同步。
这篇文章对大多数人来说没有一点用途,对开源作者来说可能有点用。
以前为了往 maven 官方推送打包,经常需要耗费大量的时间,而且官方的 oss 网站访问也不稳定,基本上都打不开,有时候晚上试了很久都没成功后,就会选择第二天早起进行操作,一般早晨的访问速度会很顺畅。
很早在开源群看到有人说可以通过 GitHub Action 自动执行这些操作,当时想着要把自己项目改成自动,但是过了很久很久才动手,此时已经找不到当时的方法,所以从头操作一遍,有了今天的文章。
今天的文章只是测试,后续还有大量项目要真正修改配置才能用上,最大的好处就是 比较稳定的项目,接收PR后,可以尽快自动发版了,不在需要手工看运气操作了。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。