2020-10-17 08:50:59 +00:00
|
|
|
version: 2.1
|
|
|
|
|
2020-10-17 10:47:12 +00:00
|
|
|
description: |
|
|
|
|
A simple orb to send fully-customized Slack messages via Slack webhooks.
|
|
|
|
To generate a webhook URL, please see the Slack instructions: https://api.slack.com/messaging/webhooks
|
2020-10-17 08:50:59 +00:00
|
|
|
|
|
|
|
display:
|
|
|
|
source_url: "https://github.com/adamu/slack-webhook-orb"
|
|
|
|
|
|
|
|
commands:
|
|
|
|
send-message:
|
|
|
|
description: Send a message to slack via a webhook.
|
|
|
|
parameters:
|
|
|
|
json-payload:
|
|
|
|
type: string
|
|
|
|
description: The Slack JSON Payload.
|
|
|
|
webhook-url:
|
|
|
|
type: string
|
|
|
|
default: ''
|
|
|
|
description: The URL of the Slack webhook.
|
|
|
|
webhook-url-env-var:
|
|
|
|
type: string
|
|
|
|
default: SLACK_WEBHOOK
|
|
|
|
description: |
|
|
|
|
The name of the environment variable configured in CircleCI that contains the Slack webhook URL
|
|
|
|
steps:
|
|
|
|
- run:
|
|
|
|
name: Send a message to Slack via a webhook
|
|
|
|
command: |
|
|
|
|
# Put the json payload into a slack.json file to avoid interpeting it
|
|
|
|
cat > slack.json \<<'SLACK-PAYLOAD-4FC4D2195631E5-EOF'
|
|
|
|
<< parameters.json-payload >>
|
|
|
|
SLACK-PAYLOAD-4FC4D2195631E5-EOF
|
|
|
|
|
|
|
|
# The directly-specified URL overrides the environment variable, if supplied
|
|
|
|
if [[ "<< parameters.webhook-url >>" ]]; then
|
|
|
|
<< parameters.webhook-url-env-var >>=<< parameters.webhook-url >>
|
|
|
|
fi
|
|
|
|
|
|
|
|
if [[ -z "$<< parameters.webhook-url-env-var >>" ]]; then
|
|
|
|
1>&2 echo "Webhook URL is not defined.
|
|
|
|
Please supply webhook-url or webhook-url-env-var arguments to slack-webhook orb,
|
|
|
|
or set the SLACK_WEBHOOK environment vairable."
|
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
|
|
|
|
# Call the webhook
|
|
|
|
curl -H 'Content-type: application/json' --data-binary @slack.json $<< parameters.webhook-url-env-var >>
|
|
|
|
|
|
|
|
examples:
|
|
|
|
webhook-url:
|
|
|
|
description: |
|
|
|
|
Provide the webhook URL directly in the webhook-url parameter.
|
|
|
|
Note that this leaks the Webhook URL in your CircleCI config and the CircleCI logs,
|
|
|
|
so using one of the environment variable option is preferred.
|
|
|
|
Provide the Slack JSON payload in the json-payload parameter.
|
|
|
|
The payload can be generated with the Slack Block Kit Builder: https://app.slack.com/block-kit-builder
|
|
|
|
usage:
|
|
|
|
version: 2.1
|
|
|
|
|
|
|
|
orbs:
|
|
|
|
slack-webhook: adamu/slack-webhook@1.0.0
|
|
|
|
|
|
|
|
jobs:
|
|
|
|
build:
|
|
|
|
docker:
|
|
|
|
- image: cimg/base:stable
|
|
|
|
steps:
|
|
|
|
- slack-webhook/send-message:
|
|
|
|
webhook-url: https://hooks.slack.com/...
|
|
|
|
json-payload: |
|
2020-10-17 11:39:05 +00:00
|
|
|
{
|
2020-10-17 12:39:25 +00:00
|
|
|
"blocks": [
|
|
|
|
{
|
|
|
|
"type": "section",
|
|
|
|
"text": {
|
|
|
|
"type": "mrkdwn",
|
|
|
|
"text": "Hello from <https://github.com/adamu|@adamu>'s `slack-webhook` CircleCi orb! 👋"
|
|
|
|
}
|
|
|
|
}
|
|
|
|
]
|
2020-10-17 11:39:05 +00:00
|
|
|
}
|
2020-10-17 08:50:59 +00:00
|
|
|
environment-variable:
|
|
|
|
description: |
|
|
|
|
Provide the webhook URL in the SLACK_WEBHOOK environment variable on CircleCI.
|
|
|
|
When using this method, only the json-payload parameter needs to be supplied.
|
|
|
|
The payload can be generated with the Slack Block Kit Builder: https://app.slack.com/block-kit-builder
|
|
|
|
usage:
|
|
|
|
version: 2.1
|
|
|
|
|
|
|
|
orbs:
|
|
|
|
slack-webhook: adamu/slack-webhook@1.0.0
|
|
|
|
|
|
|
|
jobs:
|
|
|
|
build:
|
|
|
|
docker:
|
|
|
|
- image: cimg/base:stable
|
|
|
|
steps:
|
|
|
|
- slack-webhook/send-message:
|
|
|
|
json-payload: |
|
2020-10-17 11:39:05 +00:00
|
|
|
{
|
2020-10-17 12:39:25 +00:00
|
|
|
"blocks": [
|
|
|
|
{
|
|
|
|
"type": "section",
|
|
|
|
"text": {
|
|
|
|
"type": "mrkdwn",
|
|
|
|
"text": "Hello from <https://github.com/adamu|@adamu>'s `slack-webhook` CircleCi orb! 👋"
|
|
|
|
}
|
|
|
|
}
|
|
|
|
]
|
2020-10-17 11:39:05 +00:00
|
|
|
}
|
2020-10-17 08:50:59 +00:00
|
|
|
custom-environment-variable:
|
|
|
|
description: |
|
|
|
|
Supply the webhook URL in a custom environment variable configured on CircleCI,
|
|
|
|
and provide the name of the environment variable in the webhook-url-env-var parameter.
|
|
|
|
Provide the Slack JSON payload in the json-payload parameter.
|
|
|
|
The payload can be generated with the Slack Block Kit Builder: https://app.slack.com/block-kit-builder
|
|
|
|
usage:
|
|
|
|
version: 2.1
|
|
|
|
|
|
|
|
orbs:
|
|
|
|
slack-webhook: adamu/slack-webhook@1.0.0
|
|
|
|
|
|
|
|
jobs:
|
|
|
|
build:
|
|
|
|
docker:
|
|
|
|
- image: cimg/base:stable
|
|
|
|
steps:
|
|
|
|
- slack-webhook/send-message:
|
|
|
|
webhook-url-env-var: CUSTOM_SLACK_WEBHOOK_VARIABLE
|
|
|
|
json-payload: |
|
2020-10-17 11:39:05 +00:00
|
|
|
{
|
2020-10-17 12:39:25 +00:00
|
|
|
"blocks": [
|
|
|
|
{
|
|
|
|
"type": "section",
|
|
|
|
"text": {
|
|
|
|
"type": "mrkdwn",
|
|
|
|
"text": "Hello from <https://github.com/adamu|@adamu>'s `slack-webhook` CircleCi orb! 👋"
|
|
|
|
}
|
|
|
|
}
|
|
|
|
]
|
2020-10-17 11:39:05 +00:00
|
|
|
}
|