目前,在.net网站上点击按钮后,我会触发多个带参数的作业。然后由匿名用户启动该作业。
这是触发工作的代码:
protected void Btn_Click(object sender, EventArgs e)
{
string userName = txtUser.Text;
string password = txtPassword.Text;
userName = Base64Util.Base64Encode(userName);
password = Base64Util.Base64Encode(password);
string url = Constants.build_jenkins_url + "/job/BUILD1/buildWithParameters?token=authtoken&Checkpoint=" + checkpointInput.Text + "&Git files=false" + "&SHA=None" + "&Build CST=true" + "&CST name=" + CSTNameInput.Text + "&Clean build=true" + "&Run sequences=false&user=" + userName + "&passwd=" + password;
HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(url);
webRequest.Method = "POST";
HttpWebResponse resp = (HttpWebResponse)webRequest.GetResponse();
Response.Redirect(Constants.build_jenkins_url, "_blank", "fullscreen=1,menubar=yes,toolbar=yes,scrollbars=yes,status=yes,titlebar=yes");
}
我想用用户凭据触发作业。在那种情况下,詹金斯会告诉我,谁开始了詹金斯的工作。你们有任何想法如何实现这个目标吗?
答案 0 :(得分:0)
查看有关HttpWebRequest.Credentials的信息。
答案 1 :(得分:0)
设置基本身份验证,它将起作用:
URL urldemo = new URL(buildUrl);
URLConnection yc = urldemo.openConnection();
String userpass = userName + ":" + password;
String basicAuth = "Basic " + javax.xml.bind.DatatypeConverter.printBase64Binary(userpass.getBytes());
yc.setRequestProperty ("Authorization", basicAuth);
BufferedReader in = new BufferedReader(new InputStreamReader(yc.getInputStream()));