azure-devops - Azure Devops:完全忽略管道中的错误
问题描述
我在 Azure devops 中有一个发布管道,我在其中执行以下操作:
- 使用“Azure Key Vault Task”( https://github.com/Microsoft/azure-pipelines-tasks/blob/master/Tasks/AzureKeyVaultV1/README.md)从(可能不存在的)keyvault 中获取值
- 使用 python 脚本,检查密钥库中是否设置了密码 2.1 如果设置:另存为变量 2.2 如果未设置:生成新密码并另存为变量
- 运行 arm 模板任务以创建存储密码的 keyVault
这里的意图是:在管道的第一次运行时,没有创建密钥库,因此 python-script 的输入为空*。然后我创建一个密码并将其设置为变量,并将其保存到 keyVault。在后续运行中,密钥保管库存在,python 脚本导出现有密码。密码的 keyvault 值不会更改。一切皆好
但是:当密钥保管库不存在时,“Azure 密钥保管库任务”会失败。因此:我需要将任务设置为“出错时继续”。这工作正常,除了一个细节:管道报告“部分成功”,并使用橙色。从我的角度来看,这条管道并没有“部分成功”,它确实做了它应该做的事情。因此,此警告会误导可能看到输出的其他人。
所以,我的问题是:有没有办法完全忽略管道任务中的错误?即:继续出错而不显示“部分成功”?
还是有其他方法可以做我在这里尝试的事情?我知道我可以事先创建一个空的 keyVault,但是手动执行此操作会破坏自动化的目的,并且运行另一个 ARM 模板似乎没有必要且麻烦。
- 这是另一个奇怪的问题。我发现当传递一个 python 脚本时,一个未定义的变量,例如。$(myUndefinedVariable), 字符串 '$(myUndefinedVariable)' 实际上被传递了......虽然这与这个问题无关..
解决方案
我认为您的方法是错误的,只需将 KV 变量的检索转移到脚本中,您就可以控制行为。而且,你问的有点无意义。“继续出错”正是它应该如何工作的。
https://docs.microsoft.com/en-us/python/api/overview/azure/key-vault?view=azure-python
from azure.keyvault import KeyVaultClient, KeyVaultAuthentication
from azure.common.credentials import ServicePrincipalCredentials
credentials = None
def auth_callback(server, resource, scope):
credentials = ServicePrincipalCredentials(
client_id = '',
secret = '',
tenant = '',
resource = "https://vault.azure.net"
)
token = credentials.token
return token['token_type'], token['access_token']
client = KeyVaultClient(KeyVaultAuthentication(auth_callback))
secret_bundle = client.get_secret("https://VAULT_ID.vault.azure.net/", "SECRET_ID", "SECRET_VERSION")
print(secret_bundle.value)
推荐阅读
- regex - .htaccess 将文件夹名称附加到 URL 的末尾
- android - 如何动态监控 Android 上的可用本机内存?
- image - 如何从主机上的编辑器编辑 Docker 容器中的文件?
- office-addins - Word 在 Windows 上不显示自定义加载项图标
- r - 如何将 countpct 和 binomCI 组合成相同的汇总统计量以用于 tableby 函数?
- javascript - 类型中缺少类型 { 错误 }
, 但在类型中是必需的 - Redux 特定问题 - go - 如何分发具有 C 依赖项的 Go 模块
- c# - 单元测试类中的依赖注入 IConfiguration
- android - 用于 Android 推送通知的动态 Firebase SenderID
- node.js - AWS SQS 消息内置消息属性记录在哪里?