Как запустить конвейер jenkins из репозитория bitbucket

#jenkins #bitbucket

#дженкинс #bitbucket

Вопрос:

Я успешно настроил триггер webhook в bitbucket для проекта Jenkins freestyle в целях тестирования.

К сожалению, мой проект Jenkins использует формат конвейера, и я не могу заставить Bitbucket запускать такой проект; проблема, похоже, в том, что нет проекта Jenkins, зарегистрированного для извлечения из репозитория, из которого поступает веб-хук Bitbucket, и Дженкинс отвечает:

 Error: Jenkins response: No git jobs using repository: ssh://git@myhost:7999/xxx/testing-jenkins.git and branches: master No Git consumers using SCM API plugin for: ssh://git@myhost:7999/xxx/testing-jenkins.git
  

Проект конвейера настроен таким образом, Jenkinsfile чтобы его можно было найти в данном репозитории ( ssh://git@myhost:7999/xxx/testing-jenkins.git ), используя опцию «Сценарий конвейера из SCM».

Поэтому на самом деле существует своего рода «потребитель git» для конвейера, но Дженкинс, похоже, не учитывает это, вероятно, потому, что это не реальный источник проекта, а источник конвейера.

Есть ли какие-либо примеры интеграции проектов Bitbucket и Jenkins Pipeline? Я не смог найти ни одного.

Комментарии:

1. К сожалению, я пытался найти решение этой проблемы, я продолжу поиск и обновлю это, если найду решение или пример.

2. есть прогресс? Я пока тоже не могу этого сделать.

3. issues.jenkins-ci.org/browse/JENKINS-38447 это и есть прогресс.

Ответ №1:

Если вы ищете полный конвейер Bitbucket и Jenkins, я настоятельно рекомендую использовать плагин Bitbucket Branch Source. Плагин обнаружит все ветви и запросы на извлечение и соберет всех, у кого есть файл Jenkins в корне репозитория.

Вы также можете использовать команду create a project as Bitbucket, которая будет сканировать все репозитории вашей организации: введите описание изображения здесь

Смотрите официальный документ CloudBees

Комментарии:

1. Хотя этот ответ является хорошим предложением, он вообще не охватывает вопрос. У меня установлен этот плагин, но он по-прежнему не может запускать задания в конвейерах: «Ответ Дженкинса: нет заданий git с использованием репозитория» (который работал с FreeStyleJobs).

Ответ №2:

Я боролся с той же проблемой. Ниже приведены ключевые моменты, которым я следовал.

В задании конвейера Дженкинса,

  1. В разделе «Триггеры сборки» установите флажок «Запускать сборки удаленно (например, из скриптов)» и заполните «Токен аутентификации» некоторым случайным и уникальным токеном.

В репозитории BitBucket,

  1. Перейдите в Настройки> Службы

  2. Выберите «Дженкинс» из выпадающего списка и «Добавить сервис».

    • Проверьте «Включен Csrf»

    • Конечная точка: http://username:apitoken@yourjenkinsurl.com /

      Вы можете найти имя пользователя и apitoken в Jenkins home> Люди Выберите пользователя и нажмите настроить. В разделе «Токен API» нажмите кнопку «Показать токен API», и вы увидите имя пользователя и apitoken

    • Имя модуля : это необязательно. Это может быть любой конкретный файл или папка, за которыми нужно следить.

    • Название проекта: название проекта в Jenkins.

      Если задание находится в какой-либо структуре папок, скажем, у меня есть ‘MyTestFolder / MyTestPipelineJob’, имя проекта, которое нужно упомянуть, — ‘MyTestFolder / job / MyTestPipelineJob’

    • Токен: «Токен аутентификации», созданный в задании Дженкинса.

Вы готовы к работе!!

Я ссылался http://felixleong.com/blog/2012/02/hooking-bitbucket-up-with-jenkins / и некоторые из моих инстинктов. 🙂

Комментарии:

1. Это больше не поддерживается bitbucket confluence.atlassian.com/bitbucket /…

2. подтверждено выше.

Ответ №3:

Простым решением является использование универсального плагина запуска Webhook в Jenkins.

Вам нужно будет

  • Включите его в произвольном стиле или в задании конвейера.
  • Настройте строку токена
  • Создайте JSONPath:s, чтобы собрать все, что вам нужно, из Bitbucket Webhook.
  • Добавьте конечную точку плагина в Bitbucket. JENKINS_URL/generic-webhook-trigger/invoke?token=whatever_you_picked

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

Вам решать, какие значения вам нужны из webhook, чтобы клонировать правильный репозиторий или что бы вы ни хотели сделать при вызове it.

Ответ №4:

У меня такая же проблема. Мой обходной путь заключался в том, чтобы просто создать проект в стиле freestyle, который может запускаться с помощью WebHook, и запустить конвейер по завершении этого проекта.

В то же время, вот ошибка Дженкинса, которую вы можете посмотреть для исправления: https://issues.jenkins-ci.org/browse/JENKINS-38447

Ответ №5:

Потратьте часы на выяснение, как это сделать в 2017.10

  1. Как описано в @JPLemelin, создайте элемент Jenkins с помощью команды / проекта Bitbucket
  2. ссылка на документ: https://support.cloudbees.com/hc/en-us/articles/115000051132-How-to-Trigger-Multibranch-Jobs-from-BitBucket-Cloud — , установите плагин: плагин BitBucket Branch Source.
  3. перейдите в bitbucket и добавьте webhook: $ {your-jenkins-url}/bitbucket-scmsource-hook/notify

после этих 3 шагов я, наконец, запускаю задания конвейера после новой фиксации в bitbucket

Комментарии:

1. Мой результат: Jenkins response: java.lang.Exception: X-Event-Key HTTP header not found . Я не уверен в шаге 1, я создал «папки организации» для всего, и он правильно сканирует Bitbucket.

Ответ №6:

У меня была точно такая же проблема…

Причиной было использование */master спецификатора for branch. Мне нужно было объяснить это по буквам: origin/master (без подстановочных знаков).

Теперь он работает хорошо.

Ответ №7:

Я, наконец, смог заставить это работать с Jenkinsfile в конвейере с несколькими ответвлениями:

В Bitbucket я создал веб-хук с моим URL-адресом Jenkins, моим URL-адресом-клоном, и в веб-хук я ввел следующий URL-адрес (точный URL-адрес в проекте Дженкинса):

 http://<jenkins>/git/notifyCommit?url=http://<user>@<bitbucket>/scm/<project>/<repo>.git
  

Когда я тестирую триггер, результат выглядит следующим образом:

 No git jobs using repository: http://<user>@<bitbucket>/scm/<project>/<repo>.git and branches: 
Scheduled indexing of <repo>
  

Таким образом, он не запускал никаких заданий, но запускал сканирование с несколькими ветвями, поэтому мои измененные ветви создаются.