[PkgEs] Email formatting script (#2001)

This commit is contained in:
Helena Kotas 2019-03-05 16:03:31 -08:00 коммит произвёл GitHub
Родитель 0b6973cc4d
Коммит 5c2ce68a06
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
2 изменённых файлов: 94 добавлений и 0 удалений

Просмотреть файл

@ -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>