jenkins - 如何区分 Jenkins 的流水线脚本中的部署环境
问题描述
我使用 Jenkins 将微服务部署到不同的环境(Dev1、dev2、QA ... Prod)
我对每个环境都有一个几乎相同的管道脚本,环境名称嵌入在作业名称中,因此我们可以执行类似的操作来创建特定于环境的代码和变量,从而将更多代码重构为公共库
if (env.JOB_BASE_NAME.startsWith('dev1')) {
env.ACR_TAG='dev1'
// other settings...
}
else if (env.JOB_BASE_NAME.startsWith('dev2')) {
env.ACR_TAG='dev2'
}
else if (env.JOB_BASE_NAME.startsWith('qa1')) {
env.ACR_TAG='qa1'
}
有没有更好的方法来实现这一点,而不在作业名称中嵌入环境名称?我不能使用$env.BRANCH_NAME方法
这是我的设置的样子:
DEV1(视图)
- dev1_microserviceA(作业/管道)
- dev1_microserviceB
- ...
- dev1_microserviceX\
DEV2
- dev1_microserviceA
- dev1_microserviceB
- ...
- dev1_microserviceX ...
解决方案
- 如果每个环境有一台机器,您可以使用它们的主机名命名您的节点,并使用它们在一个块
NODE_NAME
中获取它们的名称。node
- 如果每个环境有多台机器,您可以设置
ACR_TAG
为自定义环境变量并在块内使用它node
(管理 Jenkins -> 管理节点 -> 配置(在每个节点上)-> 节点属性 -> 勾选环境变量)。 - 如果您动态管理节点,最好在共享库中维护一个函数以确定您的位置。
推荐阅读
- ios - App Store 上仅更新 iPad 应用程序
- java - 如何在 nanohttpd 中发送 JSON 数据作为响应
- android - 带有 SharedElementTransition 的 AsyncLayoutInflater
- ios - 当我保存核心数据时,Int64 不显示 0
- javascript - 如何将使用 javascript 和 ASP.NET 生成的字段中的数据发送到 Microsoft SQL?
- python - 数据框:在一天中的一周内累积日期
- java-8 - 通过 Java 8 Streams API 操作 StringBuilder
- javascript - Netsuite:事务加载时的实时字段更新
- security - 为什么要在 XSS 预防中将 & 转换为 & ?
- css - 如何在 Polymer 2 中正确导入 Material Design Iconic Font?