作業の背景
- TFSからのソースチェックアウト時にエラーが出るようになった
- パスが長くなりすぎているのが原因のよう
- ホームディレクトリを変更してパスを短くする
環境
- Jenkins 2.289.3
- Team Foundation Server Plug-in 5.157.1
- Windows Server 2016 Standard
事前作業
- 現在のホームディレクトリを確認する
Jenkinsの管理 > システムの設定
→ C:\Windows\system32\config\systemprofile\AppData\Local\Jenkins\.jenkins - ディスクサイズを確認する(一時的にホームディレクトリが二重になるため)
作業手順
- サービスを停止する
- ディレクトリを作成する
C:\Jenkins-home (任意) - システム環境変数を登録する
→ JENKINS_HOME=C:\Jenkins-home\.jenkins (任意) - ディレクトリのコピー
.jenkinsディレクトリのサイズ確認
.jenkinsディレクトリのコピー
→ C:\Jenkins-home.jenkins へ
.jenkinsディレクトリのリネーム(バックアップ用)
→ 任意の名前 - C:\Program Files\Jenkins\jenkins.xmlのリネーム(バックアップ用)
→ 任意の名前 - jenkins.xmlの編集
→ JENKINS_HOMEの値を C:\Jenkins-home\.jenkins に変更 - サービスを起動する
- 設定内容を確認する
ホームディレクトリが変わっていること
ビルドが動作すること
後始末
- リネームしたバックアップ用.jenkinsディレクトリを削除する
参考
- https://issues.jenkins.io/browse/JENKINS-43947
- https://phoenixnap.com/kb/change-jenkins-home-directory
ソース取得時のエラー
Getting version 'C67715' to 'C:\Windows\system32\config\systemprofile\AppData\Local\Jenkins\.jenkins\workspace\xxxxxx\xxx\build@script\48f57227f2edc3230d2dd8ce6bc91878716b4cefe800a55d4de09aa30c3524e5'...
ERROR: Checkout failed
java.lang.IllegalArgumentException: renaming: target file already exists
at com.microsoft.tfs.util.Check.throwForFalse(Check.java:150)
at com.microsoft.tfs.util.Check.isTrue(Check.java:98)
at com.microsoft.tfs.util.temp.TempStorageService.renameItem(TempStorageService.java:347)
at com.microsoft.tfs.core.clients.versioncontrol.engines.internal.workers.GetDownloadWorker.moveTempFileToTargetFile(GetDownloadWorker.java:502)
at com.microsoft.tfs.core.clients.versioncontrol.engines.internal.workers.GetDownloadWorker.downloadFile(GetDownloadWorker.java:332)
at com.microsoft.tfs.core.clients.versioncontrol.engines.internal.workers.GetDownloadWorker.call(GetDownloadWorker.java:157)
at com.microsoft.tfs.core.clients.versioncontrol.engines.internal.workers.GetDownloadWorker.call(GetDownloadWorker.java:72)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at com.microsoft.tfs.core.clients.versioncontrol.internal.concurrent.BoundedExecutor$1.run(BoundedExecutor.java:85)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.lang.Thread.run(Thread.java:834)
Caused: com.microsoft.tfs.core.clients.versioncontrol.exceptions.VersionControlException
at com.microsoft.tfs.core.clients.versioncontrol.engines.internal.GetEngine.throwIfFatalError(GetEngine.java:2958)
at com.microsoft.tfs.core.clients.versioncontrol.engines.internal.GetEngine.processOperationsInternal(GetEngine.java:1142)
at com.microsoft.tfs.core.clients.versioncontrol.engines.internal.GetEngine.processOperations(GetEngine.java:957)
at com.microsoft.tfs.core.clients.versioncontrol.engines.internal.GetEngine.processGetOperations(GetEngine.java:808)
at com.microsoft.tfs.core.clients.versioncontrol.soapextensions.Workspace.get(Workspace.java:2459)
Caused: java.lang.RuntimeException
at com.microsoft.tfs.core.clients.versioncontrol.soapextensions.Workspace.get(Workspace.java:2470)
at com.microsoft.tfs.core.clients.versioncontrol.soapextensions.Workspace.get(Workspace.java:2341)
at com.microsoft.tfs.core.clients.versioncontrol.soapextensions.Workspace.get(Workspace.java:2331)
at com.microsoft.tfs.core.clients.versioncontrol.soapextensions.Workspace.get(Workspace.java:2308)
at hudson.plugins.tfs.commands.GetFilesToWorkFolderCommand.call(GetFilesToWorkFolderCommand.java:72)
at hudson.plugins.tfs.commands.GetFilesToWorkFolderCommand.call(GetFilesToWorkFolderCommand.java:18)
at hudson.remoting.LocalChannel.call(LocalChannel.java:46)
at hudson.plugins.tfs.model.Server.execute(Server.java:233)
Caused: java.lang.RuntimeException
at hudson.plugins.tfs.model.Server.execute(Server.java:237)
at hudson.plugins.tfs.model.Project.getFiles(Project.java:264)
at hudson.plugins.tfs.actions.CheckoutAction.checkout(CheckoutAction.java:63)
at hudson.plugins.tfs.TeamFoundationServerScm.checkout(TeamFoundationServerScm.java:352)
at org.jenkinsci.plugins.workflow.steps.scm.SCMStep.checkout(SCMStep.java:129)
at org.jenkinsci.plugins.workflow.cps.CpsScmFlowDefinition.create(CpsScmFlowDefinition.java:159)
at org.jenkinsci.plugins.workflow.cps.CpsScmFlowDefinition.create(CpsScmFlowDefinition.java:70)
at org.jenkinsci.plugins.workflow.job.WorkflowRun.run(WorkflowRun.java:310)
at hudson.model.ResourceController.execute(ResourceController.java:97)
at hudson.model.Executor.run(Executor.java:429)
ERROR: Maximum checkout retry attempts reached, aborting
Finished: FAILURE