我们设置了一些共享工作空间的作业。工作流程是:
对于各个分支机构:
建立一个大的鸣笛c ++项目FOO。
执行多个下游测试,每个测试都使用FOO的工作区。
我们通过将下游作业的“使用自定义工作区”字段分配给构建工作区来实现此目的。
最近我们选择了一个分支并将其分配给Jenkins从机而不是主机。我很惊讶地发现:
在master上,foo存储库被克隆到$JENKINS_JOBS_PATH/FOO/workspace/foo_repo
,而在slave上,存储库被克隆到$JENKINS_JOBS_PATH/FOO/foo_repo
。这导致我们不得不另外更改
这是设计,还是我们以某种方式配置主服务器和服务器不一致?
答案 0 :(得分:2)
较旧版本的Jenkins将工作区放在$ {JENKINS_HOME} / jobs / JOB / workspace目录下。升级后,此模式保留在Jenkins实例中。新版本将工作空间放在$ {JENKINS_HOME} / workspace /中。我怀疑奴隶不需要遵循旧的模式(特别是如果它是一个较新的奴隶),所以目录可能在各机器之间不一致。
您可以在Jenkins中更改主服务器上工作区的位置 - >配置Jenkins - >高级。
我认为处理这个问题的安全方法......如果您打算使用自定义工作区,您应该将其用于所有工作,包括构建大型鸣笛c ++项目的第一个工作区。
如果您在管道中完成所有操作,则可以在单个作业中运行所有这些操作,并可以更好地控制所有文件的位置,并且您可以选择stash
和unstash
,但如果文件很大,藏匿可能不是可行的方法。
答案 1 :(得分:0)
您可以为每个作业省略“使用自定义工作区”选项,而是更改主工作区和/或从属工作区路径并使用
%WORKSPACE%/../foo_repo path
或(等于)
./../foo_repo path
在这种情况下
%WORKSPACE% = [master or slave node workspace]/[job name]
和
%WORKSPACE%/../ = [master or slave node workspace]