【问题标题】:Reading Jenkins pipeline configuration files outside workspace在工作区外读取 Jenkins 管道配置文件
【发布时间】:2021-09-28 03:49:30
【问题描述】:

我在一个名为 jenkins-pipelines 的 git 存储库中有 jenkins 管道。我有多个 jenkins 实例每个环境一个。为了为所有环境保留一个管道,我将每个管道的环境特定变量外部化到 jenkins-pipelines git repo 中名为 config 的文件夹中。

这是我在 k8s 管道中用于读取管道配置的 sn-p。问题是管道配置在项目工作区中不可用,我必须编写条件 sn-p 来猜测和读取管道配置文件。有没有更好更直接的方法来解决这个问题?

     sh '''#!/bin/bash 
          if [ -d 'config' ]; then
            cat config/k8s.json 
          elif [ -d ../workspace@script ]; then
            cat ../workspace@script/config/k8s.json 
          elif [ -d ../${JOB_NAME}@script ]; then
            cat ../${JOB_NAME}@script/config/k8s.json
          fi
     ''' 

jenkins-pipelines repo k8s/config.json 中的示例配置:

{
  "aws-env1": {
     "state": "blah"
  },
  "azure-env1": {
     "state": "blah2"
  }
}

【问题讨论】:

  • 你保留什么样的配置信息? Jenkins 是否在 k8s 上运行?
  • 该配置主要用于 jenkins 管道。我在不同的云提供商上有几个不同的环境。我在配置文件中保留了这个环境特定的值,比如存储桶信息、jenkins 作业的 metzdata 等。 jenkins 不能在 k8s 上运行。
  • 它是什么配置之王?每个应用程序和环境都是唯一的吗?或者只是每个环境?
  • 更新问题。每个管道都有一个配置,包含所有环境详细信息。
  • 好的,你有多个 Jenkins 实例,每个实例都使用相同的管道,但配置不同。那是对的吗?您是否关心该配置的 git 历史记录?

标签: jenkins jenkins-pipeline jenkins-groovy


【解决方案1】:

您是否考虑过为每个 Jenkins 实例设置一个 config file,然后从您的管道中引用该配置?

例如,您可以定义一个名为 pipeline-config 的配置文件,然后从您的管道中引用它,如下所示:

configFileProvider([configFile(fileId: 'pipeline-config', variable: 'myJsonConfig')]) 
        {
            sh "cat $myJsonConfig"
        }

这样管道代码是相同的,但每个 Jenkins 都有自己的易于获取的配置。

【讨论】:

    猜你喜欢
    • 2016-07-27
    • 1970-01-01
    • 1970-01-01
    • 2018-10-25
    • 1970-01-01
    • 2022-08-03
    • 2020-01-02
    • 1970-01-01
    • 2020-01-08
    相关资源
    最近更新 更多