You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GitHub Actions部署Java库至OSSRH时GPG签名失败问题解决

解决GitHub Actions部署时GPG签名失败的问题

这个错误的核心原因是GitHub Actions运行在非交互式环境中,GPG无法弹出口令输入窗口,而本地是交互式环境所以能正常操作。以下是具体解决步骤:

1. 准备并上传GPG密钥到GitHub Secrets

  • 本地执行命令导出ASCII格式的GPG私钥:
    gpg --export-secret-keys --armor 你的密钥ID > private-key.asc
    
  • 进入GitHub仓库的Settings → Secrets and variables → Actions,添加两个秘密变量:
    • GPG_PRIVATE_KEY:粘贴private-key.asc文件里的全部内容
    • GPG_PASSPHRASE:你的GPG密钥口令

2. 修改GitHub Actions工作流文件(release.yml)

在工作流中添加导入GPG密钥的步骤,并配置非交互式签名:

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: 配置JDK
        uses: actions/setup-java@v4
        with:
          java-version: '17' # 替换成你的项目JDK版本
          distribution: 'temurin'
          server-id: ossrh
          server-username: ${{ secrets.OSSRH_USERNAME }}
          server-password: ${{ secrets.OSSRH_TOKEN }}
      - name: 导入GPG密钥并配置非交互式模式
        run: |
          echo "${{ secrets.GPG_PRIVATE_KEY }}" | gpg --batch --import
          mkdir -p ~/.gnupg
          echo "allow-loopback-pinentry" >> ~/.gnupg/gpg.conf
          echo "pinentry-mode loopback" >> ~/.gnupg/gpg.conf
      - name: 部署到OSSRH
        run: mvn clean deploy -Dgpg.passphrase=${{ secrets.GPG_PASSPHRASE }} -DskipTests
        env:
          MAVEN_OPTS: "-Dgpg.pinentry-mode=loopback"

3. 检查pom.xml的GPG插件配置

确保maven-gpg-plugin开启了loopback模式,支持从参数读取口令:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-gpg-plugin</artifactId>
  <version>3.1.0</version>
  <executions>
    <execution>
      <id>sign-artifacts</id>
      <phase>verify</phase>
      <goals>
        <goal>sign</goal>
      </goals>
    </execution>
  </executions>
  <configuration>
    <pinentryMode>loopback</pinentryMode>
    <passphrase>${gpg.passphrase}</passphrase>
  </configuration>
</plugin>

4. 清理自定义settings.xml的冲突配置

如果之前添加了自定义settings.xml,确保里面没有硬编码的GPG口令或交互模式配置,避免和CI环境的设置冲突。

内容的提问来源于stack exchange,提问作者hajjoujti

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 13:20:07