You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在config.ini文件中使用Jenkins环境变量?

实现方法

你可以通过以下两种常见方案完成凭据注入:

方案1:sed 原地替换占位符

不需要修改现有占位符格式,操作最简单:

  • 先确认你的config.ini文件中已保留预设的占位符:
DB_USERNAME = {DATABASE_USER}
DB_PASSWORD = {DATABASE_PASSWORD}
  • 在Jenkinsfile的withCredentials代码块内,执行bash命令时加入替换逻辑即可,示例如下:
withCredentials([usernamePassword(credentialsId: 'database', usernameVariable: 'DATABASE_USER', passwordVariable: 'DATABASE_PASSWORD')]) {
    sh '''
        export CONFIG_FILE='config.ini'
        # 替换用户名占位符
        sed -i "s/{DATABASE_USER}/$DATABASE_USER/g" $CONFIG_FILE
        # 替换密码占位符
        sed -i "s/{DATABASE_PASSWORD}/$DATABASE_PASSWORD/g" $CONFIG_FILE
        # 此处添加你的后续业务脚本逻辑
    '''
}

注意:如果你的构建节点是macOS系统,sed命令需调整为sed -i "" "s/{DATABASE_USER}/$DATABASE_USER/g" $CONFIG_FILE。

方案2:envsubst 自动替换变量

适合占位符多的场景,不用逐条写sed规则:

  • 先调整config.ini模板的占位符为Shell变量格式,你可以单独存为模板文件(比如命名为config.ini.template)避免污染原配置:
DB_USERNAME = $DATABASE_USER
DB_PASSWORD = $DATABASE_PASSWORD
  • 在withCredentials块内调用envsubst生成最终配置文件:
withCredentials([usernamePassword(credentialsId: 'database', usernameVariable: 'DATABASE_USER', passwordVariable: 'DATABASE_PASSWORD')]) {
    sh '''
        export CONFIG_FILE='config.ini'
        # 读取模板替换变量后输出到最终配置文件
        envsubst '$DATABASE_USER $DATABASE_PASSWORD' < config.ini.template > $CONFIG_FILE
        # 此处添加你的后续业务脚本逻辑
    '''
}

注意:envsubst属于gettext软件包的组件,绝大多数Linux发行版默认预装,无特殊环境无需额外配置。

安全提示

构建任务结束后如果不需要留存config.ini文件,建议在脚本末尾主动删除该文件,避免敏感凭据泄露,Jenkins默认会对withCredentials导出的变量做日志掩码,不用担心构建日志中出现明文凭据。

内容的提问来源于stack exchange,提问作者jipot

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 06:54:03