如何在启用凭据的情况下在Jenkins上创建作业?

时间:2013-12-24 07:03:24

标签: c# build jenkins

我有代码在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中的网址上指定用户名和密码也不起作用。

1 个答案:

答案 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);