如何在Jenkins的casc.yml文件中硬编码指定凭据值
如何在Jenkins的casc.yml文件中硬编码指定凭据值
嗨,我明白你现在的困惑了——你想在Jenkins Config As Code的casc.yml里给某个配置项硬编码值,而不是从凭据库拉取,对吧?其实你走进了一个小误区:credentialsBinding里的usernamePassword是专门用来从Jenkins凭据仓库读取凭据并绑定到环境变量的,它只能引用已存在的凭据ID,没办法直接硬编码值。你需要换一种方式来设置这个环境变量,下面给你两种可行的方案:
方案一:直接在job的environmentVariables块中添加硬编码值
这是最直接的方式,和你已经设置的PROJECT_ID、PORT这些变量放在一起就行,修改后的casc.yml片段如下:
job("Notification API/Deploy UAT") { description() keepDependencies(false) // 在这个块里添加你的硬编码变量 environmentVariables( PROJECT_ID: 'project_id', PROJECT: 'project_name', PORT: '13002', SERVICE: 'my-api', SERVER_TAGS: 'uat', DEPLOY_TAG_ID: '3', DEPLOY_ENVIRONMENT: 'uat', _ENV_MailConfiguration__Host: '你的硬编码值' // 替换成你实际需要的硬编码内容 ) parameters { // 保留原有的参数配置 activeChoiceParam("IMAGE_TAG") { description("Image Tag to deploy") groovyScript { script("deployEnv='uat' \n project='project_id' \n registry='project_registry' \n evaluate(new File('/var/jenkins_home/job_scripts/gitlab/getTags.groovy'))") fallbackScript("return 'latest'") } choiceType("SINGLE_SELECT") filterable(false) } } disabled(false) concurrentBuild(false) wrappers { credentialsBinding { // 保留其他需要从凭据库拉取的绑定项 usernamePassword("DOCKER_CREDENTIALS", "xxx") usernamePassword("JIRA_CLOUD_CLIENT_ID", "JIRA_CLOUD_CLIENT_SECRET", "xxx") usernamePassword("_ENV_ConnectionStrings__xxxDb", "connection_string-value") usernamePassword("_ENV_ConnectionStrings__RabbitMQ", "rabbitmq-value") // 删除原来的usernamePassword("_ENV_MailConfiguration__Host", ???)这一行 } sshAgent("runner-ssh-key") configFiles { file('all-servers') { targetLocation('servers.json') } } } // 保留原有的steps配置 steps { nodejsCommand("eval(require('/var/jenkins_home/job_scripts/gitlab/deploy.js'))", 'Node 16.13.0') systemGroovyCommand("evaluate(new File('/var/jenkins_home/job_scripts/gitlab/setTag.groovy'))") { } } }
方案二:使用envVar wrapper在wrappers中设置
如果你更倾向于在wrappers部分统一管理环境变量,也可以用Jenkins的envVar wrapper单独设置这个硬编码值,修改后的wrappers片段如下:
wrappers { credentialsBinding { // 保留其他凭据绑定项 usernamePassword("DOCKER_CREDENTIALS", "xxx") usernamePassword("JIRA_CLOUD_CLIENT_ID", "JIRA_CLOUD_CLIENT_SECRET", "xxx") usernamePassword("_ENV_ConnectionStrings__xxxDb", "connection_string-value") usernamePassword("_ENV_ConnectionStrings__RabbitMQ", "rabbitmq-value") } // 添加这一行设置硬编码环境变量 envVar(key: '_ENV_MailConfiguration__Host', value: '你的硬编码值') sshAgent("runner-ssh-key") configFiles { file('all-servers') { targetLocation('servers.json') } } }
这两种方式都能达到和你Jenkinsfile里硬编码传入buildTransform相同的效果——把指定的硬编码值注入到对应的环境变量中,供后续步骤使用。
内容来源于stack exchange
相关产品推荐
相关产品推荐

