Ниже приведены шаги, которые мы выполняем для вызова Jenkins REST API из кода, будь то Javascript / Java.
- Войдите на сервер Jenkins с помощью единого входа или Вход в Jenkins (В вашем случае ваша AD будет аутентифицировать вас и переместит вас на домашнюю страницу)
- После входа в систему go для управления пользователями
- В управлении пользователями, либо для Выбранный пользователь или для супер администратора, мы должны выбрать настройки, которые переходят на страницу сведений о пользователе. Обычно у нас есть пользователь-администратор, для которого мы настраиваем токены.
- На этой странице мы должны предоставить имя токена и сгенерировать новый токен.
- Этот токен необходимо скопировать и поместите его в безопасное место
- После этого сохраните профиль
Теперь из кода javascript / java используйте формат токена usename: token и получите строка base64 этого значения. Пример java фрагмент кода приведен ниже
String secureToken = Base64.getEncoder (). EncodeToString ((user + ":" + key) .getBytes ());
После этого установите secureToken
в заголовке Authorization
, как показано ниже для Java
httpGet.setHeader (HttpHeaders.AUTHORIZATION, "Basi c" + secureToken);
Теперь с помощью этого подхода вы можете выполнять вызовы API-интерфейса Jenkins REST, например, получать статистику сборки, запускать сборку et c.
Я соберу несколько полезных ссылок от Дженкинса и пост для дальнейшего чтения, потому что токены безопасности должны быть безопасно использованы, и их нужно повернуть через некоторое время по соображениям безопасности (поскольку это сделает этот пост очень длинным, я пропускаю эти пункты здесь).
У меня есть ссылки ниже, которые дадут более подробную информацию
https://wiki.jenkins.io/display/JENKINS/Remote+access+API
https://www.decodingdevops.com/jenkins-authentication-token-jenkins-rest-api/
Кроме того, я получил этот код, который мы долго использовали для node.js, чтобы поговорить с Дженкинсом, надеюсь, что это может быть полезно для вас
const options = {
hostname: process.env.JENKINS_HOST,
port: process.env.JENKINS_PORT,
path: `${jenkinsBuildUrl}?param1=${param1}¶m2=${params.Key}&operation=${operation}`,
method: "POST",
headers: {
'Authorization': 'Basic '+ Buffer.from('admin'+':'+process.env.AUTH_TOKEN).toString('base64')
}
};
const jr = https.request(options, jres => {
jres.on("data", chunk => {
console.log(`BODY: ${chunk}`);
});
jres.on("end", () => {
console.log("Request completed with no data.");
});
});
jr.on("error", e => {
console.log(
`Something went wrong when triggering the build in Jenkins Server in the current request: ${e.message}`
);
});
jr.end();
HTH