現在、Jenkinsにいくつかのジョブを設定していますが、アーティファクトがジョブディレクトリ内に保存されているため、バックアップが難しいことがわかっています。ジョブ構成と成果物を別々にバックアップしたいのですが。ジェンキンスが仕事の外にそれらを保存するオプションを持っていることをどこかで読んだことを覚えていると確信していますが、これを見つけることができません。
Jenkinsインターフェイスのジョブ内からアーティファクトを表示しながらこれを行う構成オプションはありますか? (つまり、アーティファクトを他の場所にコピーする単なるアドインではありません)
Jenkins構成ページに移動します。例:.
http://mybuildserver.acme.com/configure
構成ページの上部には、「ホームディレクトリ」設定があります。その下にある[詳細...]ボタンをクリックします。
次に、「ワークスペースルートディレクトリ」をe:\jenkins-workspaces\${ITEM_FULL_NAME}
に設定し、「ビルドレコードルートディレクトリ」をe:\jenkins-builds\${ITEM_FULL_NAME}
などに設定します。
警告:Jenkins 2.7.2を実行しましたが、Jenkinsをそのように構成した後、特定の機能が正しく機能しないことに気付きました。 フォルダの問題 と マルチブランチプロジェクトプラグインの問題 を見ました。これらの機能に依存している場合は、これらの問題のステータスを確認してください。
できる限り ここを参照 、FTP、CIFS、Confluence、Artifactoryなど、必要な場所にアーティファクトをデプロイするためのプラグインがたくさんあります。特に ArtifactsDeployer Jenkinsホームでアーティファクトのコピーを作成できます。
サム、私の問題を解決するための正しい方向に私を導いてくれたあなたの投稿に感謝します。マルチブランチプロジェクトのビルドのジョブアーカイブへのシンボリックリンクを作成する方法を探していました。これまで、ファイルシステムで正しいフォルダのベース名を手動で検索し、それをJenkinsfileに追加していました。今、私は簡単に使用できます
jobOutputFolder = currentBuild.rawBuild.artifactsDir.path
それを私のスクリプトで使用します。セキュリティが懸念される場合は、それを共有ライブラリとして追加で実装できます。
Use Custom Workspace
ビルドオプションを試してください。 Jenkinsポップアップヘルプから:
Jenkinsのジョブごとに、Jenkinsは一意の「ワークスペースディレクトリ」を割り当てます。これは、コードがチェックアウトされてビルドが行われるディレクトリです。通常、Jenkinsにワークスペースディレクトリの割り当てとクリーンアップを許可する必要がありますが、いくつかの状況ではこれが問題になります。そのような場合、このオプションを使用すると、ワークスペースの場所を手動で指定できます。
このオプションは、マルチ構成プロジェクトビルドの高度なプロジェクトプロパティでも使用できます。
「実行のための環境を準備する」の下の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ジョブが後で新しいジョブアーカイブディレクトリを削除できます。