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

如何在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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.08 11:38:03