我正试图从C#触发Jenkins构建,使用here.中的这个链接我试图从.NET调用一个参数化的Jenkins Job。
在Jenkins工作中,在“构建触发器”部分下,检查“远程构建触发器(例如,从脚本)”,并提供身份验证令牌,如
在我的C#代码中,我被要求提供用户名和API令牌来调用Jenkins构建。 (_username,_apiToken从下面开始)
private static HttpWebRequest CreateHttpRequest(string URLName)
{
//Creating HTTP web request
var httpWebRequest = (HttpWebRequest)WebRequest.Create(URLName);
httpWebRequest.ContentType = "application/x-www-form-urlencoded";
httpWebRequest.Method = "POST";
byte[] credentialBuffer =
new UTF8Encoding().GetBytes(
_username + ":" +
_apiToken);
httpWebRequest.Headers["Authorization"] =
"Basic " + Convert.ToBase64String(credentialBuffer);
httpWebRequest.PreAuthenticate = true;
return httpWebRequest;
}
这个API令牌,我通过导航到[Jenkins服务器URL] / me / configure从Jenkins服务器获取它,我在我的代码中提供了这个。
现在,当我尝试调用启用了此远程构建触发器的此Jenkins作业时,我通过代码获取Forbidden / Not found错误。当我尝试使用API令牌手动导航该URl时,它会显示无效令牌。这可能是因为我之前提到的“身份验证令牌”吗?
我问这个,因为如果我取消选中该选项并从代码中调用Jenkins Job,则根本没有问题。
答案 0 :(得分:1)
位于 jenkins / me / configure 中的API令牌是您在对Jenkins API进行REST调用时使用的身份验证,如工具提示中所述:
此API令牌可用于在REST API调用中对自己进行身份验证。
Authenticiation Token是一种提供速记URL的方法,以便您可以轻松触发构建,如工具提示中所述:
如果您希望通过访问特殊的预定义URL(方便脚本)来触发新版本,请启用此选项。
如果您通过REST调用Jenkins,则无需使用Authenticiation Token,但是您需要使用您的API令牌作为发出请求的身份进行身份验证。