Интеграция Дженкинса Слак

Я хочу использовать плагин Slack в Jenkins для отправки уведомлений на канал Slack.

Дженкинс говорит об успехе, когда тестирую соединение, но я не получаю никаких уведомлений в моем Slack-канале.

Есть ли известные проблемы?

Как я могу заставить Jenkins отправлять уведомления Slack?

Ответы

Ответ 1

И вы уверены, что у вас есть правильная настройка. В конфигурации сборки (не забудьте # символ) enter image description here

В общей конфигурации enter image description here

Ответ 2

Я думаю, что вы должны добавить post-build action "Slack Notification" в ваш Jenkins. Пожалуйста, смотрите изображение ниже

enter image description here

Ответ 3

Есть два шага, чтобы настроить задание Jenkins для публикации на слабом канале.

  • Перейдите в конфигурацию заданий jenkins и добавьте действие после сборки на каждое задание, которое вы хотите выполнить для прокрутки канала slack.

введите описание изображения здесь

  1. Далее, опять же, в конфигурациях заданий, вы должны настроить на каждом задании, в каких случаях вы хотите отправлять слабые уведомления: (true - false) f.e.

введите описание изображения здесь

В случае, если вам нужно настроить большое количество заданий Jenkins, вы можете настроить только один из них вручную и убедиться, что он работает нормально. Затем проверьте файл config.xml этого задания Jenkins, чтобы найти автоматически сгенерированные элементы xml для предпочтений slack plugin и применить эти конфиги для всех заданий Jenkins с помощью regex или xslt. В этом случае вам придется перезагрузить конфигурацию Jenkins для использования обновлений конфигураций заданий. ( "Управление Jenkins" / "Перезагрузка конфигурации с диска" )

Предпосылки:

  • Установите Slack плагин в Jenkins.
  • Получите токен интеграции Jenkins CI в вашем slack-домене.
  • Пойдите в Дженкинса "Управление Дженкинсом" / "Настроить систему". Там вы должны настроить "Глобальные настройки оповещений слайдера".

Ответ 4

Я не использовал Slack Notification, потому что я хочу настроить стиль/состояние/сообщение и т.д. Поэтому я написал 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:[email protected]"$(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].*/\1/p' | sed "[email protected][email protected] @g;[email protected]%@\\\\[email protected]" | 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\ \([^\"]*\).*/\1/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

Ответ 5

Я хочу добавить его здесь для большего блага сообщества. Вот как вы получаете токен интеграции

Инструкции Дженкинса

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.

https://github.com/jenkinsci/slack-plugin

Ответ 6

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>

Я не мог получить ничего, кроме "сбоя" из теста slack connection в config. Я могу использовать python из того же поля, поэтому я не знаю, в чем проблема, поэтому я могу просто использовать этот простой script.

Ответ 7

У меня были похожие проблемы.

Это сработало для меня, когда я снял флажок "является пользователем Bot?"

запуск Jenkins в консоли с "jenkins", а не с демоном brew.

Может быть, это помогает:) Приветствия ^ __ ^