我在建立一个Jenkins管道。我们有一个需要执行的bash脚本,但它本身并不在存储库中。
如何执行此脚本?我试过:
- configFileProvider:使用configFileProvider获取变量中的脚本。执行不起作用,我也在想这不是办法吗?这意味着配置文件,而不是真实的的脚本?
- 我有一个包含
resources/
的共享库。从这里开始,我复制了脚本,并在将内容复制到一个文件中之后使用sh
执行它。。这进行得很顺利,但我的工作空间里有我不喜欢的脚本。我想在我的工作区上执行命令,但是当我执行git commit的时候。如果可能的话,我不希望文件在我的工作区中。
在我的jenkins管道中执行托管脚本(从托管脚本或从git中)的正确方法是什么?
没有我使用的管道:托管脚本。当我执行它时,我在日志中看到:
executing script 'test-xxx.sh'
[test-xxx] $ /bin/bash /tmp/build_step_template3284004xxx.sh param1 param2 param3
这是我想在Jenkins管道中复制的理想解决方案。我的脚本不在我的工作空间中,但在我的工作空间中执行,并且是临时的。
1条答案
按热度按时间dgenwo3n1#
我曾经使用Scriptler插件,但是它有安全问题。
当我在2017/8年将我所有的东西从自由式构建转移到管道(用Groovy表示)时,我将该功能迁移到Shared Libraries(顺便说一句:正确的位置放置针对Jenkins对象模型运行的代码)。
Jenkins作业中的所有路径(自由式或管道)都是%JENKINS_WORKSPACE%相对路径。Jenkins并不喜欢你在文件系统上的这个目录上面。
我强烈建议你的构建过程需要的所有东西都放在Jenkins的主工作区中(最好是通过git checkout 或共享库)。在git中对所有东西进行版本控制永远是你的朋友。如果这不是您想做的,其他选项可以是:
1.此post