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?