Jenkins管道部署用于生产和开发

时间:2017-07-11 16:34:33

标签: jenkins jenkins-pipeline sqoop pipeline continuous-deployment

我正致力于使用作业自动部署dev和prod,这些作业必须被划分到每种类型的特定服务器上。使用这些作业,每个sqoop作业关联的脚本需要根据dev vs prod进行更改。目前,我有一个包含dev和prod文件夹的git repo,其中已批准的dev更改放在prod文件夹中,但变量(对dev database vs prod database的引用)已更改。然后我有两个jenkins管道,每个管道都与每个管道相关并具有独立的触发器。这太令人难以置信了。

我目前的计划是整合到一个文件夹中,用一个伪变量替换所有变量,例如%DBPREFIX%,然后使用每个关联的管道正则表达式,并在编译时将所有匹配替换为其关联的数据库前缀。

需要更改的文件是shell脚本和hive脚本,因此我不能只在Jenkins节点shell中定义环境变量。

有没有更好的方法来解决这个问题?

tl; dr:我需要在不同的文件中设置变量,这些变量可以通过jenkins管道自动更改。

1 个答案:

答案 0 :(得分:1)

您实际上可以在shell脚本和配置单元脚本中引用环境变量。

在shell脚本中引用$ HOT_VAR:

echo $HOT_VAR

在hive脚本中引用$ HOT_VAR:

select * from foo where day >= '${env:HOT_VAR}'

我不确定这是否是hive脚本的示例。也许你想看到https://stackoverflow.com/a/12485751/6090676。 :)

如果由于某种原因你真的无法使用环境变量,你可以使用命令行工具,如awk,sed或perl(为什么人们总是建议使用perl而不是ruby?)来搜索和替换你需要的文件配置(可能基于环境变量)。