在 Azure DevOps 发行说明中有什么方法可以 order/group 工作项类型
Is there any way to order/group work item type in Azure DevOps release notes
我正在我的构建管道中设置一个发行说明步骤,我想 group/order 按类型工作。
在生成发行说明步骤的构建任务中,我从市场添加任务 "Generate Release Notes for Pipeline Builds or Releases"
任务已通过 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@@
我想 order/group 按类型(如功能、产品积压项、任务、错误)工作项,但实际输出是按工作项 ID 排序。
我已经设法解决了这个问题。 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>
我正在我的构建管道中设置一个发行说明步骤,我想 group/order 按类型工作。
在生成发行说明步骤的构建任务中,我从市场添加任务 "Generate Release Notes for Pipeline Builds or Releases" 任务已通过 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@@
我想 order/group 按类型(如功能、产品积压项、任务、错误)工作项,但实际输出是按工作项 ID 排序。
我已经设法解决了这个问题。 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>