Azure Devops: полностью игнорировать ошибку в конвейере - PullRequest
0 голосов
/ 03 декабря 2018

У меня есть конвейер выпуска в devops Azure, где я делаю следующее:

  1. Получите значения из (возможно, несуществующего) keyvault, используя «Задачу хранилища ключей Azure» (https://github.com/Microsoft/azure-pipelines-tasks/blob/master/Tasks/AzureKeyVaultV1/README.md)
  2. Используя python-скрипт, проверьте, установлен ли пароль в хранилище ключей 2.1. Если установлено: сохранить как переменную. 2.2 Если не задано: создать новый пароль и сохранить как переменную
  3. .Запустите задачу шаблона arm, чтобы создать keyVault, хранящее пароль

Цель заключается в следующем: при первом запуске конвейера keyvault не создается, поэтому входные данные для сценария python пусты*. Затем я создаю пароль и задаю его как переменную, которая сохраняется в keyVault. При последующих запусках хранилище ключей существует, а скрипт python экспортирует существующие пароли. Значение пароля для пароля не изменяется. Всевсе в порядке

Однако: «Задача хранилища ключей Azure» завершается ошибкой, когда хранилище ключей не существует. Таким образом: Мне нужно установить задачу «Продолжить при ошибке». Это работает нормально, кромеиз одной детали: конвейер сообщает «Частично успешно» и использует оранжевый цвет.С моей точки зрения, этот трубопровод не "частично преуспел", он сделал именно то, что должен был сделать.Таким образом, это предупреждение вводит в заблуждение других, которые могут увидеть результат.

Итак, мой вопрос таков: есть ли способ полностью игнорировать ошибку в задаче конвейера?То есть: продолжить с ошибкой, не показывая «частично успешно»?

Или есть какой-то другой способ сделать то, что я пытаюсь здесь?Я знаю, что могу заранее создать пустое хранилище ключей, но выполнение этого вручную сводит на нет цель автоматизации вещей, а запуск еще одного шаблона ARM кажется ненужным и громоздким.

  • Это еще одна странная проблема.Я обнаружил, что при передаче скрипта Python неопределенная переменная, например.$ (myUndefinedVariable), строка '$ (myUndefinedVariable)' фактически передана ... Хотя это не связано с этим вопросом ..

1 Ответ

0 голосов
/ 03 декабря 2018

Я думаю, что ваш подход просто неверен, просто перенесите поиск переменной 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...