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

如何在Jenkins DSL中安全存储密码等密钥信息?

Jenkins DSL中安全存储密钥并传递给脚本的方法

问题场景

我需要在Jenkins DSL定义的任务中,将密码作为环境变量供build.sh脚本使用。目前的实现是把密码明文存在passwords.groovy文件中,通过environmentVariables的groovy方法传递,代码如下:

freeStyleJob('Myjobs') {
    environmentVariables {
        groovy(readFileFromWorkspace('env/passwords.groovy'))
    }
    steps {
        shell(readFileFromWorkspace('scripts/builds/build.sh'))
    }
}

这种方式存在明文存储密码的风险,密码会直接暴露在服务器文件和DSL配置中,不符合安全规范。

安全解决方案

通过Jenkins内置的**凭据绑定(Credentials Binding)**功能,先在Jenkins网页UI的「任务->配置->凭据->添加」中创建名为quay_credentials的用户名密码凭据,再在DSL中添加wrappers配置绑定到环境变量,即可安全传递密钥:

修改后的完整DSL代码

freeStyleJob('Myjobs') {
    wrappers {
        // 绑定凭据到环境变量:用户名存到userVariableName,密码存到passwordVariableName
        credentialsBinding {
            usernamePassword('userVariableName', 'passwordVariableName', 'quay_credentials')
        }
    }
    steps {
        shell(readFileFromWorkspace('scripts/builds/build.sh'))
    }
}

使用说明

  • 绑定后,build.sh脚本可以直接通过$userVariableName和$passwordVariableName访问对应的用户名和密码
  • 密码不会以明文形式出现在DSL配置或服务器文件中,Jenkins会自动加密存储凭据

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 14:37:41