POST-хук на Bitbucket - PullRequest
       27

POST-хук на Bitbucket

12 голосов
/ 28 февраля 2012

Как использовать URL-адрес POST в bitbucket для частного Jenkins?

У меня возникли проблемы с bitbucket и их пост-фиксацией.

Описание:

http://username:password@myjenkins.instance/job/myproject/build?token=mytoken

У меня есть экземпляр jenkins, который я хотел бы активировать при нажатии на определенные репозитории. Поскольку jenkins доступен извне (всемирная паутина), он защищен через типичную систему пользователя / пароля.

При работе с Github я могу определить имя пользователя и пароль непосредственно в URL. При проверке журналов nginx становится ясно, что github может преобразовать этот URL для входа в систему пользователя. Bitbucket нет.

Вот несколько журналов nginx, показывающих проблему.

Журналы сообщений Bitbucket:

- - "POST /job/myproject/build?token=mytoken HTTP/1.1" 403 216 "-" "Bitbucket.org"

Интересная часть - ошибка 403. В доступе отказано.

Те же журналы для почтового хука Github :

- github - "POST /job/myproject/build?token=mytoken HTTP/1.1" 302 0 "-" "-"

Как показывают логи, github - это имя пользователя, которого я создал, с хорошими правами для запуска сборок.

Что я могу сделать, чтобы включить перехват сообщений?

Ответы [ 2 ]

11 голосов
/ 30 августа 2013

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

  • Используйте крюк POST
  • Используйте крючок Дженкинса

Оба используют API Jenkins для запуска задания.

Для перехвата POST вам, в основном, нужно построить URL следующим образом:

https://USER:APITOKEN@JENKINS_URL/job/JOBNAME/build?token=TOKEN

где:

  • ПОЛЬЗОВАТЕЛЬ : пользователь Jenkins, который будет запускать задание
  • APITOKEN : это токен, связанный с этим пользователем, разрешающий использование API, его можно получить на странице конфигурации пользователя в Jenkins
  • JENKINS_URL : адрес вашего сервера jenkins
  • JOBNAME : название работы
  • TOKEN : токен, связанный с заданием, необходимо добавить его на странице конфигурации задания (включить удаленные триггеры)

Крутая вещь в этом - то, что вы можете проверить, работает ли он, просто используя curl из консоли.

Также обратите внимание, что в URL нет пароля, вместо этого у вас есть API TOKEN, чтобы избежать публикации вашего имени пользователя и пароля. Что-то еще, что вы можете сделать, чтобы немного улучшить безопасность, если у вас есть права администратора на сервере Jenkins, создайте нового пользователя с правами доступа только для чтения и создания заданий и используйте его только для этого. Поэтому вам не нужно публиковать свой собственный пользователя и токен, которые могут иметь права администратора.

Хук Jenkins работает точно так же, создавая тот же URL для вас, но у вас нет возможности проверить его (например, с помощью curl).

Это основано на следующих документах:

Надеюсь, это поможет.

Ger

2 голосов
/ 28 мая 2013

Это на самом деле не отвечает на ваш вопрос, но предлагает другой подход.И bitbucket.org, и github.com поддерживают ssh-ключи.

См. " Настройка SSH для Git "

Важно настроить ssh-agent (объяснено встраницы), так как без этого вам будет предложено ввести пароль вместо имени пользователя и пароля.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...