web-dev-qa-db-ja.com

Jenkinsはアーティファクトをジョブディレクトリの外に保存できますか?

現在、Jenkinsにいくつかのジョブを設定していますが、アーティファクトがジョブディレクトリ内に保存されているため、バックアップが難しいことがわかっています。ジョブ構成と成果物を別々にバックアップしたいのですが。ジェンキンスが仕事の外にそれらを保存するオプションを持っていることをどこかで読んだことを覚えていると確信していますが、これを見つけることができません。

Jenkinsインターフェイスのジョブ内からアーティファクトを表示しながらこれを行う構成オプションはありますか? (つまり、アーティファクトを他の場所にコピーする単なるアドインではありません)

14
the_mandrill

Jenkins構成ページに移動します。例:.

http://mybuildserver.acme.com/configure

構成ページの上部には、「ホームディレクトリ」設定があります。その下にある[詳細...]ボタンをクリックします。

次に、「ワークスペースルートディレクトリ」をe:\jenkins-workspaces\${ITEM_FULL_NAME}に設定し、「ビルドレコードルートディレクトリ」をe:\jenkins-builds\${ITEM_FULL_NAME}などに設定します。

警告:Jenkins 2.7.2を実行しましたが、Jenkinsをそのように構成した後、特定の機能が正しく機能しないことに気付きました。 フォルダの問題マルチブランチプロジェクトプラグインの問題 を見ました。これらの機能に依存している場合は、これらの問題のステータスを確認してください。

12
Wim Coenen

できる限り ここを参照 、FTP、CIFS、Confluence、Artifactoryなど、必要な場所にアーティファクトをデプロイするためのプラグインがたくさんあります。特に ArtifactsDeployer Jenkinsホームでアーティファクトのコピーを作成できます。

6
Cédric Julien

サム、私の問題を解決するための正しい方向に私を導いてくれたあなたの投稿に感謝します。マルチブランチプロジェクトのビルドのジョブアーカイブへのシンボリックリンクを作成する方法を探していました。これまで、ファイルシステムで正しいフォルダのベース名を手動で検索し、それをJenkinsfileに追加していました。今、私は簡単に使用できます

jobOutputFolder = currentBuild.rawBuild.artifactsDir.path

それを私のスクリプトで使用します。セキュリティが懸念される場合は、それを共有ライブラリとして追加で実装できます。

1
schlm3

Use Custom Workspaceビルドオプションを試してください。 Jenkinsポップアップヘルプから:

Jenkinsのジョブごとに、Jenkinsは一意の「ワークスペースディレクトリ」を割り当てます。これは、コードがチェックアウトされてビルドが行われるディレクトリです。通常、Jenkinsにワークスペースディレクトリの割り当てとクリーンアップを許可する必要がありますが、いくつかの状況ではこれが問題になります。そのような場合、このオプションを使用すると、ワークスペースの場所を手動で指定できます。

このオプションは、マルチ構成プロジェクトビルドの高度なプロジェクトプロパティでも使用できます。

1
Justin Rowe

「実行のための環境を準備する」の下のGroovyスクリプトは常にマスターで実行され、このGroovyスクリプトは、アーティファクトをarchive_toにアーカイブする場所へのシンボリックリンクを作成できます。これには、ジョブ名とビルド番号を含める必要があります。

if (! Files.createSymbolicLink(Paths.get(currentBuild.artifactsDir.path),
                               Paths.get(archive_to.getCanonicalPath()))) {
  throw new RuntimeException("Can't create symlink to archive dir")
}

もちろん(悲しいことに)古いビルドがJenkinsによってパージされると、jenkinsがシンボリックリンクとターゲット(恥)を所有している場合でも、パージ時にjenkinsがシンボリックリンクをたどらないため、古いアーティファクトが残ります。

そのための回避策は、新しいアーカイブディレクトリからシンボリックリンクを戻すことです。その後、jenkinsがアーカイブディレクトリをパージすると、新しいシンボリックリンクがぶら下がり、cronジョブが後で新しいジョブアーカイブディレクトリを削除できます。

0
Sam Liddicott