J4N*_*J4N 6 jenkins jenkins-pipeline
直到最近,我们才在 Jenkins 中构建没有任何“管道”的解决方案,所以我目前正在将我们的构建移动到多分支管道。
我遇到的问题是我们的解决方案有很多结构(很多子文件夹,有时还有一些大牌)。
目前,詹金斯管道提取文件夹中的所有内容,如下所示:
D:\ws\ght-build_feature_pipelines-TMQ33LB5OQIQ5VXVMFKFDG2HWCD4MUOGEGUWJUOMZ5D2GI42BIQA
这是很长的,现在我们达到了 260 个字符的限制MSBuild
:
C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin\Microsoft.Common.CurrentVersion.targets(2991,5):错误 MSB3553:资源文件“obj\Release\xx.aaaaaaaaaa。 yyy.bbbbbb.dddddddddddddd.yyyyyyy.vvv.dddddddddd.Resources.resources”的名称无效。项目元数据“%(FullPath)”不能应用于路径“obj\Release\xx.aaaaaaaaaa.yyy.bbbbbb.dddddddddddddd.yyyyyyy.vvv.dddddddddd.Resources.resources”。指定的路径、文件名或两者都太长。完全限定的文件名必须少于 260 个字符,目录名必须少于 248 个字符。[D:\ws\ght-build_feature_pipelines-TMQ33LB5OQIQ5VXVMFKFDG2HWCD4MUOGEGUWJUOMZ5D2GI42BIQA\Src\bbbbbb\dddddd\dddddddddddddd\yyyyyyy\xx.adaddadddddbbbb.ydyddddddbbbb.
我们有太多长度很大的情况,以至于重构所有内容确实是一项艰巨的工作,所以我正在研究如何为 jenkins 指定一条更小的路径?
我最终做了什么:
pipeline {
agent {
node{
label 'windows-node'
customWorkspace "D:\\ws\\${env.BRANCH_NAME}"
}
}
options{
skipDefaultCheckout()
}
...
}
Run Code Online (Sandbox Code Playgroud)
我有一个步骤可以结帐。对我来说,在不触及 jenkins 全局设置的情况下更容易拥有“每个工作”的行为。
事实证明,最近的 Jenkins 版本PATH_MAX
似乎被忽略了。它唯一做的事情是:当小于某个值时,在 Jenkins 日志中发出警告,这实际上并不重要 - 因为设置本身无论如何都会被忽略(如 Jenkins 2.249.3 所示)。另请参阅:JENKINS-2111
据我所知 - jenkins-branch-api 2.0.21中引入了新设置:
引入了一个新属性:MAX_LENGTH
。默认情况下,该值默认为 32 个字符。
您可以像这样设置它PATH_MAX
:
作为 java 属性 - 确保 Jenkins 将开始使用正确的设置,例如:
-Djenkins.branch.WorkspaceLocatorImpl.MAX_LENGTH=40
Run Code Online (Sandbox Code Playgroud)
或者在运行时,使用脚本控制台:
jenkins.branch.WorkspaceLocatorImpl.MAX_LENGTH=40
Run Code Online (Sandbox Code Playgroud)
实际上,您可以设置一个 java 属性来指定目录名称的长度,例如:
-Djenkins.branch.WorkspaceLocatorImpl.PATH_MAX=20
Run Code Online (Sandbox Code Playgroud)
要使其永久生效,您必须在 Jenkins java 启动配置文件中指定此属性。
您还可以使用 Jenkins 脚本控制台读取和写入此属性以进行临时更改,或者尝试一下,因为它会立即生效,例如
println jenkins.branch.WorkspaceLocatorImpl.PATH_MAX
jenkins.branch.WorkspaceLocatorImpl.PATH_MAX = 20
println jenkins.branch.WorkspaceLocatorImpl.PATH_MAX
Run Code Online (Sandbox Code Playgroud)
将此值设置为 0 会更改路径生成行为。
有关详细信息,请查看:
https://issues.jenkins-ci.org/browse/JENKINS-34564
https://issues.jenkins-ci.org/browse/JENKINS-38706
归档时间: |
|
查看次数: |
2604 次 |
最近记录: |