3

ビルド サーバーで共有認証システムをセットアップしようとしています。私たちが持っているさまざまなチームに関して展開を行う方法を宣言するいくつかの Maven プロジェクトがあります (各チームには独自の認証ユーザー/パスワードがあります)。

<profile>
  <id>release-profile</id>
  <distributionManagement>
    <repository>
        <id>rep-releases</id>
        <name>rep-releases</name>
        <url>http://somewhere-releases</url>
    </repository>
    <snapshotRepository>
        <id>rep-snapshots</id>
        <name>rep-snapshots</name>
        <url>http://somewhere-snapshots</url>
    </snapshotRepository>
  </distributionManagement>
</profile>    

次に、settings.xml で、宣言されたサーバーへの認証を次のように宣言します。

<servers>
  <server>
    <id>rep-releases</id>
    <username>${release.user.name}</username>
    <password>${release.user.password}</password>
  </server>     
  <server>
    <id>rep-snapshots</id>
    <username>${release.user.name}</username>
    <password>${release.user.password}</password>
  </server>      
</servers>

最後に、デプロイしたいプロジェクトに応じて、ビルド サーバーの settings.xml にいくつかのプロファイルを定義します。

<profile>
  <id>dep-team1</id>
  <activation>
    <activeByDefault>false</activeByDefault>
  </activation>
  <properties>
    <release.user.name>team1-user</release.user.name>
    <release.user.password>team1-password</release.user.password>
  </properties>
</profile>

問題は、プロジェクトのデプロイを行うときに、次のような認証エラー (HTTP 401) が発生したことです。

Error deploying artifact: Failed to transfer file: http://......./my-project-0.2-20090423.123247-3.pom. Return code is: 401

プロパティをチームのユーザー/パスワードに置き換えてサーバー認証を変更すると、すべて正常に機能します。

タグ <servers><server> は値をプロパティとして受け入れませんか?

同じことを達成するために、他の人はビルドシステムをどのようにセットアップしますか?

ご協力いただきありがとうございます。

編集:私は hudson を使用しています。私にとっての解決策は、maven2 を数回インストールし、各チームの設定 (ユーザー/パスワードを除く) を複製し、各プロジェクトを適切な Maven インストールに関連付けることです。このソリューションが私を魅了しないことを認めなければなりません...

4

2 に答える 2

1

複数のチームがあり、したがって複数の認証スキームがある場合の最も簡単で直接的な方法は、distributionManagementで異なるIDを使用することです。したがって、rep-releases / rep-snapshotsの代わりに、team1-repo / team2-repoを使用できます(特に、リリースとスナップショットの間で認証を分離することに価値はありません...特に、優れたセキュリティ制御を備えたリポジトリマネージャーを使用する場合)

次に、ビルドマシンの設定で、ビルドサーバーの各チームのユーザーとパスワードを定義するだけです。

このアプローチには、単一の企業pomでリポジトリを定義した場合に継承が台無しになるという欠点がありますが、チームレベルのpomがある場合は簡単です。

別の考えは、ビルドを行うときに同じビルドマシンが別の人としてログインする必要があるのはなぜですか?そのビルドマシンはほとんどフルアクセスを持っているべきではありませんか?

于 2009-04-25T21:14:06.217 に答える