如何在 Jenkins 管道中执行托管脚本

Den*_*boy 7 jenkins jenkins-pipeline

我正在创建一个詹金斯管道。我们有一个 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
Run Code Online (Sandbox Code Playgroud)

这是我想在 Jenkins 管道中复制的理想解决方案。我的脚本不在我的工作区中,但在我的工作区中执行并且是临时的。

And*_*ray 0

我曾经使用Scriptler插件,但它存在安全问题。

当我在 2017 年 8 月将所有东西从自由式构建转移到管道(用 Groovy 表示)时,我将该功能迁移到共享库(顺便说一句:放置针对 Jenkins 对象模型运行的代码的正确位置)。

Jenkins 作业中的所有路径(自由式或管道)都是 %JENKINS_WORKSPACE% 相对路径。Jenkins 本身并不喜欢您在文件系统上的此目录之上。

我强烈建议您的构建过程所需的所有内容都放在主 Jenkins 工作区中(最好通过 git checkout 或共享库)。对 git 中的所有内容进行版本控制将永远是您的朋友。如果这不是您想要做的,其他选择可能是:

  1. 共享工作空间
  2. 这个帖子