【问题标题】:How to replace tokens found in files via Jenkins?如何通过 Jenkins 替换文件中的令牌?
【发布时间】:2018-12-29 03:04:05
【问题描述】:

我的大多数软件部署都使用 Microsoft Team Foundation Server (TFS)。 TFS 允许我在特定环境(开发、测试、产品)的发布过程中动态替换特定配置文件中的文本。

它替换的文本是称为“令牌”的占位符。例如,在我的自动化部署过程中,TFS 将允许我们将在配置文件中找到的令牌替换为每个环境的构建管理中保存的预定义值。这样,我不会在任何环境的源代码控制中存储任何真实凭据。我也不会在源代码中存储任何包含这些敏感凭据的脚本。凭据在发布期间动态插入到令牌之上,并且凭据在发布系统内部(而不是在脚本中)托管/保存/配置。

例如,我有一个包含令牌的配置文件 (web.config)。令牌看起来像这样:

MySettingName=${MYSETTINGVALUE}

在向 DEV 发布期间,我希望将文本 ${MYSETTINGVALUE} 替换为单词 TEN。在发布到 PROD 期间,我希望将相同的 ${MYSETTINGVALUE} 文本替换为单词 ORANGE。我想将这两个值(十和橙色)存储在发布管理系统中,而不是在脚本中。

如何配置 Jenkins 来做同样的事情?

我已经上下搜索了这个特定的答案。虽然存在许多博客、文章、文档,但没有一个直接涉及这个问题。

  • 我不希望使用一些额外的第三方软件来做 这个。

  • 我不希望启动一些手动构建并提供这些 每一次的价值。

  • 我也不想使用操作系统级别的系统 变量(又名环境变量)。万一那台服务器死了,我 宁愿不必记住设置那些操作系统环境 下一个服务器上的变量。

【问题讨论】:

  • 澄清:您希望将这些令牌的值存储在 Jenkins 中某个安全位置的某个位置吗?您是否需要以将文件修补并保存到磁盘的方式替换这些标记,或者您将这些标记读入内存并且仅将值作为脚本的参数提供?
  • @JoergS 是的。我更愿意将这些令牌的值存储在 Jenkins 中。我确实需要在每个部署到的环境中替换文件/磁盘上的令牌。应用程序将从文件中读取值并在内存中使用。
  • 您是否已经尝试过下面提到的凭据插件?

标签: jenkins jenkins-pipeline continuous-deployment


【解决方案1】:

Jenkins 有一个内置的凭据插件,用于处理构建中的秘密。 使用方法见这篇文章:https://support.cloudbees.com/hc/en-us/articles/203802500-Injecting-Secrets-into-Jenkins-Build-Jobs

基本上,它安全地存储凭据并将它们作为变量注入到您的作业中,然后可以像其他任何变量一样使用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-10
    • 2023-04-11
    • 1970-01-01
    • 2019-12-15
    • 2022-11-01
    • 1970-01-01
    • 2015-08-18
    相关资源
    最近更新 更多