【问题标题】:Jenkins pipeline deployment for production and development用于生产和开发的 Jenkins 流水线部署
【发布时间】:2017-07-15 12:15:03
【问题描述】:

我正在使用 作业自动部署 dev 和 prod,这些作业必须针对每种类型的特定服务器进行调度。对于这些作业,与每个 sqoop 作业关联的脚本需要根据 dev 与 prod 进行更改。目前,我有一个 git repo,其中包含一个 dev 和 prod 文件夹,其中批准的 dev 更改被放入 prod 文件夹,但变量(对 dev 数据库与 prod 数据库的引用)已更改。然后我有两个 jenkins 管道,它们与每个管道相关联并具有独立的触发器。这真是太骇人听闻了。

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

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

有没有更好的方法来处理这个问题?

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

【问题讨论】:

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


    【解决方案1】:

    您实际上可以在 shell 脚本和 hive 脚本中引用环境变量。

    在 shell 脚本中引用 $HOT_VAR:

    echo $HOT_VAR
    

    在 hive 脚本中引用 $HOT_VAR:

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

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

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

    【讨论】:

      猜你喜欢
      • 2018-11-24
      • 2017-08-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-17
      相关资源
      最近更新 更多