Есть ли способ заказать / сгруппировать тип рабочего элемента в примечаниях к выпуску Azure DevOps? - PullRequest
3 голосов
/ 26 июня 2019

Я настраиваю шаг примечаний к выпуску в своем конвейере сборки и хочу сгруппировать / упорядочить рабочие элементы по типу.

В шаге сборки для создания заметок о выпуске я добавляю из магазина задачу «Создать заметки о выпуске для сборок или выпусков конвейера» Задача успешно настроена по инструкции, приведенной в https://marketplace.visualstudio.com/items?itemName=richardfennellBM.BM-VSTS-GenerateReleaseNotes-Task. С помощью текущего шаблона я могу создать заметку о выпуске в файле .htm. Также я могу создать файл .md, если использую шаблон уценки.

В текущем шаблоне попробуйте добавить функцию javascript для типов упорядочения, но когда генерируется примечание к выпуску, он просто печатает тело функции javascript, а не результат.

Текущий шаблон:

<h1>Release notes for build $defname</h1>  
@@BUILDLOOP@@
<h3>$($build.definition.name) </h3>  
<b>Build number</b>  : $($build.buildnumber)     <br />
<b>Build started</b> : $("{0:dd/MM/yy HH:mm:ss}" -f [datetime]$build.startTime)     <br /> 
<b>Source branch</b> $($build.sourceBranch)  

<h3>Associated work items  </h3>

@@WILOOP@@
<li> <b>$($widetail.fields.'System.WorkItemType') $($widetail.id)</b> [Assigned by: $($widetail.fields.'System.AssignedTo'.'displayName')] $($widetail.fields.'System.Title')  <br />
$($widetail.fields.'System.Description') </li>
@@WILOOP@@

@@BUILDLOOP@@

Я хочу упорядочить / сгруппировать рабочие элементы по типу (например, функции, элементы журнала невыполненных работ, задачи, ошибки), но фактический вывод упорядочивается по идентификатору рабочего элемента.

1 Ответ

1 голос
/ 02 июля 2019

Мне удалось решить проблему. Функция javascript добавлена ​​в шаблон, но не для создания элементов DOM, как я изначально запускаю, а в качестве элементов элемента списка переупорядочения.

Ниже приведен шаблон, который работает для меня:

<!DOCTYPE html>
<html>
<head>
<script type="text/javascript">

function sortByWorkItemType(arr, isReverse = false) {
 var worItemType = ["epi", "fea","pro", "tas", "bug"];

 const directionFactor = isReverse ? -1 : 1;
  const comparator = (a, b) => {
    if (!a && !b) return 0;
    if (!a && b) return -1 * directionFactor;
    if (a && !b) return 1 * directionFactor;

    const comparableA = a.innerText.toLowerCase().substring(0, 3);
    const comparableB = b.innerText.toLowerCase().substring(0, 3);
    const comparisonResult = worItemType.indexOf(comparableA) - worItemType.indexOf(comparableB);
    return comparisonResult * directionFactor;
  };
  const safeCopyMonthNames = [...arr.children];
  safeCopyMonthNames.sort(comparator);
  return safeCopyMonthNames;
 }


function sortList() {
  var list, i, switching, b, shouldSwitch;
  list = document.getElementById("workItemList");

   switching = true; 

  while (switching) { 

    switching = false; 
     b = list.getElementsByTagName("LI"); 

     for (i = 0; i < (b.length - 1); i++) { 

      shouldSwitch = false; 

      if (b[i].innerHTML.toLowerCase() > b[i + 1].innerHTML.toLowerCase()) { 

        shouldSwitch = true; 
         break; 
       } 
     } 
    if (shouldSwitch) { 
      b[i].parentNode.insertBefore(b[i + 1], b[i]); 
      switching = true;
   } 
 }
var result = sortByWorkItemType(list);
document.getElementById("workItemList").innerHTML = "";
for(i = 0; i <  result.length;  i++) {
document.getElementById("workItemList").insertAdjacentHTML("beforeend", result[i].outerHTML.valueOf());
}

}
</script>
</head>

<body onload="sortList()">
<h1>Release notes for build $defname</h1>  
@@BUILDLOOP@@
<h3>$($build.definition.name) </h3>  
<b>Build number</b>  : $($build.buildnumber)     <br />
<b>Build started</b> : $("{0:dd/MM/yy HH:mm:ss}" -f [datetime]$build.startTime)     <br /> 
<b>Source branch</b> $($build.sourceBranch)  

<h3>Associated work items  </h3>


<ul id="workItemList">
@@WILOOP@@

<li> <b>$($widetail.fields.'System.WorkItemType') $($widetail.id)</b> [Assigned by: $($widetail.fields.'System.AssignedTo'.'displayName')] $($widetail.fields.'System.Title')  <br /> $($widetail.fields.'System.Description') </li>

@@WILOOP@@
</ul>

@@BUILDLOOP@@


</body>
</html>
...