首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >向JCasC configScripts提供外部yaml文件

向JCasC configScripts提供外部yaml文件
EN

Stack Overflow用户
提问于 2022-02-03 18:34:28
回答 3查看 728关注 0票数 0

我正在使用Jenkins图表(SUMMARY.md#jenkins-configuration-as-code-jcasc)配置jenkins实例。

目前,Jenkins配置在values.yaml中提供,如下所示:

代码语言:javascript
复制
jenkins:
  controller:
    JCasC:
      configScripts:
        key1:|-
          <a-very-big-yaml-value>

是否有方法从单独的yaml文件中导入这个“大-yaml-值”,因为它将增强代码的可维护性。

EN

回答 3

Stack Overflow用户

发布于 2022-02-04 08:44:56

由于我不使用舵图,所以我不能权威地回答,但它在摘要中得到了支持。根据JCasC入门文档:

首先,以安装代码插件的方式启动配置的Jenkins实例。

  • 那些将Jenkins作为Docker容器运行(可能还包括预装插件)的人,也包括作为代码插件的配置。

其次,插件查找CASC_JENKINS_CONFIG环境变量。该变量指向以下任意一个以逗号分隔的列表:

  • 包含一组配置文件的文件夹的路径。例如,/var/jenkins_home/init.CasC**.**
  • 指向单个文件的完整路径。例如,/var/jenkins_home/init.CasC/jenkins.yaml
  • 指向web上服务的文件的URL。例如,https://acme.org/jenkins.yaml

如果CASC_JENKINS_CONFIG的一个元素指向一个文件夹,插件将递归遍历该文件夹以查找带有.yml,.yaml,.YAML,.YML后缀的文件。它将排除在完整路径的任何部分中包含隐藏文件夹的隐藏文件或文件。它遵循文件和目录的符号链接。

所以,是的,您可以有多个yml文件。我有超过20 (120个插件)。它们按功能(例如:全局、代理、工具、凭据,包括RBAC的2份(角色1份,用户的1份)以及一些插件特定的yml文件等进行细分。有些还可以跨实例重用,而另一些则是特定的。

在发生冲突时,您应该知道合并策略

  • ErrorOnConflictMergeStrategy (默认)
    • 策略名为errorOnConflict。
    • 如果多个YAML文件中存在冲突,则引发异常。

  • OverrideMergeStrategy
  • 策略名被覆盖。
  • 根据加载顺序重写配置文件。

另外,在更新现有实例时,某些插件配置可能会取代配置,而其他插件配置可能会增加现有配置,而不考虑一个yaml或多个配置。当然,还没有100%的选项是可选的,所以也需要一些init.groovy。YMMV

您还可以回顾一下: JCasC 处理秘密

票数 1
EN

Stack Overflow用户

发布于 2022-05-10 12:14:42

下面的设置对我有效。会把相关的部分。

舵图的目录布局:

代码语言:javascript
复制
jenkins/
├── conf/
│   ├── shared-library.yaml
│   └── big-yaml.yaml
├── templates/
│   └── jenkins-custom-casc-config.yaml
├── values.yaml
└── Chart.yaml

values.yaml中,我们重写CASC_JENKINS_CONFIG,以便它在默认配置文件之上考虑配置文件的附加路径。

代码语言:javascript
复制
controller:
  containerEnv:
    - name: CASC_JENKINS_CONFIG
      value: "/var/jenkins_home/casc_configs,/var/jenkins_home/custom-casc_configs"
   
persistence:
  volumes:
    - name: jenkins-custom-casc-config
      configMap:
      name: jenkins-custom-casc-config
  mounts:
    - mountPath: /var/jenkins_home/custom-casc_configs
      name: jenkins-custom-casc-config

加载显示在ConfigMap文件夹中的所有文件的jenkins-custom-casc-config.yaml

代码语言:javascript
复制
apiVersion: v1
kind: ConfigMap
metadata:
  name: jenkins-custom-casc-config
data:
  {{- (.Files.Glob "conf/*").AsConfig | nindent 2 }}
票数 0
EN

Stack Overflow用户

发布于 2022-08-16 10:11:59

在对/var/jenkins_home/casc_configs执行子文件夹时,我将所有配置文件都注入其中。否则,广谷物的答案就会奏效。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70976546

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档