无法从普通 JavaScript 访问 Jenkins API
Not Able To Access Jenkins API From Plain JavaScript
我是 API 和 JavaScript 的新手,所以我不确定我在这里做错了什么,请在下面找到我遇到的问题的详细信息面对
Objective - 在网页上获取 Jenkins 详细信息
作为我的 objective 的一部分,我正在尝试制作一个网页,从中我可以触发 Jenkins 作业并获取网页上显示的构建信息。作为 objective 的一部分,我想通过我网页上的按钮触发 Jenkins 作业。
问题 -
我创建了以下脚本来执行操作 -
<script>
function RunJenkinsJob() {
var xhr = new XMLHttpRequest();
xhr.open("POST", http://admin:114a2eae5e09d93b6ee831f248892ac581@localhost:8080/job/New_Test/build?token=Datacreation, true);
xhr.setRequestHeader('Content-Type', 'application/json');
}));
}
</script>
<head>
<style>body{background-color:#d0e4fe;}h1{color:orange;text-align:center;}p{font-family:"Times New Roman";font-size:20px;}</style>
</head>
<body>
<h1>Check Jenkins Job Build</h1>
<button type="button" onclick="RunJenkinsJob();"> Run Jenkins Job! </button>
</body>
</html>
然而,当我尝试单击此按钮时,没有任何反应,在直接从浏览器访问此 URL 时,我被要求提供用户名和密码,然后在刷新新版本后自动触发。
问题
如何在此 JavaScript 方法中为 Jenkins 提供身份验证,以便在单击按钮时可以触发新作业,并且如果我可以获得一些关于如何提取有关构建的信息的指示,那也将很有用。
系统详细信息
OS - Windows
詹金斯版本 - 2.235.1
-- 更新 1 -
请在下面找到更新的详细信息 -
<!DOCTYPE html>
<html>
<script>
function RunJenkinsJob() {
var xhr = new XMLHttpRequest();
xhr.open("POST", "http://admin:114a2eae5e09d93b6ee831f248892ac581@localhost:8080/job/New_Test/build?token=Datacreation", true);
xhr.setRequestHeader('Content-Type', 'application/json');
xhr.send();
document.write(xhr.status);
}
</script>
<head>
<style>body{background-color:#d0e4fe;}h1{color:orange;text-align:center;}p{font-family:"Times New Roman";font-size:20px;}</style>
</head>
<body>
<h1>Check Jenkins Job Build</h1>
<button type="button" onclick="RunJenkinsJob();"> Run Jenkins Job! </button>
</body>
</html>
以下代码对我有用。
将其放入您的 运行 詹金斯工作职能中。如果它循环通过所有 4 个状态更改和它收到的状态,这将有助于调试。
var xhr = new XMLHttprequest();
var authorizationbasic = window.btoa("username:token");
xhr.onreadystatechange = function() {
if(this.readyState == 4)
{
console.log(this.status);
}
};
xhr.open("POST", "http://admin:114a2eae5e09d93b6ee831f248892ac581@localhost:8080/job/New_Test/build?token=Datacreation", true);
xhr.setRequestHeader('Authorization','Basic ' + authorizationbasic)
xhr.send();
如果您的状态仍然为 0,那么您可以检查 jenkins 安装中的 CORS Filter
设置。
我是 API 和 JavaScript 的新手,所以我不确定我在这里做错了什么,请在下面找到我遇到的问题的详细信息面对
Objective - 在网页上获取 Jenkins 详细信息
作为我的 objective 的一部分,我正在尝试制作一个网页,从中我可以触发 Jenkins 作业并获取网页上显示的构建信息。作为 objective 的一部分,我想通过我网页上的按钮触发 Jenkins 作业。
问题 - 我创建了以下脚本来执行操作 -
<script>
function RunJenkinsJob() {
var xhr = new XMLHttpRequest();
xhr.open("POST", http://admin:114a2eae5e09d93b6ee831f248892ac581@localhost:8080/job/New_Test/build?token=Datacreation, true);
xhr.setRequestHeader('Content-Type', 'application/json');
}));
}
</script>
<head>
<style>body{background-color:#d0e4fe;}h1{color:orange;text-align:center;}p{font-family:"Times New Roman";font-size:20px;}</style>
</head>
<body>
<h1>Check Jenkins Job Build</h1>
<button type="button" onclick="RunJenkinsJob();"> Run Jenkins Job! </button>
</body>
</html>
然而,当我尝试单击此按钮时,没有任何反应,在直接从浏览器访问此 URL 时,我被要求提供用户名和密码,然后在刷新新版本后自动触发。
问题
如何在此 JavaScript 方法中为 Jenkins 提供身份验证,以便在单击按钮时可以触发新作业,并且如果我可以获得一些关于如何提取有关构建的信息的指示,那也将很有用。
系统详细信息 OS - Windows 詹金斯版本 - 2.235.1
-- 更新 1 -
请在下面找到更新的详细信息 -
<!DOCTYPE html>
<html>
<script>
function RunJenkinsJob() {
var xhr = new XMLHttpRequest();
xhr.open("POST", "http://admin:114a2eae5e09d93b6ee831f248892ac581@localhost:8080/job/New_Test/build?token=Datacreation", true);
xhr.setRequestHeader('Content-Type', 'application/json');
xhr.send();
document.write(xhr.status);
}
</script>
<head>
<style>body{background-color:#d0e4fe;}h1{color:orange;text-align:center;}p{font-family:"Times New Roman";font-size:20px;}</style>
</head>
<body>
<h1>Check Jenkins Job Build</h1>
<button type="button" onclick="RunJenkinsJob();"> Run Jenkins Job! </button>
</body>
</html>
以下代码对我有用。
将其放入您的 运行 詹金斯工作职能中。如果它循环通过所有 4 个状态更改和它收到的状态,这将有助于调试。
var xhr = new XMLHttprequest();
var authorizationbasic = window.btoa("username:token");
xhr.onreadystatechange = function() {
if(this.readyState == 4)
{
console.log(this.status);
}
};
xhr.open("POST", "http://admin:114a2eae5e09d93b6ee831f248892ac581@localhost:8080/job/New_Test/build?token=Datacreation", true);
xhr.setRequestHeader('Authorization','Basic ' + authorizationbasic)
xhr.send();
如果您的状态仍然为 0,那么您可以检查 jenkins 安装中的 CORS Filter
设置。