Jenkins-azure部署错误:az登录错误发布者



我有一个groovy脚本,可以在azure应用程序服务上部署一个简单的api(nodejs(。

pipeline {
agent none
environment {
//app service
DEV_SERVICE_NAME  = 'xxxxxx'
...
...
AZURE_DEV_USER_ID  = 'abcdefghijk'
AZURE_DEV_PASSWORD = 'xxxxxx'
AZURE_ACTIVE_DIRECTORY_TENANT_ID = 'xxxxxx'
}
stage('Service Deployment (DEV)'){
agent { label 'master'}
steps {
//Install all packages
bat "npm i --production"
..
..
bat "CALL az login --service-principal --username $env.AZURE_DEV_USER_ID --password $env.AZURE_DEV_PASSWORD --tenant $env.AZURE_ACTIVE_DIRECTORY_TENANT_ID"
..
..
}

因此,当詹金斯构建、失败并打印错误时

C:jenkinsworkspaceloud_feature-deploy-api-on-azure@2>CALL az login --service-principal --username 
null --password null --tenant null 
usage: az login [-h] [--verbose] [--debug]
[--output {json,jsonc,table,tsv,yaml,yamlc,none}]
[--query JMESPATH] [--username USERNAME] [--password PASSWORD]
[--service-principal] [--tenant TENANT]
[--allow-no-subscriptions] [-i] [--use-device-code]
[--use-cert-sn-issuer]
az login: error: 'issuer'

所以,我有两个问题。

  1. 为什么要为env值打印null?

  2. 为什么会出现这种错误?,我阅读了MSFT文档,命令应该可以正常工作。所以,我不知道,可能会发生什么,空值是可疑的。。。

我曾试图通过遵循Jenkins文档来重现您的问题,但成功地回显了设置的环境变量。

关于您案例中的CCD_ 1变量,我认为在管道中包含密码等安全信息并不是更好的方法,因此我建议您只需将Azure服务主体添加到Jenkins凭据中,然后通过使用withCredentials([azureServicePrincipal('SERVICEPRINCIPALCREDENTIALID')])编写Jenkins管道脚本,然后使用sh部分使用Azure CLI命令在Azure应用程序服务上部署api(nodejs(。

有关它的更多信息,请参阅本Azure文档、本Jenkins插件文章或本Jenkins博客。

最新更新