Jenkinsfile进行隐藏/取消隐藏的原因?

时间:2018-10-01 11:39:36

标签: jenkins jenkins-pipeline

在我项目的Jenkinsfile中,我经常遇到诸如stash "src"unstash "src"之类的命令

在Jenkins Pipeline工作中进行stash unstash的主要原因是什么?

1 个答案:

答案 0 :(得分:5)

管道可让您为要执行的每个阶段指定一个代理。例如,当您想在Jenkins Windows Slave和Jenkins Linux slave上运行测试时。在一条管线中将不同的从站用于不同阶段的问题是,工作区的内容未提供给新的从站。

因此,您可以在标有“ Linux”的从属服务器上执行git clone,并且当需要在Windows从属服务器上执行下一阶段时,则Windows Slave需要具有工作空间中的数据(来自{ {1}}),当前位于Linux从属服务器上。

在这里您可以使用存储/取消存储。您可以将内容从Linux从属存储(将隐藏的文件保存在主服务器上),然后将其存储在Windows从属服务器上(=将数据存储在该从属服务器的工作区中,然后从主服务器中删除)。在您的示例中,您将文件保存在主服务器上的git clone中,以便稍后可以将它们再次加载到其他从属服务器上。

应将Stash和Unstash用于小型文件,因此上述示例不是一个很好的示例(否则您的回购协议应该很小)。创建存储是为了存储一些小文件/资源​​,而不是存储整个存储库(速度非常慢)。然后,您需要查看在多个从站之间共享工作区的系统。

如果您为整个管道定义“全局”代理并在同一从属上运行整个管道,则不需要使用存储,因为不需要发送/共享工作空间的内容。但是在这种情况下,您将失去一些流水线的灵活性,例如在不同的从站上运行并行阶段。