Лучший способ отправить уведомление по электронной почте в конвейере сборки DevOps Azure? Не хотите использовать "Модуль уведомлений"
Я хотел бы отправлять уведомления по электронной почте как задачу в моей сборке DevOps Azure, чтобы я мог скопировать сборку в другие командные проекты и заставить ее работать автоматически. Я не хочу настраивать уведомления для каждого нового проекта, который я создаю. Спасибо!
4 ответа
Вы можете установить задачу " Отправить электронную почту" с торговой площадки и добавить ее в свою линию сборки.
Расширение заботится об отправке электронной почты в вашей сборке или выпуске конвейера.
Но лучший способ - настроить глобальные параметры уведомлений для сборок.
Я пытался использовать "Отправить электронную почту", чтобы отправить что-то из Gmail, но это не сработало. Я получил сообщение об ошибке ниже
SMTP-серверу требуется безопасное соединение, иначе клиент не прошел аутентификацию.
Если у вас есть подобная проблема, я рекомендую вам использовать SendGrid. Так проще.
- Просто создайте ресурс "SendGrid" на портале Azure.
- Создайте ключ API из SendGrid.
- Настройте трубопровод с помощью ключа.
Вот и все. Вам не нужно настраивать какие-либо параметры SMTP и выяснять, что это такое.
В качестве альтернативного решения вы можете попробовать средство уведомлений CatLight .
На рабочем столе будут отображаться оповещения о проблемах сборки и выпуска , а также новые PR и рабочие элементы.
Вы можете настроить общий дашборд для команды и выбрать там все соответствующие проекты и пайплайны. После этого члены команды будут уведомлены о неудачных сборках и релизах. Члены команды также могут сами обновлять эти настройки мониторинга в любое время.
Azure DevOps может отправлять слишком много уведомлений, и когда разработчики проверяют свой почтовый ящик, многие из этих уведомлений устаревают. Итак, через некоторое время они настраивают фильтры, чтобы скрыть их, в первую очередь побеждая цель уведомлений. CatLight имеет панель инструментов, на которой будет отображаться сводка активных предупреждений, и они исчезнут с нее, как только предупреждение будет устранено. Таким образом, это будет менее шумно, и его будет труднее игнорировать, чем электронные письма.
Инструмент бесплатный для небольших команд и с открытым исходным кодом, а его платная версия — для компаний.
Вы можете использовать приведенный ниже сценарий PowerShell для отправки электронной почты ограниченной аудитории в рамках того же проекта.
## fill out these only 5 places in the following script
$myorg = “your-org-onADo”
$myproj = “your-project-onADo”
$sendmailto = “user1@OrgEmailUnderThatProject.com,user1@OrgEmailUnderThatProject.com” ## email of receivers separated by coma
$mysubject = “This is your emails subject line”
$mailbody = “This will be your emails body”
#########################
##getting tfsids for the user under receivers list
$mailusers = “$sendmailto”
$mymailusers = $mailusers -split “,”
$pat = “Bearer $env:System_AccessToken”
$myurl =”https://dev.azure.com/${myorg}/_apis/projects/${myproj}/teams?api-version=5.1"
$data = Invoke-RestMethod -Uri “$myurl” -Headers @{Authorization = $pat}
$myteams = $data.value.id
##create list of members in all teams
$myusersarray = @()
foreach($myteam in $myteams) {
$usrurl = “https://dev.azure.com/${myorg}/_apis/projects/${myproj}/teams/"+$myteam+"/members?api-version=5.1"
$userdata = Invoke-RestMethod -Uri “$usrurl” -Headers @{Authorization = $pat}
$myusers = $userdata.value
foreach($myuser in $myusers) {
$myuserid = $myuser.identity.id
$myusermail = $myuser.identity.uniqueName
$myuserrecord = “$myuserid”+”:”+”$myusermail”
$myusersarray += $myuserrecord
}
}
## filter out all unique users
$myfinalusersaray = $myusersarray | sort -Unique
## create here the final hash of emails and tfsids
$myusershash = @{}
for ($i = 0; $i -lt $myfinalusersaray.count; $i++)
{
$myusershash[$myfinalusersaray[$i].split(“:”)[1]] = $myfinalusersaray[$i].split(“:”)[0]
}
##
## create the list of tfsid of mailers
foreach($mymail in $mymailusers) {
$myto = $myto +’”’+$myusershash[$mymail]+’”,’
}
##send mail using below API
$uri = “https://${myorg}.vsrm.visualstudio.com/${myproj}/_apis/Release/sendmail/$(RELEASE.RELEASEID)?api-version=3.2-preview.1"
$requestBody =
@”
{
“senderType”:1,
“to”:{“tfsIds”:[$myto]},
“body”:”${mailbody}”,
“subject”:”${mysubject}”
}
“@
Try {
Invoke-RestMethod -Uri $uri -Body $requestBody -Method POST -Headers @{Authorization = $pat} -ContentType “application/json”
}
Catch {
$_.Exception
}