提交 e5f9cfda 编写于 作者: I imod

Merge commit '8af15598'

......@@ -55,18 +55,33 @@ Upcoming changes</a>
<!-- Record your changes in the trunk here. -->
<div id="trunk" style="display:none"><!--=TRUNK-BEGIN=-->
<ul class=image>
<li class=bug>
Repeated ids, expandTextArea() and multiple "Invoke Ant" build steps.
(<a href="https://issues.jenkins-ci.org/browse/JENKINS-10989">issue 10989</a>)
</ul>
</div><!--=TRUNK-END=-->
<!-- these changes are controlled by the release process. DO NOT MODIFY -->
<div id="rc" style="display:none;"><!--=BEGIN=-->
<h3><a name=v1.437>What's new in 1.437</a> <!--=DATE=--></h3>
<ul class=image>
<li class=rfe>
Added MIME headers with job name and build result to notification emails.
<li class=bug>
"Changes" in Build Summary broken in IE standard mode since 1.434
(<a href="https://issues.jenkins-ci.org/browse/JENKINS-11383">issue 11383</a>)
<li class=bug>
GET request to configSubmit wipes some configuration
(<a href="https://issues.jenkins-ci.org/browse/JENKINS-11397">issue 11397</a>, <a href="https://issues.jenkins-ci.org/browse/JENKINS-7847">issue 7847</a>)
<li class=bug>
Jenkins logo headless when server is starting.
(<a href="https://issues.jenkins-ci.org/browse/JENKINS-11444">issue 11444</a>)
<li class=rfe>
Allow update center CA certificates to be placed in $JENKINS_HOME/update-center-rootCAs
</ul>
</div><!--=TRUNK-END=-->
<!-- these changes are controlled by the release process. DO NOT MODIFY -->
<div id="rc" style="display:none;"><!--=BEGIN=-->
<h3><a name=v1.436>What's new in 1.436</a> <!--=DATE=--></h3>
</div><!--=END=-->
<h3><a name=v1.436>What's new in 1.436</a> (2011/10/23)</h3>
<ul class=image>
<li class=bug>
Fixed a plugin boot problem that causes Jenkins to startup gracefully when some optional plugin dependencies aren't met (such as ivy to nant)
......@@ -89,7 +104,6 @@ Upcoming changes</a>
Added hyperlinks to build trigger console messages.
(<a href="https://github.com/jenkinsci/jenkins/pull/291">pull #291</a>)
</ul>
</div><!--=END=-->
<h3><a name=v1.435>What's new in 1.435</a> (2011/10/17)</h3>
<ul class=image>
<li class=bug>
......
......@@ -5,7 +5,7 @@
<parent>
<artifactId>pom</artifactId>
<groupId>org.jenkins-ci.main</groupId>
<version>1.437-SNAPSHOT</version>
<version>1.438-SNAPSHOT</version>
</parent>
<artifactId>cli</artifactId>
......
......@@ -29,7 +29,7 @@ THE SOFTWARE.
<parent>
<groupId>org.jenkins-ci.main</groupId>
<artifactId>pom</artifactId>
<version>1.437-SNAPSHOT</version>
<version>1.438-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
......
......@@ -39,6 +39,7 @@ import org.kohsuke.MetaInfServices;
* @author Kohsuke Kawaguchi
*/
@MetaInfServices
@SuppressWarnings("rawtypes")
public class AbstractProjectOptionHandler extends OptionHandler<AbstractProject> {
public AbstractProjectOptionHandler(CmdLineParser parser, OptionDef option, Setter<AbstractProject> setter) {
super(parser, option, setter);
......@@ -53,7 +54,7 @@ public class AbstractProjectOptionHandler extends OptionHandler<AbstractProject>
if (s==null) {
AbstractProject nearest = AbstractProject.findNearest(src);
if (nearest!=null)
throw new CmdLineException(owner, "No such job '"+src+"' perhaps you meant "+ nearest +"?");
throw new CmdLineException(owner, "No such job '"+src+"' perhaps you meant '"+ nearest.getFullName() +"'?");
else
throw new CmdLineException(owner, "No such job '"+src+"'");
}
......
......@@ -23,13 +23,20 @@ public class TopLevelItemOptionHandler extends OptionHandler<TopLevelItem> {
}
@Override
@SuppressWarnings("rawtypes")
public int parseArguments(Parameters params) throws CmdLineException {
Jenkins h = Jenkins.getInstance();
String src = params.getParameter(0);
TopLevelItem s = h.getItem(src);
if (s==null)
throw new CmdLineException(owner, "No such job '"+src+"' perhaps you meant "+ AbstractProject.findNearest(src)+"?");
if (s==null) {
AbstractProject nearest = AbstractProject.findNearest(src);
if (nearest!=null)
throw new CmdLineException(owner, "No such job '"+src+"' perhaps you meant '"+ nearest.getFullName() +"'?");
else
throw new CmdLineException(owner, "No such job '"+src+"'");
}
setter.addValue(s);
return 1;
}
......
......@@ -28,7 +28,6 @@
package hudson.model;
import hudson.Functions;
import java.util.regex.Pattern;
import antlr.ANTLRException;
import hudson.AbortException;
import hudson.CopyOnWrite;
......@@ -124,6 +123,7 @@ import static javax.servlet.http.HttpServletResponse.*;
* @author Kohsuke Kawaguchi
* @see AbstractBuild
*/
@SuppressWarnings("rawtypes")
public abstract class AbstractProject<P extends AbstractProject<P,R>,R extends AbstractBuild<P,R>> extends Job<P,R> implements BuildableItem {
/**
......@@ -780,6 +780,7 @@ public abstract class AbstractProject<P extends AbstractProject<P,R>,R extends A
* For the convenience of the caller, this collection can contain null, and those will be silently ignored.
* @since 1.383
*/
@SuppressWarnings("unchecked")
public Future<R> scheduleBuild2(int quietPeriod, Cause c, Collection<? extends Action> actions) {
if (!isBuildable())
return null;
......@@ -829,6 +830,7 @@ public abstract class AbstractProject<P extends AbstractProject<P,R>,R extends A
* Production code shouldn't be using this, but for tests this is very convenient, so this isn't marked
* as deprecated.
*/
@SuppressWarnings("deprecation")
public Future<R> scheduleBuild2(int quietPeriod) {
return scheduleBuild2(quietPeriod, new LegacyCodeCause());
}
......@@ -1419,6 +1421,7 @@ public abstract class AbstractProject<P extends AbstractProject<P,R>,R extends A
}
}
@SuppressWarnings("unchecked")
public synchronized Map<TriggerDescriptor,Trigger> getTriggers() {
return (Map)Descriptor.toMap(triggers);
}
......@@ -1941,14 +1944,13 @@ public abstract class AbstractProject<P extends AbstractProject<P,R>,R extends A
*/
static class AutoCompleteSeeder {
private String source;
private Pattern quoteMatcher = Pattern.compile("(\\\"?)(.+?)(\\\"?+)(\\s*)");
AutoCompleteSeeder(String source) {
this.source = source;
}
List<String> getSeeds() {
ArrayList<String> terms = new ArrayList();
ArrayList<String> terms = new ArrayList<String>();
boolean trailingQuote = source.endsWith("\"");
boolean leadingQuote = source.startsWith("\"");
boolean trailingSpace = source.endsWith(" ");
......
......@@ -34,7 +34,7 @@ import hudson.Extension;
public class ManageJenkinsAction implements RootAction {
public String getIconFileName() {
if (Hudson.getInstance().hasPermission(Hudson.ADMINISTER))
return "setting.gif";
return "setting.png";
else
return null;
}
......
......@@ -51,6 +51,7 @@ import org.kohsuke.stapler.StaplerResponse;
import javax.servlet.ServletContext;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.Writer;
......@@ -196,12 +197,25 @@ public class UpdateSite {
certs.add(c);
}
// all default root CAs in JVM are trusted, plus certs bundled in Jenkins
// if we trust default root CAs, we end up trusting anyone who has a valid certificate,
// which isn't useful at all
Set<TrustAnchor> anchors = new HashSet<TrustAnchor>(); // CertificateUtil.getDefaultRootCAs();
ServletContext context = Jenkins.getInstance().servletContext;
for (String cert : (Set<String>) context.getResourcePaths("/WEB-INF/update-center-rootCAs")) {
Jenkins j = Jenkins.getInstance();
for (String cert : (Set<String>) j.servletContext.getResourcePaths("/WEB-INF/update-center-rootCAs")) {
if (cert.endsWith(".txt")) continue; // skip text files that are meant to be documentation
anchors.add(new TrustAnchor((X509Certificate)cf.generateCertificate(context.getResourceAsStream(cert)),null));
anchors.add(new TrustAnchor((X509Certificate)cf.generateCertificate(j.servletContext.getResourceAsStream(cert)),null));
}
File[] cas = new File(j.root, "update-center-rootCAs").listFiles();
if (cas!=null) {
for (File cert : cas) {
if (cert.getName().endsWith(".txt")) continue; // skip text files that are meant to be documentation
FileInputStream in = new FileInputStream(cert);
try {
anchors.add(new TrustAnchor((X509Certificate)cf.generateCertificate(in),null));
} finally {
in.close();
}
}
}
CertificateUtil.validatePath(certs,anchors);
}
......
......@@ -305,6 +305,8 @@ public class MailSender {
MimeMessage msg = new MimeMessage(Mailer.descriptor().createSession());
// TODO: I'd like to put the URL to the page in here,
// but how do I obtain that?
msg.addHeader("X-Jenkins-Job", build.getProject().getDisplayName());
msg.addHeader("X-Jenkins-Result", build.getResult().toString());
msg.setContent("", "text/plain");
msg.setFrom(new InternetAddress(Mailer.descriptor().getAdminAddress()));
msg.setSentDate(new Date());
......
......@@ -235,7 +235,7 @@ THE SOFTWARE.
<tr>
<td id="side-panel" width="20%">
<div style="margin-left: 20px; margin-right: 20px; border-top: 1px solid #bbb"></div>
<div id="navigation">
<div id="navigation" style="min-height: 323px; height: auto !important; height: 323px;">
<j:set var="mode" value="side-panel" />
<d:invokeBody />
......
jenkins (1.436) unstable; urgency=low
* See http://jenkins-ci.org/changelog for more details.
-- Kohsuke Kawaguchi <kk@kohsuke.org> Sun, 23 Oct 2011 22:30:51 -0700
jenkins (1.435) unstable; urgency=low
* See http://jenkins-ci.org/changelog for more details.
......
......@@ -29,7 +29,7 @@ THE SOFTWARE.
<parent>
<groupId>org.jenkins-ci.main</groupId>
<artifactId>pom</artifactId>
<version>1.437-SNAPSHOT</version>
<version>1.438-SNAPSHOT</version>
</parent>
<artifactId>maven-plugin</artifactId>
......@@ -58,6 +58,11 @@ THE SOFTWARE.
<artifactId>slf4j-api</artifactId>
<version>${slf4jVersion}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>${slf4jVersion}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-nop</artifactId>
......@@ -68,6 +73,11 @@ THE SOFTWARE.
<artifactId>slf4j-jdk14</artifactId>
<version>${slf4jVersion}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>${slf4jVersion}</version>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
......
......@@ -10,7 +10,7 @@
<groupId>org.jenkins-ci.plugins</groupId>
<artifactId>plugin</artifactId>
<name>Jenkins plugin POM</name>
<version>1.437-SNAPSHOT</version>
<version>1.438-SNAPSHOT</version>
<packaging>pom</packaging>
<!--
......@@ -33,7 +33,7 @@
<dependency><!-- if a plugin wants to depend on the maven plugin, choose the right version automatically -->
<groupId>org.jenkins-ci.main</groupId>
<artifactId>maven-plugin</artifactId>
<version>1.437-SNAPSHOT</version>
<version>1.438-SNAPSHOT</version>
</dependency>
</dependencies>
</dependencyManagement>
......@@ -43,25 +43,25 @@
<groupId>org.jenkins-ci.main</groupId>
<artifactId>jenkins-war</artifactId>
<type>war</type>
<version>1.437-SNAPSHOT</version>
<version>1.438-SNAPSHOT</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.jenkins-ci.main</groupId>
<artifactId>jenkins-core</artifactId>
<version>1.437-SNAPSHOT</version>
<version>1.438-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.jenkins-ci.main</groupId>
<artifactId>jenkins-test-harness</artifactId>
<version>1.437-SNAPSHOT</version>
<version>1.438-SNAPSHOT</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.jenkins-ci.main</groupId>
<artifactId>ui-samples-plugin</artifactId>
<version>1.437-SNAPSHOT</version>
<version>1.438-SNAPSHOT</version>
<scope>test</scope>
</dependency>
<dependency>
......
......@@ -33,7 +33,7 @@ THE SOFTWARE.
<groupId>org.jenkins-ci.main</groupId>
<artifactId>pom</artifactId>
<version>1.437-SNAPSHOT</version>
<version>1.438-SNAPSHOT</version>
<packaging>pom</packaging>
<name>Jenkins main module</name>
......
......@@ -29,7 +29,7 @@ THE SOFTWARE.
<parent>
<artifactId>pom</artifactId>
<groupId>org.jenkins-ci.main</groupId>
<version>1.437-SNAPSHOT</version>
<version>1.438-SNAPSHOT</version>
</parent>
<groupId>org.jenkins-ci.main</groupId>
<artifactId>jenkins-test-harness</artifactId>
......
......@@ -29,7 +29,7 @@ THE SOFTWARE.
<parent>
<groupId>org.jenkins-ci.main</groupId>
<artifactId>pom</artifactId>
<version>1.437-SNAPSHOT</version>
<version>1.438-SNAPSHOT</version>
</parent>
<artifactId>ui-samples-plugin</artifactId>
......
......@@ -13,7 +13,7 @@ import java.util.List;
@Extension
public class Root implements RootAction {
public String getIconFileName() {
return "gear.gif";
return "gear.png";
}
public String getDisplayName() {
......
......@@ -20,7 +20,7 @@ import static org.apache.commons.io.IOUtils.copy;
*/
public abstract class UISample implements ExtensionPoint, Action, Describable<UISample> {
public String getIconFileName() {
return "gear.gif";
return "gear.png";
}
public String getUrlName() {
......
......@@ -28,7 +28,7 @@ THE SOFTWARE.
<parent>
<groupId>org.jenkins-ci.main</groupId>
<artifactId>pom</artifactId>
<version>1.437-SNAPSHOT</version>
<version>1.438-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
......@@ -368,7 +368,8 @@ THE SOFTWARE.
<name>hudson.bundled.plugins</name>
<value>
${basedir}/../maven-plugin/target/test-classes/the.hpl,
${basedir}/../ui-samples-plugin/target/test-classes/the.hpl
${basedir}/../ui-samples-plugin/target/test-classes/the.hpl,
${project.build.directory}/${project.build.finalName}/WEB-INF/plugins/javadoc.hpi
</value>
</systemProperty>
<systemProperty>
......
......@@ -926,6 +926,7 @@ var hudsonRules = {
updateVisibility : function() {
var display = (this.outerVisible && this.innerVisible) ? "" : "none";
for (var e=this.start; e!=this.end; e=e.nextSibling) {
if (e.nodeType!=1) continue;
if (e.rowVisibilityGroup && e!=this.start) {
e.rowVisibilityGroup.makeOuterVisisble(this.innerVisible);
e = e.rowVisibilityGroup.end; // the above call updates visibility up to e.rowVisibilityGroup.end inclusive
......@@ -1280,7 +1281,7 @@ function applyNameRef(s,e,id) {
// s contains the node itself
for(var x=s.nextSibling; x!=e; x=x.nextSibling) {
// to handle nested <f:rowSet> correctly, don't overwrite the existing value
if(x.getAttribute("nameRef")==null)
if(x.nodeType==1 && x.getAttribute("nameRef")==null)
x.setAttribute("nameRef",id);
}
}
......@@ -1412,16 +1413,19 @@ function scrollIntoView(e) {
// used in expandableTextbox.jelly to change a input field into a text area
function expandTextArea(button,id) {
button.style.display="none";
var field = document.getElementById(id);
var field = button.parentNode.previousSibling.children[0];
var value = field.value.replace(/ +/g,'\n');
var n = field;
while(n.tagName!="TABLE")
var n = button;
while (n.tagName != "TABLE")
{
n = n.parentNode;
n.parentNode.innerHTML =
}
n.parentNode.innerHTML =
"<textarea rows=8 class='setting-input' name='"+field.name+"'>"+value+"</textarea>";
}
// refresh a part of the HTML specified by the given ID,
// by using the contents fetched from the given URL.
function refreshPart(id,url) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册