誰かがビルドプロセスにおけるartifactsのアイデアを説明してくれませんか?
Antスクリプトなどをコンパイルして実行するためのコードをチェックアウトするワークスペースディレクトリがあります。最後に、私の場合、インストールの準備ができたjarファイルを取得します。それはアーティファクトと見なされますか?
ビルドファイルにjarファイルを配置するように指示する場所ワークスペースディレクトリに?私のjarファイルはBUILD_ID
などの変数に応じて一意のファイル名を取得しますが、どのjarファイルを選択するかをJenkinsに伝えるにはどうすればよいですか?
編集:さて、私はこのようなことをしてみました:
ビルドスクリプトが作成することになっているため、ワークスペースにパスはまだ存在しません。もちろん、.jar
および.properties
ファイルはまだ生成されていないため、そこにはありません。なぜそれは私にエラーを与えるのですか?何かが足りないようです。
また、Jenkinsは各ビルド後にアーティファクトを削除します(アーカイブされたアーティファクトではなく、削除するように指示できることを知っています)。そうしないと、ハードドライブが非常に早く詰まります。
あなたの理解は正しいです、ジェンキンスの意味でのアーティファクトはビルドの結果です-ビルドプロセスの意図された出力。
一般的な規則は、ビルドの結果をbuild
、target
、またはbin
ディレクトリに入れることです。
Jenkinsアーカイバは、グロブ(target/*.jar
)を使用して、ビルドごとに一意の名前を持っている場合でも、適切なファイルを簡単に取得できます。
アーティファクトは、ビルドプロセスの結果である可能性があります。重要なことは、どのクライアントでビルドされたかは関係なく、ワークスペースからマスター(サーバー)に転送され、ビルドへのリンクと共にそこに保存されることです。利点は、この方法でバージョン管理され、マスター上でバックアップをセットアップするだけで、すべてのビルドクライアントがオフラインであっても、すべてのアーティファクトがWebインターフェイスを介してアクセスできることです。
成果物名として正規表現を定義することができます。私の場合、ビルド中に定数名で1つのファイルに保存したいすべてのファイルを圧縮しました。
また、ジェンキンスは各ビルド後にアーティファクトを削除しますか? (アーカイブされたアーティファクトではなく、それらを削除するように指示できることは知っています)
いいえ、ハドソン/ジェンキンスは、それ自体では、ビルド後にワークスペースをクリアしません。ビルドプロセスで、ビルドアーティファクトを残した場所から消去、上書き、または移動するアクションがある場合があります。 [ビルドの前にワークスペースをクリーンアップ]と呼ばれる、拡張プロジェクトオプション(拡張する必要がある)のジョブ構成には、新しいビルドの開始時にワークスペースを消去するオプションがあります。
Jenkins 2.60.3では、ビルドマシンのハードドライブ領域を節約するために、ビルドアーティファクト(アーカイブされたアーティファクトではなく)を削除する方法があります。 [全般]セクションで、戦略[ログローテーション]を使用して[古いビルドを破棄する]をオンにし、[詳細設定]オプションに移動します。日数またはビルドに基づいてジョブのビルドアーティファクトを保持することに関連して、さらに2つのオプションが表示されます。
私にとって有効な設定は、「アーティファクトを保持するビルドの最大数」に1を入力してから、アーティファクトをアーカイブするビルド後のアクションを設定することです。これにより、すべてのビルドのすべてのアーティファクトがアーカイブされ、ビルドのすべての情報が保存されますが、独自のアーティファクトは最後のビルドのみが保持します。