Azure devops Azure管道参数作为秘密变量
我想将PAT作为管道参数传递给调用gitlab REST API的脚本(gitlab.sh): gitlab.shAzure devops Azure管道参数作为秘密变量,azure-devops,azure-pipelines,gitlab-api,Azure Devops,Azure Pipelines,Gitlab Api,我想将PAT作为管道参数传递给调用gitlab REST API的脚本(gitlab.sh): gitlab.sh #!/bin/bash set -e MY_PAT="${MY_PAT}" #I want this to be secret and not printed in logs function rest_api { curl -sSL -H "Content-Type: application/json" -H "PRIVAT
#!/bin/bash
set -e
MY_PAT="${MY_PAT}" #I want this to be secret and not printed in logs
function rest_api {
curl -sSL -H "Content-Type: application/json" -H "PRIVATE-TOKEN:$MY_PAT" -X POST
--data '{"name": "my-group","path": "my-group"}'
https://gitlab.example.com/api/v4/groups
}
rest_api
azure pipelines.yml
pool:
vmImage: 'ubuntu-latest'
parameters:
- name: myPAT
displayName: 'My PAT'
type: string
steps:
- checkout: self
- script: |
echo "Creating group in Gitlab"
export MY_PAT=${{parameters.myPAT}} #how can I pass this secretly to gitlab.sh
bash -x gitlab.sh
condition: and(succeeded(), startsWith(variables['Build.SourceBranch'], 'refs/heads/feature'))
displayName: 'Creating group in Gitlab'
如果你想设置一个秘密,你应该使用下面的日志命令
-bash:|
echo“##vso[task.setvariable=MY#PAT;issecret=true]${{parameters.myPAT}”
姓名:SetSecret
在下一个任务中,您应该有可用的MY_PAT
secret变量。但是,由于您将它作为运行时参数传递,因此它可以打印在日志中
比如说
参数:
-姓名:myPAT
显示名称:“我的拍子”
类型:字符串
触发器:无
公关:没有
游泳池:
vmImage:“ubuntu最新版本”
步骤:
-狂欢节:|
echo“您可以使用宏替换来获取机密,它们将在日志中被屏蔽:${{parameters.myPAT}”
-狂欢节:|
echo“##vso[task.setvariable=MY#PAT;issecret=true]${{parameters.myPAT}”
姓名:SetSecret
-狂欢节:|
echo“您可以使用宏替换来获取机密,它们将在日志中隐藏:$(MY_PAT)”
我得到的第一张照片是:
您可以使用宏替换来获取机密,它们将在日志:MySecret中被屏蔽
关于第二点:
您可以使用宏替换来获取机密,这些机密将在日志中屏蔽:***
所以通过参数传递秘密可能会暴露它。请注意这一点
我创建了一个特性请求,以支持运行时参数作为机密。如果你认为这是有价值的特点,可以自由投票。
池:
vmImage:“ubuntu最新版本”
参数:
-姓名:myPAT
显示名称:“我的拍子”
类型:字符串
步骤:
-结帐:self
-狂欢节:|
echo“##vso[task.setvariable=MY#PAT;issecret=true]${{parameters.myPAT}”
姓名:SetSecret
-文字:|
echo“在Gitlab中创建组”
bash-xgitlab.sh
条件:和(successed(),startsWith(变量['Build.SourceBranch'],'refs/heads/feature'))
displayName:“正在Gitlab中创建组”
环境:
MY_MAPPED_ENV_VAR:$(MY_PAT)#映射到环境变量的推荐方法
然后,您可以在sh文件中使用
MY_MAPPED_ENV_VAR
,作为谢谢,但是可以在脚本文件gitlab.sh中访问setSecret;我已经尝试过将var设置为secret,但是(我的专利)不可访问您不需要在sh文件中访问setSecret。在您的情况下,您需要添加环境映射以将此值映射为环境变量。请检查我的编辑。我已经尝试在环境变量中进行设置,这不符合我的目的。我可以请你们重新讨论这个问题吗?我想PAT从脚本文件调用RESTAPI,但我不明白。所有这些都应该做这项工作。它设置可以从文件访问的env变量。之前通过导出设置变量。然而,您是否尝试过我向您展示的方法?据我所知,导出
不是推荐的方法。我过去也这样做过,一切都很好。