Merge pull request #6 from actions/al-cheb/slack-notification

Add script to send slack message notification
pull/10/head
Aleksandr Chebotov 5 years ago committed by GitHub
commit b34b9bf1ea
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -70,4 +70,43 @@ function Skip-ExistingVersions {
)
return $VersionsFromDist | Where-Object { $VersionsFromManifest -notcontains $_ }
}
<#
.SYNOPSIS
Sending messages using Incoming Webhooks
https://api.slack.com/messaging/webhooks
#>
function Send-SlackPostMessageIncomingWebHook
{
param(
[Parameter(Mandatory)]
[ValidateNotNullOrEmpty()]
[System.Uri]$Uri,
[Parameter(Mandatory)]
[ValidateNotNullOrEmpty()]
[System.Object]$Body
)
try
{
$response = Invoke-RestMethod -Uri $uri -Method POST -Body $body -ErrorAction Stop
if ($response -eq 'ok')
{
return $response
}
else
{
Write-Host "##vso[task.LogIssue type=error;] Something went wrong. Response is '$response'"
}
}
catch
{
Write-Host "##vso[task.LogIssue type=error;] Slack send post message failed: '$_'"
}
Write-Host "##vso[task.complete result=Failed;]"
exit 1
}

@ -0,0 +1,63 @@
<#
.SYNOPSIS
Sending messages using Incoming Webhooks
.PARAMETER Url
Required parameter. Incoming Webhook URL to post a message
.PARAMETER ToolName
Required parameter. The name of tool
.PARAMETER ToolVersion
Required parameter. Specifies the version of tool
.PARAMETER PipelineUrl
Required parameter. The pipeline URL
.PARAMETER ImageUrl
Optional parameter. The image URL
#>
param(
[Parameter(Mandatory)]
[ValidateNotNullOrEmpty()]
[System.Uri]$Url,
[Parameter(Mandatory)]
[ValidateNotNullOrEmpty()]
[System.String]$ToolName,
[Parameter(Mandatory)]
[ValidateNotNullOrEmpty()]
[System.String]$ToolVersion,
[Parameter(Mandatory)]
[ValidateNotNullOrEmpty()]
[System.String]$PipelineUrl,
[System.String]$ImageUrl = 'https://github.githubassets.com/images/modules/logos_page/GitHub-Mark.png'
)
# Import helpers module
Import-Module $PSScriptRoot/helpers.psm1 -DisableNameChecking
# Create JSON body
$text = "The following versions of '$toolName' are available to upload: $toolVersion\nLink to the pipeline: $pipelineUrl"
$jsonBodyMessage = @"
{
"blocks": [
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "$text"
},
"accessory": {
"type": "image",
"image_url": "$imageUrl",
"alt_text": "$toolName"
}
}
]
}
"@
# Send Slack message
$null = Send-SlackPostMessageIncomingWebHook -Uri $url -Body $jsonBodyMessage
Write-Host "Message template: `n $jsonBodyMessage"
Loading…
Cancel
Save