web-dev-qa-db-ja.com

NexusまたはArtifactoryは単純なtar.gzアーティファクトを保存できますか?

私は世界中の別々のデータセンターにクラウドサーバーを配置しています。各データセンターは他のものから分離されています。

これらの各リージョンで、アーティファクトを個々のサーバーのクラスター(異なるバージョンのソフトウェア(つまり、開発、テスト、本番クラスター)を実行している可能性がある)に簡単かつ一貫性をもって簡単にデプロイする方法を探しています。クラウドサーバーでインストールスクリプトを実行して正しいソフトウェアアーティファクトをプルダウンできるため、アーティファクトサーバーが必要なようです。

今、私は運用面で働いています。ビルドをしたり、ソフトウェアビルドの依存関係を管理したりする必要はありません。後でアクセスできるように、パッケージのさまざまなバージョンをすべて保存できるアーティファクトサーバーが必要です。キッカーは、保存するアーティファクトの種類がいくつかあるということです。

  • シェルスクリプト
  • Pythonスクリプト
  • 人形マニフェスト
  • Debianファイル(多くの場合、複数のdebianのtar.gzファイルとして配信されます)

NexusまたはArtifactoryはこれらのタイプのパッケージをすべて管理できますか、それとも別の方向に向けるべきですか?私は単にtar.gzファイルを生成するシェルスクリプトプロジェクトにメイクファイルを追加することに反対していません。アーティファクトリポジトリをセットアップする道を進みたくないのですが、最終的には、小さなスクリプト、wget、およびApacheサーバーが問題なく機能します。

26
GregB

ArtifactoryNexusはどちらも、両方のタイプのファイルを処理できます "Binary Repository Managers"です。

それにもかかわらず、Nexusは技術的にすべてのファイルを格納できますが、Mavenリポジトリレイアウトに準拠していないバイナリのサポートはありません。たとえば、そのようなファイルはインデックスに登録されず、検索で取得できません。また、Maven以外のアーティファクトがモジュール情報のパスを妨げている場合、Artifactoryは、それを利用してアーティファクトのバージョンベースの操作を許可できる唯一のリポジトリです(たとえば、最新バージョンのクエリのダウンロード)。

これらのツールはどちらも Maven の問題を解決することから始まっていますが、スマートバイナリ管理の必要性は他の多くの分野で認識されています operations含まれています

バイナリには特別なマネージャーが必要ですが、ネットワーク共有/ SCM /ファイルサーバーは、最初は実行可能なオプションのように見えます。それらはスケールしない

他のアドホックソリューションに対するマネージャーの利点については、 同様の質問に対する私の回答 も参照してください。

25
noamt

はい、jar以外のファイルをアップロードできます。例えば:

mvn deploy:deploy-file -DgroupId=org.group.id -DartifactId=artifact-id -Dversion=0.0.0.1-SNAPSHOT -Dpackaging=tar.gz -DrepositoryId=repository-id -Durl=http://url -Dfile=localfile-0.0.0.1-SNAPSHOT.tar.gz

Nexusの新しいバージョンは、tar、swfなどの特定のファイルが適切に形成されていることを検証することで処理します。ただし、これにより予期しない動作や望ましくない動作が発生する可能性があります。

これは最善の方法ですか?ユースケースに基づいて言うことができるのはあなただけです。アーティファクトが変化する頻度、ネットワーク遅延などの要因は、戦略を立てたり破ったりする可能性があります。

refs:

https://stackoverflow.com/a/33311645/3245

http://betterlogic.com/roger/2012/04/mavennexus-upload-tgztar-gz-file/

5
cmonkey

できます(他の回答を参照してください)。たとえば、次のようにそれらを参照することもできます(例はニースになります)。

あなたはこのプラグインのようにそれらを参照/使用できます:

  <plugin>
    <groupId>org.Apache.maven.plugins</groupId>
    <artifactId>maven-dependency-plugin</artifactId>
    <executions>
      <execution>
        <id>copy</id>
        <phase>package</phase>
        <goals>
          <goal>copy</goal>
        </goals>
        <configuration>
          <artifactItems>
            <artifactItem>
              <groupId>org.Apache</groupId>
              <artifactId>activemq-distro</artifactId>
              <version>5.7.0</version>
              <type>gz</type>
              <overWrite>true</overWrite>
              <outputDirectory>${project.build.directory}</outputDirectory>
            </artifactItem>
          </artifactItems>
          <!-- other configurations here -->
        </configuration>
      </execution>
    </executions>
  </plugin>
0
rogerdpack

Curlで実行する場合は、次の方法を試してください。 https://support.sonatype.com/entries/22189106-How-can-I-programatically-upload-an-artifact-into-Nexus-

0
Bogdan