得られたアーティファクトに 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 にキャッシュされます。
基本的に私の質問は、これを行う方法です。以上: これを設定する適切な方法は何ですか?