5

すべてのコミットでmavenパッケージを実行するWindowsスレーブで実行されているJenkins Mavenビルドがあります。昇格されたビルド プラグインを使用して、昇格されたビルドを nexus リリース リポジトリにデプロイしようとしています。

「次の場合にビルドを促進する」を手動承認に設定し、「アーティファクトを Maven リポジトリにデプロイする」アクションでリポジトリ URL を「http://example.com:8081/nexus/content/repositories/releasesに設定しました。 / " および "release" へのリポジトリ ID。ただし、承認がトリガーされると、次のスタック トレースが取得されます。

[INFO] http://example.com:8081/nexus/content/repositories/releases/ (id=release,uniqueVersion=true) でのデプロイ メイン アーティファクトのデプロイ アーティファクトid-1.0.2.pom アップロード: http://example .com:8081/nexus/content/repositories/releases/groupid/artifactid/1.0.2/artifactid-1.0.2.pom エラー: アーティファクトのデプロイに失敗しました: アーティファクト groupid:artifactid:pom:1.0.2 を / から転送できませんでした解放する ( http://example.com:8081/nexus/content/repositories/releases/ ): ファイルの転送に失敗しました: http://example.com:8081/nexus/content/repositories/releases/groupid/artifactid/ 1.0.2/artifactid-1.0.2.pom. リターン コード: 401、ReasonPhrase: Unauthorized。org.apache.maven.artifact.deployer.ArtifactDeploymentException: アーティファクトのデプロイに失敗しました: アーティファクト groupid:artifactid:pom:1.0.2 をリリースから/リリースに転送できませんでした ( http://example.com:8081/nexus/content/repositories /releases/ ): ファイルの転送に失敗しました: http://example.com:8081/nexus/content/repositories/releases/groupid/artifactid/1.0.2/artifactid-1.0.2.pom. リターン コード: 401、ReasonPhrase: Unauthorized。org.apache.maven.artifact.deployer.DefaultArtifactDeployer.deploy(DefaultArtifactDeployer.java:143) で hudson.maven.reporters.MavenArtifactRecord.deploy(MavenArtifactRecord.java:193) で hudson.maven.RedeployPublisher.perform(RedeployPublisher.java) で:176) hudson.plugins.promoted_builds.Promotion$RunnerImpl.build(Promotion.java:282) で hudson.plugins.promoted_builds.Promotion$RunnerImpl.doRun(Promotion.java:224) で hudson.model.AbstractBuild$AbstractBuildExecution. run(AbstractBuild.java:533) at hudson.model.Run.execute(Run.java:1740) at hudson.model.Run.run(Run.java:1678) at hudson.plugins.promoted_builds.Promotion.run(Promotion .java:174) hudson.model.ResourceController.execute(ResourceController.java:89) で hudson.model.

プロモーション アクションを変更して maven デプロイをトリガーすると、ビルドが再実行され、デプロイ ターゲットが期待どおりに機能します。git パブリッシャーを追加すると、これも認証に失敗します。Jenkins を実行しているユーザーがローカルで実行した場合、両方の操作が成功します。

昇格されたビルド プラグインは、デプロイの認証の詳細をどのように決定しますか?

4

1 に答える 1

0

Maven での認証を必要とするデプロイを実行するには、settings.xmlファイル内の適切な情報を使用してサーバーを構成する必要があります。そのため、ユーザー設定 ( の下${user.home}/.m2/settings.xml) を次のように変更 (または作成) します。

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
                      https://maven.apache.org/xsd/settings-1.0.0.xsd">
  ...
  <servers>
    <server>
      <id>releases</id>
      <username>my_login</username>
      <password>my_password</password>
    </server>
  </servers>
  ...
</settings>

releasesこれにより、指定されたユーザー名とパスワードで名前が付けられたサーバー構成が定義されます。必要に応じて、代わりにパスフレーズまたは秘密鍵を使用できます。

次に、Jenkins が Maven 設定ファイルを正しく読み取っていることを確認する必要があります。Jenkins 2.8 では、「Jenkins > Global Tool Configuration」に移動できます。

ここに画像の説明を入力

これらの 2 つのオプションは、以前に変更されたグローバル Maven 設定とユーザー設定を指しています。

最後に、Jenkins 内の構成済みのビルド アクションが構成済みのサーバーを検索していることを確認する必要があります。「アーティファクトを Maven リポジトリにデプロイする」アクションで、デプロイ URL を記述します。「リポジトリ ID」は で<id>構成されたサーバーのものである必要があります。この場合settings.xmlは次のようになります。releases

ここに画像の説明を入力

于 2016-06-07T19:13:15.190 に答える