[PkgEs] Email formatting script (#2001)
This commit is contained in:
Родитель
0b6973cc4d
Коммит
5c2ce68a06
|
@ -0,0 +1,74 @@
|
|||
param(
|
||||
[parameter(Mandatory=$true)] [System.IO.FileInfo]$BuildLogs,
|
||||
[parameter(Mandatory=$false)] [System.IO.FileInfo]$EmailBodyFile = "email-body.html",
|
||||
[parameter(Mandatory=$false)] [string[]]$StatusItems = @("Build", "Tests"),
|
||||
[parameter(Mandatory=$false)] [string[]]$StatusItemsCanFail = @("Tests")
|
||||
)
|
||||
|
||||
$platforms = "x64", "x86", "arm64"
|
||||
$flavors = "Debug", "Release"
|
||||
|
||||
$overall_status = "Succeeded"
|
||||
|
||||
function Get-TDStyle {
|
||||
param([string]$status)
|
||||
|
||||
switch ($status) {
|
||||
"Succeeded" { return "background-color:#BBFFBB" }
|
||||
"SucceededWithIssues" { return "background-color:#FFEE88" }
|
||||
"Failed" { return "background-color:#FF8888" }
|
||||
default { return "" }
|
||||
}
|
||||
}
|
||||
|
||||
$status_tables=""
|
||||
foreach ($si in $StatusItems) {
|
||||
$table_rows=""
|
||||
foreach ($flavor in $flavors) {
|
||||
foreach ($platform in $platforms) {
|
||||
$loc = "$BuildLogs\$flavor\$platform\$si.result"
|
||||
if (Test-Path $loc) { # if file exists
|
||||
# add a line to the status table
|
||||
$item_status = (Get-Content -Path $loc).Trim();
|
||||
$tdstyle = Get-TDStyle($item_status)
|
||||
$tr = "<tr><td width='100px'>$platform $flavor</td><td style='$tdstyle'>$item_status</td></tr>`n"
|
||||
$table_rows += $tr
|
||||
# adjust overall result
|
||||
if ($overall_status.StartsWith("Succeeded") -and $item_status -ne "Succeeded") {
|
||||
if ($si -in $StatusItemsCanFail) {
|
||||
$overall_status="Succeeded with issues"
|
||||
}
|
||||
else {
|
||||
$overall_status="Failed"
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if ($table_rows -ne "") {
|
||||
$header = $si.Replace("_", " ")
|
||||
$status_tables += "<h3>$header</h3>`n<table>`n$table_rows</table>`n"
|
||||
}
|
||||
}
|
||||
|
||||
if ($status_tables -eq "") {
|
||||
$overall_status = "Failed"
|
||||
}
|
||||
|
||||
# find email template at the same location as the script
|
||||
$script_root = Split-Path -Parent -Path $MyInvocation.MyCommand.Definition
|
||||
$email_template_file = $script_root + "\status-email-template.html"
|
||||
|
||||
#create email body
|
||||
$email_template = Get-Content $email_template_file
|
||||
$email_body = $email_template.Replace("{status_tables}", $status_tables)
|
||||
|
||||
Set-Content -Path $EmailBodyFile -Value $email_body
|
||||
|
||||
# Set Azure pipelines output variable OverallStatus - to be used in the email subject
|
||||
Write-Host "##vso[task.setvariable variable=OverallStatus;isOutput=true]$overall_status"
|
||||
|
||||
Write-Host $email_body`n
|
||||
Write-Host $overall_status
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
<style>
|
||||
table, th, td { border:1px solid black; border-collapse:collapse; font-family:Calibri; }
|
||||
th, td { padding-left: 10px; padding-right: 20px; padding-top: 4px; padding-bottom: 4px; }
|
||||
h3, body { font-family:Calibri; }
|
||||
</style>
|
||||
<p>
|
||||
{status_tables}
|
||||
</p>
|
||||
<p>
|
||||
Build Definition: $(BUILD_DEFINITIONNAME)<br/>
|
||||
Build Number: $(BUILD_BUILDNUMBER)<br/>
|
||||
Reason: $(BUILD_REASON)<br/>
|
||||
Source Branch Name: $(BUILD_SOURCEBRANCH)<br/>
|
||||
Commit Info: $(BUILD_SOURCEVERSION)<br/>
|
||||
<br/>
|
||||
Drop Location: \\pkges\Release\Xbox.ShaderCompiler\$(BUILD_DEFINITIONNAME)\$(BUILD_BUILDNUMBER)<br/>
|
||||
<br/>
|
||||
Summary: https://microsoft.visualstudio.com/Xbox/Xbox%20Team/_build/index?buildId=$(BUILD_BUILDID)&_a=summary<br/>
|
||||
Repository.Uri: $(BUILD_REPOSITORY_URI)<br/>
|
||||
</p>
|
Загрузка…
Ссылка в новой задаче