Дженкинс Slack интеграция
Я хочу использовать плагин Slack в Jenkins для ping-уведомлений на канал Slack.
Дженкинс говорит успех, когда я тестирую соединение, но я не получаю никаких уведомлений в моем слабом канале.
есть ли какие-либо известные проблемы?
Как я могу заставить Дженкинса отправлять уведомления Slack?
7 ответов
и вы уверены, что у вас есть правильные конфигурации. В конфигурации сборки (не забудьте # character)
В Общей Конфигурации
Я думаю, что вы должны добавить действие после сборки "Slack Notification" в свой Дженкинс. Пожалуйста, смотрите изображение ниже
существует два шага для настройки задания Дженкинса для публикации на канале slack.
- перейдите к конфигурациям заданий jenkins и добавьте действие после сборки для каждого задания, которое вы хотите пинговать канал slack.
- далее, опять же в конфигурациях заданий, вы должны настроить на каждом задании, в каких случаях вы хотите отправить уведомления slack: (true - ложный) Ф.е.
в случае, если вам нужно настроить большое количество заданий Дженкинса, вы можете настроить только один из них вручную и проверить, что он работает нормально. Затем проверьте config.xml этого задания Дженкинса, чтобы найти автоматически сгенерированные xml-элементы для настроек плагина slack и применить эти конфигурации ко всем заданиям Дженкинса с помощью regex или xslt. в этом случае вам придется перезагрузить конфигурации Jenkins для задания применяемые обновления конфигураций. ("управление Jenkins" / "перезагрузка конфигурации с диска")
требования:
- установите плагин slack в Jenkins.
- получите маркер интеграции Jenkins CI в вашем домене slack.
- перейти в Дженкинс "управление Дженкинс" / "настройка системы". Там вы должны настроить "глобальный параметр Slack Notifier".
Я не использовал уведомление Slack, потому что я хочу настроить стиль / состояние / сообщение и т. д. Поэтому я написал job
под названием send_slack_notification
вместо. Каждый раз, когда я хочу уведомить slack API, я просто вызываю эту работу после сборки.
вот код в "Execute Shell", я использовал curl
, sed
и jsawk
выполнить задание:
# URL to get the built info json
# will get "http://JENKINS_PATH/job/JOB_NAME/97/api/json"
NEW_URL="http://jks_username:jks_password@"$(echo ${BUILD_URL} | sed -r 's/http:\/\///g')"/api/json"
# Cut the JOB_NAME part from BUILD_URL
JOB_NAME=$(echo ${BUILD_URL} | sed -n 's/.*\/job\/\(.*\)\/[0-9].*//p' | sed "s@+@ @g;s@%@\\x@g" | xargs -0 printf "%b")
# Get the built info json
JSON=$(curl $NEW_URL)
STATUS=$(echo $JSON | /usr/local/bin/jsawk "return this.result")
BUILD_INFO=$(echo $JSON | /usr/local/bin/jsawk "return this.displayName")
TIME=$(echo $JSON | /usr/local/bin/jsawk "return this.duration")
TIME=$(echo "scale=4; $TIME/1000" | bc -l)
# Cut the username
USER=$(echo $JSON | /usr/local/bin/jsawk "return this" | sed -n "s/.*Started\ by\ \([^\"]*\).*//p")
# Customize the message sending to slack
TEXT=$JOB_NAME" Built by "$USER", it took "$TIME" seconds."
# Send notification using Slack API
# will send to https://hooks.slack.com/services/BLABLABLA/BLABLABLA
curl -X POST -H 'Content-type: application/json' --data '{"channel": "#production_info","username": "jenkins-bot","icon_emoji": ":lol:","text": "'"$TEXT"' (<'"$BUILD_URL"'|Open>)", "attachments": [{"color": "#36a64f", "fields": [{"title":"UPDATE INFO","value":"'"$BUILD_INFO"'","short":true},{"title":"RESULT","value":"'"$STATUS"'","short":true}]}]}' https://hooks.slack.com/services/BLABLABLA/BLABLABLA/BLABLABLABLABLABLA
Я хотел бы добавить его здесь для большего блага сообщества. Вот как вы получаете маркер интеграции
Инструкции Дженкинс
Get a Slack account: https://slack.com/
Configure the Jenkins integration: https://my.slack.com/services/new/jenkins-ci
Install this plugin on your Jenkins server
Configure it in your Jenkins job and add it as a Post-build action.
import os
import sys
from slacker import Slacker
import base64
def main():
myPass=sys.argv[1]
msgStr= sys.argv[2]
channel = sys.argv[3]
slack = Slacker(myPass)
slack.chat.post_message(channel, msgStr)
print msgStr
if __name__ == '__main__':
main()
python slack.py <token> < message str > <#channel>
Я не мог получить ничего, кроме "сбоя" из теста слабого соединения в конфигурации. Я могу использовать python из той же коробки, поэтому я не знаю, в чем проблема, поэтому я могу просто использовать этот простой скрипт.
У меня были похожие проблемы.
Это сработало для меня, когда я снял флажок " является пользователем бота?"
запуск Дженкинса в консоли с "Дженкинсом", а не с brew demon.
может, это поможет :) Привет ^__^