Как передать переменные конвейера в сообщение Gerrit после сборки? - PullRequest
1 голос
/ 03 апреля 2019

У меня Pylint работает в трубопроводе Дженкинса. Для его реализации я использовал триггерный плагин Gerrit и плагин Next Generation Warnings. Все работает, как ожидалось - Дженкинс присоединяется к обзору, проверяет изменения с помощью pylint и генерирует отчет.

Теперь я хотел бы опубликовать счет пилинта в специальном сообщении "Построить успешно". Я хотел передать оценку Pylint в переменную окружения и использовать ее в специальном окне для сообщения плагина Gerrit.

К сожалению, что бы я ни пытался, я не могу передать какую-либо "новую" переменную в сообщение. Передача параметров, встроенных в конвейерные работы (например, номер набора патчей).

Я создал новую переменную среды в меню Configure Jenkins, попытался экспортировать в оболочку, писать в нее (через синтаксис $ VAR и env.), Но ничего не работает - то есть сообщение о сборке отображает необработанную строку, такую ​​как $ VAR, вместо того, какая переменная содержит ,

Что я должен сделать, чтобы передать локальную оценку Pylint (различную для каждого конвейера) в пользовательское сообщение сборки для Gerrit?

1 Ответ

0 голосов
/ 04 апреля 2019

Я не думаю, что пользовательское сообщение может быть использовано для этого.Предполагается, что это просто статическое сообщение.

Для этого я использую команду SSH для проверки.Вы также можете добиться того же, используя REST API.

Сначала я запустил свой скрипт проверки размера и пустых пространств, который сгенерирует файл json с информацией, которую я хотел бы передать Герриту.Затем я отправляю его Герриту, используя SSH.Смотрите ниже мой конвейерный скрипт и пример файла json.

В качестве бонуса я добавил комментарии робота.Теперь это будет показано в вашем обзоре как замечание Дженкинса о том, что в строке 8 моего файла Дженкинса есть пробел.Вы можете легко заменить это на результат, который вам нравится, или просто проигнорировать его и только поместить сообщение.Файл json проще использовать, так как будет проще создавать многострочные сообщения


node('master') {
  sh """
    cat lint_change.json | ssh -p ${env.GERRIT_PORT} ${env.GERRIT_HOST} gerrit review ${env.GERRIT_PATCHSET_REVISION} --json
    """
}

Пример файла json:

{
  "labels": {
    "Code-Style": "-1"
  }, 
  "message": "Lint Bot Review\nLint Results:\n  Errors: 0\n  Warnings: 0\n\nWhitespace results:\n  Errors: 1", 
  "robot_comments": {
    "Jenkinsfile": [
      {
        "robot_id": "lint-bot", 
        "line": "8", 
        "message": "trailing whitespace."
      }
    ]
  }
}

В качестве альтернативы вы можете захотетьпосмотрите на новый gerrit-code-review-plugin , который должен сделать это еще проще.Однако я еще не пробовал это.

...