Как добавить информацию по умолчанию Azure DevOps Notification? - PullRequest
0 голосов
/ 04 апреля 2020

С помощью Levi Lu-MSFT я создал конвейер, в котором я могу сравнивать общее время выполнения сценария гатлинговой загрузки (он хранится в другом конвейере) в последний раз с предыдущим временем. Вот скрипт ps для него:

$url = "$(System.TeamFoundationCollectionUri)$(System.TeamProject)/_apis/build/builds/$(Build.TriggeredBy.BuildId)?api-version=5.1"
echo $url

$result = Invoke-RestMethod -Uri $url -Headers @{authorization = "Bearer $env:SYSTEM_ACCESSTOKEN"} -ContentType "application/json" -Method get

# calculate the totaltime of the newest build
$time = [datetime]$result.finishTime - [datetime]$result.startTime

$thisBuild= $time.TotalMinutes

# get the last build
$lasturl = "$(System.TeamFoundationCollectionUri)$(System.TeamProject)/_apis/build/builds?definitions=$(Build.TriggeredBy.DefinitionId)&resultFilter=succeeded&`$top=2&api-version=5.1"

$lastResult =Invoke-RestMethod -Uri $lasturl -Headers @{authorization = "Bearer $env:SYSTEM_ACCESSTOKEN"} -ContentType "application/json" -Method get

#Caculate the totaltime of the last build
$lasttime = [datetime]$lastResult.value[1].finishTime - [datetime]$lastResult.value[1].startTime
$lastBuild = $lasttime.TotalMinutes

#Store the result to varialbe  isLonger    
if($thisBuild -ge $lastBuild ){ echo "##vso[task.setvariable variable=isLonger]True" }

Как я могу поместить значения $ thisBuild & $ lastBuild в тело по умолчанию Azure Уведомление по электронной почте DevOps?

1 Ответ

0 голосов
/ 06 апреля 2020

Как добавить информацию по умолчанию Azure Уведомление DevOps?

На сегодняшний день мы не открываем настраиваемую операцию по умолчанию Azure Уведомление DevOps пользователям. Структура почтового контента фиксируется нашей системой. Вот почему Даниэль и Марио сказали, что этого невозможно достичь.

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


В качестве обходного пути вы можете рассмотреть предложение, упомянутое Марио. Вам просто нужно настроить поток и поля, которые вам нужны.

Еще один обходной путь - использование powershell для отправки почты через SMTP-сервер с использованием сценария powershell :

$emailSmtpServer = "smtp.gmail.com"
$emailSmtpServerPort = "587"
$emailSmtpUser = "liangxxxx@gmail.com"
$emailSmtpPass = "xxxxx"

$emailFrom = "xxxxx@gmail.com"
$emailTo = "xxxxx@outlook.com" 
$emailMessage = New-Object System.Net.Mail.MailMessage( $emailFrom , $emailTo )
$emailMessage.Subject = "subject" 
#$emailMessage.IsBodyHtml = $true #true or false depends
$emailMessage.Body = "{the custom body you want to have}"

$SMTPClient = New-Object System.Net.Mail.SmtpClient( $emailSmtpServer , $emailSmtpServerPort )
$SMTPClient.EnableSsl = $true
$SMTPClient.Credentials = New-Object System.Net.NetworkCredential( $emailSmtpUser , $emailSmtpPass );
$SMTPClient.Send( $emailMessage )

Но я бы предложил использовать Microsoft Flow для достижения того, что вы хотите. Поскольку для отправки почты через сценарий необходимо включить более безопасный доступ к приложению для учетной записи отправителя. Или вы получите ошибку типа The SMTP server requires a secure connection or the client was not authenticated.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...