【问题标题】:Azure Devops: Completely ignore error in PipelineAzure Devops:完全忽略管道中的错误
【发布时间】:2019-05-04 13:05:27
【问题描述】:

我在 Azure devops 中有一个发布管道,我在其中执行以下操作:

  1. 使用“Azure Key Vault 任务”(https://github.com/Microsoft/azure-pipelines-tasks/blob/master/Tasks/AzureKeyVaultV1/README.md) 从(可能不存在的)keyvault 中获取值
  2. 使用 python 脚本检查是否在密钥库中设置了密码 2.1 如果设置:另存为变量 2.2 如未设置:生成新密码并保存为变量
  3. 运行 arm 模板任务以创建存储密码的 keyVault

这里的意图是: 在管道的第一次运行时,未创建密钥库,因此 python 脚本的输入为空*。然后我创建一个密码并将其设置为变量,并将其保存到 keyVault。在后续运行中,密钥保管库存在,python 脚本导出现有密码。密码的 keyvault 值不会更改。一切都很好

但是:当密钥保管库不存在时,“Azure 密钥保管库任务”会失败。因此:我需要将任务设置为“出错时继续”。这工作正常,除了一个细节:管道报告“部分成功”,并使用橙色。从我的角度来看,这条管道并没有“部分成功”,它确实做了它应该做的事情。因此,此警告会误导可能看到输出的其他人。

所以,我的问题是:有没有办法完全忽略管道任务中的错误?即:继续出错而不显示“部分成功”?

或者还有其他方法可以做我在这里尝试的事情吗?我知道我可以事先创建一个空的 keyVault,但是手动执行此操作会破坏自动化的目的,并且运行另一个 ARM 模板似乎是不必要且麻烦的。

  • 这是另一个奇怪的问题。我发现当传递一个 python 脚本时,一个未定义的变量,例如。 $(myUndefinedVariable), 字符串 '$(myUndefinedVariable)' 实际上是通过了......但这与这个问题无关..

【问题讨论】:

    标签: azure-devops azure-pipelines


    【解决方案1】:

    我认为您的方法是错误的,只需将 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)
    

    【讨论】:

    • 嗯.. 我找不到从 python 脚本中检索 KV 值的直接方法。有朝这个方向的指示吗?
    • 检查更新的答案,您还需要为您用于身份验证的实体授予对 KV 的适当权限
    • 谢谢,会试试的!
    • 这似乎可以解决问题:gist.github.com/atlefren/2c17fa30431ca32ecec669c478c3eebd 我还必须运行命令行任务:pip install azure-keyvault 并使用“服务主体凭据”任务来获取连接信息。唯一的问题是我必须另外提供租户..
    猜你喜欢
    • 1970-01-01
    • 2021-06-13
    • 1970-01-01
    • 2020-06-25
    • 2021-01-29
    • 1970-01-01
    • 1970-01-01
    • 2023-01-09
    • 1970-01-01
    相关资源
    最近更新 更多