Jenkins LTS:Jenkins工作区中的Groovy脚本路径问题

发布于 2025-02-06 04:42:34 字数 1300 浏览 4 评论 0原文

我刚刚将我们的开发工厂的Jenkins版本升级为LTS。 我们以前是一个旧的2.x版本,

实际上,

stage('Load Utilities Scripts') {
    checkout scm
    echo "${job_name}"
    modules.messages = load "${jenkins_home}/workspace/${job_name}@script/pipelines/utils/slack_functions.groovy"
    modules.ansible = load "${jenkins_home}/workspace/${job_name}@script/pipelines/utils/ansible_functions.groovy"
    modules.jenkins = load "${jenkins_home}/workspace/${job_name}@script/pipelines/utils/jenkins_functions.groovy"
    modules.pic_env = load "${jenkins_home}/workspace/${job_name}@script/pipelines/utils/pic_env.groovy"
    modules.maven = load "${jenkins_home}/workspace/${job_name}@script/pipelines/utils/maven_functions.groovy"
    modules.git = load "${jenkins_home}/workspace/${job_name}@script/pipelines/utils/git_functions.groovy"
}

我们有一个可以加载所有脚本的阶段:它运行良好,除了现在脚本已放置在

    /var/jenkins_home/workspace/SAGES2_BUILD_AUTO@script/357f3acc22b0fbb05a66735d46d7d7eb950a2e836ab3762b1905784bc550ee5e on builtin
    /var/jenkins_home/workspace/SAGES2_BUILD_AUTO on builtin

我想这是一个安全性的演变中(我知道Jenkins上的Groovy脚本插件经常被弃用但这是另一个问题)。

我如何获得此字符串:357F3ACC22B0FBB05A66735D46D7EB950A2E836AB3762B1905784BC550EEE5E?是否有诸如Job_name或Jenkins_home之类的Vars?谁会产生这个令牌,在哪里?我可以在这个字符串上放手吗? 它代表什么?

I just upgraded the jenkins version of our development factory to lts. We were previously in an old 2.x version

In fact we have a stage to load all scripts :

stage('Load Utilities Scripts') {
    checkout scm
    echo "${job_name}"
    modules.messages = load "${jenkins_home}/workspace/${job_name}@script/pipelines/utils/slack_functions.groovy"
    modules.ansible = load "${jenkins_home}/workspace/${job_name}@script/pipelines/utils/ansible_functions.groovy"
    modules.jenkins = load "${jenkins_home}/workspace/${job_name}@script/pipelines/utils/jenkins_functions.groovy"
    modules.pic_env = load "${jenkins_home}/workspace/${job_name}@script/pipelines/utils/pic_env.groovy"
    modules.maven = load "${jenkins_home}/workspace/${job_name}@script/pipelines/utils/maven_functions.groovy"
    modules.git = load "${jenkins_home}/workspace/${job_name}@script/pipelines/utils/git_functions.groovy"
}

it worked perfectly well except that now the scripts are positioned in

    /var/jenkins_home/workspace/SAGES2_BUILD_AUTO@script/357f3acc22b0fbb05a66735d46d7d7eb950a2e836ab3762b1905784bc550ee5e on builtin
    /var/jenkins_home/workspace/SAGES2_BUILD_AUTO on builtin

I guess it's a security evolution (i know groovy script plugin on jenkins are often deprecated but it's another problem).

How can i get this string : 357f3acc22b0fbb05a66735d46d7d7eb950a2e836ab3762b1905784bc550ee5e ? Is there any vars like job_name or jenkins_home ? Who generates this token and where ? Can i have the hand on this string ?
What does it represent ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

只是偏爱你 2025-02-13 04:42:34

您可以通过附加相对部分来获取当前目录并构建绝对路径。

modules.messages = load pwd() + "@script/pipelines/utils/slack_functions.groovy"

或类似的东西

modules.messages = load "${WORKSPACE}@script/pipelines/utils/slack_functions.groovy"

似乎是作为安全性提高而引入的。因此,您将必须像以下那样解决这个问题。

script {
    // Locate the jenkins folder
    // This is done because there is a new sub-folder (like : 17a4ba1ed1ce777b18c5...)
    git_jenkins_folder = sh (
        script: "find " + WORKSPACE + "@script -type d -name 'jenkins' -printf '%T@ %Tc %p\n' | sort -rn | head -1 | cut -d' ' -f9",
        returnStdout: true
    ).trim()
    // Load the groovy methods in groovy files
    slack = load git_jenkins_folder + "/pipelines/utils/slack_functions.groovy"
}

图片来源:詹金斯为什么在workspace@脚本文件夹中创建一个子文件夹来结帐git代码,而不是workspace@脚本本身?

You can get the current directory and build the absolute path by appending the relative part.

modules.messages = load pwd() + "@script/pipelines/utils/slack_functions.groovy"

Or something like this

modules.messages = load "${WORKSPACE}@script/pipelines/utils/slack_functions.groovy"

It seems this has being introduced as a security improvement. So you will have to work around this like below.

script {
    // Locate the jenkins folder
    // This is done because there is a new sub-folder (like : 17a4ba1ed1ce777b18c5...)
    git_jenkins_folder = sh (
        script: "find " + WORKSPACE + "@script -type d -name 'jenkins' -printf '%T@ %Tc %p\n' | sort -rn | head -1 | cut -d' ' -f9",
        returnStdout: true
    ).trim()
    // Load the groovy methods in groovy files
    slack = load git_jenkins_folder + "/pipelines/utils/slack_functions.groovy"
}

Credit: Why does Jenkins creates a subfolder within the workspace@script folder to checkout git code instead of the workspace@script itself?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文