我们设置了一些共享工作空间的作业。各个分支的工作流程是:
foo
我们通过将Use custom workspace下游作业的字段分配给构建工作区来完成此任务。
Use custom workspace
最近,我们采用了一个分支,并将其分配在Jenkins从机而非主服务器上构建。我很惊讶地发现,在主服务器上,foo存储库被克隆到$JENKINS_JOBS_PATH/FOO/workspace/foo_repo-在从服务器上,存储库被克隆到$JENKINS_JOBS_PATH/FOO/foo_repo。
$JENKINS_JOBS_PATH/FOO/workspace/foo_repo
$JENKINS_JOBS_PATH/FOO/foo_repo
这是设计使然,还是我们以某种方式不一致地配置了主服务器和从服务器?
较旧的Jenkins版本将工作空间放在$ {JENKINS_HOME} / jobs / JOB / workspace目录下。升级后,该模式将保留在Jenkins实例中。新版本将工作空间放置在$ {JENKINS_HOME} / workspace /中。我怀疑从站不需要遵循旧模式(特别是如果它是较新的从站),因此目录在机器之间可能不一致。
您可以在Jenkins->配置Jenkins->高级中更改主服务器上工作区的位置。
我认为处理此问题的安全方法…如果要使用自定义工作区,则应将其用于所有工作,包括第一个构建大型honking c ++项目的工作。
如果您在管道中进行了所有操作,则可以在一个作业中运行所有这些操作,并且可以更好地控制所有文件的位置,并且可以选择stash和unstash,但是如果文件很大,则隐藏可能不是要走的路。
stash
unstash