问题是我不想为每个代理创建新的 sas 令牌。我想在管道的每个代理上的特定时间段内使用相同的 sas 令牌
我已经尝试创建一个 sas 令牌而不提及任何 IP,但它无法在 blob 存储上上传文件。
拥有通用 sas 密钥的原因是因为我不想一次又一次使用访问密钥或连接字符串来创建 sas 令牌
我想在管道的每个代理上在特定时间段内使用相同的 sas 令牌
根据您的需求,您可以使用单独的管道来创建 SAS 令牌。然后您可以使用变量组来保存SAS令牌。
在这种情况下,每个管道都可以通过在管道中使用变量组来使用相同的 SAS。
步骤如下:
Step1:在Pipelines -> Library中创建一个变量组,并添加一个空值的变量。
例如:
Step2:使用以下bash脚本更新变量组中的变量值。使用 Rest API:变量组 - 更新
machine_ip=$(curl ifconfig.me)
#getting date and time in format
expiry_time=$(date -u -d '+30 minutes' +%Y-%m-%dT%H:%MZ)
#creating a sas token
sas_token=$(az storage container generate-sas --account-name <blobname> --name <containername> --permissions dlwr --expiry $expiry_time --output tsv )
curl -X PUT \
-u :$(pat) https://dev.azure.com/{Organizationname}/{Projectname}/_apis/distributedtask/variablegroups/{VariableGroupId}?api-version=5.0-preview.1 \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"variables": {
"SASToken": {
"isSecret":true,
"value": "$sas_token"
}
},
"type": "Vsts",
"name": "{VariableGroupName}",
"description": "Updated variable group"
}'
Step3:在其他Pipelines中,可以直接使用Variable Group中的Variable来上传文件。
例如:
variables:
- group: my-variable-group