Как правильно подключить Bitbucket к Jenkins
Начиная примерно с 1 недели, Bitbucket не отправляет запрос на мой сервер Jenkins.
Я установил все так:
Endpoint
http://username:[email protected]/
username
= имя пользователя в Jenkins
apitoken
= apitoken подключен к имени пользователя в Jenkins
jenkinshost
= мой хост, где я запускаю Jenkins
Project name
- проект
Token
: токен, который я могу настроить в конфигурации для каждого проекта.
Я сделал это в соответствии с этим сайтом: http://felixleong.com/blog/2012/02/hooking-bitbucket-up-with-jenkins
.
Это действительно сработало, но это уже не так. Битбакет что-то изменил? Как я могу это исправить?
![enter image description here]()
Ответы
Ответ 1
Чтобы создать свое репо после новых коммитов, используйте плагин BitBucket.
Есть только одно замечание:
При создании POST-крюка (обратите внимание, что это POST-крючок, а не Jenkins), URL-адрес работает, когда в конце есть "/". Как:
URL: JENKINS_URL/bitbucket-hook/
e.g. someAddress:8080/bitbucket-hook/
Не забудьте проверить "Сборка, когда изменение переместится в BitBucket" в настройке вашей работы.
Ответ 2
У меня были подобные проблемы, пока я не заработал. Ниже приведен полный список интеграции:
- Создание пары открытых/закрытых ключей:
ssh-keygen -t rsa
-
Скопируйте открытый ключ (~/.ssh/id_rsa.pub) и вставьте его в ключи SSH Bitbucket, в консоли управления учетными записями пользователей:
![enter image description here]()
-
Скопируйте закрытый ключ (~/.ssh/id_rsa) новому пользователю (или даже существующему) с учетными данными личного ключа, в этом случае имя пользователя не изменится, поэтому имя пользователя может быть любым:
![enter image description here]()
-
запустите эту команду, чтобы проверить, можете ли вы получить доступ к учетной записи Bitbucket:
ssh -T [email protected]
- ДОПОЛНИТЕЛЬНО: теперь вы можете использовать git для копирования репо на свой стол без пароля
git clone [email protected]:username/repo_name.git
-
Теперь вы можете включить крючки Bitbucket для push-уведомлений Jenkins и автоматических сборок, вы сделаете это в 2 этапа:
-
Добавить токен аутентификации внутри заданного вами проекта/проекта, это может быть что угодно:
![enter image description here]()
-
В крючках Bitbucket: выберите крючки jenkins и заполните поля, как показано ниже:
![enter image description here]()
Где:
**End point**: username:[email protected]_domain_or_ip
**Project name**: is the name of job you created on Jenkins
**Token**: Is the authorization token you added in the above steps in your Jenkins' job/project
Recommendation: I usually add the usertoken as the authorization Token (in both Jenkins Auth Token job configuration and Bitbucket hooks), making them one variable to ease things on myself.
Ответ 3
Мне просто удалось успешно запустить сборку с фиксацией с использованием опции "Крючки" в BitBucket для экземпляра Jenkins со следующими шагами (аналогично ссылке):
- Создайте пользовательскую последовательность UUID или строку, сохраните ее позже
- Jenkins → Configure Project → Build Triggers → "Триггер строит удаленно (например, из скриптов)"
- (Вставить UUID/string здесь) для "Ток аутентификации"
- Сохранить
- Изменить настройки репозитория битбакета
- Крючки → Редактировать:
Конечная точка: http://jenkins.something.co:9009/
Имя модуля:
Название проекта: Название проекта
Токен: (Вставить UUID/строку здесь)
Конечной точке не требуется вставлять базовый HTTP-адрес в URL-адрес, несмотря на использование аутентификации, я не использовал поле "Имя модуля", а имя проекта было введено с учетом регистра, включая пробел в моем тестовом примере. Сборка не всегда срабатывала сразу, но относительно быстро. Еще одна вещь, которую вы можете рассмотреть, - это отключить опцию "Предотвратить использование подпрограмм запроса на межсайтовый сайт" в "Настроить глобальную безопасность" для тестирования, поскольку у меня возникли всевозможные сложности API из существующих интеграций, когда эта опция включена.
Ответ 4
Итерацией я узнал, что поле Token и токен в конечной точке могут быть одинаковыми. Поэтому я устанавливаю их так же, как и токен пользователя, и он работает! Также убедитесь, что у пользователя есть привилегии для выполнения задания.
В любом случае, вы можете проверить access.log и посмотреть, пытается ли BitBucket попробовать.
![jenkins]()
P.S. Также ссылка на Документация Bitbucket. Может быть, когда-нибудь он станет более полезным.
Ответ 5
Я не знаком с этим плагином, но мы довольно успешно используем BitBucket и Jenkins вместе, однако мы проводим опрос об изменениях вместо того, чтобы их вытолкнуть из BitBucket (из-за того, что наш сервер сборки скрыт за брандмауэром компании). Этот подход может работать для вас, если у вас все еще возникают проблемы с текущим подходом.
Этот документ в Настройка SSH для Git и Mercurial в Linux описывает детали того, что вам нужно сделать, чтобы иметь возможность общаться между вашим сервером сборки и BitBucket через SSH. Как только это будет сделано, установите Git Plugin, перейдите в конфигурацию сборки и выберите "Git" в разделе "Управление исходным кодом" и введите URL-адрес ssh вашего репозитория в качестве URL-адреса репозитория. Наконец, в разделе Build Triggers выберите Poll SCM и установите частоту опроса на все, что вам нужно.
Ответ 6
У меня была эта проблема, и оказалось, что проблема в том, что я назвал мой репозиторий с CamelCase. bitbucket автоматически изменяет URL вашего репозитория на все нижний регистр и отправляется Jenkins в webhook. Затем Jenkins ищет проекты с соответствующим хранилищем. Если у вас, как и у меня, есть CamelCase в URL-адресе вашего репозитория в вашей конфигурации проекта, вы сможете проверить код, но соответствие шаблона в запросе webhook не удастся.
Просто измените свой URL-адрес репо на все строчные буквы вместо CamelCase, и соответствие шаблону должно найти ваш проект.