jenkins - Jenkinsfile 进行存储/取消存储的原因?
问题描述
在我的项目的 Jenkinsfile 中,我经常遇到像stash "src"
和unstash "src"
stash
unstash
从事Jenkins Pipeline 工作的主要原因是什么?
解决方案
管道允许您为要执行的每个阶段指定一个代理。例如,当您想在 Jenkins Windows 从站和 Jenkins Linux 从站上运行测试时。在一个管道中为不同阶段使用不同从站时的问题是,您的工作区的内容没有提供给新的从站。
因此,您可以git clone
在标有“Linux”的从属设备上执行操作,当需要在 Windows 从属设备上执行下一阶段时,Windows 从属设备需要从git clone
当前位于 Linux 从属设备上的工作区(来自 )获取数据。
在这里你可以使用 stash/unstash。您可以从 Linux 从站存储您的内容(这会将您存储的文件保存在您的主站上)并在 Windows 从站上取消存储(= 在该从站的工作区中提取数据并将其从主站删除)。在您的示例中,您将文件保存在src
您的主服务器上,以便您可以在稍后阶段再次将它们加载到不同的从服务器上。
Stash 和 unstash 应该用于小文件,所以上面的例子不是一个很好的例子(或者你的 repo 应该很小)。Stash 是为存储一些小文件/资源而创建的,而不是用于存储整个存储库(将非常慢)。然后,您需要查看在多个从属之间共享工作空间的系统。
如果您为整个管道定义“全局”代理并在同一个从属设备上运行整个管道,则不需要使用 stash,因为不需要发送/共享工作区的内容。但在这种情况下,您将失去管道的一些灵活性,例如在不同的从站上运行并行阶段。
推荐阅读
- python - 用海龟模块画圆
- wpf - 在 WPF 数据网格中按下一个键后,如何让用户跳转到下一个拟合项?
- c++ - 删除整个双向链表c ++
- flutter - Flutter IconButton splashRadius 主题
- java - 如何防止夹线终止?
- xml - 抓取网站,Google Sheets IMPORTXML 函数,获取列中的特定行
- html - CSS中带有内部网格的网格项目
- c# - 是否可以用 Console.ReadLine 填充 ArrayList?
- sql - SQL 模式不适用于特定 5-95 分位数内的基本统计信息提取
- python - Python 3.10+:可选[类型] 或类型 | 没有任何