我有代码在Jenkins上创建/更新作业而没有启用凭据。
const string FORMAT = "http://{0}:{1}/createItem?name={2}";
var path =
string.Format(
FORMAT,
this.config.JenkinsServer,
this.config.JenkinsPort,
buildName);
this.http.UploadString(
path,
definition,
new Header(HttpRequestHeader.ContentType, "text/xml"));
现在,我希望通过启用凭据向前移动一步,并在创建新作业时指定用户名/密码。我发现an article about Authenticating scripted clients on Jenkins但是C#中没有代码示例,也无法弄清楚如何做到这一点。
如何在启用凭据的情况下在Jenkins上创建/更新作业?
[UPDATE] 在this link中的网址上指定用户名和密码也不起作用。
答案 0 :(得分:4)
您可以使用基于用户的AUTHTOKEN对Jenkins进行身份验证。 通过转到您的用户配置页获取令牌。
的http:// {JENKINS.HOST} /用户/ {YOUR.USERNAME} /配置
然后单击“显示API令牌”按钮,它将显示一个GUID作为AuthToken,然后您可以使用以下内容。
string password = "5agbe1d6f774634169e9ba4625559bc83f"; // AKA the Jenkins AuthToken
string userName = "YOUR.USERNAME"; // AKA your Jenkins userID
var webClient = new System.Net.WebClient();
// Create a basic auth token from a username and password seperated by a colon then base 64encoded
string basicAuthToken = Convert.ToBase64String(Encoding.Default.GetBytes(userName + ":" + password));
webClient.Headers["Authorization"] = "Basic " + basicAuthToken;
return client.UploadString(path, definition, headers);