【问题标题】:How to pass parameter to Jenkins如何将参数传递给詹金斯
【发布时间】:2018-02-23 04:02:54
【问题描述】:

每次将代码提交到 GitHub 时,我都能触发新的 Jenkins 构建。

GitHub 中的 Jenkinsfile 示例:

node ('aws-slaves') {
    stage ('Gate 1: Checkout Code') {
        wrap([$class: 'TimestamperBuildWrapper']) {
            echo "Deleting dir"
            deleteDir()
        }
    }
}

如何从另一个 GitHub 文件(即在同一个 repo 中)传递参数并打印参数值?

【问题讨论】:

  • node 在那个脚本中不是 NodeJS,你知道吗?它是 Jenkins 自己的声明式 DSL(用 Groovy 编写,而不是 JavaScript)的一部分。如果您想为构建提供参数,请参见例如jenkins.io/doc/book/pipeline/syntax/#parameters
  • 我会把它当作一个“不,我没有意识到”“从另一个 GitHub 链接传递参数” 是什么意思?在工作区中签出一个单独的 repo,或者创建一个参数化构建(参见前面的评论),或者...?
  • 感谢您的指出。我有 1 个 github Jenkins 文件,并且在同一个存储库中有另一个文件,其中包含一个变量(参数)值。如何在 Jenkins 构建期间从该 github 文件加载参数(并打印出来)?
  • “GitHub 文件” 到底是什么意思?你的意思是同一个仓库中的其他文件吗?在这种情况下,它可以像其他所有文件一样在工作区中访问,假设您是 checkout scm 或类似文件。从您的问题中根本不清楚您要解决的具体问题是什么,因此几乎无法回答。
  • 是的 - 同一个 repo 中的一些其他文件。例如'file1' 包含值 'variable1'。

标签: python jenkins parameters


【解决方案1】:

我正在探索不同的方法来做到这一点,这里有一种方法:

在 Jenkins 文件中 - 您可以设置为执行“shell”脚本。来自 shell 脚本的命令之一可以是“curl”。使用 curl 命令 - 来自 GitHub 存储库(来自其中的特定文件)的值可以打印到屏幕上,它可以保存到文件中或存储在临时变量中。以这种方式 - 可以通过 github 通过将特定值存储在单独的文件(在 github 存储库中)来对构建进行参数化,并且可以在构建期间读取文件的内容。

另一种方法是在 github 中使用 jenkins 钩子,它会在每次提交代码时触发构建。在该构建期间 - 整个 github 存储库(提交代码的地方)将被获取并存储在运行 Jenkins 的服务器上的临时目录中。从该(本地)文件夹中 - (克隆)存储库中的任何文件都可以读入变量,这样也可以实现参数化。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多