16

Jenkinsで構築されたCIである多数のJavaプロジェクトがあります。これらは、独自のNexusサーバーに適切にデプロイされます。問題は、これらのライブラリをサードパーティに提供する必要があることですが、ソースコードはありません。したがって、プロジェクトごとに、Nexusには次のものがあります。

  • 開発者のリポジトリをリリースします(デプロイされたソースコードを含む)
  • 開発者向けのスナップショットリポジトリ(デプロイされたソースコードを含む)
  • サードパーティのリリースリポジトリ(JAR + POMのみ)
  • (そして持っているとよいでしょう):サードパーティのナイトリービルド用のサードパーティのスナップショットリポジトリ(JAR + POMのみ)

問題は、これは通常、Jenkins/Nexusの世界でどのように処理されるのかということです。CIビルドとリリース(アーティファクトのデプロイ)プロセスを「自動的に」処理する単一のジョブをJenkinsに配置したいと思います。現在<distributionManagement>、「メインルートpom.xml」(すべてのプロジェクトに含まれています)で複数のプロファイルを使用しています。

[...]
<profiles>
    <profile>
        <id>default</id>
        <distributionManagement>
            <repository>
                <id>releases</id>
                <name>Release</name>
                <url>http://path/to/nexus/content/repositories/releases/</url>
            </repository>
            <snapshotRepository>
                <id>snapshots</id>
                <name>Snapshot</name>
                <url>http://path/to/nexus/content/repositories/snapshots/</url>
                <uniqueVersion>false</uniqueVersion>
            </snapshotRepository>
        </distributionManagement>
    </profile>
    <profile>
        <id>third-party</id>
        <distributionManagement>
            <repository>
                <id>releases</id>
                <name>Release</name>
                <url>http://path/to/nexus/content/repositories/third-party/</url>
            </repository>
            <snapshotRepository>
                <id>snapshots</id>
                <name>Snapshot</name>
                <url>http://path/to/nexus/content/repositories/third-party-snapshots/</url>
                <uniqueVersion>false</uniqueVersion>
            </snapshotRepository>
        </distributionManagement>
    </profile>
</profiles>

Mavenのドキュメントから、ターゲットリポジトリに基づいてソースが必要/不要であることは言うまでもなく、同じビルドライフサイクル中に複数のリポジトリを使用する方法はないようです。

Mavenの「目標とオプション」を使用してJenkinsでジョブを作成し、clean deploy -P third-partyビルド後のアクション(「デフォルト」データを使用して「アーティファクトをMavenリポジトリにデプロイする」)を追加することでトリックを実行できますが、この場合はSNAPSHOTはリポジトリに送信され、JenkinsMavenリリースプラグインを介してリリースされたアーティファクトは1つのリポジトリにのみ送信されます。

CIジョブ階層を過度に複雑にすることなくこれを行うための実用的なアイデアはありますか?

前もって感謝します!

4

2 に答える 2

5

これはすべてNexusで処理できます。事前設定された例「ソースを除くすべて(Maven 2)」で使用されているようなパターンを含むリポジトリターゲットを作成し、groupid、artifactid、さらにはバージョンを制限する別のパターンでそのターゲットをさらに絞り込みます。

次に、そのリポジトリターゲットを使用する特権を作成し、それぞれのアクセス権を付与するユーザーまたはロールに割り当てます。

複数の展開などを行う必要はありません。

http://books.sonatype.com/nexus-book/reference/repository-targets.htmlを参照してください

于 2012-11-26T22:12:41.837 に答える
0

Maven Wagonプラグインを使用して、デプロイフェーズで単一のjarをリモートの場所にアップロードできます。

于 2012-11-26T11:53:39.843 に答える