web-dev-qa-db-ja.com

Jenkinsのアーティファクトをアーカイブする

誰かがビルドプロセスにおけるartifactsのアイデアを説明してくれませんか?

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

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

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

enter image description here

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

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

122
Michael

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

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

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

64
Anders Lindahl

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

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

11

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

いいえ、ハドソン/ジェンキンスは、それ自体では、ビルド後にワークスペースをクリアしません。ビルドプロセスで、ビルドアーティファクトを残した場所から消去、上書き、または移動するアクションがある場合があります。 [ビルドの前にワークスペースをクリーンアップ]と呼ばれる、拡張プロジェクトオプション(拡張する必要がある)のジョブ構成には、新しいビルドの開始時にワークスペースを消去するオプションがあります。

7
Codex24

Jenkins 2.60.3では、ビルドマシンのハードドライブ領域を節約するために、ビルドアーティファクト(アーカイブされたアーティファクトではなく)を削除する方法があります。 [全般]セクションで、戦略[ログローテーション]を使用して[古いビルドを破棄する]をオンにし、[詳細設定]オプションに移動します。日数またはビルドに基づいてジョブのビルドアーティファクトを保持することに関連して、さらに2つのオプションが表示されます。

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

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

1
Matt