0

得られたアーティファクトに gpg キーで署名したいプロジェクトがいくつかあります。以前は gpg 1.x (つまり古いもの) を使用していましたが、このセットアップでは、~/.m2/settings-security.xml.

私はそれが好きではありません(しかし、私が書いた時点では、それは私が実行することができたセットアップでした).

最近、パスワードを保存せずにすべてを実行できるかどうかを調べ始めました。だから今、~/.m2/settings.xml私はこのようなものを持っています (このプロファイルはアクティブです):

<profile>
  <id>signingkey</id>
  <properties>
    <gpg.executable>gpg2</gpg.executable>
    <gpg.keyname>ABCDEF01</gpg.keyname>
  </properties>
</profile>

pom.xml には、この基本的な構成を持つ maven-gpg-plugin があります。

<build>
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-gpg-plugin</artifactId>
      <version>1.6</version>
      <executions>
        <execution>
          <id>sign-artifacts</id>
          <phase>verify</phase>
          <goals>
            <goal>sign</goal>
          </goals>
        </execution>
      </executions>
    </plugin>
  </plugins>
</build>

Ubuntu 16.04 システムでこれを行うと、gpg-agent (gpg2 の一部) と gnome-keyring-daemon は最初の使用後にパスワードを記憶します。

したがって、このシステムでは通常、すでに gpg-agent が実行されている状況にありmvn clean verify、プロジェクトで行う場合、パスワードは gpg-agent で使用できるため、質問をせずにアーティファクトに署名します。

ここまでは順調ですね。

ソフトウェアを完全にクリーンにビルドするために (また、一部のプロジェクトでは、すべてのツールが正しくインストールされていることを確認するためにも)、別の Docker 環境からソフトウェアを頻繁にビルド/デプロイします。

このような「非常にクリーンな」docker 環境では、起動時に gpg-agent が存在せず、単純に実行mvn clean verifyすると、署名されていないビルドが生成されることがわかりました。

You need a passphrase to unlock the secret key for
user: "Niels Basjes (Software Signing Key) <signed@basjes.nl>"
...
gpg: cancelled by user

パスワードを入力する必要があったのにプロンプ​​トが表示されなかったため、私が知る限り。

この時点で、1 つの回避策しか見つかりませんでしgpg2 --sign pom.xmlた。それは、gpg-agent を起動し、パスワードを入力するダイアログが表示されるため、ソフトウェアをビルドする前に何かを行うことです。

私が望むのは、簡単にできるようにセットアップを変更することですmvn verify。最初の署名試行でパスワード ダイアログがポップアップし、パスワードが gpg-agent にキャッシュされます。

基本的に私の質問は、これを行う方法です。以上: これを設定する適切な方法は何ですか?

4

1 に答える 1