Octopus.Script exported 2022-07-19 by TristanUnibuddy belongs to ‘Slack’ category.
Posts deployment status to Slack optionally including additional details (release number, environment name, release notes etc.) as well as error description and link to failure log page.
Parameters
When steps based on the template are included in a project’s deployment process, the parameters below can be set.
Webhook URL
HookUrl =
The Webhook URL provided by Slack, including token.
Channel handle
Channel =
Which Slack channel to post notifications to.
Icon URL
IconUrl = https://octopus.com/content/resources/favicon.png
The icon to use for this user in Slack
Username = Octopus Deploy
The username shown in Slack against these notifications
Main message
DeploymentInfoText = #{Octopus.Project.Name} release #{Octopus.Release.Number} to #{Octopus.Environment.Name} (#{Octopus.Machine.Name})
Long information message shown in slack. This message is prefixed with “Deployed successfully” or “Failed to deploy” depending on status.
Include release number field
IncludeFieldRelease = false
Shows short field with release number name
Include release notes Field
IncludeFieldReleaseNotes = false
Release notes are only included on successful deployment
Include machine name field
IncludeFieldMachine = false
Shows short field with machine name
Include project field
IncludeFieldProject = True
null
Include environment name field
IncludeFieldEnvironment = false
Shows short field with environment name
Include tenant name field
IncludeFieldTenant = false
Shows short field with name of tenant
Include username field
IncludeFieldUsername = false
Shows the username of user that initiated deployment
Include deployment process link on failure
IncludeLinkOnFailure = false
When deployment failed a link “Open process page” is added to the notification pointing to deployment process page
Include error message text on failure
IncludeErrorMessageOnFailure = false
When deployment failed error text is shown as part of notification
Octopus base url
OctopusBaseUrl =
Base URL to add to the links in the notification. If octopus server dashboard is at “http://octopus/app” include all before the “app” part (“http://octopus”).
Script body
Steps based on this template will execute the following Bash script.
# Get values into variables
includeFieldProject=$(get_octopusvariable "IncludeFieldProject")
includeFieldEnvironment=$(get_octopusvariable "IncludeFieldEnvironment")
includeFieldMachine=$(get_octopusvariable "includeFieldMachine")
includeFieldTenant=$(get_octopusvariable "IncludeFieldTenant")
includeFieldUsername=$(get_octopusvariable "IncludeFieldUsername")
includeFieldRelease=$(get_octopusvariable "IncludeFieldRelease")
includeFieldReleaseNotes=$(get_octopusvariable "IncludeFieldReleaseNotes")
includeFieldErrorMessageOnFailure=$(get_octopusvariable "IncludeErrorMessageOnFailure")
includeFieldLinkOnFailure=$(get_octopusvariable "IncludeLinkOnFailure")
function convert_ToBoolean () {
local stringValue=$1
local returnValue=""
if [[ "$stringValue" == "True" ]]
then
returnValue=true
else
returnValue=false
fi
echo "$returnValue"
}
function slack_Populate_StatusInfo (){
local success=$1
local deployment_info=$(get_octopusvariable "DeploymentInfoText")
local jsonBody="{ "
if [[ "$success" == true ]]
then
jsonBody+='"color": "good",'
jsonBody+='"title": "Success",'
jsonBody+='"fallback": "Deployed successfully '
jsonBody+="$deployment_info\""
else
jsonBody+='"color": "danger",'
jsonBody+='"title": "Failed",'
jsonBody+='"fallback": "Failed to deploy '
jsonBody+="$deployment_info\""
fi
#jsonBody+="}"
echo $jsonBody
}
function populate_field () {
local title=$1
local value=$2
local body=""
body+='{'
body+='"short": "true",'
body+='"title": '
body+="\"$title\""
body+=","
body+='"value": '
body+="\"$value\""
body+='}'
echo "$body"
}
function slack_Populate_Fields (){
local status_info=$1
local fieldsJsonBody=""
declare -a testArray
if [[ "$includeFieldProject" == true ]]
then
testArray+=("$(populate_field "Project" "$(get_octopusvariable "Octopus.Project.Name")")")
fi
if [[ "$includeFieldEnvironment" == true ]]
then
testArray+=("$(populate_field "Environment" "$(get_octopusvariable "Octopus.Environment.Name")")")
fi
if [[ "$includeFieldMachine" == true ]]
then
testArray+=("$(populate_field "Machine" "$(get_octopusvariable "Octopus.Machine.Name")")")
fi
if [[ "$includeFieldTenant" == true ]]
then
testArray+=("$(populate_field "Tenant" "$(get_octopusvariable "Octopus.Deployment.Tenant.Name")")")
fi
if [[ "$includeFieldUsername" == true ]]
then
testArray+=("$(populate_field "Username" "$(get_octopusvariable "Octopus.Deployment.CreatedBy.Username")")")
fi
if [[ "$includeFieldRelease" == true ]]
then
testArray+=("$(populate_field "Release" "$(get_octopusvariable "Octopus.Release.Number")")")
fi
if [[ "$includeFieldReleaseNotes" == true ]]
then
testArray+=("$(populate_field "Changes in this release" "$(get_octopusvariable "Octopus.Release.Notes")")")
fi
if [[ "$status_info" == false ]]
then
if [[ "$includeFieldErrorMessageOnFailure" == true ]]
then
testArray+=("$(populate_field "Error text" "$(get_octopusvariable "Octopus.Deployment.Error")")")
fi
if [[ "$includeFieldLinkOnFailure" == true ]]
then
baseUrl="$(get_octopusvariable "Octopus.Web.ServerUri")"
testArray+=("$(populate_field "See the process" "$baseUrl$(get_octopusvariable "Octopus.Web.DeploymentLink")")")
fi
fi
( IFS=$','; echo "${testArray[*]}" )
}
function slack_rich_notification () {
local success=$1
local jsonBody="{ "
jsonBody+='"channel": '
jsonBody+="\"$(get_octopusvariable "Channel")\","
jsonBody+='"username": '
jsonBody+="\"$(get_octopusvariable "Username")\","
jsonBody+='"icon_url": '
jsonBody+="\"$(get_octopusvariable "IconUrl")\","
jsonBody+='"attachments": ['
jsonBody+=$(slack_Populate_StatusInfo "$success")
jsonBody+=',"fields": '
jsonBody+="[$(slack_Populate_Fields "$success")]"
jsonBody+="}]}"
echo "$jsonBody"
}
# Convert include* variables to actual boolean values
includeFieldProject=$(convert_ToBoolean "$includeFieldProject")
includeFieldEnvironment=$(convert_ToBoolean "$includeFieldEnvironment")
includeFieldMachine=$(convert_ToBoolean "$includeFieldMachine")
includeFieldTenant=$(convert_ToBoolean "$includeFieldTenant")
includeFieldUsername=$(convert_ToBoolean "$includeFieldUsername")
includeFieldRelease=$(convert_ToBoolean "$includeFieldRelease")
includeFieldReleaseNotes=$(convert_ToBoolean "$includeFieldReleaseNotes")
includeFieldErrorMessageOnFailure=$(convert_ToBoolean "$includeFieldErrorMessageOnFailure")
includeFieldLinkOnFailure=$(convert_ToBoolean "$includeFieldLinkOnFailure")
success=true
if [[ ! -z $(get_octopusvariable "Octopus.Deployment.Error") ]]
then
success=false
fi
# Build json payload
json_payload=$(slack_rich_notification $success)
webook_url=$(get_octopusvariable "HookUrl")
# Send webhook - redirect stderr to stdout
wget --post-data="$json_payload" --secure-protocol="auto" "$webook_url" 2>&1
# Check for error
if [[ $? -ne 0 ]]
then
fail_step "Failed!"
fi
Provided under the Apache License version 2.0.
To use this template in Octopus Deploy, copy the JSON below and paste it into the Library → Step templates → Import dialog.
{
"Id": "cd3b6172-ed9a-4c42-a588-4c78c3e3b08a",
"Name": "Slack - Detailed Notification - Bash",
"Description": "Posts deployment status to Slack optionally including additional details (release number, environment name, release notes etc.) as well as error description and link to failure log page.",
"Version": 4,
"ExportedAt": "2022-07-19T08:54:06.595Z",
"ActionType": "Octopus.Script",
"Author": "TristanUnibuddy",
"Packages": [],
"Parameters": [
{
"Id": "d9109767-c4a0-44d4-9501-bdd82be0f935",
"Name": "HookUrl",
"Label": "Webhook URL",
"HelpText": "The Webhook URL provided by Slack, including token.",
"DefaultValue": "",
"DisplaySettings": {
"Octopus.ControlType": "Sensitive"
}
},
{
"Id": "d0a459eb-4a63-48e2-8a81-a03540eb1576",
"Name": "Channel",
"Label": "Channel handle",
"HelpText": "Which Slack channel to post notifications to.",
"DefaultValue": "",
"DisplaySettings": {
"Octopus.ControlType": "SingleLineText"
}
},
{
"Id": "706ba5da-6c0f-487f-9ac2-90c32fd04a84",
"Name": "IconUrl",
"Label": "Icon URL",
"HelpText": "The icon to use for this user in Slack",
"DefaultValue": "https://octopus.com/content/resources/favicon.png",
"DisplaySettings": {
"Octopus.ControlType": "SingleLineText"
}
},
{
"Id": "53a41383-6e54-42ba-ad91-d85c28651299",
"Name": "Username",
"Label": "",
"HelpText": "The username shown in Slack against these notifications",
"DefaultValue": "Octopus Deploy",
"DisplaySettings": {
"Octopus.ControlType": "SingleLineText"
}
},
{
"Id": "1f5c2164-f4a5-485b-adb0-2714eea6cff8",
"Name": "DeploymentInfoText",
"Label": "Main message",
"HelpText": "Long information message shown in slack. This message is prefixed with \"Deployed successfully\" or \"Failed to deploy\" depending on status.",
"DefaultValue": "#{Octopus.Project.Name} release #{Octopus.Release.Number} to #{Octopus.Environment.Name} (#{Octopus.Machine.Name})",
"DisplaySettings": {
"Octopus.ControlType": "MultiLineText"
}
},
{
"Id": "3538eb46-3c2f-4f81-aad1-434da1e2c30b",
"Name": "IncludeFieldRelease",
"Label": "Include release number field",
"HelpText": "Shows short field with release number name",
"DefaultValue": "false",
"DisplaySettings": {
"Octopus.ControlType": "Checkbox"
}
},
{
"Id": "57985f0b-6bf6-4b41-aaf8-f8a6ce65547b",
"Name": "IncludeFieldReleaseNotes",
"Label": "Include release notes Field",
"HelpText": "Release notes are only included on successful deployment",
"DefaultValue": "false",
"DisplaySettings": {
"Octopus.ControlType": "Checkbox"
}
},
{
"Id": "97309be1-e7cb-43ab-9721-13ceab6bf7ca",
"Name": "IncludeFieldMachine",
"Label": "Include machine name field",
"HelpText": "Shows short field with machine name",
"DefaultValue": "false",
"DisplaySettings": {
"Octopus.ControlType": "Checkbox"
}
},
{
"Id": "b0415f67-00e5-4568-b099-0f107d5e54ae",
"Name": "IncludeFieldProject",
"Label": "Include project field",
"HelpText": null,
"DefaultValue": "True",
"DisplaySettings": {
"Octopus.ControlType": "Checkbox"
}
},
{
"Id": "29772dc0-ddd2-4406-932b-e09e87d3d1c6",
"Name": "IncludeFieldEnvironment",
"Label": "Include environment name field",
"HelpText": "Shows short field with environment name",
"DefaultValue": "false",
"DisplaySettings": {
"Octopus.ControlType": "Checkbox"
}
},
{
"Id": "ee313203-4485-4320-b27b-03562724352a",
"Name": "IncludeFieldTenant",
"Label": "Include tenant name field",
"HelpText": "Shows short field with name of tenant",
"DefaultValue": "false",
"DisplaySettings": {
"Octopus.ControlType": "Checkbox"
}
},
{
"Id": "0f113c63-9a5c-493d-8942-3db978b41240",
"Name": "IncludeFieldUsername",
"Label": "Include username field",
"HelpText": "Shows the username of user that initiated deployment",
"DefaultValue": "false",
"DisplaySettings": {
"Octopus.ControlType": "Checkbox"
}
},
{
"Id": "0cdec31d-400b-4615-b91a-4f2a5b640b45",
"Name": "IncludeLinkOnFailure",
"Label": "Include deployment process link on failure",
"HelpText": "When deployment failed a link \"Open process page\" is added to the notification pointing to deployment process page",
"DefaultValue": "false",
"DisplaySettings": {
"Octopus.ControlType": "Checkbox"
}
},
{
"Id": "51fc4209-a97a-4868-8f27-c1076350b581",
"Name": "IncludeErrorMessageOnFailure",
"Label": "Include error message text on failure",
"HelpText": "When deployment failed error text is shown as part of notification",
"DefaultValue": "false",
"DisplaySettings": {
"Octopus.ControlType": "Checkbox"
}
},
{
"Id": "d33e02de-a949-472f-a1f4-447425507e6b",
"Name": "OctopusBaseUrl",
"Label": "Octopus base url",
"HelpText": "Base URL to add to the links in the notification. If octopus server dashboard is at \"http://octopus/app\" include all before the \"app\" part (\"http://octopus\").",
"DefaultValue": "",
"DisplaySettings": {
"Octopus.ControlType": "SingleLineText"
}
}
],
"Properties": {
"Octopus.Action.Script.ScriptBody": "# Get values into variables\nincludeFieldProject=$(get_octopusvariable \"IncludeFieldProject\")\nincludeFieldEnvironment=$(get_octopusvariable \"IncludeFieldEnvironment\")\nincludeFieldMachine=$(get_octopusvariable \"includeFieldMachine\")\nincludeFieldTenant=$(get_octopusvariable \"IncludeFieldTenant\")\nincludeFieldUsername=$(get_octopusvariable \"IncludeFieldUsername\")\nincludeFieldRelease=$(get_octopusvariable \"IncludeFieldRelease\")\nincludeFieldReleaseNotes=$(get_octopusvariable \"IncludeFieldReleaseNotes\")\nincludeFieldErrorMessageOnFailure=$(get_octopusvariable \"IncludeErrorMessageOnFailure\")\nincludeFieldLinkOnFailure=$(get_octopusvariable \"IncludeLinkOnFailure\")\n\nfunction convert_ToBoolean () {\n\tlocal stringValue=$1\n local returnValue=\"\"\n\n if [[ \"$stringValue\" == \"True\" ]]\n then\n \treturnValue=true\n else\n \treturnValue=false\n fi\n \n echo \"$returnValue\"\n}\n\nfunction slack_Populate_StatusInfo (){\n \tlocal success=$1\n \tlocal deployment_info=$(get_octopusvariable \"DeploymentInfoText\")\n\t\tlocal jsonBody=\"{ \"\n\t\t\n if [[ \"$success\" == true ]]\n then\n \tjsonBody+='\"color\": \"good\",'\n jsonBody+='\"title\": \"Success\",'\n jsonBody+='\"fallback\": \"Deployed successfully '\n jsonBody+=\"$deployment_info\\\"\"\n else\n \tjsonBody+='\"color\": \"danger\",'\n jsonBody+='\"title\": \"Failed\",'\n jsonBody+='\"fallback\": \"Failed to deploy '\n jsonBody+=\"$deployment_info\\\"\"\n fi\n \n #jsonBody+=\"}\"\n \n echo $jsonBody\n}\n\nfunction populate_field () {\n\tlocal title=$1\n local value=$2\n local body=\"\"\n \n body+='{'\n body+='\"short\": \"true\",'\n body+='\"title\": '\n body+=\"\\\"$title\\\"\"\n body+=\",\"\n body+='\"value\": '\n body+=\"\\\"$value\\\"\"\n body+='}'\n \n echo \"$body\"\n}\n\n\nfunction slack_Populate_Fields (){\n\tlocal status_info=$1\n local fieldsJsonBody=\"\"\n declare -a testArray\n \n if [[ \"$includeFieldProject\" == true ]]\n then\n testArray+=(\"$(populate_field \"Project\" \"$(get_octopusvariable \"Octopus.Project.Name\")\")\")\n fi\n \n if [[ \"$includeFieldEnvironment\" == true ]]\n then\n testArray+=(\"$(populate_field \"Environment\" \"$(get_octopusvariable \"Octopus.Environment.Name\")\")\")\n fi\n \n if [[ \"$includeFieldMachine\" == true ]]\n then\n testArray+=(\"$(populate_field \"Machine\" \"$(get_octopusvariable \"Octopus.Machine.Name\")\")\")\n fi\n \n if [[ \"$includeFieldTenant\" == true ]]\n then\n testArray+=(\"$(populate_field \"Tenant\" \"$(get_octopusvariable \"Octopus.Deployment.Tenant.Name\")\")\")\n fi\n \n if [[ \"$includeFieldUsername\" == true ]]\n then\n testArray+=(\"$(populate_field \"Username\" \"$(get_octopusvariable \"Octopus.Deployment.CreatedBy.Username\")\")\")\n fi\n \n if [[ \"$includeFieldRelease\" == true ]]\n then\n testArray+=(\"$(populate_field \"Release\" \"$(get_octopusvariable \"Octopus.Release.Number\")\")\")\n fi\n \n if [[ \"$includeFieldReleaseNotes\" == true ]]\n then\n testArray+=(\"$(populate_field \"Changes in this release\" \"$(get_octopusvariable \"Octopus.Release.Notes\")\")\")\n fi\n \n if [[ \"$status_info\" == false ]]\n then\n if [[ \"$includeFieldErrorMessageOnFailure\" == true ]]\n then\n testArray+=(\"$(populate_field \"Error text\" \"$(get_octopusvariable \"Octopus.Deployment.Error\")\")\")\n fi\n\n if [[ \"$includeFieldLinkOnFailure\" == true ]]\n then\n baseUrl=\"$(get_octopusvariable \"Octopus.Web.ServerUri\")\"\n testArray+=(\"$(populate_field \"See the process\" \"$baseUrl$(get_octopusvariable \"Octopus.Web.DeploymentLink\")\")\")\n fi\n fi\n \n \n ( IFS=$','; echo \"${testArray[*]}\" ) \n \n}\n\nfunction slack_rich_notification () {\n\tlocal success=$1\n local jsonBody=\"{ \"\n \n jsonBody+='\"channel\": '\n jsonBody+=\"\\\"$(get_octopusvariable \"Channel\")\\\",\"\n jsonBody+='\"username\": '\n jsonBody+=\"\\\"$(get_octopusvariable \"Username\")\\\",\"\n jsonBody+='\"icon_url\": '\n jsonBody+=\"\\\"$(get_octopusvariable \"IconUrl\")\\\",\"\n jsonBody+='\"attachments\": ['\n jsonBody+=$(slack_Populate_StatusInfo \"$success\")\n jsonBody+=',\"fields\": '\n jsonBody+=\"[$(slack_Populate_Fields \"$success\")]\"\n jsonBody+=\"}]}\"\n \n echo \"$jsonBody\"\n}\n\n# Convert include* variables to actual boolean values\nincludeFieldProject=$(convert_ToBoolean \"$includeFieldProject\")\nincludeFieldEnvironment=$(convert_ToBoolean \"$includeFieldEnvironment\")\nincludeFieldMachine=$(convert_ToBoolean \"$includeFieldMachine\")\nincludeFieldTenant=$(convert_ToBoolean \"$includeFieldTenant\")\nincludeFieldUsername=$(convert_ToBoolean \"$includeFieldUsername\")\nincludeFieldRelease=$(convert_ToBoolean \"$includeFieldRelease\")\nincludeFieldReleaseNotes=$(convert_ToBoolean \"$includeFieldReleaseNotes\")\nincludeFieldErrorMessageOnFailure=$(convert_ToBoolean \"$includeFieldErrorMessageOnFailure\")\nincludeFieldLinkOnFailure=$(convert_ToBoolean \"$includeFieldLinkOnFailure\")\n\nsuccess=true\n\nif [[ ! -z $(get_octopusvariable \"Octopus.Deployment.Error\") ]]\nthen\n\tsuccess=false\nfi\n\n# Build json payload\njson_payload=$(slack_rich_notification $success)\n\nwebook_url=$(get_octopusvariable \"HookUrl\")\n\n# Send webhook - redirect stderr to stdout\nwget --post-data=\"$json_payload\" --secure-protocol=\"auto\" \"$webook_url\" 2>&1\n\n# Check for error\nif [[ $? -ne 0 ]]\nthen\n fail_step \"Failed!\"\nfi\n\n",
"Octopus.Action.Script.Syntax": "Bash",
"Octopus.Action.Script.ScriptSource": "Inline",
"Octopus.Action.RunOnServer": "false"
},
"Category": "Slack",
"HistoryUrl": "https://github.com/OctopusDeploy/Library/commits/master/step-templates//opt/buildagent/work/75443764cd38076d/step-templates/slack-detailed-notification-bash.json",
"Website": "/step-templates/cd3b6172-ed9a-4c42-a588-4c78c3e3b08a",
"Logo": "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",
"$Meta": {
"Type": "ActionTemplate"
}
}
Page updated on Tuesday, July 19, 2022