3

「mavenDeployer」を使用して、「uploadArchives」タスク中に wagon ssh ユーティリティで ssh/scp を使用しています。

build.gradle にパスワードをコーディングするのではなく、適切な ssh セットアップに依存したいと思います。具体的には、ユーザーに自分の秘密鍵を指定してもらい、その秘密鍵を自分の環境 (ssh-agent、ssh-add など) に読み込ませたいと考えています。Maven リポジトリには共有ユーザー ID があり、すべての実際のユーザーは、共有ユーザー ID の「authorized_keys」ファイルに .pub キーが適切に追加されています。

maven/ant には「privateKey」属性があるようで、Gradle DSL はそれを受け入れますが、設定しても効果がないようです。

        mavenDeployer {
            configuration = pr.configurations.publishJars
            String keyFile = System.properties["user.mavenKey"]
            repository(url: "scp://maven.company.com/path/to/maven") {
                    logger.info("Using SSH key: ${keyFile}")
                    authentication(userName: "maven", privateKey: keyFile)
            }

Gradleドキュメントの例に従って実際のパスワードをコーディングすると、それは機能するので、機能していることがわかります。また、privateKey を privatekey (すべて小文字) に変更するとプロパティ エラーが発生するため、プロパティが存在し、あるレベルで認識されていることがわかります。

そして、sshキー自体が機能していることを知っています:

  % ssh -i ~/.ssh/mavenKey maven@maven.company.com ls /
  [ no errors, output trimmed ]

しかし、実行すると、共有ユーザー ID のパスワードを求めるプロンプトが表示されます。

  % gradle uploadArchives
  [... stuff ...]
  Using SSH key: /homes/klash/.ssh/mavenKey
  Password for maven@evomaven.englab.juniper.net: 

ご覧のとおり、キーのパスフレーズは要求されません。

4

1 に答える 1