Подтвердить что ты не робот

Дженкинс: "Триггер строит удаленно" с? Токеном не работает, когда используется стратегия авторизации матрицы

У меня возникла проблема с запуском сборки в Jenkins с включенной аутентификацией и вопросом, есть ли у кого-нибудь идеи.

У меня есть глобальная безопасность, настроенная для использования LDAP с "Стратегией авторизации на основе проектов". У пользователя "Анонимный пользователь" есть привилегия "Работa > Сборка", и никакие другие привилегии (в частности, у "Анонимного пользователя" НЕ есть "Общий > Чтение" ), так как я не хочу, чтобы все могли просматривать список рабочих мест и другую общую информацию).

Я хочу, чтобы автоматизированный script мог запускать сборку с помощью функции "Триггер сборки удаленно", где я указываю значение ?token=[token] в URL-адресе, и стандартная проверка подлинности должна быть обойдена, пока [token] соответствует той, которую я установил на странице "Настроить работу". Цель состоит в том, чтобы НЕ нужно предоставлять регулярное имя пользователя/пароль в запросе, но просто предоставить токен для этого конкретного задания.

Документация, похоже, указывает, что это должно работать:
https://wiki.jenkins-ci.org/display/JENKINS/Quick+and+Simple+Security

В частности, я ожидаю, что этот HTTP-запрос будет работать:

curl -i https://jenkinsHost/job/ProjectName/build?token=test

Но я получаю:

[~]$ curl -i https://jenkinsHost/job/ProjectName/build?token=test
HTTP/1.1 403 Forbidden
Date: Sat, 27 Apr 2013 23:17:03 GMT
Server: Winstone Servlet Engine v0.9.10
Content-Type: text/html;charset=UTF-8
Content-Length: 629
X-Powered-By: Servlet/2.5 (Winstone/0.9.10)
Set-Cookie: JSESSIONID.e9bc4765=e1f0a30b9f04b3740bae527a7822b2d5; Path=/; HttpOnly
Connection: close

<html><head><meta http-equiv='refresh' content='1;url=/login?from=%2Fjob%2FProjectName%2Fbuild%3Ftoken%3Dtest'/>
<script>
window.location.replace('/login?from=%2Fjob%2FProjectName%2Fbuild%3Ftoken%3Dtest');</script>
</head>
<body style='background-color:white; color:white;'>
Authentication required
</body></html>

Когда я использую API-аутентификацию, запрос работает:

curl --username "test_user:API_KEY" https://hostname/job/ProjectName/build?token=test

Но опять же, согласно документации, я думаю, что она должна обходить глобальную аутентификацию, если присутствует токен, и соответствует токенам проекта, которые я настраиваю. Почему это не работает? Какие еще данные/журналы можно предоставить?

4b9b3361

Ответ 1

Там есть новый плагин, который позволяет вам это делать, даже когда Дженкинс запрещает анонимный доступ для чтения:

Создайте корневой плагин Token

Использование:

$ curl 'http://jenkins/buildByToken/build?job=jobname&token=mytoken'
Scheduled.

Аналогично с buildWithParameters.

Ответ 2

Пример использования плагина "Build Authentic Token Root" с POST:

wget --post-data="job=MyJob&token=SECRET&MyParameter=hello" http://servername/jenkins/buildByToken/buildWithParameters

обратите внимание, что для этого задания необходимо активировать "Trigger Builds Remoteally" (с маркером авторизации "SECRET" )