Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 25, 2022 17:46:19

kostukp96
Зарегистрирован: 2022-04-25
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Проверка и не создание дубликатов Work item в Azure Boards (Azure DevOps)

Я использую этот python-скрипт для анализа json-отчета whitesource и автоматически создаю рабочий элемент в Azure Boards:

 import json
import requests
import sys
import base64
SEVERITY = "HIGH"
url = 'https://dev.azure.com/{organization}/{project_name}/_apis/wit/workitems/$Task?api-version=6.0'
AzureToken = '<my_token>'
AzureToken64 = base64.b64encode(AzureToken.encode("ascii")).decode("ascii")
head = {'Authorization': 'Basic %s' % AzureToken64, 'Content-type': 'application/json-patch+json', 'Accept': 'text/plain'}
acceptList = []
if SEVERITY == "HIGH":
    acceptList = {"HIGH", "MEDIUM", "LOW"}
elif SEVERITY == "MEDIUM":
    acceptList = {"MEDIUM", "LOW"}
elif SEVERITY == "LOW":
    acceptList = {"LOW"}
def MatchSeverity(sev):
    print(sev)
    for i in acceptList:
        if i == sev:
            return True
    return False
def ConvertSeverityToAzurePattern(sev):
    if sev == "HIGH":
        return "1 - High"
    elif sev == "MEDIUM":
        return "2 - Medium"
    elif sev == "LOW":
        return "3 - Low"
# Open Whitesource Report
f = open("scan_report.json", "r")
report = f.read()
reportJson = json.loads(report)
for item in reportJson["libraries"]:
    if item["policyDetails"]["status"] == "reject":
        for vulnerability in item["vulnerabilities"]:
            if MatchSeverity(vulnerability["severity"]) == True:
                body = [{
                  "op": "add",
                  "path": "/fields/System.WorkItemType",
                  "value": "Risk"
                },
                {
                  "op": "add",
                  "path": "/fields/System.Title",
                  "value": vulnerability["name"]
                },
                {
                  "op": "add",
                  "path": "/fields/System.Tags",
                  "value": "whitesource; firmware"
                },
                {
                  "op": "add",
                  "path": "/fields/System.Description",
                  "value": vulnerability["description"]
                },
                {
                  "op": "add",
                  "path": "/fields/Mitigation",
                  "value": vulnerability["topFix"]["fixResolution"]
                },
                {
                  "op": "add",
                  "path": "/fields/Risk",
                  "value": ConvertSeverityToAzurePattern(vulnerability["severity"])
                },
                {
                  "op": "add",
                  "path": "/relations/-",
                  "value": {
                     "rel": "Hyperlink",
                     "url": "https://dev.azure.com/{organization}/{project_name}/_apis/build/status"
                   }
                }]
                jsonStr = json.dumps(body)
                # print(jsonStr)
                x = requests.post(url, data = jsonStr, headers=head)
                print(x.status_code)
                x.json()



Все работает нормально, но что мне нужно добавить к этому python-скрипту, что будет проверять и не создавать повторяющийся рабочий элемент с тем же именем в моих Azure Boards?

Отредактировано kostukp96 (Апрель 26, 2022 09:42:30)

Офлайн

#2 Апрель 25, 2022 21:30:27

xam1816
Зарегистрирован: 2020-05-11
Сообщения: 1393
Репутация: +  124  -
Профиль   Отправить e-mail  

Проверка и не создание дубликатов Work item в Azure Boards (Azure DevOps)

[code python]между этими тегами вставлять код для правильного отображения[/code]

Офлайн

#3 Апрель 26, 2022 09:41:29

kostukp96
Зарегистрирован: 2022-04-25
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Проверка и не создание дубликатов Work item в Azure Boards (Azure DevOps)

xam1816
сделал

Офлайн

#4 Апрель 26, 2022 11:48:02

xam1816
Зарегистрирован: 2020-05-11
Сообщения: 1393
Репутация: +  124  -
Профиль   Отправить e-mail  

Проверка и не создание дубликатов Work item в Azure Boards (Azure DevOps)

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

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version