Настройте оповещения Slack в Spinnaker

Когда конвейер спинакера выходит из строя, мы можем увидеть следующее:

Spinnaker Alerts Bot APP [3:24 PM]
Stage failed for APP_NAME
Stage STAGE_NAME for APP_NAME's PIPELINE_NAME has failed

OTHER STUFF FROM NOTIFICATION CONFIG PANEL OF STAGE

Spinnaker   Today at 3:24 PM

Легко настроить «ДРУГИЕ ВЕЩИ», но как насчет первых 3 строк, не видя места в пользовательском интерфейсе Spinnaker для этого, возможно, в файлах конфигурации на сервере?


person Oliver    schedule 26.03.2019    source источник


Ответы (2)


Вот обновление для более поздней версии спинакера, 1.16.5: пользовательское сообщение можно редактировать для каждого типа уведомлений (запуск, сбой, выполнено). Не похоже, что в него можно поставить html, но можно поставить разметку. Я не знаю, в какой версии спинакера было реализовано содержание этого поста, я просто знаю, что это справедливо для 1.16.5.

Кроме того, после того как вы настроили один из ваших конвейеров для использования уведомлений, вы можете скопировать JSON для уведомления в другие конвейеры, чтобы легко настроить их идентично (или в качестве отправной точки).

Итак, у меня есть следующий JSON для наших уведомлений Slack, обратите внимание на используемые параметры конвейера и их жирную разметку:

  "notifications": [
    {
      "address": "spinnaker-notifications",
      "level": "pipeline",
      "message": {
        "pipeline.failed": {
          "text": "SERVICE_NAME: *${ parameters['SERVICE_NAME'] }*\nSERVICE_VERSION: *${ parameters['SERVICE_VERSION'] }*"
        },
        "pipeline.starting": {
          "text": "SERVICE_NAME: *${ parameters['SERVICE_NAME'] }*\nSERVICE_VERSION: ${ parameters['SERVICE_VERSION'] }"
        }
      },
      "type": "slack",
      "when": [
        "pipeline.failed"
      ]
    }
  ],

Текст сообщения легко настроить через диалоговое окно «Уведомления», просто JSON содержит встроенные \n и т. д.

person Oliver    schedule 23.12.2019
comment
Это лучший ответ!! - person Chris B; 16.01.2020

Это не задокументировано, но если вы отредактируете JSON уведомления, вы можете добавить поле customMessage, и это переопределит трехстрочное сообщение по умолчанию.

Например, измените поле notifications в JSON вашего этапа на:

"notifications": [
    {
      "address": "my-slack-channel",
      "customMessage": "this will replace all three of the standard message lines, and can contain HTML",
      "level": "stage",
      "type": "slack",
      "when": [
        "stage.failed"
      ]
    }
  ]

и вы увидите:

Spinnaker Alerts Bot APP [3:24 PM]
this will replace all three of the standard message lines, and can contain HTML

Spinnaker   Today at 3:24 PM
person Chris B    schedule 26.03.2019
comment
Захватывающе, спасибо, я попробую это завтра, тогда я смогу принять / проголосовать. Знаете ли вы, разрешены ли выражения в строке customMessage? - person Oliver; 27.03.2019
comment
@Oliver, да, сообщения будут обрабатываться процессором SpEL, поэтому вы можете использовать в них выражения. Вы также можете использовать несколько дополнительных, не относящихся к SpEL выражений: {{executionId}} (идентификатор выполнения) и {{link}} (URL-адрес выполнения, глубоко связанный с этим этапом). - person Chris B; 27.03.2019
comment
ОК, поэтому я проверил, и это частично сработало, поэтому +1: к сожалению, заголовок не меняется, т. Е. Строка в моем образце вопроса «Стадия не удалась для APP_NAME» остается прежней. Строка после нее содержит пользовательское сообщение, которое я написал, и я действительно мог использовать параметры из конвейера через ${ parameters['...'] }. Я не пробовал глубокую ссылку, которая есть по умолчанию. Есть ли способ узнать, что такое строка сообщения по умолчанию? - person Oliver; 27.03.2019
comment
Итак, я предполагаю, что github.com/spinnaker/echo/blob/master/echo-notifications/src/ — это код уведомления Slack, он показывает ваше customMessage и показывает, что заголовок сложный -кодируется в возвращаемое значение getNotificationTitle(), которое всегда включает имя приложения. Я должен был бы как-то переопределить эту функцию. в плагине после установки спинакера не совсем вариант. - person Oliver; 27.03.2019