从机上的Jenkins工作空间路径

时间:2017-10-25 13:39:30

标签: jenkins

我们设置了一些共享工作空间的作业。工作流程是:

对于各个分支机构:

  • 建立一个大的鸣笛c ++项目FOO。

  • 执行多个下游测试,每个测试都使用FOO的工作区。

我们通过将下游作业的“使用自定义工作区”字段分配给构建工作区来实现此目的。

最近我们选择了一个分支并将其分配给Jenkins从机而不是主机。我很惊讶地发现:

在master上,foo存储库被克隆到$JENKINS_JOBS_PATH/FOO/workspace/foo_repo,而在slave上,存储库被克隆到$JENKINS_JOBS_PATH/FOO/foo_repo。这导致我们不得不另外更改

这是设计,还是我们以某种方式配置主服务器和服务器不一致?

2 个答案:

答案 0 :(得分:2)

较旧版本的Jenkins将工作区放在$ {JENKINS_HOME} / jobs / JOB / workspace目录下。升级后,此模式保留在Jenkins实例中。新版本将工作空间放在$ {JENKINS_HOME} / workspace /中。我怀疑奴隶不需要遵循旧的模式(特别是如果它是一个较新的奴隶),所以目录可能在各机器之间不一致。

您可以在Jenkins中更改主服务器上工作区的位置 - >配置Jenkins - >高级。

我认为处理这个问题的安全方法......如果您打算使用自定义工作区,您应该将其用于所有工作,包括构建大型鸣笛c ++项目的第一个工作区。

如果您在管道中完成所有操作,则可以在单个作业中运行所有这些操作,并可以更好地控制所有文件的位置,并且您可以选择stashunstash ,但如果文件很大,藏匿可能不是可行的方法。

答案 1 :(得分:0)

您可以为每个作业省略“使用自定义工作区”选项,而是更改主工作区和/或从属工作区路径并使用

%WORKSPACE%/../foo_repo path

或(等于)

./../foo_repo path

在这种情况下

%WORKSPACE% = [master or slave node workspace]/[job name]

%WORKSPACE%/../ = [master or slave node workspace]