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

GitHub Actions部署Maven包遇gpg无终端输入错误求助

解决GitHub Actions部署Maven包时GPG签名无终端输入的问题

遇到gpg: Sorry, no terminal at all requested - can't get input报错,不用纠结修改gpg.conf,试试这几个可行方案:

方案1:给maven-gpg-plugin加非交互式参数

直接在pom.xml的maven-gpg-plugin配置里指定--batch和--no-tty,强制非交互式运行,同时通过环境变量传递密码:

<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>
        <gpgArguments>
            <arg>--batch</arg>
            <arg>--no-tty</arg>
            <arg>--passphrase</arg>
            <arg>${gpg.passphrase}</arg>
        </gpgArguments>
        <passphraseServerId>gpg.passphrase</passphraseServerId>
    </configuration>
</plugin>

然后在GitHub Actions的部署步骤里,通过环境变量注入密码:

- name: 部署到Maven Central
  run: mvn clean deploy -DskipTests
  env:
    GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }}

方案2:在Actions中手动配置GPG环境

在setup-java步骤之后,添加步骤导入密钥并生成临时gpg.conf,覆盖默认设置:

- name: 导入GPG密钥
  run: |
    echo "${{ secrets.GPG_PRIVATE_KEY }}" | gpg --batch --import
    mkdir -p ~/.gnupg
    echo "pinentry-mode loopback" > ~/.gnupg/gpg.conf
    echo "allow-loopback-pinentry" >> ~/.gnupg/gpg-agent.conf
    gpg-connect-agent reloadagent /bye

这样GPG会从标准输入获取密码,不需要终端交互。

方案3:用插件内置的非交互式配置

直接在plugin配置里开启pinentryMode为loopback,无需修改gpg.conf:

<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>

同时在Actions的环境变量里加上:

env:
  GPG_TTY: /dev/pts/0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 13:32:39