ジェンキンスのアーティファクトをアーカイブする


132

誰かが私にビルドプロセスのアーティファクトのアイデアを説明してくれませんか?

antスクリプトなどをコンパイルして実行するためのコードをチェックアウトするワークスペースディレクトリがあります。最後に、私の場合、インストールの準備ができているjarファイルを取得します。それはアーティファクトと見なされますか?

jarファイルを置くようにビルドスクリプトにどこに指示すればよいですか?ワークスペースディレクトリ?私のjarファイルは、BUILD_IDなどの変数に応じて一意のファイル名を取得します。どのjarファイルを選択するようにJenkinsに指示することができますか?

編集:さて、私はこのようなことを試みました:

ここに画像の説明を入力してください

ビルドスクリプトがパスを作成することになっているため、ワークスペースにはまだパスが存在していません。もちろん、ファイルがまだ生成されていないため.jar.propertiesファイルはありません。なぜそれは私にエラーを与えるのですか?何かが足りないようです。

また、Jenkinsは各ビルド後にアーティファクトを削除しますか(アーカイブされたアーティファクトではありません。削除するように指示できます)。そうしないと、ハードドライブがすぐに詰まってしまいます。


12
発生しているエラーはおそらく問題ではありません-ビルドプロセスが成功した場合は作成する必要があります。保存してこれを試してみてください。パイプラインのセットアップ中にいくつかの壊れたビルドがあることは、まったく正常です。:)
アンダースリンダール

3
ビルド後にアーティファクトが生成された場合、アーティファクトは設定によってアーカイブされます(ただし、設定ページには警告があります)。
黄F.レイ

回答:


68

あなたの理解は正しいです、ジェンキンスの意味でのアーティファクトはビルドの結果です-ビルドプロセスの意図された出力です。

一般的な規則は、ビルドの結果をbuildtargetまたはbinディレクトリに置くことです。

Jenkinsアーカイバtarget/*.jarは、ビルドごとに一意の名前を持っている場合でも、グロブ()を使用して適切なファイルを簡単に取得できます。


@Andresのおかげで、ジェンキンスはビルドごとにアーティファクトを削除しますか(アーカイブされたアーティファクトではありません。削除するように指示できます)。または私はそれをmyslefする責任がありますか?
マイケル

6
@michael:ワークスペースを自分でクリーンアップする必要があります。以前のビルドの結果で終了しないように、ビルドの前に少なくともターゲットディレクトリをクリアすることをお勧めします。
Anders Lindahl、2011

@Michael「クリーン」なビルドステップを追加できます。Mavenを持つ例えば-sh 'mvn clean package'
Snowcrash

@AndersLindahl-"一般的な規則は、ビルドの結果をビルド、ターゲット、またはbinディレクトリに配置することです。" すべてのプロジェクトで共有されているbinディレクトリを参照していますか?それ、どうやったら出来るの?ビルド後のアクションですか?
user3240688 2018年

@ user3240688いいえ、プロジェクトごとのターゲットフォルダーを参照しています。複数のジョブからのアーティファクトを単一の共有フォルダーにしたい場合は、たとえば「Publish over $ PROTOCOL」プラグインの1つを使用してアーティファクトを公開する必要があります。
アンデルスリンダール

11

アーティファクトは、ビルドプロセスの結果である可能性があります。重要なことは、ビルドされたクライアントに関係なく、ワークスペースからマスター(サーバー)に転送され、ビルドへのリンクと共にそこに格納されることです。利点は、この方法でバージョン化され、マスターでバックアップをセットアップするだけで済み、すべてのビルドクライアントがオフラインであっても、すべてのアーティファクトにWebインターフェイスからアクセスできることです。

正規表現を成果物名として定義することができます。私の場合、ビルド中に、保存したいすべてのファイルを一定の名前で1つのファイルに圧縮しました。


3
「アーティファクト名として正規表現を定義することは可能です。私の場合、すべてのファイルを圧縮しました」これについて説明してください。それはまさに私が欲しいものですか?
Chris Milburn 2014年

7

また、Jenkinsはビルドごとにアーティファクトを削除しますか?(アーカイブされたアーティファクトではなく、それらを削除するように指示できることを知っています)

いいえ、Hudson / Jenkins自体は、ビルド後にワークスペースをクリアしません。ビルドアーティファクトを残したところから消去、上書き、または移動するアクションがビルドプロセスに含まれている場合があります。新しいビルドの開始時にワークスペースをワイプする「ビルド前にワークスペースをクリーンアップ」と呼ばれるジョブ構成の詳細プロジェクトオプション(展開する必要があります)にオプションがあります。


1

Jenkins 2.60.3では、ビルドマシンのハードドライブ領域を節約するために、アーカイブアーティファクトではなくビルドアーティファクトを削除する方法があります。「一般」セクションで、「ログローテーション」の方法で「古いビルドを破棄する」にチェックを入れ、その詳細オプションに移動します。日数またはビルド数に基づいてジョブのビルドアーティファクトを維持することに関連して、さらに2つのオプションが表示されます。

私にとって有効な設定は、「アーティファクトを保持するビルドの最大数」に1を入力し、アーティファクトをアーカイブするためのビルド後のアクションを実行することです。このようにして、すべてのビルドのすべてのアーティファクトがアーカイブされ、ビルドのすべての情報が保存されますが、最後のビルドのみが独自のアーティファクトを保持します。

古いビルドオプションを破棄する

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.