jenkins - “阶段”部分之外的 Jenkinsile 全局变量
问题描述
我想设置所有阶段都可用的变量。取决于所选参数的变量,如下所示:
parameters {
choice(name: 'Environment', choices: ['Dev', 'Stage'], description: 'Deploy to chosen environment')
}
environment {
//set the config file which depends on params.Environment e.g.
//case params.Environment of
// Dev -> CONFIG_FILE="deploy/file_1.conf"
// Stage -> CONFIG_FILE="deploy/other_file.conf"
}
stages {
stage('check-params') {
steps {
sh "echo \"config file: ${CONFIG_FILE}\""
}
}
stage('build-frontend') {
steps {
sh "build-fronted.sh ${CONFIG_FILE}"
}
}
stage('deploy-backend') {
steps {
sh "deploy-backend.sh ${CONFIG_FILE}"
}
}
但根据管道语法,这是不允许的(我得到ERROR: Expected name=value pairs)。
有谁知道如何在不使用本文scripts { ... }
所述的每个阶段->步骤的情况下实现这一目标?
解决方案
您可以有一个初始化阶段,它将根据参数设置正确的变量,如下所示:
parameters {
choice(name: 'Environment', choices: ['Dev', 'Stage'], description: 'Deploy to chosen environment')
}
environment {
//set the config file which depends on params.Environment e.g.
//case params.Environment of
// Dev -> CONFIG_FILE="deploy/file_1.conf"
// Stage -> CONFIG_FILE="deploy/other_file.conf"
}
stages {
// ----------------------------
stage('init-env-variables') {
steps {
script {
switch(params.Environment) {
case "Dev":
env.setProperty('CONFIG_FILE', 'deploy/file_1.conf')
break;
case "Stage":
env.setProperty('CONFIG_FILE', 'deploy/other_file.conf')
break;
}
}
}
}
// -----------------------
stage('check-params') {
steps {
sh "echo \"config file: ${CONFIG_FILE}\""
}
}
stage('build-frontend') {
steps {
sh "build-fronted.sh ${CONFIG_FILE}"
}
}
stage('deploy-backend') {
steps {
sh "deploy-backend.sh ${CONFIG_FILE}"
}
}
推荐阅读
- php - 当mysql查询死亡但查询在dbms中有效时如何修复我的代码?
- php - 在数据表插件上的 mysql WHERE 子句上使用 GET 方法不起作用
- python - 在 python 3.7 中安装 pyhook “找不到满足 pyHook 要求的版本”
- mysql - GROUP BY 一列并显示多列
- javascript - 如何在 JavaScript 中将数字转换为 CPF 格式?
- python - 在 python 中从 Excel 转换为 CSV 时排除工作表
- javascript - PHP登录算法未重定向到下一页(不确定连接到数据库)
- linux - 构建glibc时“制作共享对象时无法使用”
- java - 将字符串 ["Scenario 1", "Scenario 2"] 转换为数组
- abap - 通过 CALL METHOD cmd_ei_api=>maintain_bapi 在 XD02 添加新的电子邮件客户