powershell - 多行注释未显示在来自 ADO 发布管道中的手动干预作业的电子邮件通知中
问题描述
电子邮件正文目前正在开发 ADO 发布管道。第一个作业是手动干预作业,通知用户通过评论批准/拒绝部署。下一阶段发送一封电子邮件通知,其中包含用户提供的评论和其他详细信息。我的问题是,如果评论是多行的,除了第一行,其他行不会显示在电子邮件通知中。以下是我使用 powershell 和发送电子邮件任务的设置
Powershell 设置 -
dir
$B64Pat = [Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes(":$(MY_PAT)"))
$url = "$(System.TeamFoundationServerUri)/$(System.TeamProject)/_apis/Release/releases/$(Release.ReleaseId)/manualinterventions?api-version=6.0"
$header = @{ Authorization = "Basic $B64Pat" }
$release = Invoke-RestMethod -Uri $url -Method Get -ContentType application/json -Headers $header
write-host $release.value.comments
$comment = $release.value.comments
write-host "$comment"
$status = $release.value.status
**Setup variables for comments and Approval status**
Write-Host "##vso[task.setvariable variable=release-scope]$comment"
Write-Host "##vso[task.setvariable variable=approval-status;]$status"
Write-Host $comment
Write-Host $release.value
将变量注释值分配给发布范围并在下面的发送电子邮件任务中使用它
发送电子邮件任务
Email-Body - in between <p></p> <h2></h2>
Hi Team,
This email is to notify that team has reviewed deployment request and provided their go/no-go decision. Please find details below.
Release Information:
BSA Approval Status : $(approval-status)
Documentation URLs / Comments : $(release-scope)
Here $(release-scope) are the comments provided by user in Manual intervention job. If the comments are like below
1号线
2号线
然后它只在电子邮件通知中打印第 1 行。
解决方案
多行注释未显示在来自 ADO 发布管道中的手动干预作业的电子邮件通知中
那是因为该变量不支持 value 中的多行。
当您通过记录命令设置评论和批准状态的变量时:
Write-Host "##vso[task.setvariable variable=release-scope]$comment"
Write-Host "##vso[task.setvariable variable=approval-status;]$status"
它只将第一行设置为变量release-scope
。这就是电子邮件通知中只有第 1 行的原因。
您可以在管道中添加命令行任务以输出release-scope
.
要解决此问题,我们可以使用 powershell 任务替换\n
以,
删除包装:
$NewComment = $comment -replace "`n",", " -replace "`r",", "
write-host "this is NewComment $NewComment "
#**Setup variables for comments and Approval status**
Write-Host "##vso[task.setvariable variable=release-scope]$NewComment "
现在,我们可以得到 is 的值release-scope
:
testline1, testline2
而不仅仅是testline1
.
如果您想在电子邮件通知中坚持换行格式,您需要在 powershell 任务中使用脚本而不是电子邮件任务发送电子邮件。
您可以查看文档Send-MailMessage了解更多详细信息。
推荐阅读
- continuous-integration - 如何将 Fly CLI 安装到 mac
- python - 类中带下划线的“_attribute”和普通“属性”有什么区别
- graphviz - 在graphviz dot digraph中,我怎样才能打破宽布局(rankdir LR)
- android - 如何在 TextView 中显示 ArrayList?
- android - Android简单视图总是粘在左边
- docker - 在守护进程模式下运行 docker 与 systemctl start docker 有什么区别?
- ios - HighCharts HIOptions.colors 必须是[字符串]?
- mysql - 查询性能不佳。我需要在哪里创建索引?
- ruby-on-rails - 属于 RSpec 中的规范失败
- angularjs - 为什么输入 az 或 AZ 字符时 ngModel 不更新模型?当我在 MacOS 中使用 Chrome 时发生了这个问题