我正致力于用sqoop作业自动化dev和prod的部署,这些作业必须被scped到每种类型的特定服务器上。对于这些作业,与每个sqoop作业相关联的脚本需要根据dev vs prod进行更改。目前,我有一个git repo,其中包含一个dev and prod文件夹,其中已批准的dev更改放在prod文件夹中,但变量(对dev database vs prod database的引用)已更改。然后我有两个jenkins管道,它们相互关联并且有独立的触发器。这是难以置信的黑客。
我目前的计划是合并到一个文件夹中,用一个伪变量(如%dbprefix%)替换所有变量,然后在编译时使用每个相关联的管道regex并用其相关联的数据库前缀替换所有匹配项。
需要更改的文件是shell脚本和hive脚本,所以我不能在jenkins节点shell中定义环境变量。
有没有更好的方法来处理这个问题?
热释光;dr:我需要在不同的文件中设置变量,这些变量可以通过jenkins管道自动更改。
1条答案
按热度按时间eanckbw91#
实际上,您可以在shell脚本和配置单元脚本中引用环境变量。
在引用$hot\u var的shell脚本中:
在引用$hot\u var的配置单元脚本中:
我不确定这是否是一个Hive脚本的例子。也许你想看看https://stackoverflow.com/a/12485751/6090676. :)
如果由于某种原因确实无法使用环境变量,可以使用命令行工具(如awk、sed或perl)(为什么人们总是建议使用perl而不是ruby?)来搜索和替换需要配置的文件(可能基于环境变量)。