mirror of
https://github.com/jenkinsci/jenkins.git
synced 2026-11-11 11:06:25 +00:00
Merge commit '8af1559861e8c96a1472954a8721a01be439577a'
This commit is contained in:
commit
e5f9cfda14
20 files changed
+102
-41
No files matched your search
+21
-7
@@ -56,17 +56,32 @@ Upcoming changes</a>
|
||||
<div id="trunk" style="display:none"><!--=TRUNK-BEGIN=-->
|
||||
<ul class=image>
|
||||
<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>)
|
||||
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.436>What's new in 1.436</a> <!--=DATE=--></h3>
|
||||
<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><!--=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>
|
||||
|
||||
+1
-1
@@ -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>
|
||||
|
||||
+1
-1
@@ -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 />
|
||||
|
||||
|
||||
Vendored
+6
@@ -1,3 +1,9 @@
|
||||
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.
|
||||
|
||||
+11
-1
@@ -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>
|
||||
|
||||
+6
-6
@@ -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>
|
||||
|
||||
+1
-1
@@ -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() {
|
||||
|
||||
+3
-2
@@ -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) {
|
||||
|
||||
Reference in new issue
Block a user