diff --git a/Jenkinsfile b/Jenkinsfile
new file mode 100644
index 0000000000..e111ea504a
--- /dev/null
+++ b/Jenkinsfile
@@ -0,0 +1,191 @@
+#!groovy
+/*
+ * This Jenkinsfile is intended to run on https://ci.jenkins-ci.org and may fail anywhere else.
+ * It makes assumptions about plugins being installed, labels mapping to nodes that can build what is needed, etc.
+ *
+ * The required labels are "java" and "docker" - "java" would be any node that can run Java builds. It doesn't need
+ * to have Java installed, but some setups may have nodes that shouldn't have heavier builds running on them, so we
+ * make this explicit. "docker" would be any node with docker installed.
+ */
+
+// TEST FLAG - to make it easier to turn on/off unit tests for speeding up access to later stuff.
+def runTests = true
+
+// Only keep the 10 most recent builds.
+properties([[$class: 'jenkins.model.BuildDiscarderProperty', strategy: [$class: 'LogRotator',
+ numToKeepStr: '50',
+ artifactNumToKeepStr: '20']]])
+
+String packagingBranch = (binding.hasVariable('packagingBranch')) ? packagingBranch : 'master'
+
+timestampedNode('java') {
+
+ // First stage is actually checking out the source. Since we're using Multibranch
+ // currently, we can use "checkout scm".
+ stage "Checkout source"
+
+ checkout scm
+
+ // Now run the actual build.
+ stage "Build and test"
+
+ // We're wrapping this in a timeout - if it takes more than 180 minutes, kill it.
+ timeout(time: 180, unit: 'MINUTES') {
+ // See below for what this method does - we're passing an arbitrary environment
+ // variable to it so that JAVA_OPTS and MAVEN_OPTS are set correctly.
+ withMavenEnv(["JAVA_OPTS=-Xmx1536m -Xms512m -XX:MaxPermSize=1024m",
+ "MAVEN_OPTS=-Xmx1536m -Xms512m -XX:MaxPermSize=1024m"]) {
+ // Actually run Maven!
+ // The -Dmaven.repo.local=${pwd()}/.repository means that Maven will create a
+ // .repository directory at the root of the build (which it gets from the
+ // pwd() Workflow call) and use that for the local Maven repository.
+ sh "mvn -Pdebug -U clean install ${runTests ? '-Dmaven.test.failure.ignore=true -Dconcurrency=1' : '-DskipTests'} -V -B -Dmaven.repo.local=${pwd()}/.repository"
+ }
+ }
+
+ // Once we've built, archive the artifacts and the test results.
+ stage "Archive artifacts and test results"
+
+ step([$class: 'ArtifactArchiver', artifacts: '**/target/*.jar, **/target/*.war, **/target/*.hpi', fingerprint: true])
+ if (runTests) {
+ step([$class: 'JUnitResultArchiver', healthScaleFactor: 20.0, testResults: '**/target/surefire-reports/*.xml'])
+ }
+}
+
+def debFileName
+def rpmFileName
+def suseFileName
+
+// Run the packaging build on a node with the "docker" label.
+timestampedNode('docker') {
+ // First stage here is getting prepped for packaging.
+ stage "packaging - docker prep"
+
+ // Docker environment to build packagings
+ dir('packaging-docker') {
+ git branch: packagingBranch, url: 'https://github.com/jenkinsci/packaging.git'
+ sh 'docker build -t jenkins-packaging-builder:0.1 docker'
+ }
+
+ stage "packaging - actually packaging"
+ // Working packaging code, separate branch with fixes
+ dir('packaging') {
+ deleteDir()
+
+ docker.image("jenkins-packaging-builder:0.1").inside("-u root") {
+ git branch: packagingBranch, url: 'https://github.com/jenkinsci/packaging.git'
+
+ try {
+ // Saw issues with unstashing inside a container, and not sure copy artifact plugin would work here.
+ // So, simple wget.
+ sh "wget -q ${currentBuild.absoluteUrl}/artifact/war/target/jenkins.war"
+ sh "make clean deb rpm suse BRAND=./branding/jenkins.mk BUILDENV=./env/test.mk CREDENTIAL=./credentials/test.mk WAR=jenkins.war"
+ } catch (Exception e) {
+ error "Packaging failed: ${e}"
+ } finally {
+ // Needed to make sure the output of the build can be deleted by later runs.
+ // Hackish, yes, but rpm builds as a numeric UID only user fail, so...
+ sh "chmod -R a+w target || true"
+ sh "chmod a+w jenkins.war || true"
+ }
+ dir("target/debian") {
+ def debFilesFound = findFiles(glob: "*.deb")
+ if (debFilesFound.size() > 0) {
+ debFileName = debFilesFound[0]?.name
+ }
+ }
+
+ dir("target/rpm") {
+ def rpmFilesFound = findFiles(glob: "*.rpm")
+ if (rpmFilesFound.size() > 0) {
+ rpmFileName = rpmFilesFound[0]?.name
+ }
+ }
+
+ dir("target/suse") {
+ def suseFilesFound = findFiles(glob: "*.rpm")
+ if (suseFilesFound.size() > 0) {
+ suseFileName = suseFilesFound[0]?.name
+ }
+ }
+
+ step([$class: 'ArtifactArchiver', artifacts: 'target/**/*', fingerprint: true])
+
+ // Fail the build if we didn't find at least one of the packages, meaning they weren't built but
+ // somehow make didn't error out.
+ if (debFileName == null || rpmFileName == null || suseFileName == null) {
+ error "At least one of Debian, RPM or SuSE packages are missing, so failing the build."
+ }
+ }
+
+ }
+
+}
+
+stage "Package testing"
+
+if (runTests) {
+ if (!env.BRANCH_NAME.startsWith("PR")) {
+ // NOTE: As of now, a lot of package tests will fail. See https://issues.jenkins-ci.org/issues/?filter=15257 for
+ // possible open JIRAs.
+
+ // Basic parameters
+ String artifactName = (binding.hasVariable('artifactName')) ? artifactName : 'jenkins'
+ String jenkinsPort = (binding.hasVariable('jenkinsPort')) ? jenkinsPort : '8080'
+
+ // Set up
+ String debfile = "artifact://${env.JOB_NAME}/${env.BUILD_NUMBER}#target/debian/${debFileName}"
+ String rpmfile = "artifact://${env.JOB_NAME}/${env.BUILD_NUMBER}#target/rpm/${rpmFileName}"
+ String susefile = "artifact://${env.JOB_NAME}/${env.BUILD_NUMBER}#target/suse/${suseFileName}"
+
+ timestampedNode("docker") {
+ stage "Load Lib"
+ dir('workflowlib') {
+ deleteDir()
+ git branch: packagingBranch, url: 'https://github.com/jenkinsci/packaging.git'
+ flow = load 'workflow/installertest.groovy'
+ }
+ }
+ // Run the real tests within docker node label
+ flow.fetchAndRunJenkinsInstallerTest("docker", rpmfile, susefile, debfile,
+ packagingBranch, artifactName, jenkinsPort)
+ } else {
+ echo "Not running package testing against pull requests"
+ }
+} else {
+ echo "Skipping package tests"
+}
+
+
+// This method sets up the Maven and JDK tools, puts them in the environment along
+// with whatever other arbitrary environment variables we passed in, and runs the
+// body we passed in within that environment.
+void withMavenEnv(List envVars = [], def body) {
+ // The names here are currently hardcoded for my test environment. This needs
+ // to be made more flexible.
+ // Using the "tool" Workflow call automatically installs those tools on the
+ // node.
+ String mvntool = tool name: "mvn3.3.3", type: 'hudson.tasks.Maven$MavenInstallation'
+ String jdktool = tool name: "jdk8_51", type: 'hudson.model.JDK'
+
+ // Set JAVA_HOME, MAVEN_HOME and special PATH variables for the tools we're
+ // using.
+ List mvnEnv = ["PATH+MVN=${mvntool}/bin", "PATH+JDK=${jdktool}/bin", "JAVA_HOME=${jdktool}", "MAVEN_HOME=${mvntool}"]
+
+ // Add any additional environment variables.
+ mvnEnv.addAll(envVars)
+
+ // Invoke the body closure we're passed within the environment we've created.
+ withEnv(mvnEnv) {
+ body.call()
+ }
+}
+
+// Runs the given body within a Timestamper wrapper on the given label.
+def timestampedNode(String label, Closure body) {
+ node(label) {
+ wrap([$class: 'TimestamperBuildWrapper']) {
+ body.call()
+ }
+ }
+}
diff --git a/changelog.html b/changelog.html
index 910693ef0b..a88d49efae 100644
--- a/changelog.html
+++ b/changelog.html
@@ -56,10 +56,7 @@ Upcoming changes
-
- Plugin dependencies are now strictly enforced during Jenkins startup, to avoid cryptic errors later.
- You may use -Dhudson.PluginWrapper.dependenciesVersionCheck.enabled=false to revert to the old behavior.
- (issue 21486)
+
diff --git a/cli/pom.xml b/cli/pom.xml
index 0413c5811f..05a84a23cb 100644
--- a/cli/pom.xml
+++ b/cli/pom.xml
@@ -5,7 +5,7 @@
org.jenkins-ci.mainpom
- 1.657-SNAPSHOT
+ 2.0-rc-2-SNAPSHOTcli
diff --git a/core/pom.xml b/core/pom.xml
index 94ea432187..4f2c0216ff 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -29,7 +29,7 @@ THE SOFTWARE.
org.jenkins-ci.mainpom
- 1.657-SNAPSHOT
+ 2.0-rc-2-SNAPSHOTjenkins-core
@@ -41,7 +41,7 @@ THE SOFTWARE.
true1.2392.5.6.SEC03
- 1.8.9
+ 2.4.6
@@ -243,8 +243,8 @@ THE SOFTWARE.
javax.servlet
- servlet-api
- 2.4
+ javax.servlet-api
+ 3.1.0provided
@@ -411,13 +411,13 @@ THE SOFTWARE.
jlinejline
- 1.0
+ 2.12compileorg.fusesource.jansijansi
- 1.9
+ 1.11
-Code that monitors the health of slaves
+Code that monitors the health of agents
\ No newline at end of file
diff --git a/core/src/main/java/hudson/os/solaris/ZFSProvisioner.java b/core/src/main/java/hudson/os/solaris/ZFSProvisioner.java
index a2ba279f3b..bff594b227 100644
--- a/core/src/main/java/hudson/os/solaris/ZFSProvisioner.java
+++ b/core/src/main/java/hudson/os/solaris/ZFSProvisioner.java
@@ -59,7 +59,7 @@ public class ZFSProvisioner extends FileSystemProvisioner implements Serializabl
ZFSFileSystem fs = libzfs.getFileSystemByMountPoint(f);
if(fs!=null) return fs.getName();
- // TODO: for now, only support slaves that are already on ZFS.
+ // TODO: for now, only support agents that are already on ZFS.
throw new IOException("Not on ZFS");
}
});
diff --git a/core/src/main/java/hudson/scm/SCM.java b/core/src/main/java/hudson/scm/SCM.java
index e7597933d0..ce9d7a6762 100644
--- a/core/src/main/java/hudson/scm/SCM.java
+++ b/core/src/main/java/hudson/scm/SCM.java
@@ -152,7 +152,7 @@ public abstract class SCM implements Describable, ExtensionPoint {
*
*
* This flag affects the behavior of Hudson when a job lost its workspace
- * (typically due to a slave outage.) If this method returns false and
+ * (typically due to a agent outage.) If this method returns false and
* polling is configured, then that would immediately trigger a new build.
*
*
@@ -177,9 +177,9 @@ public abstract class SCM implements Describable, ExtensionPoint {
* Called before a workspace is deleted on the given node, to provide SCM an opportunity to perform clean up.
*
*
- * Hudson periodically scans through all the slaves and removes old workspaces that are deemed unnecessary.
+ * Hudson periodically scans through all the agents and removes old workspaces that are deemed unnecessary.
* This behavior is implemented in {@link WorkspaceCleanupThread}, and it is necessary to control the
- * disk consumption on slaves. If we don't do this, in a long run, all the slaves will have workspaces
+ * disk consumption on agents. If we don't do this, in a long run, all the agents will have workspaces
* for all the projects, which will be prohibitive in big Hudson.
*
*
@@ -191,7 +191,7 @@ public abstract class SCM implements Describable, ExtensionPoint {
* recursive directory deletion happens.
*
*
- * Note that this method does not guarantee that such a clean up will happen. For example, slaves can be
+ * Note that this method does not guarantee that such a clean up will happen. For example, agents can be
* taken offline by being physically removed from the network, and in such a case there's no opportunity
* to perform this clean up.
*
@@ -233,7 +233,7 @@ public abstract class SCM implements Describable, ExtensionPoint {
* Checks if there has been any changes to this module in the repository.
*
* TODO: we need to figure out a better way to communicate an error back,
- * so that we won't keep retrying the same node (for example a slave might be down.)
+ * so that we won't keep retrying the same node (for example an agent might be down.)
*
*
* If the SCM doesn't implement polling, have the {@link #supportsPolling()} method
diff --git a/core/src/main/java/hudson/security/FullControlOnceLoggedInAuthorizationStrategy.java b/core/src/main/java/hudson/security/FullControlOnceLoggedInAuthorizationStrategy.java
index 8b2239f2f4..bdebc0fca4 100644
--- a/core/src/main/java/hudson/security/FullControlOnceLoggedInAuthorizationStrategy.java
+++ b/core/src/main/java/hudson/security/FullControlOnceLoggedInAuthorizationStrategy.java
@@ -29,6 +29,7 @@ import jenkins.model.Jenkins;
import org.kohsuke.accmod.Restricted;
import org.kohsuke.accmod.restrictions.NoExternalUse;
import org.kohsuke.stapler.DataBoundConstructor;
+import org.kohsuke.stapler.DataBoundSetter;
import javax.inject.Inject;
import java.util.Collections;
@@ -36,30 +37,52 @@ import java.util.List;
/**
* {@link AuthorizationStrategy} that grants full-control to authenticated user
- * (other than anonymous users.)
+ * and optionally read access to anonymous users
*
* @author Kohsuke Kawaguchi
*/
public class FullControlOnceLoggedInAuthorizationStrategy extends AuthorizationStrategy {
+ /**
+ * Whether to allow anonymous read access, for backward compatibility
+ * default is to allow it
+ */
+ private boolean denyAnonymousReadAccess = false;
+
@DataBoundConstructor
public FullControlOnceLoggedInAuthorizationStrategy() {
}
@Override
public ACL getRootACL() {
- return THE_ACL;
+ return denyAnonymousReadAccess ? AUTHENTICATED_READ : ANONYMOUS_READ;
}
public List getGroups() {
return Collections.emptyList();
}
+
+ /**
+ * If true, anonymous read access will be allowed
+ */
+ public boolean isAllowAnonymousRead() {
+ return !denyAnonymousReadAccess;
+ }
+
+ @DataBoundSetter
+ public void setAllowAnonymousRead(boolean allowAnonymousRead) {
+ this.denyAnonymousReadAccess = !allowAnonymousRead;
+ }
- private static final SparseACL THE_ACL = new SparseACL(null);
+ private static final SparseACL AUTHENTICATED_READ = new SparseACL(null);
+ private static final SparseACL ANONYMOUS_READ = new SparseACL(null);
static {
- THE_ACL.add(ACL.EVERYONE, Jenkins.ADMINISTER,true);
- THE_ACL.add(ACL.ANONYMOUS, Jenkins.ADMINISTER,false);
- THE_ACL.add(ACL.ANONYMOUS,Permission.READ,true);
+ ANONYMOUS_READ.add(ACL.EVERYONE, Jenkins.ADMINISTER,true);
+ ANONYMOUS_READ.add(ACL.ANONYMOUS, Jenkins.ADMINISTER,false);
+ ANONYMOUS_READ.add(ACL.ANONYMOUS, Permission.READ,true);
+
+ AUTHENTICATED_READ.add(ACL.EVERYONE, Jenkins.ADMINISTER, true);
+ AUTHENTICATED_READ.add(ACL.ANONYMOUS, Jenkins.ADMINISTER, false);
}
/**
diff --git a/core/src/main/java/hudson/security/HudsonPrivateSecurityRealm.java b/core/src/main/java/hudson/security/HudsonPrivateSecurityRealm.java
index ffaf8311d7..3abe60ee19 100644
--- a/core/src/main/java/hudson/security/HudsonPrivateSecurityRealm.java
+++ b/core/src/main/java/hudson/security/HudsonPrivateSecurityRealm.java
@@ -1,18 +1,18 @@
/*
* The MIT License
- *
+ *
* Copyright (c) 2004-2010, Sun Microsystems, Inc., Kohsuke Kawaguchi, David Calavera, Seiji Sogabe
- *
+ *
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
- *
+ *
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
- *
+ *
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
@@ -79,7 +79,6 @@ import java.util.Collections;
import java.util.List;
import java.util.MissingResourceException;
import java.util.ResourceBundle;
-import java.util.logging.Level;
import java.util.logging.Logger;
import org.kohsuke.accmod.Restricted;
import org.kohsuke.accmod.restrictions.NoExternalUse;
@@ -97,7 +96,7 @@ public class HudsonPrivateSecurityRealm extends AbstractPasswordBasedSecurityRea
/**
* If true, sign up is not allowed.
*
- * This is a negative switch so that the default value 'false' remains compatible with older installations.
+ * This is a negative switch so that the default value 'false' remains compatible with older installations.
*/
private final boolean disableSignup;
@@ -260,16 +259,26 @@ public class HudsonPrivateSecurityRealm extends AbstractPasswordBasedSecurityRea
}
/**
- * Creates an user account. Used by admins.
+ * Creates a user account. Used by admins.
*
* This version behaves differently from {@link #doCreateAccount(StaplerRequest, StaplerResponse)} in that
* this is someone creating another user.
*/
public void doCreateAccountByAdmin(StaplerRequest req, StaplerResponse rsp) throws IOException, ServletException {
+ createAccountByAdmin(req, rsp, "addUser.jelly", "."); // send the user back to the listing page on success
+ }
+
+ /**
+ * Creates a user account. Requires {@link Jenkins#ADMINISTER}
+ */
+ @Restricted(NoExternalUse.class)
+ public User createAccountByAdmin(StaplerRequest req, StaplerResponse rsp, String addUserView, String successView) throws IOException, ServletException {
checkPermission(Jenkins.ADMINISTER);
- if(createAccount(req, rsp, false, "addUser.jelly")!=null) {
- rsp.sendRedirect("."); // send the user back to the listing page
+ User u = createAccount(req, rsp, false, addUserView);
+ if(u != null) {
+ rsp.sendRedirect(successView);
}
+ return u;
}
/**
@@ -334,7 +343,7 @@ public class HudsonPrivateSecurityRealm extends AbstractPasswordBasedSecurityRea
if(si.fullname==null || si.fullname.length()==0)
si.fullname = si.username;
- if(si.email==null || !si.email.contains("@"))
+ if(isMailerPluginPresent() && (si.email==null || !si.email.contains("@")))
si.errorMessage = Messages.HudsonPrivateSecurityRealm_CreateAccount_InvalidEmailAddress();
if (! User.isIdOrFullnameAllowed(si.username)) {
@@ -355,19 +364,30 @@ public class HudsonPrivateSecurityRealm extends AbstractPasswordBasedSecurityRea
// register the user
User user = createAccount(si.username,si.password1);
user.setFullName(si.fullname);
- try {
- // legacy hack. mail support has moved out to a separate plugin
- Class> up = Jenkins.getInstance().pluginManager.uberClassLoader.loadClass("hudson.tasks.Mailer$UserProperty");
- Constructor> c = up.getDeclaredConstructor(String.class);
- user.addProperty((UserProperty)c.newInstance(si.email));
- } catch (RuntimeException e) {
- throw e;
- } catch (Exception e) {
- LOGGER.log(Level.WARNING, "Failed to set the e-mail address",e);
+ if(isMailerPluginPresent()) {
+ try {
+ // legacy hack. mail support has moved out to a separate plugin
+ Class> up = Jenkins.getInstance().pluginManager.uberClassLoader.loadClass("hudson.tasks.Mailer$UserProperty");
+ Constructor> c = up.getDeclaredConstructor(String.class);
+ user.addProperty((UserProperty)c.newInstance(si.email));
+ } catch (ReflectiveOperationException e) {
+ throw new RuntimeException(e);
+ }
}
user.save();
return user;
}
+
+ @Restricted(NoExternalUse.class)
+ public boolean isMailerPluginPresent() {
+ try {
+ // mail support has moved to a separate plugin
+ return null != Jenkins.getInstance().pluginManager.uberClassLoader.loadClass("hudson.tasks.Mailer$UserProperty");
+ } catch (ClassNotFoundException e) {
+ LOGGER.finer("Mailer plugin not present");
+ }
+ return false;
+ }
/**
* Creates a new user account by registering a password to the user.
diff --git a/core/src/main/java/hudson/security/csrf/CrumbFilter.java b/core/src/main/java/hudson/security/csrf/CrumbFilter.java
index 9080a54692..557e96f766 100644
--- a/core/src/main/java/hudson/security/csrf/CrumbFilter.java
+++ b/core/src/main/java/hudson/security/csrf/CrumbFilter.java
@@ -62,17 +62,11 @@ public class CrumbFilter implements Filter {
String crumbFieldName = crumbIssuer.getDescriptor().getCrumbRequestField();
String crumbSalt = crumbIssuer.getDescriptor().getCrumbSalt();
- String crumb = httpRequest.getHeader(crumbFieldName);
boolean valid = false;
+ String crumb = extractCrumbFromRequest(httpRequest, crumbFieldName);
if (crumb == null) {
- Enumeration> paramNames = request.getParameterNames();
- while (paramNames.hasMoreElements()) {
- String paramName = (String) paramNames.nextElement();
- if (crumbFieldName.equals(paramName)) {
- crumb = request.getParameter(paramName);
- break;
- }
- }
+ // compatibility for clients that hard-code the default crumb name up to Jenkins 1.TODO
+ extractCrumbFromRequest(httpRequest, ".crumb");
}
if (crumb != null) {
if (crumbIssuer.validateCrumb(httpRequest, crumbSalt, crumb)) {
@@ -93,6 +87,21 @@ public class CrumbFilter implements Filter {
}
}
+ private String extractCrumbFromRequest(HttpServletRequest httpRequest, String crumbFieldName) {
+ String crumb = httpRequest.getHeader(crumbFieldName);
+ if (crumb == null) {
+ Enumeration> paramNames = httpRequest.getParameterNames();
+ while (paramNames.hasMoreElements()) {
+ String paramName = (String) paramNames.nextElement();
+ if (crumbFieldName.equals(paramName)) {
+ crumb = httpRequest.getParameter(paramName);
+ break;
+ }
+ }
+ }
+ return crumb;
+ }
+
protected static boolean isMultipart(HttpServletRequest request) {
if (request == null) {
return false;
diff --git a/core/src/main/java/hudson/security/csrf/CrumbIssuer.java b/core/src/main/java/hudson/security/csrf/CrumbIssuer.java
index 6daacd364d..3d80b1a5b6 100644
--- a/core/src/main/java/hudson/security/csrf/CrumbIssuer.java
+++ b/core/src/main/java/hudson/security/csrf/CrumbIssuer.java
@@ -44,6 +44,9 @@ public abstract class CrumbIssuer implements Describable, Extension
private static final String CRUMB_ATTRIBUTE = CrumbIssuer.class.getName() + "_crumb";
+ @Restricted(NoExternalUse.class)
+ public static final String DEFAULT_CRUMB_NAME = "Jenkins-Crumb";
+
/**
* Get the name of the request parameter the crumb will be stored in. Exposed
* here for the remote API.
@@ -199,7 +202,7 @@ public abstract class CrumbIssuer implements Describable, Extension
} else if ("concat(//crumbRequestField,\":\",//crumb)".equals(xpath)) { // new FullDuplexHttpStream; Main
text = ci.getCrumbRequestField() + ':' + ci.getCrumb();
} else if ("concat(//crumbRequestField,'=',//crumb)".equals(xpath)) { // NetBeans
- if (ci.getCrumbRequestField().startsWith(".")) {
+ if (ci.getCrumbRequestField().startsWith(".") || ci.getCrumbRequestField().contains("-")) {
text = ci.getCrumbRequestField() + '=' + ci.getCrumb();
} else {
text = null;
diff --git a/core/src/main/java/hudson/security/csrf/CrumbIssuerDescriptor.java b/core/src/main/java/hudson/security/csrf/CrumbIssuerDescriptor.java
index 013405b66a..84d9fb5c16 100644
--- a/core/src/main/java/hudson/security/csrf/CrumbIssuerDescriptor.java
+++ b/core/src/main/java/hudson/security/csrf/CrumbIssuerDescriptor.java
@@ -64,7 +64,7 @@ public abstract class CrumbIssuerDescriptor extends Descr
*/
public void setCrumbRequestField(String requestField) {
if (Util.fixEmptyAndTrim(requestField) == null) {
- crumbRequestField = ".crumb";
+ crumbRequestField = CrumbIssuer.DEFAULT_CRUMB_NAME;
} else {
crumbRequestField = requestField;
}
diff --git a/core/src/main/java/hudson/security/csrf/DefaultCrumbIssuer.java b/core/src/main/java/hudson/security/csrf/DefaultCrumbIssuer.java
index 35447865e8..92d0231e1f 100644
--- a/core/src/main/java/hudson/security/csrf/DefaultCrumbIssuer.java
+++ b/core/src/main/java/hudson/security/csrf/DefaultCrumbIssuer.java
@@ -124,7 +124,7 @@ public class DefaultCrumbIssuer extends CrumbIssuer {
private final static HexStringConfidentialKey CRUMB_SALT = new HexStringConfidentialKey(Jenkins.class,"crumbSalt",16);
public DescriptorImpl() {
- super(CRUMB_SALT.get(), System.getProperty("hudson.security.csrf.requestfield", ".crumb"));
+ super(CRUMB_SALT.get(), System.getProperty("hudson.security.csrf.requestfield", CrumbIssuer.DEFAULT_CRUMB_NAME));
load();
}
diff --git a/core/src/main/java/hudson/slaves/AbstractCloudComputer.java b/core/src/main/java/hudson/slaves/AbstractCloudComputer.java
index 32acc2030a..ee6b32c0ff 100644
--- a/core/src/main/java/hudson/slaves/AbstractCloudComputer.java
+++ b/core/src/main/java/hudson/slaves/AbstractCloudComputer.java
@@ -50,7 +50,7 @@ public class AbstractCloudComputer extends SlaveCo
}
/**
- * When the slave is deleted, free the node right away.
+ * When the agent is deleted, free the node right away.
*/
@Override
public HttpResponse doDoDelete() throws IOException {
diff --git a/core/src/main/java/hudson/slaves/AbstractCloudSlave.java b/core/src/main/java/hudson/slaves/AbstractCloudSlave.java
index cc7967d8ef..93f0f93b0c 100644
--- a/core/src/main/java/hudson/slaves/AbstractCloudSlave.java
+++ b/core/src/main/java/hudson/slaves/AbstractCloudSlave.java
@@ -55,7 +55,7 @@ public abstract class AbstractCloudSlave extends Slave {
public abstract AbstractCloudComputer createComputer();
/**
- * Releases and removes this slave.
+ * Releases and removes this agent.
*/
public void terminate() throws InterruptedException, IOException {
final Computer computer = toComputer();
diff --git a/core/src/main/java/hudson/slaves/ChannelPinger.java b/core/src/main/java/hudson/slaves/ChannelPinger.java
index 49ae7c1cf9..b6216f2cf6 100644
--- a/core/src/main/java/hudson/slaves/ChannelPinger.java
+++ b/core/src/main/java/hudson/slaves/ChannelPinger.java
@@ -74,7 +74,7 @@ public class ChannelPinger extends ComputerListener {
public void install(Channel channel) {
if (pingInterval < 1) {
- LOGGER.fine("Slave ping is disabled");
+ LOGGER.fine("Agent ping is disabled");
return;
}
diff --git a/core/src/main/java/hudson/slaves/Cloud.java b/core/src/main/java/hudson/slaves/Cloud.java
index c3e3679474..651ba81f5a 100644
--- a/core/src/main/java/hudson/slaves/Cloud.java
+++ b/core/src/main/java/hudson/slaves/Cloud.java
@@ -44,23 +44,23 @@ import org.kohsuke.stapler.DataBoundConstructor;
import java.util.Collection;
/**
- * Creates {@link Node}s to dynamically expand/shrink the slaves attached to Hudson.
+ * Creates {@link Node}s to dynamically expand/shrink the agents attached to Hudson.
*
*
* Put another way, this class encapsulates different communication protocols
- * needed to start a new slave programmatically.
+ * needed to start a new agent programmatically.
*
*
Notes for implementers
- *
Automatically delete idle slaves
+ *
Automatically delete idle agents
*
* Nodes provisioned from a cloud do not automatically get released just because it's created from {@link Cloud}.
* Doing so requires a use of {@link RetentionStrategy}. Instantiate your {@link Slave} subtype with something
* like {@link CloudSlaveRetentionStrategy} so that it gets automatically deleted after some idle time.
*
- *
Freeing an external resource when a slave is removed
+ *
Freeing an external resource when an agent is removed
*
* Whether you do auto scale-down or not, you often want to release an external resource tied to a cloud-allocated
- * slave when it is removed.
+ * agent when it is removed.
*
*
* To do this, have your {@link Slave} subtype remember the necessary handle (such as EC2 instance ID)
@@ -137,7 +137,7 @@ public abstract class Cloud extends AbstractModelObject implements ExtensionPoin
* @param excessWorkload
* Number of total executors needed to meet the current demand.
* Always >= 1. For example, if this is 3, the implementation
- * should launch 3 slaves with 1 executor each, or 1 slave with
+ * should launch 3 agents with 1 executor each, or 1 agent with
* 3 executors, etc.
* @return
* {@link PlannedNode}s that represent asynchronous {@link Node}
diff --git a/core/src/main/java/hudson/slaves/CloudSlaveRetentionStrategy.java b/core/src/main/java/hudson/slaves/CloudSlaveRetentionStrategy.java
index ac9a404d47..1948d6b10d 100644
--- a/core/src/main/java/hudson/slaves/CloudSlaveRetentionStrategy.java
+++ b/core/src/main/java/hudson/slaves/CloudSlaveRetentionStrategy.java
@@ -11,9 +11,9 @@ import java.util.logging.Level;
import java.util.logging.Logger;
/**
- * Default convenience implementation of {@link RetentionStrategy} for slaves provisioned from {@link Cloud}.
+ * Default convenience implementation of {@link RetentionStrategy} for agents provisioned from {@link Cloud}.
*
- * If a slave is idle for 10 mins, this retention strategy will remove the slave. This can be used as-is for
+ * If an agent is idle for 10 mins, this retention strategy will remove the agent. This can be used as-is for
* a {@link Node} provisioned by cloud to implement the auto-scaling semantics, it can be subtyped to tweak
* the behavior, or it can be used as an example.
*
TODO {@link CloudRetentionStrategy} seems to be a better implementation.
@@ -64,7 +64,7 @@ public class CloudSlaveRetentionStrategy extends RetentionSt
}
/**
- * If the computer has been idle longer than this time, we'll kill the slave.
+ * If the computer has been idle longer than this time, we'll kill the agent.
*/
protected long getIdleMaxTime() {
return TIMEOUT;
diff --git a/core/src/main/java/hudson/slaves/CommandLauncher.java b/core/src/main/java/hudson/slaves/CommandLauncher.java
index 66cfaaf056..fdaaa06441 100644
--- a/core/src/main/java/hudson/slaves/CommandLauncher.java
+++ b/core/src/main/java/hudson/slaves/CommandLauncher.java
@@ -140,7 +140,7 @@ public class CommandLauncher extends ComputerLauncher {
}
});
- LOGGER.info("slave agent launched for " + computer.getDisplayName());
+ LOGGER.info("agent launched for " + computer.getDisplayName());
} catch (InterruptedException e) {
e.printStackTrace(listener.error(Messages.ComputerLauncher_abortedLaunch()));
} catch (RuntimeException e) {
diff --git a/core/src/main/java/hudson/slaves/ComputerLauncher.java b/core/src/main/java/hudson/slaves/ComputerLauncher.java
index 18c44d7b60..cbca34f3ff 100644
--- a/core/src/main/java/hudson/slaves/ComputerLauncher.java
+++ b/core/src/main/java/hudson/slaves/ComputerLauncher.java
@@ -37,7 +37,7 @@ import org.apache.tools.ant.util.DeweyDecimal;
/**
* Extension point to allow control over how {@link Computer}s are "launched",
- * meaning how they get connected to their slave agent program.
+ * meaning how they get connected to their agent program.
*
*
Associated View
*
@@ -54,17 +54,17 @@ import org.apache.tools.ant.util.DeweyDecimal;
public abstract class ComputerLauncher extends AbstractDescribableImpl implements ExtensionPoint {
/**
* Returns true if this {@link ComputerLauncher} supports
- * programatic launch of the slave agent in the target {@link Computer}.
+ * programatic launch of the agent in the target {@link Computer}.
*/
public boolean isLaunchSupported() {
return true;
}
/**
- * Launches the slave agent for the given {@link Computer}.
+ * Launches the agent for the given {@link Computer}.
*
*
- * If the slave agent is launched successfully, {@link SlaveComputer#setChannel(InputStream, OutputStream, TaskListener, Channel.Listener)}
+ * If the agent is launched successfully, {@link SlaveComputer#setChannel(InputStream, OutputStream, TaskListener, Channel.Listener)}
* should be invoked in the end to notify Hudson of the established connection.
* The operation could also fail, in which case there's no need to make any callback notification,
* (except to notify the user of the failure through {@link StreamTaskListener}.)
diff --git a/core/src/main/java/hudson/slaves/ComputerListener.java b/core/src/main/java/hudson/slaves/ComputerListener.java
index 01c0cfab6e..c2e4dc1f70 100644
--- a/core/src/main/java/hudson/slaves/ComputerListener.java
+++ b/core/src/main/java/hudson/slaves/ComputerListener.java
@@ -51,7 +51,7 @@ public abstract class ComputerListener implements ExtensionPoint {
*
*
* This enables you to do some configurable checks to see if we
- * want to bring this slave online or if there are considerations
+ * want to bring this agent online or if there are considerations
* that would keep us from doing so.
*
*
@@ -61,7 +61,7 @@ public abstract class ComputerListener implements ExtensionPoint {
* @param c
* Computer that's being launched. Never null.
* @param taskListener
- * Connected to the slave console log. Useful for reporting progress/errors on a lengthy operation.
+ * Connected to the agent console log. Useful for reporting progress/errors on a lengthy operation.
* Never null.
* @throws AbortException
* Exceptions will be recorded to the listener, and
@@ -73,12 +73,12 @@ public abstract class ComputerListener implements ExtensionPoint {
}
/**
- * Called when a slave attempted to connect via {@link ComputerLauncher} but it failed.
+ * Called when an agent attempted to connect via {@link ComputerLauncher} but it failed.
*
* @param c
* Computer that was trying to launch. Never null.
* @param taskListener
- * Connected to the slave console log. Useful for reporting progress/errors on a lengthy operation.
+ * Connected to the agent console log. Useful for reporting progress/errors on a lengthy operation.
* Never null.
*
* @since 1.402
@@ -90,19 +90,19 @@ public abstract class ComputerListener implements ExtensionPoint {
* Called before a {@link Computer} is marked online.
*
*
- * This enables you to do some work on all the slaves
+ * This enables you to do some work on all the agents
* as they get connected. Unlike {@link #onOnline(Computer, TaskListener)},
* a failure to carry out this function normally will prevent
* a computer from marked as online.
*
* @param channel
- * This is the channel object to talk to the slave.
+ * This is the channel object to talk to the agent.
* (This is the same object returned by {@link Computer#getChannel()} once
* it's connected.
* @param root
- * The directory where this slave stores files.
+ * The directory where this agent stores files.
* The same as {@link Node#getRootPath()}, except that method returns
- * null until the slave is connected. So this parameter is passed explicitly instead.
+ * null until the agent is connected. So this parameter is passed explicitly instead.
* @param listener
* This is connected to the launch log of the computer.
* Since this method is called synchronously from the thread
@@ -136,11 +136,11 @@ public abstract class ComputerListener implements ExtensionPoint {
* Called right after a {@link Computer} comes online.
*
*
- * This enables you to do some work on all the slaves
+ * This enables you to do some work on all the agents
* as they get connected.
*
*
- * Starting Hudson 1.312, this method is also invoked for the master, not just for slaves.
+ * Starting Hudson 1.312, this method is also invoked for the master, not just for agents.
*
* @param listener
* This is connected to the launch log of the computer.
@@ -199,7 +199,7 @@ public abstract class ComputerListener implements ExtensionPoint {
* Called when configuration of the node was changed, a node is added/removed, etc.
*
*
- * This callback is to signal when there's any change to the list of slaves registered to the system,
+ * This callback is to signal when there's any change to the list of agents registered to the system,
* including addition, removal, changing of the setting, and so on.
*
* @since 1.377
diff --git a/core/src/main/java/hudson/slaves/ComputerRetentionWork.java b/core/src/main/java/hudson/slaves/ComputerRetentionWork.java
index 7dbfb0de96..6a9bff31c1 100644
--- a/core/src/main/java/hudson/slaves/ComputerRetentionWork.java
+++ b/core/src/main/java/hudson/slaves/ComputerRetentionWork.java
@@ -34,7 +34,7 @@ import hudson.model.PeriodicWork;
import hudson.Extension;
/**
- * Periodically checks the slaves and try to reconnect dead slaves.
+ * Periodically checks the agents and try to reconnect dead agents.
*
* @author Kohsuke Kawaguchi
* @author Stephen Connolly
diff --git a/core/src/main/java/hudson/slaves/ConnectionActivityMonitor.java b/core/src/main/java/hudson/slaves/ConnectionActivityMonitor.java
index 41d9aaa431..c9c9071f7b 100644
--- a/core/src/main/java/hudson/slaves/ConnectionActivityMonitor.java
+++ b/core/src/main/java/hudson/slaves/ConnectionActivityMonitor.java
@@ -37,7 +37,7 @@ import java.io.IOException;
import java.util.logging.Logger;
/**
- * Makes sure that connections to slaves are alive, and if they are not, cut them off.
+ * Makes sure that connections to agents are alive, and if they are not, cut them off.
*
*
* If we only rely on TCP retransmission time out for this, the time it takes to detect a bad connection
@@ -49,7 +49,7 @@ import java.util.logging.Logger;
@Extension
public class ConnectionActivityMonitor extends AsyncPeriodicWork {
public ConnectionActivityMonitor() {
- super("Connection Activity monitoring to slaves");
+ super("Connection Activity monitoring to agents");
}
protected void execute(TaskListener listener) throws IOException, InterruptedException {
@@ -61,7 +61,7 @@ public class ConnectionActivityMonitor extends AsyncPeriodicWork {
if (ch instanceof Channel) {
Channel channel = (Channel) ch;
if (now-channel.getLastHeard() > TIME_TILL_PING) {
- // haven't heard from this slave for a while.
+ // haven't heard from this agent for a while.
Long lastPing = (Long)channel.getProperty(ConnectionActivityMonitor.class);
if (lastPing!=null && now-lastPing > TIMEOUT) {
diff --git a/core/src/main/java/hudson/slaves/EnvironmentVariablesNodeProperty.java b/core/src/main/java/hudson/slaves/EnvironmentVariablesNodeProperty.java
index ca6e954feb..e73d44b084 100644
--- a/core/src/main/java/hudson/slaves/EnvironmentVariablesNodeProperty.java
+++ b/core/src/main/java/hudson/slaves/EnvironmentVariablesNodeProperty.java
@@ -47,7 +47,7 @@ import java.util.List;
public class EnvironmentVariablesNodeProperty extends NodeProperty {
/**
- * Slave-specific environment variables
+ * Agent-specific environment variables
*/
private final EnvVars envVars;
diff --git a/core/src/main/java/hudson/slaves/JNLPLauncher.java b/core/src/main/java/hudson/slaves/JNLPLauncher.java
index b89178a13e..4a43adbbaf 100644
--- a/core/src/main/java/hudson/slaves/JNLPLauncher.java
+++ b/core/src/main/java/hudson/slaves/JNLPLauncher.java
@@ -37,7 +37,7 @@ import org.kohsuke.stapler.DataBoundConstructor;
*/
public class JNLPLauncher extends ComputerLauncher {
/**
- * If the slave needs to tunnel the connection to the master,
+ * If the agent needs to tunnel the connection to the master,
* specify the "host:port" here. This can include the special
* syntax "host:" and ":port" to indicate the default host/port
* shall be used.
diff --git a/core/src/main/java/hudson/slaves/NodeProperty.java b/core/src/main/java/hudson/slaves/NodeProperty.java
index b87a57fe88..4a8240d268 100644
--- a/core/src/main/java/hudson/slaves/NodeProperty.java
+++ b/core/src/main/java/hudson/slaves/NodeProperty.java
@@ -160,7 +160,7 @@ public abstract class NodeProperty implements ReconfigurableDesc
* @param env
* Manipulate this variable (normally by adding more entries.)
* Note that this is an override, so it doesn't contain environment variables that are
- * currently set for the slave process itself.
+ * currently set for the agent process itself.
* @param listener
* Can be used to send messages.
*
diff --git a/core/src/main/java/hudson/slaves/NodeProvisioner.java b/core/src/main/java/hudson/slaves/NodeProvisioner.java
index 3f5ea3642b..699d9b8cb1 100644
--- a/core/src/main/java/hudson/slaves/NodeProvisioner.java
+++ b/core/src/main/java/hudson/slaves/NodeProvisioner.java
@@ -228,13 +228,13 @@ public class NodeProvisioner {
} catch (InterruptedException e) {
throw new AssertionError(e); // since we confirmed that the future is already done
} catch (ExecutionException e) {
- LOGGER.log(Level.WARNING, "Provisioned slave " + f.displayName + " failed to launch",
+ LOGGER.log(Level.WARNING, "Provisioned agent " + f.displayName + " failed to launch",
e.getCause());
for (CloudProvisioningListener cl : CloudProvisioningListener.all()) {
cl.onFailure(f, e.getCause());
}
} catch (IOException e) {
- LOGGER.log(Level.WARNING, "Provisioned slave " + f.displayName + " failed to launch",
+ LOGGER.log(Level.WARNING, "Provisioned agent " + f.displayName + " failed to launch",
e);
for (CloudProvisioningListener cl : CloudProvisioningListener.all()) {
cl.onFailure(f, e);
@@ -244,7 +244,7 @@ public class NodeProvisioner {
throw e;
} catch (Throwable e) {
LOGGER.log(Level.SEVERE, "Unexpected uncaught exception encountered while "
- + "processing provisioned slave " + f.displayName, e);
+ + "processing provisioned agent " + f.displayName, e);
} finally {
while (true) {
List orig = pendingLaunches.get();
@@ -607,23 +607,23 @@ public class NodeProvisioner {
@Override
public StrategyDecision apply(@Nonnull StrategyState state) {
/*
- Here we determine how many additional slaves we need to keep up with the load (if at all),
+ Here we determine how many additional agents we need to keep up with the load (if at all),
which involves a simple math.
Broadly speaking, first we check that all the executors are fully utilized before attempting
- to start any new slave (this also helps to ignore the temporary gap between different numbers,
+ to start any new agent (this also helps to ignore the temporary gap between different numbers,
as changes in them are not necessarily synchronized --- for example, there's a time lag between
- when a slave launches (thus bringing the planned capacity down) and the time when its executors
+ when an agent launches (thus bringing the planned capacity down) and the time when its executors
pick up builds (thus bringing the queue length down.)
- Once we confirm that, we compare the # of buildable items against the additional slaves
- that are being brought online. If we have more jobs than our executors can handle, we'll launch a new slave.
+ Once we confirm that, we compare the # of buildable items against the additional agents
+ that are being brought online. If we have more jobs than our executors can handle, we'll launch a new agent.
So this computation involves three stats:
1. # of idle executors
2. # of jobs that are starving for executors
- 3. # of additional slaves being provisioned (planned capacities.)
+ 3. # of additional agents being provisioned (planned capacities.)
To ignore a temporary surge/drop, we make conservative estimates on each one of them. That is,
we take the current snapshot value, and we take the current exponential moving average (EMA) value,
@@ -675,14 +675,14 @@ public class NodeProvisioner {
CLOUD:
for (Cloud c : Jenkins.getInstance().clouds) {
if (excessWorkload < 0) {
- break; // enough slaves allocated
+ break; // enough agents allocated
}
// Make sure this cloud actually can provision for this label.
if (c.canProvision(state.getLabel())) {
// provisioning a new node should be conservative --- for example if excessWorkload is 1.4,
// we don't want to allocate two nodes but just one.
- // OTOH, because of the exponential decay, even when we need one slave,
+ // OTOH, because of the exponential decay, even when we need one agent,
// excess workload is always
// something like 0.95, in which case we want to allocate one node.
// so the threshold here is 1-MARGIN, and hence floor(excessWorkload+MARGIN) is needed to
@@ -774,7 +774,7 @@ public class NodeProvisioner {
@Extension
public static class NodeProvisionerInvoker extends PeriodicWork {
/**
- * Give some initial warm up time so that statically connected slaves
+ * Give some initial warm up time so that statically connected agents
* can be brought online before we start allocating more.
*/
public static int INITIALDELAY = Integer.getInteger(NodeProvisioner.class.getName()+".initialDelay",LoadStatistics.CLOCK*10);
diff --git a/core/src/main/java/hudson/slaves/RetentionStrategy.java b/core/src/main/java/hudson/slaves/RetentionStrategy.java
index 6fb8f7c8eb..57dfde61af 100644
--- a/core/src/main/java/hudson/slaves/RetentionStrategy.java
+++ b/core/src/main/java/hudson/slaves/RetentionStrategy.java
@@ -48,7 +48,7 @@ import java.util.logging.Logger;
public abstract class RetentionStrategy extends AbstractDescribableImpl> implements ExtensionPoint {
/**
- * This method will be called periodically to allow this strategy to decide what to do with it's owning slave.
+ * This method will be called periodically to allow this strategy to decide what to do with it's owning agent.
*
* @param c {@link Computer} for which this strategy is assigned. This computer may be online or offline.
* This object also exposes a bunch of properties that the callee can use to decide what action to take.
@@ -59,11 +59,11 @@ public abstract class RetentionStrategy extends AbstractDesc
public abstract long check(T c);
/**
- * This method is called to determine whether manual launching of the slave is allowed at this point in time.
+ * This method is called to determine whether manual launching of the agent is allowed at this point in time.
* @param c {@link Computer} for which this strategy is assigned. This computer may be online or offline.
* This object also exposes a bunch of properties that the callee can use to decide if manual launching is
* allowed at this time.
- * @return {@code true} if manual launching of the slave is allowed at this point in time.
+ * @return {@code true} if manual launching of the agent is allowed at this point in time.
*/
public boolean isManualLaunchAllowed(T c) {
return true;
@@ -85,7 +85,7 @@ public abstract class RetentionStrategy extends AbstractDesc
/**
* Called when a new {@link Computer} object is introduced (such as when Hudson started, or when
- * a new slave is added.)
+ * a new agent is added.)
*
*
* The default implementation of this method delegates to {@link #check(Computer)},
@@ -180,12 +180,12 @@ public abstract class RetentionStrategy extends AbstractDesc
private static final Logger logger = Logger.getLogger(Demand.class.getName());
/**
- * The delay (in minutes) for which the slave must be in demand before tring to launch it.
+ * The delay (in minutes) for which the agent must be in demand before tring to launch it.
*/
private final long inDemandDelay;
/**
- * The delay (in minutes) for which the slave must be idle before taking it offline.
+ * The delay (in minutes) for which the agent must be idle before taking it offline.
*/
private final long idleDelay;
diff --git a/core/src/main/java/hudson/slaves/SimpleScheduledRetentionStrategy.java b/core/src/main/java/hudson/slaves/SimpleScheduledRetentionStrategy.java
index 5a1e804b79..9ab5878d52 100644
--- a/core/src/main/java/hudson/slaves/SimpleScheduledRetentionStrategy.java
+++ b/core/src/main/java/hudson/slaves/SimpleScheduledRetentionStrategy.java
@@ -45,7 +45,7 @@ import java.util.logging.Logger;
import static java.util.logging.Level.INFO;
/**
- * {@link RetentionStrategy} that controls the slave based on a schedule.
+ * {@link RetentionStrategy} that controls the agent based on a schedule.
*
* @author Stephen Connolly
* @since 1.275
diff --git a/core/src/main/java/hudson/slaves/SlaveComputer.java b/core/src/main/java/hudson/slaves/SlaveComputer.java
index 7e161d9905..ed846e66de 100644
--- a/core/src/main/java/hudson/slaves/SlaveComputer.java
+++ b/core/src/main/java/hudson/slaves/SlaveComputer.java
@@ -99,7 +99,7 @@ public class SlaveComputer extends Computer {
private Boolean isUnix;
/**
* Effective {@link ComputerLauncher} that hides the details of
- * how we launch a slave agent on this computer.
+ * how we launch a agent agent on this computer.
*
*
* This is normally the same as {@link Slave#getLauncher()} but
@@ -162,7 +162,7 @@ public class SlaveComputer extends Computer {
@Override
@OverrideMustInvoke(When.ANYTIME)
public boolean isAcceptingTasks() {
- // our boolean flag is an override on any additional programmatic reasons why this slave might not be
+ // our boolean flag is an override on any additional programmatic reasons why this agent might not be
// accepting tasks.
return acceptingTasks && super.isAcceptingTasks();
}
@@ -175,13 +175,13 @@ public class SlaveComputer extends Computer {
}
/**
- * Allows suspension of tasks being accepted by the slave computer. While this could be called by a
+ * Allows suspension of tasks being accepted by the agent computer. While this could be called by a
* {@linkplain hudson.slaves.ComputerLauncher} or a {@linkplain hudson.slaves.RetentionStrategy}, such usage
* can result in fights between multiple actors calling setting differential values. A better approach
* is to override {@link hudson.slaves.RetentionStrategy#isAcceptingTasks(hudson.model.Computer)} if the
* {@link hudson.slaves.RetentionStrategy} needs to control availability.
*
- * @param acceptingTasks {@code true} if the slave can accept tasks.
+ * @param acceptingTasks {@code true} if the agent can accept tasks.
*/
public void setAcceptingTasks(boolean acceptingTasks) {
this.acceptingTasks = acceptingTasks;
@@ -274,7 +274,7 @@ public class SlaveComputer extends Computer {
}
if (channel==null)
- throw new IOException("Slave failed to connect, even though the launcher didn't report it. See the log output for details.");
+ throw new IOException("Agent failed to connect, even though the launcher didn't report it. See the log output for details.");
return null;
}
});
@@ -350,7 +350,7 @@ public class SlaveComputer extends Computer {
}
/**
- * Creates a {@link Channel} from the given stream and sets that to this slave.
+ * Creates a {@link Channel} from the given stream and sets that to this agent.
*
* @param in
* Stream connected to the remote "slave.jar". It's the caller's responsibility to do
@@ -426,11 +426,11 @@ public class SlaveComputer extends Computer {
}
/**
- * Returns the remote FS root absolute path or {@code null} if the slave is off-line. The absolute path may change
+ * Returns the remote FS root absolute path or {@code null} if the agent is off-line. The absolute path may change
* between connections if the connection method does not provide a consistent working directory and the node's
* remote FS is specified as a relative path.
*
- * @return the remote FS root absolute path or {@code null} if the slave is off-line.
+ * @return the remote FS root absolute path or {@code null} if the agent is off-line.
* @since 1.606
*/
@CheckForNull
@@ -575,7 +575,7 @@ public class SlaveComputer extends Computer {
} finally {
SecurityContextHolder.setContext(old);
}
- log.println("Slave successfully connected and online");
+ log.println("Agent successfully connected and online");
Jenkins.getInstance().getQueue().scheduleMaintenance();
}
@@ -644,11 +644,11 @@ public class SlaveComputer extends Computer {
}
/**
- * Serves jar files for JNLP slave agents.
+ * Serves jar files for JNLP agents.
*
* @deprecated since 2008-08-18.
* This URL binding is no longer used and moved up directly under to {@link jenkins.model.Jenkins},
- * but it's left here for now just in case some old JNLP slave agents request it.
+ * but it's left here for now just in case some old JNLP agents request it.
*/
@Deprecated
public Slave.JnlpJar getJnlpJars(String fileName) {
@@ -669,7 +669,7 @@ public class SlaveComputer extends Computer {
try {
Util.deleteRecursive(getLogDir());
} catch (IOException ex) {
- logger.log(Level.WARNING, "Unable to delete slave logs", ex);
+ logger.log(Level.WARNING, "Unable to delete agent logs", ex);
}
}
@@ -706,7 +706,7 @@ public class SlaveComputer extends Computer {
super.setNode(node);
launcher = grabLauncher(node);
- // maybe the configuration was changed to relaunch the slave, so try to re-launch now.
+ // maybe the configuration was changed to relaunch the agent, so try to re-launch now.
// "constructed==null" test is an ugly hack to avoid launching before the object is fully
// constructed.
if(constructed!=null) {
@@ -740,7 +740,7 @@ public class SlaveComputer extends Computer {
}
/**
- * Get the slave version
+ * Get the agent version
*/
public String getSlaveVersion() throws IOException, InterruptedException {
return channel.call(new SlaveVersion());
@@ -794,7 +794,7 @@ public class SlaveComputer extends Computer {
*/
static final class LogHolder {
/**
- * This field is used on each slave node to record log records on the slave.
+ * This field is used on each agent to record logs on the agent.
*/
static final RingBufferLogHandler SLAVE_LOG_HANDLER = new RingBufferLogHandler();
}
@@ -827,9 +827,9 @@ public class SlaveComputer extends Computer {
/**
* Obtains a {@link VirtualChannel} that allows some computation to be performed on the master.
- * This method can be called from any thread on the master, or from slave (more precisely,
- * it only works from the remoting request-handling thread in slaves, which means if you've started
- * separate thread on slaves, that'll fail.)
+ * This method can be called from any thread on the master, or from agent (more precisely,
+ * it only works from the remoting request-handling thread in agents, which means if you've started
+ * separate thread on agents, that'll fail.)
*
* @return null if the calling thread doesn't have any trace of where its master is.
* @since 1.362
@@ -838,7 +838,7 @@ public class SlaveComputer extends Computer {
if (Jenkins.getInstanceOrNull()!=null) // check if calling thread is on master or on slave
return FilePath.localChannel;
- // if this method is called from within the slave computation thread, this should work
+ // if this method is called from within the agent computation thread, this should work
Channel c = Channel.current();
if (c!=null && Boolean.TRUE.equals(c.getProperty("slave")))
return c;
diff --git a/core/src/main/java/hudson/slaves/package.html b/core/src/main/java/hudson/slaves/package.html
index 9a8c33215d..a5080940f2 100644
--- a/core/src/main/java/hudson/slaves/package.html
+++ b/core/src/main/java/hudson/slaves/package.html
@@ -23,5 +23,5 @@ THE SOFTWARE.
-->
-Code related to slaves.
+Code related to agents.
\ No newline at end of file
diff --git a/core/src/main/java/hudson/tools/ToolDescriptor.java b/core/src/main/java/hudson/tools/ToolDescriptor.java
index 567c298a0d..641400f454 100644
--- a/core/src/main/java/hudson/tools/ToolDescriptor.java
+++ b/core/src/main/java/hudson/tools/ToolDescriptor.java
@@ -34,7 +34,10 @@ import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.util.Collections;
import java.util.List;
+
+import jenkins.model.GlobalConfigurationCategory;
import jenkins.model.Jenkins;
+import jenkins.tools.ToolConfigurationCategory;
import net.sf.json.JSONObject;
import org.jvnet.tiger_types.Types;
import org.kohsuke.stapler.QueryParameter;
@@ -89,6 +92,12 @@ public abstract class ToolDescriptor extends Descrip
return PropertyDescriptor.for_(ToolProperty.all(),clazz);
}
+
+ @Override
+ public GlobalConfigurationCategory getCategory() {
+ return GlobalConfigurationCategory.get(ToolConfigurationCategory.class);
+ }
+
/**
* Optional list of installers to be configured by default for new tools of this type.
* If there are popular versions of the tool available using generic installation techniques,
diff --git a/core/src/main/java/hudson/tools/ToolInstallation.java b/core/src/main/java/hudson/tools/ToolInstallation.java
index a14fed1c1b..e6f104dffc 100644
--- a/core/src/main/java/hudson/tools/ToolInstallation.java
+++ b/core/src/main/java/hudson/tools/ToolInstallation.java
@@ -53,8 +53,8 @@ import jenkins.model.Jenkins;
* this class, but choosing this class as a base class has several benefits:
*
*
- *
Hudson allows admins to specify different locations for tools on some slaves.
- * For example, JDK on the master might be on /usr/local/java but on a Windows slave
+ *
Hudson allows admins to specify different locations for tools on some agents.
+ * For example, JDK on the master might be on /usr/local/java but on a Windows agent
* it could be at c:\Program Files\Java
*
Hudson can verify the existence of tools and provide warnings and diagnostics for
* admins. (TBD)
diff --git a/core/src/main/java/hudson/tools/ToolInstaller.java b/core/src/main/java/hudson/tools/ToolInstaller.java
index 94da3ea494..2aaec73d1d 100644
--- a/core/src/main/java/hudson/tools/ToolInstaller.java
+++ b/core/src/main/java/hudson/tools/ToolInstaller.java
@@ -97,7 +97,7 @@ public abstract class ToolInstaller implements Describable, Exten
* @return the (directory) path at which the tool can be found,
* typically coming from {@link #preferredLocation}
* @throws IOException if installation fails
- * @throws InterruptedException if communication with a slave is interrupted
+ * @throws InterruptedException if communication with a agent is interrupted
*/
public abstract FilePath performInstallation(ToolInstallation tool, Node node, TaskListener log) throws IOException, InterruptedException;
diff --git a/core/src/main/java/hudson/util/ClockDifference.java b/core/src/main/java/hudson/util/ClockDifference.java
index 444d101494..ee56d328d0 100644
--- a/core/src/main/java/hudson/util/ClockDifference.java
+++ b/core/src/main/java/hudson/util/ClockDifference.java
@@ -41,8 +41,8 @@ public final class ClockDifference {
/**
* The difference in milliseconds.
*
- * Positive value means the slave is behind the master,
- * negative value means the slave is ahead of the master.
+ * Positive value means the agent is behind the master,
+ * negative value means the agent is ahead of the master.
*/
@Exported
public final long diff;
diff --git a/core/src/main/java/hudson/util/HttpResponses.java b/core/src/main/java/hudson/util/HttpResponses.java
index 16755adc4c..1fb7cf6084 100644
--- a/core/src/main/java/hudson/util/HttpResponses.java
+++ b/core/src/main/java/hudson/util/HttpResponses.java
@@ -23,10 +23,18 @@
*/
package hudson.util;
+import net.sf.json.JSONArray;
+import net.sf.json.JSONObject;
import org.kohsuke.stapler.HttpResponse;
+import org.kohsuke.stapler.StaplerRequest;
+import org.kohsuke.stapler.StaplerResponse;
+import javax.annotation.Nonnull;
+import javax.servlet.ServletException;
import java.io.File;
import java.io.IOException;
+import java.nio.charset.Charset;
+import java.util.Map;
/**
* Various {@link HttpResponse} implementations.
@@ -40,4 +48,126 @@ public class HttpResponses extends org.kohsuke.stapler.HttpResponses {
public static HttpResponse staticResource(File f) throws IOException {
return staticResource(f.toURI().toURL());
}
+
+ /**
+ * Create an empty "ok" response.
+ */
+ public static HttpResponse okJSON() {
+ return new JSONObjectResponse();
+ }
+
+ /**
+ * Create a response containing the supplied "data".
+ * @param data The data.
+ */
+ public static HttpResponse okJSON(@Nonnull JSONObject data) {
+ return new JSONObjectResponse(data);
+ }
+
+ /**
+ * Create a response containing the supplied "data".
+ * @param data The data.
+ */
+ public static HttpResponse okJSON(@Nonnull JSONArray data) {
+ return new JSONObjectResponse(data);
+ }
+
+ /**
+ * Create a response containing the supplied "data".
+ * @param data The data.
+ */
+ public static HttpResponse okJSON(@Nonnull Map,?> data) {
+ return new JSONObjectResponse(data);
+ }
+
+ /**
+ * Set the response as an error response.
+ * @param message The error "message" set on the response.
+ * @return {@link this} object.
+ */
+ public static HttpResponse errorJSON(@Nonnull String message) {
+ return new JSONObjectResponse().error(message);
+ }
+
+ /**
+ * {@link net.sf.json.JSONObject} response.
+ *
+ * @author tom.fennelly@gmail.com
+ */
+ static class JSONObjectResponse implements HttpResponse {
+
+ private static final Charset UTF8 = Charset.forName("UTF-8");
+
+ private final JSONObject jsonObject;
+
+ /**
+ * Create an empty "ok" response.
+ */
+ JSONObjectResponse() {
+ this.jsonObject = new JSONObject();
+ status("ok");
+ }
+
+ /**
+ * Create a response containing the supplied "data".
+ * @param data The data.
+ */
+ JSONObjectResponse(@Nonnull JSONObject data) {
+ this();
+ this.jsonObject.put("data", data);
+ }
+
+ /**
+ * Create a response containing the supplied "data".
+ * @param data The data.
+ */
+ JSONObjectResponse(@Nonnull JSONArray data) {
+ this();
+ this.jsonObject.put("data", data);
+ }
+
+ /**
+ * Create a response containing the supplied "data".
+ * @param data The data.
+ */
+ JSONObjectResponse(@Nonnull Map,?> data) {
+ this();
+ this.jsonObject.put("data", JSONObject.fromObject(data));
+ }
+
+ /**
+ * Set the response as an error response.
+ * @param message The error "message" set on the response.
+ * @return {@link this} object.
+ */
+ @Nonnull JSONObjectResponse error(@Nonnull String message) {
+ status("error");
+ this.jsonObject.put("message", message);
+ return this;
+ }
+
+ /**
+ * Get the JSON response object.
+ * @return The JSON response object.
+ */
+ @Nonnull JSONObject getJsonObject() {
+ return jsonObject;
+ }
+
+ private @Nonnull JSONObjectResponse status(@Nonnull String status) {
+ this.jsonObject.put("status", status);
+ return this;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void generateResponse(StaplerRequest req, StaplerResponse rsp, Object node) throws IOException, ServletException {
+ byte[] bytes = jsonObject.toString().getBytes(UTF8);
+ rsp.setContentType("application/json; charset=UTF-8");
+ rsp.setContentLength(bytes.length);
+ rsp.getOutputStream().write(bytes);
+ }
+ }
}
diff --git a/core/src/main/java/hudson/util/ProcessKiller.java b/core/src/main/java/hudson/util/ProcessKiller.java
index 1aeb8f7815..a6fd99a542 100644
--- a/core/src/main/java/hudson/util/ProcessKiller.java
+++ b/core/src/main/java/hudson/util/ProcessKiller.java
@@ -38,7 +38,7 @@ import java.io.Serializable;
*
* Each implementation of {@link ProcessKiller} is instantiated once on the master.
* Whenever a process needs to be killed, those implementations are serialized and sent over
- * to the appropriate slave, then the {@link #kill(ProcessTree.OSProcess)} method is invoked
+ * to the appropriate agent, then the {@link #kill(ProcessTree.OSProcess)} method is invoked
* to attempt to kill the process.
*
*
diff --git a/core/src/main/java/hudson/util/RemotingDiagnostics.java b/core/src/main/java/hudson/util/RemotingDiagnostics.java
index 8a2a51aa28..ed3a4c814b 100644
--- a/core/src/main/java/hudson/util/RemotingDiagnostics.java
+++ b/core/src/main/java/hudson/util/RemotingDiagnostics.java
@@ -61,7 +61,7 @@ import java.util.TreeMap;
* Various remoting operations related to diagnostics.
*
*
- * These code are useful wherever {@link VirtualChannel} is used, such as master, slaves, Maven JVMs, etc.
+ * These code are useful wherever {@link VirtualChannel} is used, such as master, agents, Maven JVMs, etc.
*
* @author Kohsuke Kawaguchi
* @since 1.175
diff --git a/core/src/main/java/hudson/util/spring/BeanBuilder.java b/core/src/main/java/hudson/util/spring/BeanBuilder.java
index e1d1cba514..38482703fd 100644
--- a/core/src/main/java/hudson/util/spring/BeanBuilder.java
+++ b/core/src/main/java/hudson/util/spring/BeanBuilder.java
@@ -39,6 +39,7 @@ import org.springframework.web.context.WebApplicationContext;
import java.io.IOException;
import java.io.InputStream;
+import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
@@ -132,7 +133,7 @@ public class BeanBuilder extends GroovyObjectSupport {
cc.setScriptBaseClass(ClosureScript.class.getName());
GroovyShell shell = new GroovyShell(classLoader,binding,cc);
- ClosureScript s = (ClosureScript)shell.parse(script);
+ ClosureScript s = (ClosureScript)shell.parse(new InputStreamReader(script));
s.setDelegate(this);
s.run();
}
@@ -336,7 +337,7 @@ public class BeanBuilder extends GroovyObjectSupport {
GroovyShell shell = classLoader != null ? new GroovyShell(classLoader,b) : new GroovyShell(b);
for (Resource resource : resources) {
- shell.evaluate(resource.getInputStream());
+ shell.evaluate(new InputStreamReader(resource.getInputStream()));
}
}
diff --git a/core/src/main/java/jenkins/I18n.java b/core/src/main/java/jenkins/I18n.java
new file mode 100644
index 0000000000..299b7328e3
--- /dev/null
+++ b/core/src/main/java/jenkins/I18n.java
@@ -0,0 +1,113 @@
+/*
+ * The MIT License
+ *
+ * Copyright (c) 2015, CloudBees, Inc.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+package jenkins;
+
+import hudson.Extension;
+import hudson.model.RootAction;
+import hudson.util.HttpResponses;
+import jenkins.util.ResourceBundleUtil;
+import org.kohsuke.accmod.Restricted;
+import org.kohsuke.accmod.restrictions.NoExternalUse;
+import org.kohsuke.stapler.HttpResponse;
+import org.kohsuke.stapler.StaplerRequest;
+
+import java.util.Locale;
+
+/**
+ * Internationalization REST (ish) API.
+ * @author tom.fennelly@gmail.com
+ * @since FIXME
+ */
+@Extension
+@Restricted(NoExternalUse.class)
+public class I18n implements RootAction {
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public String getIconFileName() {
+ return null;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public String getDisplayName() {
+ return null;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public String getUrlName() {
+ return "i18n";
+ }
+
+ /**
+ * Get a localised resource bundle.
+ *
{@code variant}: {@link Locale} Language variant. (optional)
+ *
+ *
+ * @param request The request.
+ * @return The JSON response.
+ */
+ public HttpResponse doResourceBundle(StaplerRequest request) {
+ String baseName = request.getParameter("baseName");
+
+ if (baseName == null) {
+ return HttpResponses.errorJSON("Mandatory parameter 'baseName' not specified.");
+ }
+
+ String language = request.getParameter("language");
+ String country = request.getParameter("country");
+ String variant = request.getParameter("variant");
+
+ try {
+ Locale locale = request.getLocale();
+
+ if (language != null && country != null && variant != null) {
+ locale = new Locale(language, country, variant);
+ } else if (language != null && country != null) {
+ locale = new Locale(language, country);
+ } else if (language != null) {
+ locale = new Locale(language);
+ }
+
+ return HttpResponses.okJSON(ResourceBundleUtil.getBundle(baseName, locale));
+ } catch (Exception e) {
+ return HttpResponses.errorJSON(e.getMessage());
+ }
+ }
+}
diff --git a/core/src/main/java/jenkins/SlaveToMasterFileCallable.java b/core/src/main/java/jenkins/SlaveToMasterFileCallable.java
index f196a88cf3..bda39cff47 100644
--- a/core/src/main/java/jenkins/SlaveToMasterFileCallable.java
+++ b/core/src/main/java/jenkins/SlaveToMasterFileCallable.java
@@ -5,7 +5,7 @@ import jenkins.security.Roles;
import org.jenkinsci.remoting.RoleChecker;
/**
- * {@link FileCallable}s that can be executed on the master, sent by the slave.
+ * {@link FileCallable}s that can be executed on the master, sent by the agent.
*
* @since 1.THU
*/
diff --git a/core/src/main/java/jenkins/SoloFilePathFilter.java b/core/src/main/java/jenkins/SoloFilePathFilter.java
index c2cfa58ef0..9897284582 100644
--- a/core/src/main/java/jenkins/SoloFilePathFilter.java
+++ b/core/src/main/java/jenkins/SoloFilePathFilter.java
@@ -28,7 +28,7 @@ public final class SoloFilePathFilter extends FilePathFilter {
private boolean noFalse(String op, File f, boolean b) {
if (!b)
- throw new SecurityException("slave may not " + op + " " + f+"\nSee http://jenkins-ci.org/security-144 for more details");
+ throw new SecurityException("agent may not " + op + " " + f+"\nSee http://jenkins-ci.org/security-144 for more details");
return true;
}
diff --git a/core/src/main/java/jenkins/diagnostics/PinningIsBlockingBundledPluginMonitor.java b/core/src/main/java/jenkins/diagnostics/PinningIsBlockingBundledPluginMonitor.java
deleted file mode 100644
index 0fb30e10fb..0000000000
--- a/core/src/main/java/jenkins/diagnostics/PinningIsBlockingBundledPluginMonitor.java
+++ /dev/null
@@ -1,44 +0,0 @@
-package jenkins.diagnostics;
-
-import com.google.common.collect.ImmutableList;
-import hudson.Extension;
-import hudson.PluginWrapper;
-import hudson.model.AdministrativeMonitor;
-import jenkins.model.Jenkins;
-
-import javax.inject.Inject;
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Fires off when we have any pinned plugins that's blocking upgrade from the bundled version.
- *
- * @author Kohsuke Kawaguchi
- */
-@Extension
-public class PinningIsBlockingBundledPluginMonitor extends AdministrativeMonitor {
- @Inject
- Jenkins jenkins;
-
- private List offenders;
-
- @Override
- public boolean isActivated() {
- return !getOffenders().isEmpty();
- }
-
- private void compute() {
- List offenders = new ArrayList();
- for (PluginWrapper p : jenkins.pluginManager.getPlugins()) {
- if (p.isPinningForcingOldVersion())
- offenders.add(p);
- }
- this.offenders = ImmutableList.copyOf(offenders);
- }
-
- public List getOffenders() {
- if (offenders==null)
- compute();
- return offenders;
- }
-}
diff --git a/core/src/main/java/jenkins/install/InstallState.java b/core/src/main/java/jenkins/install/InstallState.java
new file mode 100644
index 0000000000..42d223815f
--- /dev/null
+++ b/core/src/main/java/jenkins/install/InstallState.java
@@ -0,0 +1,103 @@
+/*
+ * The MIT License
+ *
+ * Copyright (c) 2015, CloudBees, Inc.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+package jenkins.install;
+
+import javax.annotation.CheckForNull;
+
+import org.kohsuke.accmod.Restricted;
+import org.kohsuke.accmod.restrictions.NoExternalUse;
+
+/**
+ * Jenkins install state.
+ *
+ * @author tom.fennelly@gmail.com
+ */
+@Restricted(NoExternalUse.class)
+public enum InstallState {
+ /**
+ * Need InstallState != NEW for tests by default
+ */
+ UNKNOWN(true, null),
+ /**
+ * The initial set up has been completed
+ */
+ INITIAL_SETUP_COMPLETED(true, null),
+ /**
+ * Creating an admin user for an initial Jenkins install.
+ */
+ CREATE_ADMIN_USER(false, INITIAL_SETUP_COMPLETED),
+ /**
+ * New Jenkins install. The user has kicked off the process of installing an
+ * initial set of plugins (via the install wizard).
+ */
+ INITIAL_PLUGINS_INSTALLING(false, CREATE_ADMIN_USER),
+ /**
+ * New Jenkins install.
+ */
+ NEW(false, INITIAL_PLUGINS_INSTALLING),
+ /**
+ * Restart of an existing Jenkins install.
+ */
+ RESTART(true, INITIAL_SETUP_COMPLETED),
+ /**
+ * Upgrade of an existing Jenkins install.
+ */
+ UPGRADE(true, INITIAL_SETUP_COMPLETED),
+ /**
+ * Downgrade of an existing Jenkins install.
+ */
+ DOWNGRADE(true, INITIAL_SETUP_COMPLETED),
+ /**
+ * Jenkins started in test mode (JenkinsRule).
+ */
+ TEST(true, INITIAL_SETUP_COMPLETED),
+ /**
+ * Jenkins started in development mode: Bolean.getBoolean("hudson.Main.development").
+ * Can be run normally with the -Djenkins.install.runSetupWizard=true
+ */
+ DEVELOPMENT(true, INITIAL_SETUP_COMPLETED);
+
+ private final boolean isSetupComplete;
+ private final InstallState nextState;
+
+ private InstallState(boolean isSetupComplete, InstallState nextState) {
+ this.isSetupComplete = isSetupComplete;
+ this.nextState = nextState;
+ }
+
+ /**
+ * Indicates the initial setup is complete
+ */
+ public boolean isSetupComplete() {
+ return isSetupComplete;
+ }
+
+ /**
+ * Gets the next state
+ */
+ @CheckForNull
+ public InstallState getNextState() {
+ return nextState;
+ }
+}
diff --git a/core/src/main/java/jenkins/install/InstallUtil.java b/core/src/main/java/jenkins/install/InstallUtil.java
new file mode 100644
index 0000000000..0b7a2d84f5
--- /dev/null
+++ b/core/src/main/java/jenkins/install/InstallUtil.java
@@ -0,0 +1,301 @@
+/*
+ * The MIT License
+ *
+ * Copyright (c) 2015, CloudBees, Inc.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+package jenkins.install;
+
+import static java.util.logging.Level.SEVERE;
+import static java.util.logging.Level.WARNING;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.logging.Logger;
+
+import javax.annotation.CheckForNull;
+import javax.annotation.Nonnull;
+
+import org.apache.commons.io.FileUtils;
+import org.kohsuke.accmod.Restricted;
+import org.kohsuke.accmod.restrictions.NoExternalUse;
+
+import com.thoughtworks.xstream.XStream;
+
+import hudson.Functions;
+import hudson.model.UpdateCenter.DownloadJob.InstallationStatus;
+import hudson.model.UpdateCenter.DownloadJob.Installing;
+import hudson.security.AuthorizationStrategy;
+import hudson.security.FullControlOnceLoggedInAuthorizationStrategy;
+import hudson.security.HudsonPrivateSecurityRealm;
+import hudson.security.SecurityRealm;
+import hudson.model.UpdateCenter.InstallationJob;
+import hudson.model.UpdateCenter.UpdateCenterJob;
+import hudson.util.VersionNumber;
+import jenkins.model.Jenkins;
+import jenkins.util.xml.XMLUtils;
+
+/**
+ * Jenkins install utilities.
+ *
+ * @author tom.fennelly@gmail.com
+ */
+@Restricted(NoExternalUse.class)
+public class InstallUtil {
+
+ private static final Logger LOGGER = Logger.getLogger(InstallUtil.class.getName());
+
+ // tests need this to be 1.0
+ private static final VersionNumber NEW_INSTALL_VERSION = new VersionNumber("1.0");
+
+ /**
+ * Get the current installation state.
+ * @return The type of "startup" currently under way in Jenkins.
+ */
+ public static InstallState getInstallState() {
+ // Support a simple state override. Useful for testing.
+ String stateOverride = System.getenv("jenkins.install.state");
+ if (stateOverride != null) {
+ try {
+ return InstallState.valueOf(stateOverride.toUpperCase());
+ } catch (RuntimeException e) {
+ throw new IllegalStateException("Unknown install state override specified on the commandline: '" + stateOverride + "'.");
+ }
+ }
+
+ // Support a 3-state flag for running or disabling the setup wizard
+ String shouldRunFlag = System.getProperty("jenkins.install.runSetupWizard");
+ boolean shouldRun = "true".equalsIgnoreCase(shouldRunFlag);
+ boolean shouldNotRun = "false".equalsIgnoreCase(shouldRunFlag);
+
+ // install wizard will always run if environment specified
+ if (!shouldRun) {
+ if (Functions.getIsUnitTest()) {
+ return InstallState.TEST;
+ }
+
+ if (Boolean.getBoolean("hudson.Main.development")) {
+ return InstallState.DEVELOPMENT;
+ }
+ }
+
+ VersionNumber lastRunVersion = new VersionNumber(getLastExecVersion());
+
+ // Neither the top level config or the lastExecVersionFile have a version
+ // stored in them, which means it's a new install.
+ if (lastRunVersion.compareTo(NEW_INSTALL_VERSION) == 0) {
+ Jenkins j = Jenkins.getInstance();
+
+ // Allow for skipping
+ if(shouldNotRun) {
+ try {
+ SetupWizard.completeSetup(j);
+ UpgradeWizard.completeUpgrade(j);
+ return j.getInstallState();
+ } catch (RuntimeException e) {
+ throw e;
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ // Edge case: used Jenkins 1 but did not save the system config page,
+ // the version is not persisted and returns 1.0, so try to check if
+ // they actually did anything
+ if (!j.getItemMap().isEmpty() || !mayBeJenkins2SecurityDefaults(j)) {
+ return InstallState.UPGRADE;
+ }
+ return InstallState.NEW;
+ }
+
+ // We have a last version.
+
+ VersionNumber currentRunVersion = new VersionNumber(getCurrentExecVersion());
+ if (lastRunVersion.isOlderThan(currentRunVersion)) {
+ return InstallState.UPGRADE;
+ } else if (lastRunVersion.isNewerThan(currentRunVersion)) {
+ return InstallState.DOWNGRADE;
+ } else {
+ // Last running version was the same as "this" running version.
+ return InstallState.RESTART;
+ }
+ }
+
+ /**
+ * This could be an upgrade, detect a non-default security realm for the stupid case
+ * where someone installed 1.x and did not save global config or create any items...
+ */
+ private static boolean mayBeJenkins2SecurityDefaults(Jenkins j) {
+ if(j.getSecurityRealm() == SecurityRealm.NO_AUTHENTICATION) { // called before security set up first
+ return true;
+ }
+ if(j.getSecurityRealm() instanceof HudsonPrivateSecurityRealm) { // might be called after a restart, setup isn't complete
+ HudsonPrivateSecurityRealm securityRealm = (HudsonPrivateSecurityRealm)j.getSecurityRealm();
+ if(securityRealm.getAllUsers().size() == 1 && securityRealm.getUser(SetupWizard.initialSetupAdminUserName) != null) {
+ AuthorizationStrategy authStrategy = j.getAuthorizationStrategy();
+ if(authStrategy instanceof FullControlOnceLoggedInAuthorizationStrategy) {
+ // must have been using 2.0+ to set this, as it wasn't present in 1.x and the default is true, to _allow_ anon read
+ if(!((FullControlOnceLoggedInAuthorizationStrategy)authStrategy).isAllowAnonymousRead()) {
+ return true;
+ }
+ }
+ }
+ }
+ return false;
+ }
+
+ /**
+ * Save the current Jenkins instance version as the last executed version.
+ *
+ * This state information is required in order to determine whether or not the Jenkins instance
+ * is just restarting, or is being upgraded from an earlier version.
+ */
+ public static void saveLastExecVersion() {
+ if (Jenkins.VERSION.equals(Jenkins.UNCOMPUTED_VERSION)) {
+ // This should never happen!! Only adding this check in case someone moves the call to this method to the wrong place.
+ throw new IllegalStateException("Unexpected call to InstallUtil.saveLastExecVersion(). Jenkins.VERSION has not been initialized. Call computeVersion() first.");
+ }
+ saveLastExecVersion(Jenkins.VERSION);
+ }
+
+ /**
+ * Get the last saved Jenkins instance version.
+ * @return The last saved Jenkins instance version.
+ * @see #saveLastExecVersion()
+ */
+ public static @Nonnull String getLastExecVersion() {
+ File lastExecVersionFile = getLastExecVersionFile();
+ if (lastExecVersionFile.exists()) {
+ try {
+ return FileUtils.readFileToString(lastExecVersionFile);
+ } catch (IOException e) {
+ LOGGER.log(SEVERE, "Unexpected Error. Unable to read " + lastExecVersionFile.getAbsolutePath(), e);
+ LOGGER.log(WARNING, "Unable to determine the last running version (see error above). Treating this as a restart. No plugins will be updated.");
+ return getCurrentExecVersion();
+ }
+ } else {
+ // Backward compatibility. Use the last version stored in the top level config.xml.
+ // Going to read the value directly from the config.xml file Vs hoping that the
+ // Jenkins startup sequence has moved far enough along that it has loaded the
+ // global config. It can't load the global config until well into the startup
+ // sequence because the unmarshal requires numerous objects to be created e.g.
+ // it requires the Plugin Manager. It happens too late and it's too risky to
+ // change how it currently works.
+ File configFile = getConfigFile();
+ if (configFile.exists()) {
+ try {
+ String lastVersion = XMLUtils.getValue("/hudson/version", configFile);
+ if (lastVersion.length() > 0) {
+ return lastVersion;
+ }
+ } catch (Exception e) {
+ LOGGER.log(SEVERE, "Unexpected error reading global config.xml", e);
+ }
+ }
+ return NEW_INSTALL_VERSION.toString();
+ }
+ }
+
+ /**
+ * Save a specific version as the last execute version.
+ * @param version The version to save.
+ */
+ static void saveLastExecVersion(@Nonnull String version) {
+ File lastExecVersionFile = getLastExecVersionFile();
+ try {
+ FileUtils.write(lastExecVersionFile, version);
+ } catch (IOException e) {
+ LOGGER.log(SEVERE, "Failed to save " + lastExecVersionFile.getAbsolutePath(), e);
+ }
+ }
+
+ static File getConfigFile() {
+ return new File(Jenkins.getInstance().getRootDir(), "config.xml");
+ }
+
+ static File getLastExecVersionFile() {
+ return new File(Jenkins.getInstance().getRootDir(), "jenkins.install.InstallUtil.lastExecVersion");
+ }
+
+ static File getInstallingPluginsFile() {
+ return new File(Jenkins.getInstance().getRootDir(), "jenkins.install.InstallUtil.installingPlugins");
+ }
+
+ private static String getCurrentExecVersion() {
+ if (Jenkins.VERSION.equals(Jenkins.UNCOMPUTED_VERSION)) {
+ // This should never happen!! Only adding this check in case someone moves the call to this method to the wrong place.
+ throw new IllegalStateException("Unexpected call to InstallUtil.getCurrentExecVersion(). Jenkins.VERSION has not been initialized. Call computeVersion() first.");
+ }
+ return Jenkins.VERSION;
+ }
+
+ /**
+ * Returns a list of any plugins that are persisted in the installing list
+ */
+ @SuppressWarnings("unchecked")
+ public static synchronized @CheckForNull Map getPersistedInstallStatus() {
+ File installingPluginsFile = getInstallingPluginsFile();
+ if(installingPluginsFile == null || !installingPluginsFile.exists()) {
+ return null;
+ }
+ return (Map)new XStream().fromXML(installingPluginsFile);
+ }
+
+ /**
+ * Persists a list of installing plugins; this is used in the case Jenkins fails mid-installation and needs to be restarted
+ * @param installingPlugins
+ */
+ public static synchronized void persistInstallStatus(List installingPlugins) {
+ File installingPluginsFile = getInstallingPluginsFile();
+ if(installingPlugins == null || installingPlugins.isEmpty()) {
+ installingPluginsFile.delete();
+ return;
+ }
+ LOGGER.fine("Writing install state to: " + installingPluginsFile.getAbsolutePath());
+ Map statuses = new HashMap();
+ for(UpdateCenterJob j : installingPlugins) {
+ if(j instanceof InstallationJob && j.getCorrelationId() != null) { // only include install jobs with a correlation id (directly selected)
+ InstallationJob ij = (InstallationJob)j;
+ InstallationStatus status = ij.status;
+ String statusText = status.getType();
+ if(status instanceof Installing) { // flag currently installing plugins as pending
+ statusText = "Pending";
+ }
+ statuses.put(ij.plugin.name, statusText);
+ }
+ }
+ try {
+ String installingPluginXml = new XStream().toXML(statuses);
+ FileUtils.write(installingPluginsFile, installingPluginXml);
+ } catch (IOException e) {
+ LOGGER.log(SEVERE, "Failed to save " + installingPluginsFile.getAbsolutePath(), e);
+ }
+ }
+
+ /**
+ * Call to remove any active install status
+ */
+ public static void clearInstallStatus() {
+ persistInstallStatus(null);
+ }
+}
diff --git a/core/src/main/java/jenkins/install/SetupWizard.java b/core/src/main/java/jenkins/install/SetupWizard.java
new file mode 100644
index 0000000000..b2faacbeb4
--- /dev/null
+++ b/core/src/main/java/jenkins/install/SetupWizard.java
@@ -0,0 +1,248 @@
+package jenkins.install;
+
+import java.io.IOException;
+import java.util.Locale;
+import java.util.UUID;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import javax.servlet.Filter;
+import javax.servlet.FilterChain;
+import javax.servlet.FilterConfig;
+import javax.servlet.ServletException;
+import javax.servlet.ServletRequest;
+import javax.servlet.ServletResponse;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletRequestWrapper;
+
+import org.acegisecurity.Authentication;
+import org.acegisecurity.context.SecurityContextHolder;
+import org.acegisecurity.providers.UsernamePasswordAuthenticationToken;
+import org.kohsuke.accmod.Restricted;
+import org.kohsuke.accmod.restrictions.NoExternalUse;
+import org.kohsuke.stapler.HttpResponse;
+import org.kohsuke.stapler.StaplerRequest;
+import org.kohsuke.stapler.StaplerResponse;
+
+import hudson.BulkChange;
+import hudson.FilePath;
+import hudson.model.UpdateCenter;
+import hudson.model.User;
+import hudson.security.FullControlOnceLoggedInAuthorizationStrategy;
+import hudson.security.HudsonPrivateSecurityRealm;
+import hudson.security.SecurityRealm;
+import hudson.security.csrf.DefaultCrumbIssuer;
+import hudson.util.HttpResponses;
+import hudson.util.PluginServletFilter;
+import hudson.util.VersionNumber;
+import jenkins.model.Jenkins;
+import jenkins.security.s2m.AdminWhitelistRule;
+
+/**
+ * A Jenkins instance used during first-run to provide a limited set of services while
+ * initial installation is in progress
+ *
+ * @since 2.0
+ */
+@Restricted(NoExternalUse.class)
+public class SetupWizard {
+ /**
+ * The security token parameter name
+ */
+ public static String initialSetupAdminUserName = "admin";
+
+ private final Logger LOGGER = Logger.getLogger(SetupWizard.class.getName());
+
+ private final Jenkins jenkins;
+
+ public SetupWizard(Jenkins j) throws IOException, InterruptedException {
+ this.jenkins = j;
+
+ UpgradeWizard.completeUpgrade(j);
+
+ // Create an admin user by default with a
+ // difficult password
+ FilePath iapf = getInitialAdminPasswordFile();
+ if(j.getSecurityRealm() == null || j.getSecurityRealm() == SecurityRealm.NO_AUTHENTICATION) { // this seems very fragile
+ BulkChange bc = new BulkChange(j);
+ try{
+ HudsonPrivateSecurityRealm securityRealm = new HudsonPrivateSecurityRealm(false, false, null);
+ j.setSecurityRealm(securityRealm);
+ String randomUUID = UUID.randomUUID().toString().replace("-", "").toLowerCase(Locale.ENGLISH);
+
+ // create an admin user
+ securityRealm.createAccount(SetupWizard.initialSetupAdminUserName, randomUUID);
+
+ // JENKINS-33599 - write to a file in the jenkins home directory
+ // most native packages of Jenkins creates a machine user account 'jenkins' to run Jenkins,
+ // and use group 'jenkins' for admins. So we allo groups to read this file
+ iapf.touch(System.currentTimeMillis());
+ iapf.chmod(0640);
+ iapf.write(randomUUID + System.lineSeparator(), "UTF-8");
+
+
+ // Lock Jenkins down:
+ FullControlOnceLoggedInAuthorizationStrategy authStrategy = new FullControlOnceLoggedInAuthorizationStrategy();
+ authStrategy.setAllowAnonymousRead(false);
+ j.setAuthorizationStrategy(authStrategy);
+
+ // Shut down all the ports we can by default:
+ j.setSlaveAgentPort(-1); // -1 to disable
+
+ // require a crumb issuer
+ j.setCrumbIssuer(new DefaultCrumbIssuer(false));
+
+ // set master -> slave security:
+ j.getInjector().getInstance(AdminWhitelistRule.class)
+ .setMasterKillSwitch(false);
+
+ j.save(); // !!
+ bc.commit();
+ } finally {
+ bc.abort();
+ }
+ }
+
+ if(iapf.exists()) {
+ String setupKey = iapf.readToString().trim();
+ String ls = System.lineSeparator();
+ LOGGER.info(ls + ls + "*************************************************************" + ls
+ + "*************************************************************" + ls
+ + "*************************************************************" + ls
+ + ls
+ + "Jenkins initial setup is required. An admin user has been created and "
+ + "a password generated." + ls
+ + "Please use the following password to proceed to installation:" + ls
+ + ls
+ + setupKey + ls
+ + ls
+ + "This may also be found at: " + iapf.getRemote() + ls
+ + ls
+ + "*************************************************************" + ls
+ + "*************************************************************" + ls
+ + "*************************************************************" + ls);
+ }
+
+ try {
+ PluginServletFilter.addFilter(FORCE_SETUP_WIZARD_FILTER);
+ } catch (ServletException e) {
+ throw new AssertionError(e);
+ }
+
+ try {
+ // Make sure plugin metadata is up to date
+ UpdateCenter.updateDefaultSite();
+ } catch (Exception e) {
+ LOGGER.log(Level.WARNING, e.getMessage(), e);
+ }
+ }
+
+ /**
+ * Indicates a generated password should be used - e.g. this is a new install, no security realm set up
+ */
+ public boolean useGeneratedPassword() {
+ try {
+ return getInitialAdminPasswordFile().exists();
+ } catch (Exception e) {
+ // ignore
+ }
+ return false;
+ }
+
+ /**
+ * Called during the initial setup to create an admin user
+ */
+ public void doCreateAdminUser(StaplerRequest req, StaplerResponse rsp) throws IOException, ServletException {
+ Jenkins j = Jenkins.getInstance();
+ j.checkPermission(Jenkins.ADMINISTER);
+
+ // This will be set up by default. if not, something changed, ok to fail
+ HudsonPrivateSecurityRealm securityRealm = (HudsonPrivateSecurityRealm)j.getSecurityRealm();
+
+ User admin = securityRealm.getUser(SetupWizard.initialSetupAdminUserName);
+ try {
+ if(admin != null) {
+ admin.delete(); // assume the new user may well be 'admin'
+ }
+
+ User u = securityRealm.createAccountByAdmin(req, rsp, "/jenkins/install/SetupWizard/setupWizardFirstUser.jelly", req.getContextPath() + "/");
+ if (u != null) {
+ if(admin != null) {
+ admin = null;
+ }
+
+ // Success! Delete the temporary password file:
+ try {
+ getInitialAdminPasswordFile().delete();
+ } catch (InterruptedException e) {
+ throw new IOException(e);
+ }
+
+ j.setInstallState(InstallState.CREATE_ADMIN_USER.getNextState());
+
+ // ... and then login
+ Authentication a = new UsernamePasswordAuthenticationToken(u.getId(),req.getParameter("password1"));
+ a = securityRealm.getSecurityComponents().manager.authenticate(a);
+ SecurityContextHolder.getContext().setAuthentication(a);
+ }
+ } finally {
+ if(admin != null) {
+ admin.save(); // recreate this initial user if something failed
+ }
+ }
+ }
+
+ /**
+ * Gets the file used to store the initial admin password
+ */
+ public FilePath getInitialAdminPasswordFile() {
+ return jenkins.getRootPath().child("secrets/initialAdminPassword");
+ }
+
+ /**
+ * Remove the setupWizard filter, ensure all updates are written to disk, etc
+ */
+ public HttpResponse doCompleteInstall() throws IOException, ServletException {
+ completeSetup(jenkins);
+ PluginServletFilter.removeFilter(FORCE_SETUP_WIZARD_FILTER);
+ return HttpResponses.okJSON();
+ }
+
+ static void completeSetup(Jenkins jenkins) {
+ jenkins.setInstallState(InstallState.INITIAL_SETUP_COMPLETED);
+ InstallUtil.saveLastExecVersion();
+ // Also, clean up the setup wizard if it's completed
+ jenkins.setSetupWizard(null);
+ }
+
+ /**
+ * This filter will validate that the security token is provided
+ */
+ private final Filter FORCE_SETUP_WIZARD_FILTER = new Filter() {
+ @Override
+ public void init(FilterConfig cfg) throws ServletException {
+ }
+
+ @Override
+ public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
+ // Force root requests to the setup wizard
+ if (request instanceof HttpServletRequest) {
+ HttpServletRequest req = (HttpServletRequest)request;
+ if((req.getContextPath() + "/").equals(req.getRequestURI())) {
+ chain.doFilter(new HttpServletRequestWrapper(req) {
+ public String getRequestURI() {
+ return getContextPath() + "/setupWizard/";
+ }
+ }, response);
+ return;
+ }
+ // fall through to handling the request normally
+ }
+ chain.doFilter(request, response);
+ }
+
+ @Override
+ public void destroy() {
+ }
+ };
+}
diff --git a/core/src/main/java/jenkins/install/UpgradeWizard.java b/core/src/main/java/jenkins/install/UpgradeWizard.java
new file mode 100644
index 0000000000..b2f47b3b04
--- /dev/null
+++ b/core/src/main/java/jenkins/install/UpgradeWizard.java
@@ -0,0 +1,160 @@
+package jenkins.install;
+
+import hudson.Extension;
+import hudson.model.PageDecorator;
+import hudson.model.UpdateSite.Plugin;
+import hudson.util.HttpResponses;
+import hudson.util.VersionNumber;
+import jenkins.model.Jenkins;
+import org.apache.commons.io.FileUtils;
+import org.kohsuke.accmod.Restricted;
+import org.kohsuke.accmod.restrictions.NoExternalUse;
+import org.kohsuke.stapler.HttpResponse;
+import org.kohsuke.stapler.WebApp;
+import org.kohsuke.stapler.interceptor.RequirePOST;
+
+import javax.inject.Inject;
+import java.io.File;
+import java.io.IOException;
+import java.util.Arrays;
+import java.util.concurrent.TimeUnit;
+import java.util.logging.Logger;
+
+import static java.util.logging.Level.*;
+import static org.apache.commons.io.FileUtils.*;
+import static org.apache.commons.lang.StringUtils.*;
+
+/**
+ * This is a stop-gap measure until JENKINS-33663 comes in.
+ * This call may go away. Please don't use it from outside.
+ *
+ * @author Kohsuke Kawaguchi
+ */
+@Restricted(NoExternalUse.class)
+@Extension
+public class UpgradeWizard extends PageDecorator {
+ @Inject
+ private Jenkins jenkins;
+
+ /**
+ * Is this instance fully upgraded?
+ */
+ private volatile boolean upToDate;
+
+ /**
+ * File that captures the state of upgrade.
+ *
+ * This file records the vesrion number that the installation has upgraded to.
+ */
+ /*package*/ File getStateFile() {
+ return new File(Jenkins.getInstance().getRootDir(),"jenkins.install.UpgradeWizard.state");
+ }
+
+ public UpgradeWizard() throws IOException {
+ updateUpToDate();
+ }
+
+ private void updateUpToDate() throws IOException {
+ upToDate = new VersionNumber("2.0").compareTo(getCurrentLevel()) <= 0;
+ }
+
+ /**
+ * What is the version the upgrade wizard has run the last time and upgraded to?
+ */
+ private VersionNumber getCurrentLevel() throws IOException {
+ VersionNumber from = new VersionNumber("1.0");
+ File state = getStateFile();
+ if (state.exists()) {
+ from = new VersionNumber(defaultIfBlank(readFileToString(state), "1.0").trim());
+ }
+ return from;
+ }
+
+ /*package*/
+ void setCurrentLevel(VersionNumber v) throws IOException {
+ FileUtils.writeStringToFile(getStateFile(), v.toString());
+ updateUpToDate();
+ }
+
+ static void completeUpgrade(Jenkins jenkins) throws IOException {
+ // this was determined to be a new install, don't run the update wizard here
+ UpgradeWizard uw = jenkins.getInjector().getInstance(UpgradeWizard.class);
+ if (uw!=null)
+ uw.setCurrentLevel(new VersionNumber("2.0"));
+ }
+
+ /**
+ * Do we need to show the upgrade wizard prompt?
+ */
+ public boolean isDue() {
+ if (upToDate)
+ return false;
+
+ // only admin users should see this
+ if (!jenkins.hasPermission(Jenkins.ADMINISTER))
+ return false;
+
+ // only show when Jenkins is fully up & running
+ WebApp wa = WebApp.getCurrent();
+ if (wa==null || !(wa.getApp() instanceof Jenkins))
+ return false;
+
+ return System.currentTimeMillis() > getStateFile().lastModified();
+ }
+
+ /**
+ * Snooze the upgrade wizard notice.
+ */
+ @RequirePOST
+ public HttpResponse doSnooze() throws IOException {
+ jenkins.checkPermission(Jenkins.ADMINISTER);
+ File f = getStateFile();
+ FileUtils.touch(f);
+ f.setLastModified(System.currentTimeMillis() + TimeUnit.DAYS.toMillis(1));
+ LOGGER.log(FINE, "Snoozed the upgrade wizard notice");
+ return HttpResponses.redirectToContextRoot();
+ }
+
+ /**
+ * Performs the upgrade activity.
+ */
+ @RequirePOST
+ public HttpResponse doUpgrade() throws IOException {
+ jenkins.checkPermission(Jenkins.ADMINISTER);
+ try {
+ if (new VersionNumber("2.0").compareTo(getCurrentLevel())>0) {
+ // 1.0 -> 2.0 upgrade
+ LOGGER.log(WARNING, "Performing 1.0 to 2.0 upgrade");
+
+ for (String shortName : Arrays.asList("workflow-aggregator", "pipeline-stage-view", "github-organization-folder")) {
+ Plugin p = jenkins.getUpdateCenter().getPlugin(shortName);
+ if (p==null) {
+ LOGGER.warning("Plugin not found in the update center: " + shortName);
+ } else {
+ p.deploy(true);
+ }
+ }
+
+ // upgrade to 2.0 complete (if plugin installations fail, that's too bad)
+ FileUtils.writeStringToFile(getStateFile(),"2.0");
+
+ // send the user to the update center so that people can see the installation & restart if need be.
+ return HttpResponses.redirectViaContextPath("updateCenter/");
+ }
+
+// in the future...
+// if (new VersionNumber("3.0").compareTo(getCurrentLevel())>0) {
+//
+// }
+
+ return NOOP;
+ } finally {
+ updateUpToDate();
+ }
+ }
+
+ /*package*/ static final HttpResponse NOOP = HttpResponses.redirectToContextRoot();
+
+
+ private static final Logger LOGGER = Logger.getLogger(UpgradeWizard.class.getName());
+}
diff --git a/core/src/main/java/jenkins/management/ConfigureLink.java b/core/src/main/java/jenkins/management/ConfigureLink.java
index bc7ab1bc16..b7e25ff7e0 100644
--- a/core/src/main/java/jenkins/management/ConfigureLink.java
+++ b/core/src/main/java/jenkins/management/ConfigureLink.java
@@ -35,7 +35,7 @@ public class ConfigureLink extends ManagementLink {
@Override
public String getIconFileName() {
- return "setting.png";
+ return "gear2.png";
}
public String getDisplayName() {
diff --git a/core/src/main/java/jenkins/model/ArtifactManagerFactory.java b/core/src/main/java/jenkins/model/ArtifactManagerFactory.java
index f0d08c4e05..efff30c565 100644
--- a/core/src/main/java/jenkins/model/ArtifactManagerFactory.java
+++ b/core/src/main/java/jenkins/model/ArtifactManagerFactory.java
@@ -45,7 +45,7 @@ public abstract class ArtifactManagerFactory extends AbstractDescribableImpl build);
diff --git a/core/src/main/java/jenkins/model/AssetManager.java b/core/src/main/java/jenkins/model/AssetManager.java
new file mode 100644
index 0000000000..d886ab70fd
--- /dev/null
+++ b/core/src/main/java/jenkins/model/AssetManager.java
@@ -0,0 +1,112 @@
+package jenkins.model;
+
+import hudson.Extension;
+import hudson.model.UnprotectedRootAction;
+import hudson.util.TimeUnit2;
+import org.kohsuke.stapler.StaplerRequest;
+import org.kohsuke.stapler.StaplerResponse;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.net.URL;
+import java.util.Enumeration;
+
+/**
+ * Serves files located in the {@code /assets} classpath directory via the Jenkins core ClassLoader.
+ * e.g. the URL {@code /assets/jquery-detached/jsmodules/jquery2.js} will load {@code jquery-detached/jsmodules/jquery2.js}
+ * resource from the classpath below {@code /assets}.
+ *
+ * @author Kohsuke Kawaguchi
+ */
+@Extension
+public class AssetManager implements UnprotectedRootAction {
+
+ // not shown in the UI
+ @Override
+ public String getIconFileName() {
+ return null;
+ }
+
+ @Override
+ public String getDisplayName() {
+ return null;
+ }
+
+ @Override
+ public String getUrlName() {
+ return "assets";
+ }
+
+ /**
+ * Exposes assets in the core classloader over HTTP.
+ */
+ public void doDynamic(StaplerRequest req, StaplerResponse rsp) throws IOException, ServletException {
+ String path = req.getRestOfPath();
+ URL resource = findResource(path);
+
+ if (resource == null) {
+ rsp.setStatus(HttpServletResponse.SC_NOT_FOUND);
+ return;
+ }
+
+ // Stapler routes requests like the "/static/.../foo/bar/zot" to be treated like "/foo/bar/zot"
+ // and this is used to serve long expiration header, by using Jenkins.VERSION_HASH as "..."
+ // to create unique URLs. Recognize that and set a long expiration header.
+ String requestPath = req.getRequestURI().substring(req.getContextPath().length());
+ boolean staticLink = requestPath.startsWith("/static/");
+ long expires = staticLink ? TimeUnit2.DAYS.toMillis(365) : -1;
+
+ // use serveLocalizedFile to support automatic locale selection
+ rsp.serveLocalizedFile(req, resource, expires);
+ }
+
+ /**
+ * Locates the asset from the classloader.
+ *
+ *
+ * To allow plugins to bring its own assets without worrying about colliding with the assets in core,
+ * look for child classloader first. But to support plugins that get split, if the child classloader
+ * doesn't find it, fall back to the parent classloader.
+ */
+ private URL findResource(String path) throws IOException {
+ try {
+ if (path.contains("..")) // crude avoidance of directory traversal attack
+ throw new IllegalArgumentException(path);
+
+ String name;
+ if (path.charAt(0) == '/') {
+ name = "assets" + path;
+ } else {
+ name = "assets/" + path;
+ }
+
+ ClassLoader cl = Jenkins.class.getClassLoader();
+ URL url = (URL) $findResource.invoke(cl, name);
+ if (url==null) {
+ // pick the last one, which is the one closest to the leaf of the classloader tree.
+ Enumeration e = cl.getResources(name);
+ while (e.hasMoreElements()) {
+ url = e.nextElement();
+ }
+ }
+ return url;
+ } catch (InvocationTargetException|IllegalAccessException e) {
+ throw new Error(e);
+ }
+ }
+
+ private static final Method $findResource = init();
+
+ private static Method init() {
+ try {
+ Method m = ClassLoader.class.getDeclaredMethod("findResource", String.class);
+ m.setAccessible(true);
+ return m;
+ } catch (NoSuchMethodException e) {
+ throw (Error)new NoSuchMethodError().initCause(e);
+ }
+ }
+}
diff --git a/core/src/main/java/jenkins/model/GlobalConfiguration.java b/core/src/main/java/jenkins/model/GlobalConfiguration.java
index 15cc69f831..31c8e08ff3 100644
--- a/core/src/main/java/jenkins/model/GlobalConfiguration.java
+++ b/core/src/main/java/jenkins/model/GlobalConfiguration.java
@@ -42,15 +42,6 @@ public abstract class GlobalConfiguration extends Descriptor scmListeners = new CopyOnWriteList();
/**
- * TCP slave agent port.
+ * TCP agent port.
* 0 for random, -1 to disable.
*/
private int slaveAgentPort = Integer.getInteger(Jenkins.class.getName()+".slaveAgentPort",0);
@@ -603,7 +617,7 @@ public class Jenkins extends AbstractCIBase implements DirectlyModifiableTopLeve
public transient final OverallLoadStatistics overallLoad = new OverallLoadStatistics();
/**
- * Load statistics of the free roaming jobs and slaves.
+ * Load statistics of the free roaming jobs and agents.
*
* This includes all executors on {@link hudson.model.Node.Mode#NORMAL} nodes and jobs that do not have any assigned nodes.
*
@@ -623,7 +637,7 @@ public class Jenkins extends AbstractCIBase implements DirectlyModifiableTopLeve
* Use {@link #unlabeledNodeProvisioner}.
* This was broken because it was tracking all the executors in the system, but it was only tracking
* free-roaming jobs in the queue. So {@link Cloud} fails to launch nodes when you have some exclusive
- * slaves and free-roaming jobs in the queue.
+ * agents and free-roaming jobs in the queue.
*/
@Restricted(NoExternalUse.class)
@Deprecated
@@ -786,7 +800,7 @@ public class Jenkins extends AbstractCIBase implements DirectlyModifiableTopLeve
JenkinsJVMAccess._setJenkinsJVM(true); // set it for unit tests as they will not have gone through WebAppMain
long start = System.currentTimeMillis();
- // As Jenkins is starting, grant this process full control
+ // As Jenkins is starting, grant this process full control
ACL.impersonate(ACL.SYSTEM);
try {
this.root = root;
@@ -797,7 +811,7 @@ public class Jenkins extends AbstractCIBase implements DirectlyModifiableTopLeve
theInstance = this;
if (!new File(root,"jobs").exists()) {
- // if this is a fresh install, use more modern default layout that's consistent with slaves
+ // if this is a fresh install, use more modern default layout that's consistent with agents
workspaceDir = "${JENKINS_HOME}/workspace/${ITEM_FULLNAME}";
}
@@ -856,6 +870,16 @@ public class Jenkins extends AbstractCIBase implements DirectlyModifiableTopLeve
if(KILL_AFTER_LOAD)
System.exit(0);
+ installState = InstallUtil.getInstallState();
+ if (installState == InstallState.RESTART || installState == InstallState.DOWNGRADE) {
+ InstallUtil.saveLastExecVersion();
+ }
+
+ if(!installState.isSetupComplete()) {
+ // Start immediately with the setup wizard for new installs
+ setupWizard = new SetupWizard(this);
+ }
+
launchTcpSlaveAgentListener();
if (UDPBroadcastThread.PORT != -1) {
@@ -930,6 +954,33 @@ public class Jenkins extends AbstractCIBase implements DirectlyModifiableTopLeve
}
return this;
}
+
+ /**
+ * Get the Jenkins {@link jenkins.install.InstallState install state}.
+ * @return The Jenkins {@link jenkins.install.InstallState install state}.
+ */
+ @Nonnull
+ @Restricted(NoExternalUse.class)
+ public InstallState getInstallState() {
+ return installState;
+ }
+
+ /**
+ * Update the current install state.
+ */
+ @Restricted(NoExternalUse.class)
+ public void setInstallState(@Nonnull InstallState newState) {
+ installState = newState;
+ }
+
+ /**
+ * Get the URL path to the Install Wizard JavaScript.
+ * @return The URL path to the Install Wizard JavaScript.
+ */
+ @Restricted(NoExternalUse.class)
+ public String getInstallWizardPath() {
+ return servletContext.getInitParameter("install-wizard-path");
+ }
/**
* Executes a reactor.
@@ -1026,10 +1077,10 @@ public class Jenkins extends AbstractCIBase implements DirectlyModifiableTopLeve
}
}
} catch (BindException e) {
- LOGGER.log(Level.WARNING, String.format("Failed to listen to incoming slave connections through JNLP port %s. Change the JNLP port number", slaveAgentPort), e);
+ LOGGER.log(Level.WARNING, String.format("Failed to listen to incoming agent connections through JNLP port %s. Change the JNLP port number", slaveAgentPort), e);
new AdministrativeError(administrativeMonitorId,
- "Failed to listen to incoming slave connections through JNLP",
- "Failed to listen to incoming slave connections through JNLP. Change the JNLP port number to solve the problem.", e);
+ "Failed to listen to incoming agent connections through JNLP",
+ "Failed to listen to incoming agent connections through JNLP. Change the JNLP port number to solve the problem.", e);
}
}
}
@@ -1439,10 +1490,10 @@ public class Jenkins extends AbstractCIBase implements DirectlyModifiableTopLeve
*/
@Exported(name="jobs")
public List getItems() {
- if (authorizationStrategy instanceof AuthorizationStrategy.Unsecured ||
- authorizationStrategy instanceof FullControlOnceLoggedInAuthorizationStrategy) {
- return new ArrayList(items.values());
- }
+ if (authorizationStrategy instanceof AuthorizationStrategy.Unsecured ||
+ authorizationStrategy instanceof FullControlOnceLoggedInAuthorizationStrategy) {
+ return new ArrayList(items.values());
+ }
List viewableItems = new ArrayList();
for (TopLevelItem item : items.values()) {
@@ -1749,7 +1800,7 @@ public class Jenkins extends AbstractCIBase implements DirectlyModifiableTopLeve
/**
- * Gets the slave node of the give name, hooked under this Jenkins.
+ * Gets the agent node of the give name, hooked under this Jenkins.
*/
public @CheckForNull Node getNode(String name) {
return nodes.getNode(name);
@@ -1817,11 +1868,11 @@ public class Jenkins extends AbstractCIBase implements DirectlyModifiableTopLeve
}
public DescribableList, NodePropertyDescriptor> getNodeProperties() {
- return nodeProperties;
+ return nodeProperties;
}
public DescribableList, NodePropertyDescriptor> getGlobalNodeProperties() {
- return globalNodeProperties;
+ return globalNodeProperties;
}
/**
@@ -2430,7 +2481,7 @@ public class Jenkins extends AbstractCIBase implements DirectlyModifiableTopLeve
*/
@Override public TopLevelItem getItem(String name) throws AccessDeniedException {
if (name==null) return null;
- TopLevelItem item = items.get(name);
+ TopLevelItem item = items.get(name);
if (item==null)
return null;
if (!item.hasPermission(Item.READ)) {
@@ -2711,6 +2762,19 @@ public class Jenkins extends AbstractCIBase implements DirectlyModifiableTopLeve
return new Hudson.MasterComputer();
}
+ private void loadConfig() throws IOException {
+ XmlFile cfg = getConfigFile();
+ if (cfg.exists()) {
+ // reset some data that may not exist in the disk file
+ // so that we can take a proper compensation action later.
+ primaryView = null;
+ views.clear();
+
+ // load from disk
+ cfg.unmarshal(Jenkins.this);
+ }
+ }
+
private synchronized TaskBuilder loadTasks() throws IOException {
File projectsDir = new File(root,"jobs");
if(!projectsDir.getCanonicalFile().isDirectory() && !projectsDir.mkdirs()) {
@@ -2725,17 +2789,7 @@ public class Jenkins extends AbstractCIBase implements DirectlyModifiableTopLeve
TaskGraphBuilder g = new TaskGraphBuilder();
Handle loadJenkins = g.requires(EXTENSIONS_AUGMENTED).attains(JOB_LOADED).add("Loading global config", new Executable() {
public void run(Reactor session) throws Exception {
- XmlFile cfg = getConfigFile();
- if (cfg.exists()) {
- // reset some data that may not exist in the disk file
- // so that we can take a proper compensation action later.
- primaryView = null;
- views.clear();
-
- // load from disk
- cfg.unmarshal(Jenkins.this);
- }
-
+ loadConfig();
// if we are loading old data that doesn't have this field
if (slaves != null && !slaves.isEmpty() && nodes.isLegacy()) {
nodes.setNodes(slaves);
@@ -2783,7 +2837,7 @@ public class Jenkins extends AbstractCIBase implements DirectlyModifiableTopLeve
{// recompute label objects - populates the labels mapping.
for (Node slave : nodes.getNodes())
- // Note that not all labels are visible until the slaves have connected.
+ // Note that not all labels are visible until the agents have connected.
slave.getAssignedLabels();
getAssignedLabels();
}
@@ -3305,8 +3359,6 @@ public class Jenkins extends AbstractCIBase implements DirectlyModifiableTopLeve
systemMessage = Util.nullify(req.getParameter("system_message"));
- setJDKs(req.bindJSONToList(JDK.class, json.get("jdks")));
-
boolean result = true;
for (Descriptor> d : Functions.getSortedDescriptorsForGlobalConfigUnclassified())
result &= configureDescriptor(req,json,d);
@@ -3422,10 +3474,10 @@ public class Jenkins extends AbstractCIBase implements DirectlyModifiableTopLeve
}
public HttpResponse doToggleCollapse() throws ServletException, IOException {
- final StaplerRequest request = Stapler.getCurrentRequest();
- final String paneId = request.getParameter("paneId");
+ final StaplerRequest request = Stapler.getCurrentRequest();
+ final String paneId = request.getParameter("paneId");
- PaneStatusProperties.forCurrentUser().toggleCollapsed(paneId);
+ PaneStatusProperties.forCurrentUser().toggleCollapsed(paneId);
return HttpResponses.forwardToPreviousPage();
}
@@ -3438,10 +3490,10 @@ public class Jenkins extends AbstractCIBase implements DirectlyModifiableTopLeve
}
/**
- * Obtains the thread dump of all slaves (including the master.)
+ * Obtains the thread dump of all agents (including the master.)
*
*
- * Since this is for diagnostics, it has a built-in precautionary measure against hang slaves.
+ * Since this is for diagnostics, it has a built-in precautionary measure against hang agents.
*/
public Map> getAllThreadDumps() throws IOException, InterruptedException {
checkPermission(ADMINISTER);
@@ -3456,9 +3508,9 @@ public class Jenkins extends AbstractCIBase implements DirectlyModifiableTopLeve
LOGGER.info("Failed to get thread dump for node " + c.getName() + ": " + e.getMessage());
}
}
- if (toComputer() == null) {
- future.put("master", RemotingDiagnostics.getThreadDumpAsync(FilePath.localChannel));
- }
+ if (toComputer() == null) {
+ future.put("master", RemotingDiagnostics.getThreadDumpAsync(FilePath.localChannel));
+ }
// if the result isn't available in 5 sec, ignore that.
// this is a precaution against hang nodes
@@ -3534,20 +3586,6 @@ public class Jenkins extends AbstractCIBase implements DirectlyModifiableTopLeve
// looks good
}
- /**
- * Makes sure that the given name is good as a job name.
- * @return trimmed name if valid; throws Failure if not
- */
- private String checkJobName(String name) throws Failure {
- checkGoodName(name);
- name = name.trim();
- projectNamingStrategy.checkName(name);
- if(getItem(name)!=null)
- throw new Failure(Messages.Hudson_JobAlreadyExists(name));
- // looks good
- return name;
- }
-
private static String toPrintableName(String name) {
StringBuilder printableName = new StringBuilder();
for( int i=0; i getManagementLinks() {
return ManagementLink.all();
}
+
+ /**
+ * If set, a currently active setup wizard - e.g. installation
+ */
+ public SetupWizard getSetupWizard() {
+ return setupWizard;
+ }
+
+ /**
+ * Sets the setup wizard
+ */
+ public void setSetupWizard(SetupWizard setupWizard) {
+ this.setupWizard = setupWizard;
+ }
/**
* Exposes the current user to /me URL.
@@ -4544,14 +4577,14 @@ public class Jenkins extends AbstractCIBase implements DirectlyModifiableTopLeve
IOUtils.closeQuietly(is);
}
String ver = props.getProperty("version");
- if(ver==null) ver="?";
+ if(ver==null) ver = UNCOMPUTED_VERSION;
VERSION = ver;
context.setAttribute("version",ver);
VERSION_HASH = Util.getDigestOf(ver).substring(0, 8);
SESSION_HASH = Util.getDigestOf(ver+System.currentTimeMillis()).substring(0, 8);
- if(ver.equals("?") || Boolean.getBoolean("hudson.script.noCache"))
+ if(ver.equals(UNCOMPUTED_VERSION) || Boolean.getBoolean("hudson.script.noCache"))
RESOURCE_PATH = "";
else
RESOURCE_PATH = "/static/"+SESSION_HASH;
@@ -4559,24 +4592,55 @@ public class Jenkins extends AbstractCIBase implements DirectlyModifiableTopLeve
VIEW_RESOURCE_PATH = "/resources/"+ SESSION_HASH;
}
+ /**
+ * The version number before it is "computed" (by a call to computeVersion()).
+ * @since FIXME
+ */
+ public static final String UNCOMPUTED_VERSION = "?";
+
/**
* Version number of this Jenkins.
*/
- public static String VERSION="?";
+ public static String VERSION = UNCOMPUTED_VERSION;
/**
* Parses {@link #VERSION} into {@link VersionNumber}, or null if it's not parseable as a version number
* (such as when Jenkins is run with "mvn hudson-dev:run")
*/
- public static VersionNumber getVersion() {
+ public @CheckForNull static VersionNumber getVersion() {
+ return toVersion(VERSION);
+ }
+
+ /**
+ * Get the stored version of Jenkins, as stored by
+ * {@link #doConfigSubmit(org.kohsuke.stapler.StaplerRequest, org.kohsuke.stapler.StaplerResponse)}.
+ *
+ * Parses the version into {@link VersionNumber}, or null if it's not parseable as a version number
+ * (such as when Jenkins is run with "mvn hudson-dev:run")
+ * @since FIXME
+ */
+ public @CheckForNull static VersionNumber getStoredVersion() {
+ return toVersion(Jenkins.getActiveInstance().version);
+ }
+
+ /**
+ * Parses a version string into {@link VersionNumber}, or null if it's not parseable as a version number
+ * (such as when Jenkins is run with "mvn hudson-dev:run")
+ */
+ private static @CheckForNull VersionNumber toVersion(@CheckForNull String versionString) {
+ if (versionString == null) {
+ return null;
+ }
+
try {
- return new VersionNumber(VERSION);
+ return new VersionNumber(versionString);
} catch (NumberFormatException e) {
try {
// for non-released version of Jenkins, this looks like "1.345 (private-foobar), so try to approximate.
- int idx = VERSION.indexOf(' ');
- if (idx>0)
- return new VersionNumber(VERSION.substring(0,idx));
+ int idx = versionString.indexOf(' ');
+ if (idx > 0) {
+ return new VersionNumber(versionString.substring(0,idx));
+ }
} catch (NumberFormatException _) {
// fall through
}
@@ -4647,7 +4711,7 @@ public class Jenkins extends AbstractCIBase implements DirectlyModifiableTopLeve
private static final String WORKSPACE_DIRNAME = Configuration.getStringConfigParameter("workspaceDirName", "workspace");
/**
- * Automatically try to launch a slave when Jenkins is initialized or a new slave is created.
+ * Automatically try to launch an agent when Jenkins is initialized or a new agent computer is created.
*/
public static boolean AUTOMATIC_SLAVE_LAUNCH = true;
@@ -4706,7 +4770,7 @@ public class Jenkins extends AbstractCIBase implements DirectlyModifiableTopLeve
assert PERMISSIONS != null;
assert ADMINISTER != null;
} catch (RuntimeException e) {
- // when loaded on a slave and this fails, subsequent NoClassDefFoundError will fail to chain the cause.
+ // when loaded on an agent and this fails, subsequent NoClassDefFoundError will fail to chain the cause.
// see http://bugs.java.com/bugdatabase/view_bug.do?bug_id=8051847
// As we don't know where the first exception will go, let's also send this to logging so that
// we have a known place to look at.
diff --git a/core/src/main/java/jenkins/model/item_category/Categories.java b/core/src/main/java/jenkins/model/item_category/Categories.java
new file mode 100644
index 0000000000..9df7b230aa
--- /dev/null
+++ b/core/src/main/java/jenkins/model/item_category/Categories.java
@@ -0,0 +1,79 @@
+/*
+ * The MIT License
+ *
+ * Copyright (c) 2016 CloudBees, Inc.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+
+package jenkins.model.item_category;
+
+import org.kohsuke.accmod.Restricted;
+import org.kohsuke.accmod.restrictions.NoExternalUse;
+import org.kohsuke.stapler.HttpResponse;
+import org.kohsuke.stapler.StaplerRequest;
+import org.kohsuke.stapler.StaplerResponse;
+import org.kohsuke.stapler.export.Exported;
+import org.kohsuke.stapler.export.ExportedBean;
+import org.kohsuke.stapler.export.Flavor;
+
+import javax.annotation.CheckForNull;
+import javax.annotation.Nonnull;
+import javax.servlet.ServletException;
+import java.io.IOException;
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * It is a logic representation of a set of {@link Category}.
+ *
+ * This class is not thread-safe.
+ */
+@ExportedBean
+@Restricted(NoExternalUse.class)
+public class Categories implements HttpResponse, Serializable {
+
+ private List items;
+
+ public Categories() {
+ items = new ArrayList();
+ }
+
+ @Exported(name = "categories")
+ public List getItems() {
+ return items;
+ }
+
+ @Override
+ public void generateResponse(StaplerRequest req, StaplerResponse rsp, Object node) throws IOException, ServletException {
+ rsp.serveExposedBean(req, this, Flavor.JSON);
+ }
+
+ @CheckForNull
+ public Category getItem(@Nonnull String id) {
+ for (Category category : items) {
+ if (category.getId().equals(id)) {
+ return category;
+ }
+ }
+ return null;
+ }
+
+}
diff --git a/core/src/main/java/jenkins/model/item_category/Category.java b/core/src/main/java/jenkins/model/item_category/Category.java
new file mode 100644
index 0000000000..391d7ab8e3
--- /dev/null
+++ b/core/src/main/java/jenkins/model/item_category/Category.java
@@ -0,0 +1,97 @@
+/*
+ * The MIT License
+ *
+ * Copyright 2016 CloudBees, Inc.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+
+package jenkins.model.item_category;
+
+import hudson.model.TopLevelItem;
+import org.kohsuke.accmod.Restricted;
+import org.kohsuke.accmod.restrictions.NoExternalUse;
+import org.kohsuke.stapler.export.Exported;
+import org.kohsuke.stapler.export.ExportedBean;
+
+import java.io.Serializable;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Represents an {@link ItemCategory} and its {@link TopLevelItem}s.
+ *
+ * This class is not thread-safe.
+ */
+@ExportedBean
+@Restricted(NoExternalUse.class)
+public class Category implements Serializable {
+
+ private String id;
+
+ private String name;
+
+ private String description;
+
+ private int order;
+
+ private int minToShow;
+
+ private List
- ${%The slave this project has run on for the last time was removed.}
+ ${%The agent this project has run on for the last time was removed.}
${%li3(it.workspace)}
diff --git a/core/src/main/resources/hudson/model/AbstractItem/noWorkspace_da.properties b/core/src/main/resources/hudson/model/AbstractItem/noWorkspace_da.properties
index 3db6b4afee..38f08ccf26 100644
--- a/core/src/main/resources/hudson/model/AbstractItem/noWorkspace_da.properties
+++ b/core/src/main/resources/hudson/model/AbstractItem/noWorkspace_da.properties
@@ -27,4 +27,3 @@ The\ project\ was\ renamed\ recently\ and\ no\ build\ was\ done\ under\ the\ new
Projektet er blevet omd\u00f8bt for nyligt og ingen byg er endnu udf\u00f8rt under det nye navn
Error\:\ no\ workspace=Fejl: intet arbejdsomr\u00e5de
text=K\u00f8r et byg for at f\u00e5 Jenkins til at lave et arbejdsomr\u00e5de.
-The\ slave\ this\ project\ has\ run\ on\ for\ the\ last\ time\ was\ removed.=Slaven projektet sidst k\u00f8rte p\u00e5 er blevet fjernet.
diff --git a/core/src/main/resources/hudson/model/AbstractItem/noWorkspace_de.properties b/core/src/main/resources/hudson/model/AbstractItem/noWorkspace_de.properties
index 784afb23af..7c56bb5ee4 100644
--- a/core/src/main/resources/hudson/model/AbstractItem/noWorkspace_de.properties
+++ b/core/src/main/resources/hudson/model/AbstractItem/noWorkspace_de.properties
@@ -27,8 +27,6 @@ There's\ no\ workspace\ for\ this\ project.\ Possible\ reasons\ are\:=\
Es existiert kein Arbeitsbereich für dieses Projekt. Mögliche Gründe sind:
The\ project\ was\ renamed\ recently\ and\ no\ build\ was\ done\ under\ the\ new\ name.=\
Das Projekt wurde vor kurzem umbenannt und noch kein Build unter dem neuen Namen ausgeführt.
-The\ slave\ this\ project\ has\ run\ on\ for\ the\ last\ time\ was\ removed.=\
- Der Slave, auf dem dieses Projekt das letzte Mal ausgeführt wurde, wurde entfernt.
li3=Das Arbeitsbereichsverzeichnis ({0}) wurde außerhalb von Jenkins entfernt.
text=Starten Sie einen Build, um von Jenkins einen Arbeitsbereich anlegen zu lassen.
The\ workspace\ was\ wiped\ out\ and\ no\ build\ has\ been\ done\ since\ then.=Der Arbeitsbereich wurde gel\u00F6scht und es wurde seitdem kein Build durchgef\u00FChrt.
diff --git a/core/src/main/resources/hudson/model/AbstractItem/noWorkspace_es.properties b/core/src/main/resources/hudson/model/AbstractItem/noWorkspace_es.properties
index fc9d13524e..58f2750bb3 100644
--- a/core/src/main/resources/hudson/model/AbstractItem/noWorkspace_es.properties
+++ b/core/src/main/resources/hudson/model/AbstractItem/noWorkspace_es.properties
@@ -26,7 +26,7 @@ text=Lanzar una ejecuci
There''s\ no\ workspace\ for\ this\ project.\ Possible\ reasons\ are\:=No hay espacio de trabajo para este proyecto, las causas posibles son:
The\ project\ was\ renamed\ recently\ and\ no\ build\ was\ done\ under\ the\ new\ name.=El proyecto se ha renombrado y no se a ejecutado desde entonces
Error\:\ no\ workspace=Error, no hay espacio de trabajo
-The\ slave\ this\ project\ has\ run\ on\ for\ the\ last\ time\ was\ removed.=El nodo esclavo donde se ejecutó la última vez se ha eliminado
+The\ agent\ this\ project\ has\ run\ on\ for\ the\ last\ time\ was\ removed.=El agente donde se ejecutó la última vez se ha eliminado
The\ workspace\ was\ wiped\ out\ and\ no\ build\ has\ been\ done\ since\ then.=El espacio de trabajo se ha borrado, y no se ha ejecutado la tarea desde entonces.
diff --git a/core/src/main/resources/hudson/model/AbstractItem/noWorkspace_fr.properties b/core/src/main/resources/hudson/model/AbstractItem/noWorkspace_fr.properties
index 70d43848b3..09aa434739 100644
--- a/core/src/main/resources/hudson/model/AbstractItem/noWorkspace_fr.properties
+++ b/core/src/main/resources/hudson/model/AbstractItem/noWorkspace_fr.properties
@@ -24,6 +24,5 @@ Error\:\ no\ workspace=Erreur : pas de workspace
A\ project\ won't\ have\ any\ workspace\ until\ at\ least\ one\ build\ is\ performed.=Un projet n''a pas de workspace avant un premier build.
There's\ no\ workspace\ for\ this\ project.\ Possible\ reasons\ are\:=Il n''y a pas de workspace existant pour ce projet. Les raisons possibles sont :
The\ project\ was\ renamed\ recently\ and\ no\ build\ was\ done\ under\ the\ new\ name.=Le projet a \u00e9t\u00e9 renomm\u00e9 r\u00e9cemment et aucun build n''a \u00e9t\u00e9 fait avec ce nouveau nom.
-The\ slave\ this\ project\ has\ run\ on\ for\ the\ last\ time\ was\ removed.=La machine esclave sur laquelle ce projet a \u00e9t\u00e9 lanc\u00e9 pour la derni\u00e8re fois a \u00e9t\u00e9 retir\u00e9e.
li3=Le r\u00e9pertoire de travail ({0}) a \u00e9t\u00e9 d\u00e9plac\u00e9 hors de Jenkins.
text=Lancer un build afin de faire cr\u00e9er un workspace par Jenkins.
diff --git a/core/src/main/resources/hudson/model/AbstractItem/noWorkspace_ja.properties b/core/src/main/resources/hudson/model/AbstractItem/noWorkspace_ja.properties
index 6f2a4b5185..f8332b3369 100644
--- a/core/src/main/resources/hudson/model/AbstractItem/noWorkspace_ja.properties
+++ b/core/src/main/resources/hudson/model/AbstractItem/noWorkspace_ja.properties
@@ -27,8 +27,6 @@ There''s\ no\ workspace\ for\ this\ project.\ Possible\ reasons\ are\:=\
\u3053\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u30ef\u30fc\u30af\u30b9\u30da\u30fc\u30b9\u304c\u5b58\u5728\u3057\u307e\u305b\u3093\u3002\u4ee5\u4e0b\u306e\u7406\u7531\u304c\u8003\u3048\u3089\u308c\u307e\u3059\u3002
The\ project\ was\ renamed\ recently\ and\ no\ build\ was\ done\ under\ the\ new\ name.=\
\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u304c\u65b0\u3057\u3044\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u540d\u306b\u5909\u66f4\u3055\u308c\u305f\u5f8c\u306b\u3001\u305d\u306e\u540d\u524d\u3067\u30d3\u30eb\u30c9\u304c\u5b9f\u884c\u3055\u308c\u3066\u3044\u306a\u3044\u3002
-The\ slave\ this\ project\ has\ run\ on\ for\ the\ last\ time\ was\ removed.=\
- \u3053\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u6700\u5f8c\u306b\u5b9f\u884c\u3057\u305f\u30b9\u30ec\u30fc\u30d6\u304c\u3001\u5916\u3055\u308c\u305f\u3002
li3=\u30ef\u30fc\u30af\u30b9\u30da\u30fc\u30b9\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\uff08{0}\uff09\u304cJenkins\u306e\u7ba1\u7406\u5916\u3078\u53d6\u308a\u9664\u304b\u308c\u305f\u3002
text=\u30d3\u30eb\u30c9\u3092\u5b9f\u884c\u3057\u3066\u3001\u30ef\u30fc\u30af\u30b9\u30da\u30fc\u30b9\u3092\u4f5c\u6210\u3057\u3066\u304f\u3060\u3055\u3044\u3002
The\ workspace\ was\ wiped\ out\ and\ no\ build\ has\ been\ done\ since\ then.=\
diff --git a/core/src/main/resources/hudson/model/AbstractItem/noWorkspace_nl.properties b/core/src/main/resources/hudson/model/AbstractItem/noWorkspace_nl.properties
index a569ad3122..2e441f2040 100644
--- a/core/src/main/resources/hudson/model/AbstractItem/noWorkspace_nl.properties
+++ b/core/src/main/resources/hudson/model/AbstractItem/noWorkspace_nl.properties
@@ -24,6 +24,5 @@ Error\:\ no\ workspace=Fout : geen werkplaats beschikbaar
A\ project\ won't\ have\ any\ workspace\ until\ at\ least\ one\ build\ is\ performed.=Een project zal geen werkplaats hebben tot er op zijn mins \u00E9\u00E9n bouwpoging plaatsgevonden heeft.
There's\ no\ workspace\ for\ this\ project.\ Possible\ reasons\ are\:=Er is geen werkplaats beschikbaar voor dit project. Mogelijke redenen zijn :
The\ project\ was\ renamed\ recently\ and\ no\ build\ was\ done\ under\ the\ new\ name.=Dit project werd hernoemd en heeft nog bouwpoging plaats gevonden onder de nieuwe naam.
-The\ slave\ this\ project\ has\ run\ on\ for\ the\ last\ time\ was\ removed.=De slaafnode die dit project het laatst gebouwd heeft werd verwijderd.
li3=Het pad naar de werkplaats ({0}) werd buiten Jenkins verwijderd.
text=Lanceer een bouwpoging om Jenkins de werkplaats te laten cre\u00EBren.
diff --git a/core/src/main/resources/hudson/model/AbstractItem/noWorkspace_pt_BR.properties b/core/src/main/resources/hudson/model/AbstractItem/noWorkspace_pt_BR.properties
index a05b677545..7abc056705 100644
--- a/core/src/main/resources/hudson/model/AbstractItem/noWorkspace_pt_BR.properties
+++ b/core/src/main/resources/hudson/model/AbstractItem/noWorkspace_pt_BR.properties
@@ -22,7 +22,6 @@
Error\:\ no\ workspace=Erro: nenhum workspace
The\ project\ was\ renamed\ recently\ and\ no\ build\ was\ done\ under\ the\ new\ name.=O projeto foi renomeado recentemente e nenhum build foi feito com um novo nome.
-The\ slave\ this\ project\ has\ run\ on\ for\ the\ last\ time\ was\ removed.=A m\u00e1quina slave onde esse projeto executou pela ultima vez foi removida.
li3=O diret\u00f3rio de workspace ({0}) foi removido externamente ao Jenkins.
text=Execute um build para que o Jenkins crie um workspace.
There''s\ no\ workspace\ for\ this\ project.\ Possible\ reasons\ are\:=N\u00e3o existe nenhum workspace dispon\u00edvel para esse projeto
diff --git a/core/src/main/resources/hudson/model/AbstractItem/noWorkspace_ru.properties b/core/src/main/resources/hudson/model/AbstractItem/noWorkspace_ru.properties
index d3cd6ba59d..ca520bc3df 100644
--- a/core/src/main/resources/hudson/model/AbstractItem/noWorkspace_ru.properties
+++ b/core/src/main/resources/hudson/model/AbstractItem/noWorkspace_ru.properties
@@ -27,7 +27,5 @@ There's\ no\ workspace\ for\ this\ project.\ Possible\ reasons\ are\:=\
\u0421\u0431\u043e\u0440\u043e\u0447\u043d\u0430\u044f \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044f \u0434\u043b\u044f \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0435 \u043f\u0440\u0438\u0447\u0438\u043d\u044b:
The\ project\ was\ renamed\ recently\ and\ no\ build\ was\ done\ under\ the\ new\ name.=\
\u041f\u0440\u043e\u0435\u043a\u0442 \u0431\u044b\u043b \u043d\u0435\u0434\u0430\u0432\u043d\u043e \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d \u0438 \u0441\u0431\u043e\u0440\u043e\u043a \u043f\u043e\u0434 \u043d\u043e\u0432\u044b\u043c \u0438\u043c\u0435\u043d\u0435\u043c \u0435\u0449\u0435 \u043d\u0435 \u0431\u044b\u043b\u043e.
-The\ slave\ this\ project\ has\ run\ on\ for\ the\ last\ time\ was\ removed.=\
- \u041f\u043e\u0434\u0447\u0438\u043d\u0435\u043d\u043d\u044b\u0439 \u0441\u0435\u0440\u0432\u0435\u0440, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0441\u043e\u0431\u0438\u0440\u0430\u043b\u0441\u044f \u044d\u0442\u043e\u0442 \u043f\u0440\u043e\u0435\u043a\u0442 \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0440\u0430\u0437, \u0431\u044b\u043b \u0443\u0434\u0430\u043b\u0435\u043d.
li3=\u0421\u0431\u043e\u0440\u043e\u0447\u043d\u0430\u044f \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044f ({0}) \u0431\u044b\u043b\u0430 \u0443\u0434\u0430\u043b\u0435\u043d\u0430 \u0438\u0437 \u0440\u0430\u0431\u043e\u0447\u0435\u0433\u043e \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430 Jenkins.
text=\u0417\u0430\u043F\u0443\u0441\u0442\u0438\u0442\u0435 \u0441\u0431\u043E\u0440\u043A\u0443, \u0447\u0442\u043E\u0431\u044B \u043F\u043E\u0437\u0432\u043E\u043B\u0438\u0442\u044C Jenkins \u0441\u043E\u0437\u0434\u0430\u0442\u044C \u0441\u0431\u043E\u0440\u043E\u0447\u043D\u0443\u044E \u0434\u0438\u0440\u0435\u043A\u0442\u043E\u0440\u0438\u044E.
diff --git a/core/src/main/resources/hudson/model/AbstractItem/noWorkspace_tr.properties b/core/src/main/resources/hudson/model/AbstractItem/noWorkspace_tr.properties
index aa57c21449..0696ad6f25 100644
--- a/core/src/main/resources/hudson/model/AbstractItem/noWorkspace_tr.properties
+++ b/core/src/main/resources/hudson/model/AbstractItem/noWorkspace_tr.properties
@@ -26,4 +26,3 @@ Error\:\ no\ workspace=Hata\:\ \u00c7al\u0131\u015fma Alan\u0131 mevcut de\u011f
A\ project\ won't\ have\ any\ workspace\ until\ at\ least\ one\ build\ is\ performed.=Bir\ proje,\ en\ az\u0131ndan\ bir\ yap\u0131land\u0131rma\ \u00e7al\u0131\u015ft\u0131r\u0131lmadan\ bir\ \u00e7al\u0131\u015fma\ alan\u0131na\ sahip\ olamaz.
There's\ no\ workspace\ for\ this\ project.\ Possible\ reasons\ are\:=Bu\ projenin\ bir\ \u00e7al\u0131\u015fma\ alan\u0131\ yok.\ Muhtemel\ sebepler\:
The\ project\ was\ renamed\ recently\ and\ no\ build\ was\ done\ under\ the\ new\ name.=Projenin\ ismi\ yeni\ de\u011fi\u015ftirildi\ ve\ yeni\ isim\ alt\u0131nda\ herhangi\ bir\ yap\u0131land\u0131rma\ \u00e7al\u0131\u015ft\u0131r\u0131lmad\u0131.
-The\ slave\ this\ project\ has\ run\ on\ for\ the\ last\ time\ was\ removed.=Bu projenin en son \u00fczerinde \u00e7al\u0131\u015ft\u0131\u011f\u0131 slave silinmi\u015f.
diff --git a/core/src/main/resources/hudson/model/AbstractItem/noWorkspace_zh_TW.properties b/core/src/main/resources/hudson/model/AbstractItem/noWorkspace_zh_TW.properties
index 3c48727421..c3b0d8184a 100644
--- a/core/src/main/resources/hudson/model/AbstractItem/noWorkspace_zh_TW.properties
+++ b/core/src/main/resources/hudson/model/AbstractItem/noWorkspace_zh_TW.properties
@@ -26,7 +26,6 @@ A\ project\ won't\ have\ any\ workspace\ until\ at\ least\ one\ build\ is\ perfo
There's\ no\ workspace\ for\ this\ project.\ Possible\ reasons\ are\:=\
\u5c08\u6848\u6c92\u6709\u5de5\u4f5c\u5340\u3002\u53ef\u80fd\u7684\u539f\u56e0\u6709:
The\ project\ was\ renamed\ recently\ and\ no\ build\ was\ done\ under\ the\ new\ name.=\u5C08\u6848\u6700\u8FD1\u6539\u540D\u4E86\uFF0C\u800C\u4E14\u6539\u540D\u5F8C\u9084\u6C92\u5EFA\u7F6E\u904E\u3002
-The\ slave\ this\ project\ has\ run\ on\ for\ the\ last\ time\ was\ removed.=\u6700\u5F8C\u4E00\u6B21\u5EFA\u7F6E\u672C\u5C08\u6848\u7684 Slave \u88AB\u79FB\u9664\u4E86\u3002
li3=\u5DE5\u4F5C\u5340\u76EE\u9304 ({0}) \u5728 Jenkins \u5916\u88AB\u522A\u9664\u4E86\u3002
The\ workspace\ was\ wiped\ out\ and\ no\ build\ has\ been\ done\ since\ then.=\u5DE5\u4F5C\u5340\u88AB\u6E05\u9664\uFF0C\u800C\u4E14\u5230\u76EE\u524D\u70BA\u6B62\u9084\u6C92\u6709\u5EFA\u7F6E\u904E\u3002
diff --git a/core/src/main/resources/hudson/model/AbstractProject/configure-common.jelly b/core/src/main/resources/hudson/model/AbstractProject/configure-common.jelly
index 62b5bd176a..806067f210 100644
--- a/core/src/main/resources/hudson/model/AbstractProject/configure-common.jelly
+++ b/core/src/main/resources/hudson/model/AbstractProject/configure-common.jelly
@@ -48,19 +48,17 @@ THE SOFTWARE.
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
diff --git a/core/src/main/resources/hudson/model/AbstractProject/help-concurrentBuild.html b/core/src/main/resources/hudson/model/AbstractProject/help-concurrentBuild.html
index 6c5752360a..7d2116b37a 100644
--- a/core/src/main/resources/hudson/model/AbstractProject/help-concurrentBuild.html
+++ b/core/src/main/resources/hudson/model/AbstractProject/help-concurrentBuild.html
@@ -1,24 +1,39 @@
+
- If this option is checked, Jenkins will schedule and execute multiple builds concurrently (provided
- that you have sufficient executors and incoming build requests.) This is useful on builds and test jobs that
- take a long time, as each build will only contain a smaller number of changes, and the total turn-around
- time decreases due to the shorter time a build request spends waiting for the previous build to complete.
- It is also very useful with parameterized builds, whose individual executions are independent from each other.
-
-
- For other kinds of jobs, allowing concurrent executions of multiple builds may be problematic,
- for example if it assumes a monopoly on a certain resource, like database, or for jobs where you use Jenkins
- as a cron replacement.
-
-
- If you use a custom workspace and enable this option, all your builds will run on the same workspace,
- thus unless a care is taken by your side, it'll likely to collide with each other.
- Otherwise, even when they are run on the same node, Jenkins will use different workspaces to keep
- them isolated.
-
-
- When Jenkins creates different workspaces for isolation, Jenkins appends "@num" to the
- workspace directory name, e.g. "@2". The separator "@" can be configured by setting the system property
- "hudson.slaves.WorkspaceList" to the desired separator string on the Jenkins command line.
- E.g. "-Dhudson.slaves.WorkspaceList=-" will use a dash as separator.
+ When this option is checked, multiple builds of this project may be executed
+ in parallel.
+
+ By default, only a single build of a project is executed at a time — any
+ other requests to start building that project will remain in the build queue
+ until the first build is complete.
+ This is a safe default, as projects can often require exclusive access to
+ certain resources, such as a database, or a piece of hardware.
+
+ But with this option enabled, if there are enough build executors available
+ that can handle this project, then multiple builds of this project will take
+ place in parallel. If there are not enough available executors at any point,
+ any further build requests will be held in the build queue as normal.
+
+ Enabling concurrent builds is useful for projects that execute lengthy test
+ suites, as it allows each build to contain a smaller number of changes, while
+ the total turnaround time decreases as subsequent builds do not need to wait
+ for previous test runs to complete.
+ This feature is also useful for parameterised projects, whose individual build
+ executions — depending on the parameters used — can be
+ completely independent from one another.
+
+ Each concurrently executed build occurs in its own build workspace, isolated
+ from any other builds. By default, Jenkins appends "@<num>" to
+ the workspace directory name, e.g. "@2".
+ The separator "@" can be changed by setting the
+ hudson.slaves.WorkspaceList Java system property when starting
+ Jenkins. For example, "hudson.slaves.WorkspaceList=-" would change
+ the separator to a hyphen.
+ For more information on setting system properties, see the wiki page.
+
+ However, if you enable the Use custom workspace option, all builds will
+ be executed in the same workspace. Therefore caution is required, as multiple
+ builds may end up altering the same directory at the same time.
- If you want to always run this project on a specific node/slave, just specify its name.
- This works well when you have a small number of nodes.
+ Defines a logical expression which determines which agents may execute builds
+ of this project. This expression, when tested against the name and labels of
+ each available agent, will be either true or false. If the
+ expression evaluates to true, then that agent will be allowed to
+ execute builds of this project.
+
+ If this project should always be built on a specific agent, or on the Jenkins
+ master, then you can just enter the agent's name, or master,
+ respectively.
+
+ However, you should generally avoid using the Name of an agent here,
+ preferring to target the Labels of an agent. As documented on the
+ configuration page for each agent, and the Configure System page for
+ the master, labels can be used to represent which operating system the agent
+ is running on, its CPU architecture, or any number of other characteristics.
+
+ Using labels removes the need to re-configure the label expression entered
+ here each time that you add, remove, or rename agents.
+
+ A label expression can be as simple as entering a single label or
+ agent name, for example android-builder, or
+ linux-machine-42.
+ You can also make use of various operators to create more complex
+ expressions.
-
- As the size of the cluster grows, it becomes useful not to tie projects to specific slaves,
- as it hurts resource utilization when slaves may come and go. For such situation, assign labels
- to slaves to classify their capabilities and characteristics, and specify a boolean expression
- over those labels to decide where to run.
+
Supported operators
+ The following operators are supported, in descending order of precedence:
+
+
(expression)
+
+ parentheses — used to explicitly define the associativity of an expression
+
-
Valid Operators
-
- The following operators are supported, in the order of precedence.
-
-
(expr)
-
parenthesis
+
!expression
+
+ NOT — negation; the result of expression must not be true
+
-
!expr
-
negation
+
a && b
+
+ AND — both of the expressions a and b must be
+ true
+
-
expr&&expr
-
- and
-
+
a || b
+
+ OR — either of the expressions a or b may be
+ true
+
-
expr||expr
-
- or
-
+
a -> b
+
+ "implies" operator — equivalent to !a || b.
+ For example, windows -> x64 could be thought of as "if a Windows
+ agent is used, then that agent must be 64-bit", while still
+ allowing this project to be executed on any agents that do not have
+ the windows label, regardless of whether they have also have an
+ x64 label
+
-
a -> b
-
- "implies" operator. Equivalent to !a|b.
- For example, windows->x64 could be thought of as "if run on a Windows slave,
- that slave must be 64bit." It still allows Jenkins to run this build on linux.
-
+
a <-> b
+
+ "if and only if" operator — equivalent to a && b ||
+ !a && !b
+ For example, windows <-> dc2 could be thought of as "if a
+ Windows agent is used, then that agent must be in datacenter 2, but
+ if a non-Windows agent is used, then it must not be in datacenter
+ 2"
+
+
-
a <-> b
-
- "if and only if" operator. Equivalent to a&&b || !a&&!b.
- For example, windows<->sfbay could be thought of as "if run on a Windows slave,
- that slave must be in the SF bay area, but if not on Windows, it must not be in the bay area."
-
-
-
- All operators are left-associative (i.e., a->b->c <-> (a->b)->c )
- An expression can contain whitespace for better readability, and it'll be ignored.
+
Notes
+
+
+ All operators are left-associative, i.e. a -> b -> c is
+ equivalent to (a -> b) -> c.
+
+
+ Labels or agent names can be surrounded with quotation marks if they
+ contain characters that would conflict with the operator syntax.
+ For example, "osx (10.11)" || "Windows Server".
+
+
+ Expressions can be written without whitespace, but including it is
+ recommended for readability; Jenkins will ignore whitespace when
+ evaluating expressions.
+
+
+ Matching labels or agent names with wildcards or regular expressions is
+ not supported.
+
+
+ An empty expression will always evaluate to true, matching all
+ agents.
+
+
-
- Label names or slave names can be quoted if they contain unsafe characters. For example,
- "jenkins-solaris (Solaris)" || "Windows 2008"
+
Examples
+
+
master
+
Builds of this project may be executed only on the Jenkins master
+
+
linux-machine-42
+
+ Builds of this project may be executed only on the agent with the name
+ linux-machine-42 (or on any machine that happens to have a label
+ called linux-machine-42)
+
+
+
windows && jdk9
+
+ Builds of this project may be executed only on any Windows agent that has
+ version 9 of the Java Development Kit installed (assuming that agents
+ with JDK 9 installed have been given a jdk9 label)
+
+
+
postgres && !vm && (linux || freebsd)
+
+ Builds of this project may be executed only any on Linux or FreeBSD agent,
+ so long as they are not a virtual machine, and they have PostgreSQL
+ installed (assuming that each agent has the appropriate labels — in
+ particular, each agent running in a virtual machine must have the
+ vm label in order for this example to work as expected)
+
diff --git a/core/src/main/resources/hudson/model/AllView/noJob.jelly b/core/src/main/resources/hudson/model/AllView/noJob.jelly
index 5a74697978..0c9e0c26a9 100644
--- a/core/src/main/resources/hudson/model/AllView/noJob.jelly
+++ b/core/src/main/resources/hudson/model/AllView/noJob.jelly
@@ -32,7 +32,7 @@ THE SOFTWARE.
-
+
${%newJob}
diff --git a/core/src/main/resources/hudson/model/Computer/_script.jelly b/core/src/main/resources/hudson/model/Computer/_script.jelly
index bcb7e1645f..87fa923070 100644
--- a/core/src/main/resources/hudson/model/Computer/_script.jelly
+++ b/core/src/main/resources/hudson/model/Computer/_script.jelly
@@ -31,7 +31,7 @@ THE SOFTWARE.
println System.getenv("PATH")
println "uname -a".execute().text
- ${%This execution happens in the slave agent JVM.}
+ ${%This execution happens in the agent JVM.}
diff --git a/core/src/main/resources/hudson/model/Computer/_script_da.properties b/core/src/main/resources/hudson/model/Computer/_script_da.properties
deleted file mode 100644
index 8bc4318049..0000000000
--- a/core/src/main/resources/hudson/model/Computer/_script_da.properties
+++ /dev/null
@@ -1,23 +0,0 @@
-# The MIT License
-#
-# Copyright (c) 2004-2010, Sun Microsystems, Inc. Kohsuke Kawaguchi. Knud Poulsen.
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-# copies of the Software, and to permit persons to whom the Software is
-# furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included in
-# all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-# THE SOFTWARE.
-
-This\ execution\ happens\ in\ the\ slave\ agent\ JVM.=Denne eksekvering sker i slave agentens JVM.
diff --git a/core/src/main/resources/hudson/model/Computer/_script_de.properties b/core/src/main/resources/hudson/model/Computer/_script_de.properties
deleted file mode 100644
index 1d42d76034..0000000000
--- a/core/src/main/resources/hudson/model/Computer/_script_de.properties
+++ /dev/null
@@ -1,2 +0,0 @@
-This\ execution\ happens\ in\ the\ slave\ agent\ JVM.=\
- Diese Ausführung findet in der JVM des Slave-Agenten statt.
diff --git a/core/src/main/resources/hudson/model/Computer/_script_es.properties b/core/src/main/resources/hudson/model/Computer/_script_es.properties
index acc45963cf..3c7710374d 100644
--- a/core/src/main/resources/hudson/model/Computer/_script_es.properties
+++ b/core/src/main/resources/hudson/model/Computer/_script_es.properties
@@ -20,4 +20,4 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
-This\ execution\ happens\ in\ the\ slave\ agent\ JVM.=Esta ejecución se hace en el agente de la máquina virtual del esclavo.
+This\ execution\ happens\ in\ the\ agent\ JVM.=Esta ejecución se hace en la máquina virtual (JVM) del agente.
diff --git a/core/src/main/resources/hudson/model/Computer/_script_fr.properties b/core/src/main/resources/hudson/model/Computer/_script_fr.properties
deleted file mode 100644
index 78ac8fcafc..0000000000
--- a/core/src/main/resources/hudson/model/Computer/_script_fr.properties
+++ /dev/null
@@ -1,23 +0,0 @@
-# The MIT License
-#
-# Copyright (c) 2004-2009, Sun Microsystems, Inc., Kohsuke Kawaguchi, Eric Lefevre-Ardant
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-# copies of the Software, and to permit persons to whom the Software is
-# furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included in
-# all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-# THE SOFTWARE.
-
-This\ execution\ happens\ in\ the\ slave\ agent\ JVM.=Cette exécution a lieu sur la JVM de l''agent Jenkins sur l''esclave.
diff --git a/core/src/main/resources/hudson/model/Computer/_script_ja.properties b/core/src/main/resources/hudson/model/Computer/_script_ja.properties
deleted file mode 100644
index ce17ad737a..0000000000
--- a/core/src/main/resources/hudson/model/Computer/_script_ja.properties
+++ /dev/null
@@ -1,24 +0,0 @@
-# The MIT License
-#
-# Copyright (c) 2004-2010, Sun Microsystems, Inc., Kohsuke Kawaguchi, Seiji Sogabe
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-# copies of the Software, and to permit persons to whom the Software is
-# furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included in
-# all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-# THE SOFTWARE.
-
-This\ execution\ happens\ in\ the\ slave\ agent\ JVM.=\
- \u30B9\u30EC\u30FC\u30D6\u306EJVM\u3067\u5B9F\u884C\u3055\u308C\u307E\u3057\u305F\u3002
diff --git a/core/src/main/resources/hudson/model/Computer/_script_ru.properties b/core/src/main/resources/hudson/model/Computer/_script_ru.properties
deleted file mode 100644
index 04f38657ea..0000000000
--- a/core/src/main/resources/hudson/model/Computer/_script_ru.properties
+++ /dev/null
@@ -1,3 +0,0 @@
-# This file is under the MIT License by authors
-
-This\ execution\ happens\ in\ the\ slave\ agent\ JVM.=\u0412\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0438\u0437\u043e\u0439\u0434\u0451\u0442 \u0432 JVM \u043f\u043e\u0434\u0447\u0438\u043d\u0451\u043d\u043d\u043e\u0433\u043e \u0443\u0437\u043b\u0430
diff --git a/core/src/main/resources/hudson/model/Computer/_script_sv_SE.properties b/core/src/main/resources/hudson/model/Computer/_script_sv_SE.properties
deleted file mode 100644
index e1d01dd5a8..0000000000
--- a/core/src/main/resources/hudson/model/Computer/_script_sv_SE.properties
+++ /dev/null
@@ -1,23 +0,0 @@
-# The MIT License
-#
-# Copyright (c) 2004-2010, Sun Microsystems, Inc.
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-# copies of the Software, and to permit persons to whom the Software is
-# furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included in
-# all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-# THE SOFTWARE.
-
-This\ execution\ happens\ in\ the\ slave\ agent\ JVM.=Detta utf\u00F6rs p\u00E5 nodens JVM.
diff --git a/core/src/main/resources/hudson/model/Computer/_script_tr.properties b/core/src/main/resources/hudson/model/Computer/_script_tr.properties
deleted file mode 100644
index 710d98527e..0000000000
--- a/core/src/main/resources/hudson/model/Computer/_script_tr.properties
+++ /dev/null
@@ -1,23 +0,0 @@
-# The MIT License
-#
-# Copyright (c) 2004-2009, Sun Microsystems, Inc., Kohsuke Kawaguchi, Oguz Dag
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-# copies of the Software, and to permit persons to whom the Software is
-# furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included in
-# all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-# THE SOFTWARE.
-
-This\ execution\ happens\ in\ the\ slave\ agent\ JVM.=Bu \u00e7al\u0131\u015fma slave ajan\u0131n\u0131n JVM''i \u00fczerinde yap\u0131lmaktad\u0131r.
diff --git a/core/src/main/resources/hudson/model/Computer/_script_zh_TW.properties b/core/src/main/resources/hudson/model/Computer/_script_zh_TW.properties
deleted file mode 100644
index e7d191f786..0000000000
--- a/core/src/main/resources/hudson/model/Computer/_script_zh_TW.properties
+++ /dev/null
@@ -1,23 +0,0 @@
-# The MIT License
-#
-# Copyright (c) 2013, Chunghwa Telecom Co., Ltd., Pei-Tang Huang
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-# copies of the Software, and to permit persons to whom the Software is
-# furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included in
-# all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-# THE SOFTWARE.
-
-This\ execution\ happens\ in\ the\ slave\ agent\ JVM.=\u5728 Slave \u4ee3\u7406\u7a0b\u5f0f\u7684 JVM \u4e2d\u57f7\u884c\u3002
diff --git a/core/src/main/resources/hudson/model/Computer/custom-jnlp.jelly b/core/src/main/resources/hudson/model/Computer/custom-jnlp.jelly
index df19f8cd2c..6f6cbfb2f3 100644
--- a/core/src/main/resources/hudson/model/Computer/custom-jnlp.jelly
+++ b/core/src/main/resources/hudson/model/Computer/custom-jnlp.jelly
@@ -29,7 +29,7 @@ THE SOFTWARE.
Tweak Launch Parameters
- This page allows you to tweak the JVM parameters when launching JNLP slave agents.
+ This page allows you to tweak the JVM parameters when launching JNLP agents.
diff --git a/core/src/main/resources/hudson/model/Computer/delete.jelly b/core/src/main/resources/hudson/model/Computer/delete.jelly
index 2ae6fea176..2f88351c6a 100644
--- a/core/src/main/resources/hudson/model/Computer/delete.jelly
+++ b/core/src/main/resources/hudson/model/Computer/delete.jelly
@@ -28,7 +28,7 @@ THE SOFTWARE.
diff --git a/core/src/main/resources/hudson/model/Computer/delete_da.properties b/core/src/main/resources/hudson/model/Computer/delete_da.properties
index 41b74dfc8e..1d3dcce7bd 100644
--- a/core/src/main/resources/hudson/model/Computer/delete_da.properties
+++ b/core/src/main/resources/hudson/model/Computer/delete_da.properties
@@ -21,4 +21,3 @@
# THE SOFTWARE.
Yes=Ja
-Are\ you\ sure\ about\ deleting\ the\ slave?=Er du sikker p\u00e5 at du vil slette slaven?
diff --git a/core/src/main/resources/hudson/model/Computer/delete_de.properties b/core/src/main/resources/hudson/model/Computer/delete_de.properties
index 4e7fdd0036..2593097cb4 100644
--- a/core/src/main/resources/hudson/model/Computer/delete_de.properties
+++ b/core/src/main/resources/hudson/model/Computer/delete_de.properties
@@ -1,2 +1 @@
-Are\ you\ sure\ about\ deleting\ the\ slave?=Möchten Sie den Slave-Knoten wirklich löschen?
Yes=Ja
diff --git a/core/src/main/resources/hudson/model/Computer/delete_es.properties b/core/src/main/resources/hudson/model/Computer/delete_es.properties
index 986f8ac888..2bfd1f95b0 100644
--- a/core/src/main/resources/hudson/model/Computer/delete_es.properties
+++ b/core/src/main/resources/hudson/model/Computer/delete_es.properties
@@ -20,5 +20,5 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
-Are\ you\ sure\ about\ deleting\ the\ slave?=¿Estás seguro de querer borrar este esclavo?
+Are\ you\ sure\ about\ deleting\ the\ agent?=¿Estás seguro de querer borrar este agente?
Yes=Sí
diff --git a/core/src/main/resources/hudson/model/Computer/delete_fr.properties b/core/src/main/resources/hudson/model/Computer/delete_fr.properties
index f939cafb6a..50339e156c 100644
--- a/core/src/main/resources/hudson/model/Computer/delete_fr.properties
+++ b/core/src/main/resources/hudson/model/Computer/delete_fr.properties
@@ -20,5 +20,4 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
-Are\ you\ sure\ about\ deleting\ the\ slave?=Etes-vous sûr de vouloir supprimer cet esclave?
Yes=Oui
diff --git a/core/src/main/resources/hudson/model/Computer/delete_ja.properties b/core/src/main/resources/hudson/model/Computer/delete_ja.properties
index 9eb4b9e52f..22f770e0f0 100644
--- a/core/src/main/resources/hudson/model/Computer/delete_ja.properties
+++ b/core/src/main/resources/hudson/model/Computer/delete_ja.properties
@@ -20,5 +20,4 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
-Yes=\u306F\u3044
-Are\ you\ sure\ about\ deleting\ the\ slave?=\u30B9\u30EC\u30FC\u30D6\u3092\u524A\u9664\u3057\u3066\u3088\u308D\u3057\u3044\u3067\u3059\u304B?
\ No newline at end of file
+Yes=\u306F\u3044
\ No newline at end of file
diff --git a/core/src/main/resources/hudson/model/Computer/delete_pt_BR.properties b/core/src/main/resources/hudson/model/Computer/delete_pt_BR.properties
index d3a3105c4a..60797521ae 100644
--- a/core/src/main/resources/hudson/model/Computer/delete_pt_BR.properties
+++ b/core/src/main/resources/hudson/model/Computer/delete_pt_BR.properties
@@ -21,4 +21,3 @@
# THE SOFTWARE.
Yes=Sim
-Are\ you\ sure\ about\ deleting\ the\ slave?=Tem certeza que deseja remover esse slave?
diff --git a/core/src/main/resources/hudson/model/Computer/delete_ru.properties b/core/src/main/resources/hudson/model/Computer/delete_ru.properties
index 7259f6d977..b7b2dfd7e2 100644
--- a/core/src/main/resources/hudson/model/Computer/delete_ru.properties
+++ b/core/src/main/resources/hudson/model/Computer/delete_ru.properties
@@ -20,5 +20,4 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
-Are\ you\ sure\ about\ deleting\ the\ slave?=\u0412\u044B \u0443\u0432\u0435\u0440\u0435\u043D\u044B, \u0447\u0442\u043E \u0445\u043E\u0442\u0438\u0442\u0435 \u0443\u0434\u0430\u043B\u0438\u0442\u044C \u043F\u043E\u0434\u0447\u0438\u043D\u0435\u043D\u043D\u044B\u0439 \u0443\u0437\u0435\u043B?
Yes=\u0414\u0430
diff --git a/core/src/main/resources/hudson/model/Computer/delete_zh_TW.properties b/core/src/main/resources/hudson/model/Computer/delete_zh_TW.properties
index caa065d636..83db3cdbc3 100644
--- a/core/src/main/resources/hudson/model/Computer/delete_zh_TW.properties
+++ b/core/src/main/resources/hudson/model/Computer/delete_zh_TW.properties
@@ -20,5 +20,4 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
-Are\ you\ sure\ about\ deleting\ the\ slave?=\u78ba\u5b9a\u8981\u522a\u9664 Slave?
Yes=\u662f
diff --git a/core/src/main/resources/hudson/model/Computer/sidepanel.jelly b/core/src/main/resources/hudson/model/Computer/sidepanel.jelly
index 2a74c154e7..d3c30c47a1 100644
--- a/core/src/main/resources/hudson/model/Computer/sidepanel.jelly
+++ b/core/src/main/resources/hudson/model/Computer/sidepanel.jelly
@@ -32,7 +32,7 @@ THE SOFTWARE.
-
+
diff --git a/core/src/main/resources/hudson/model/Computer/sidepanel_bg.properties b/core/src/main/resources/hudson/model/Computer/sidepanel_bg.properties
index d7d2c90921..636f438c66 100644
--- a/core/src/main/resources/hudson/model/Computer/sidepanel_bg.properties
+++ b/core/src/main/resources/hudson/model/Computer/sidepanel_bg.properties
@@ -23,7 +23,6 @@
Back\ to\ List=\u041E\u0431\u0440\u0430\u0442\u043D\u043E \u043A\u044A\u043C \u0441\u043F\u0438\u0441\u044A\u043A\u0430
Build\ History=\u0418\u0441\u0442\u043E\u0440\u0438\u044F \u043D\u0430 \u0431\u0438\u043B\u0434\u0430
Configure=\u041D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0430
-Delete\ Slave=\u0418\u0437\u0442\u0440\u0438\u0439 \u043C\u0430\u0448\u0438\u043D\u0430
Load\ Statistics=\u0421\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043A\u0430 \u043D\u0430 \u0441\u0442\u0430\u0440\u0442\u0438\u0440\u0430\u043D\u0438\u044F\u0442\u0430
Script\ Console=\u041A\u043E\u043D\u0437\u043E\u043B\u0430
Status=\u0421\u0442\u0430\u0442\u0443\u0441
diff --git a/core/src/main/resources/hudson/model/Computer/sidepanel_cs.properties b/core/src/main/resources/hudson/model/Computer/sidepanel_cs.properties
index 4facbaf734..c4bb2a911c 100644
--- a/core/src/main/resources/hudson/model/Computer/sidepanel_cs.properties
+++ b/core/src/main/resources/hudson/model/Computer/sidepanel_cs.properties
@@ -23,7 +23,6 @@
Back\ to\ List=Zp\u011Bt na seznam
Build\ History=Historie sestaven\u00ED
Configure=Nastavit
-Delete\ Slave=Vymazat server
Load\ Statistics=Na\u010D\u00EDst statistiku
Script\ Console=Konzole
Status=Stav
diff --git a/core/src/main/resources/hudson/model/Computer/sidepanel_da.properties b/core/src/main/resources/hudson/model/Computer/sidepanel_da.properties
index 62d0db6dbf..44c72e343a 100644
--- a/core/src/main/resources/hudson/model/Computer/sidepanel_da.properties
+++ b/core/src/main/resources/hudson/model/Computer/sidepanel_da.properties
@@ -22,7 +22,6 @@
Configure=Konfigurer
Status=Status
-Delete\ Slave=Slet slave
Build\ History=Byggehistorik
Load\ Statistics=Belastningsstatistik
Back\ to\ List=Tilbage til liste
diff --git a/core/src/main/resources/hudson/model/Computer/sidepanel_de.properties b/core/src/main/resources/hudson/model/Computer/sidepanel_de.properties
index 2fa34e5fa0..b927f03b5a 100644
--- a/core/src/main/resources/hudson/model/Computer/sidepanel_de.properties
+++ b/core/src/main/resources/hudson/model/Computer/sidepanel_de.properties
@@ -24,6 +24,5 @@ Back\ to\ List=Zur
Build\ History=Build-Verlauf
Script\ Console=Script-Konsole
Status=Status
-Delete\ Slave=Slave löschen
Configure=Konfigurieren
Load\ Statistics=Auslastung
diff --git a/core/src/main/resources/hudson/model/Computer/sidepanel_eo.properties b/core/src/main/resources/hudson/model/Computer/sidepanel_eo.properties
deleted file mode 100644
index 0c86aa471d..0000000000
--- a/core/src/main/resources/hudson/model/Computer/sidepanel_eo.properties
+++ /dev/null
@@ -1,3 +0,0 @@
-# This file is under the MIT License by authors
-
-Delete\ Slave=Nuligi sklavon
diff --git a/core/src/main/resources/hudson/model/Computer/sidepanel_es.properties b/core/src/main/resources/hudson/model/Computer/sidepanel_es.properties
index d8b9a2d6d9..c96d7bb82d 100644
--- a/core/src/main/resources/hudson/model/Computer/sidepanel_es.properties
+++ b/core/src/main/resources/hudson/model/Computer/sidepanel_es.properties
@@ -22,7 +22,7 @@
Back\ to\ List=Volver
Status=Estado
-Delete\ Slave=Borrar esclavo
+Delete\ Agent=Borrar agente
Configure=Configurar
Build\ History=Historia de ejecuciones
Load\ Statistics=Cargar estadísticas
diff --git a/core/src/main/resources/hudson/model/Computer/sidepanel_fi.properties b/core/src/main/resources/hudson/model/Computer/sidepanel_fi.properties
index f3fb8825cc..9049275c32 100644
--- a/core/src/main/resources/hudson/model/Computer/sidepanel_fi.properties
+++ b/core/src/main/resources/hudson/model/Computer/sidepanel_fi.properties
@@ -23,7 +23,6 @@
Back\ to\ List=Takaisin listaan
Build\ History=K\u00E4\u00E4nn\u00F6shistoria
Configure=Konfiguroi
-Delete\ Slave=Poista suorittaja
Load\ Statistics=Kuormatilastot
Script\ Console=Skriptikonsoli
Status=Tila
diff --git a/core/src/main/resources/hudson/model/Computer/sidepanel_fr.properties b/core/src/main/resources/hudson/model/Computer/sidepanel_fr.properties
index 3c7a539c24..63d8626ee3 100644
--- a/core/src/main/resources/hudson/model/Computer/sidepanel_fr.properties
+++ b/core/src/main/resources/hudson/model/Computer/sidepanel_fr.properties
@@ -24,7 +24,6 @@ Back\ to\ List=Retour
Build\ History=Historique des constructions
Script\ Console=Console de script
Status=Statut
-Delete\ Slave=Supprimer l\u2019esclave
Configure=Configurer
Load\ Statistics=Statistiques d\u2019utilisation
diff --git a/core/src/main/resources/hudson/model/Computer/sidepanel_he.properties b/core/src/main/resources/hudson/model/Computer/sidepanel_he.properties
index 17436729ee..992f7a1f66 100644
--- a/core/src/main/resources/hudson/model/Computer/sidepanel_he.properties
+++ b/core/src/main/resources/hudson/model/Computer/sidepanel_he.properties
@@ -23,7 +23,6 @@
Back\ to\ List=\u05D7\u05D6\u05E8\u05D4 \u05DC\u05E8\u05E9\u05D9\u05DE\u05D4
Build\ History=\u05D4\u05D9\u05E1\u05D8\u05D5\u05E8\u05D9\u05D9\u05EA \u05D1\u05E0\u05D9\u05D5\u05EA
Configure=\u05E7\u05D1\u05D9\u05E2\u05EA \u05EA\u05E6\u05D5\u05E8\u05D4
-Delete\ Slave=\u05DE\u05D7\u05D9\u05E7\u05EA \u05EA\u05D7\u05E0\u05D4
Load\ Statistics=\u05E1\u05D8\u05D8\u05D9\u05E1\u05D8\u05D9\u05E7\u05D5\u05EA \u05D4\u05E2\u05D5\u05DE\u05E1
Script\ Console=\u05DE\u05E1\u05D5\u05E3 \u05D4\u05E1\u05E7\u05E8\u05D9\u05E4\u05D8\u05D9\u05DD
Status=\u05E1\u05D8\u05D8\u05D5\u05E1
diff --git a/core/src/main/resources/hudson/model/Computer/sidepanel_it.properties b/core/src/main/resources/hudson/model/Computer/sidepanel_it.properties
index 62bd6909dc..3e3dab4a43 100644
--- a/core/src/main/resources/hudson/model/Computer/sidepanel_it.properties
+++ b/core/src/main/resources/hudson/model/Computer/sidepanel_it.properties
@@ -3,6 +3,5 @@
Back\ to\ List=Torna alla Lista
Build\ History=Storia dei Build
Configure=Configura
-Delete\ Slave=Cancella Slave
Load\ Statistics=Carica Statistiche
Status=Stato
diff --git a/core/src/main/resources/hudson/model/Computer/sidepanel_ja.properties b/core/src/main/resources/hudson/model/Computer/sidepanel_ja.properties
index 7ab2d427d6..ed49c9c3b9 100644
--- a/core/src/main/resources/hudson/model/Computer/sidepanel_ja.properties
+++ b/core/src/main/resources/hudson/model/Computer/sidepanel_ja.properties
@@ -22,7 +22,6 @@
Back\ to\ List=\u30EA\u30B9\u30C8\u3078\u623B\u308B
Status=\u72B6\u614B
-Delete\ Slave=\u30B9\u30EC\u30FC\u30D6\u524A\u9664
Configure=\u8A2D\u5B9A
Build\ History=\u30D3\u30EB\u30C9\u5C65\u6B74
Load\ Statistics=\u8CA0\u8377\u7D71\u8A08
diff --git a/core/src/main/resources/hudson/model/Computer/sidepanel_ko.properties b/core/src/main/resources/hudson/model/Computer/sidepanel_ko.properties
index 23a3838f62..5c29487638 100644
--- a/core/src/main/resources/hudson/model/Computer/sidepanel_ko.properties
+++ b/core/src/main/resources/hudson/model/Computer/sidepanel_ko.properties
@@ -23,7 +23,6 @@
Back\ to\ List=\uBAA9\uB85D\uC73C\uB85C \uB3CC\uC544\uAC00\uAE30
Build\ History=\uBE4C\uB4DC \uAE30\uB85D
Configure=\uC124\uC815
-Delete\ Slave=Slave \uC0AD\uC81C
Load\ Statistics=\uD1B5\uACC4\uBCF4\uAE30
Script\ Console=\uC2A4\uD06C\uB9BD\uD2B8 \uCF58\uC194
Status=\uC0C1\uD0DC
diff --git a/core/src/main/resources/hudson/model/Computer/sidepanel_lt.properties b/core/src/main/resources/hudson/model/Computer/sidepanel_lt.properties
index d06880df35..10e449ee00 100644
--- a/core/src/main/resources/hudson/model/Computer/sidepanel_lt.properties
+++ b/core/src/main/resources/hudson/model/Computer/sidepanel_lt.properties
@@ -23,6 +23,5 @@
Back\ to\ List=Atgal \u012F s\u0105ra\u0161\u0105
Build\ History=Darb\u0173 istorija
Configure=Nustatymai
-Delete\ Slave=I\u0161trinti ''Slave''
Load\ Statistics=Kr\u016Bvio statistika
Status=B\u016Bsena
diff --git a/core/src/main/resources/hudson/model/Computer/sidepanel_lv.properties b/core/src/main/resources/hudson/model/Computer/sidepanel_lv.properties
index 2b1f18e714..8f90d430a6 100644
--- a/core/src/main/resources/hudson/model/Computer/sidepanel_lv.properties
+++ b/core/src/main/resources/hudson/model/Computer/sidepanel_lv.properties
@@ -23,7 +23,6 @@
Back\ to\ List=Atpaka\u013C pie saraksta
Build\ History=B\u016Bv\u0113jumu v\u0113sture
Configure=Konfigur\u0113t
-Delete\ Slave=Dz\u0113st pak\u0101rtoto izpild\u012Btaju
Load\ Statistics=Noslodzes statistika
Script\ Console=Skriptu konsole
Status=St\u0101voklis
diff --git a/core/src/main/resources/hudson/model/Computer/sidepanel_nb_NO.properties b/core/src/main/resources/hudson/model/Computer/sidepanel_nb_NO.properties
index 0a9fcd4fec..8a56a4ddd5 100644
--- a/core/src/main/resources/hudson/model/Computer/sidepanel_nb_NO.properties
+++ b/core/src/main/resources/hudson/model/Computer/sidepanel_nb_NO.properties
@@ -23,7 +23,6 @@
Back\ to\ List=Tilbake til listen
Build\ History=Bygghistorikk
Configure=Konfigur\u00E9r
-Delete\ Slave=Slett slave
Load\ Statistics=Laststatistikk
Script\ Console=Skriptekonsoll
Status=Status
diff --git a/core/src/main/resources/hudson/model/Computer/sidepanel_nl.properties b/core/src/main/resources/hudson/model/Computer/sidepanel_nl.properties
index bc7f5949bd..654c2904d9 100644
--- a/core/src/main/resources/hudson/model/Computer/sidepanel_nl.properties
+++ b/core/src/main/resources/hudson/model/Computer/sidepanel_nl.properties
@@ -23,7 +23,6 @@
Back\ to\ List=Terug naar overzicht
Build\ History=Bouwhistorie
Configure=Configureren
-Delete\ Slave=Verwijderen
Load\ Statistics=Belastings statistieken
Script\ Console=Scriptconsole
Status=Status
diff --git a/core/src/main/resources/hudson/model/Computer/sidepanel_pl.properties b/core/src/main/resources/hudson/model/Computer/sidepanel_pl.properties
index bd34753cda..2ddc6acd17 100644
--- a/core/src/main/resources/hudson/model/Computer/sidepanel_pl.properties
+++ b/core/src/main/resources/hudson/model/Computer/sidepanel_pl.properties
@@ -23,6 +23,5 @@
Back\ to\ List=Powr\u00F3t do listy
Build\ History=Historia kompilacji
Configure=Konfiguruj
-Delete\ Slave=Usu\u0144 Slave
Load\ Statistics=Statystyka obci\u0105\u017Cenia
Script\ Console=Konsola skrypt\u00F3w
diff --git a/core/src/main/resources/hudson/model/Computer/sidepanel_pt_BR.properties b/core/src/main/resources/hudson/model/Computer/sidepanel_pt_BR.properties
index b91be21c9d..20731bae6a 100644
--- a/core/src/main/resources/hudson/model/Computer/sidepanel_pt_BR.properties
+++ b/core/src/main/resources/hudson/model/Computer/sidepanel_pt_BR.properties
@@ -24,6 +24,5 @@ Back\ to\ List=Voltar para a lista
Build\ History=Hist\u00f3rico de builds
Configure=Configurar
Status=Situa\u00e7\u00e3o
-Delete\ Slave=Remover slave
Load\ Statistics=Estat\u00edsticas de carga
Script\ Console=Terminal de script
diff --git a/core/src/main/resources/hudson/model/Computer/sidepanel_pt_PT.properties b/core/src/main/resources/hudson/model/Computer/sidepanel_pt_PT.properties
index 677b381cb6..7581da9c23 100644
--- a/core/src/main/resources/hudson/model/Computer/sidepanel_pt_PT.properties
+++ b/core/src/main/resources/hudson/model/Computer/sidepanel_pt_PT.properties
@@ -3,6 +3,5 @@
Back\ to\ List=Voltar para a Lista
Build\ History=Hist\u00F3rico de Compila\u00E7\u00F5es
Configure=Configurar
-Delete\ Slave=Apagar Escravo
Load\ Statistics=Carregar Estat\u00EDsticas
Status=Estado
diff --git a/core/src/main/resources/hudson/model/Computer/sidepanel_ru.properties b/core/src/main/resources/hudson/model/Computer/sidepanel_ru.properties
index b8be6235c7..269c911a88 100644
--- a/core/src/main/resources/hudson/model/Computer/sidepanel_ru.properties
+++ b/core/src/main/resources/hudson/model/Computer/sidepanel_ru.properties
@@ -23,7 +23,6 @@
Back\ to\ List=\u0412\u0435\u0440\u043d\u0443\u0442\u044c\u0441\u044f \u043a \u0441\u043f\u0438\u0441\u043a\u0443
Build\ History=\u0418\u0441\u0442\u043e\u0440\u0438\u044f \u0441\u0431\u043e\u0440\u043e\u043a
Configure=\u041d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c
-Delete\ Slave=\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u043f\u043e\u0434\u0447\u0438\u043d\u0435\u043d\u043d\u044b\u0439 \u0443\u0437\u0435\u043b
Load\ Statistics=\u0421\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f
Script\ Console=\u041a\u043e\u043d\u0441\u043e\u043b\u044c \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0435\u0432
Status=\u0421\u0442\u0430\u0442\u0443\u0441
diff --git a/core/src/main/resources/hudson/model/Computer/sidepanel_sk.properties b/core/src/main/resources/hudson/model/Computer/sidepanel_sk.properties
index e79975c893..3e9548696e 100644
--- a/core/src/main/resources/hudson/model/Computer/sidepanel_sk.properties
+++ b/core/src/main/resources/hudson/model/Computer/sidepanel_sk.properties
@@ -3,7 +3,6 @@
Back\ to\ List=Nasp\u00E4\u0165 na zoznam
Build\ History=Hist\u00F3ria zostaven\u00ED
Configure=Konfiguruj
-Delete\ Slave=Vyma\u017E stroj
Load\ Statistics=\u0160tatistiky vy\u0165a\u017Eenia
Script\ Console=Skriptov\u00E1 konzola
Status=Stav
diff --git a/core/src/main/resources/hudson/model/Computer/sidepanel_sv_SE.properties b/core/src/main/resources/hudson/model/Computer/sidepanel_sv_SE.properties
index 6d9abb2fd5..c98df81fab 100644
--- a/core/src/main/resources/hudson/model/Computer/sidepanel_sv_SE.properties
+++ b/core/src/main/resources/hudson/model/Computer/sidepanel_sv_SE.properties
@@ -23,7 +23,6 @@
Back\ to\ List=Tillbaka till nodlista
Build\ History=Jobbhistorik
Configure=Konfigurera
-Delete\ Slave=Ta bort nod
Load\ Statistics=Belastningstatistik
Script\ Console=Skriptkonsoll
Status=Status
diff --git a/core/src/main/resources/hudson/model/Computer/sidepanel_tr.properties b/core/src/main/resources/hudson/model/Computer/sidepanel_tr.properties
index 300309ef65..87af65f9c3 100644
--- a/core/src/main/resources/hudson/model/Computer/sidepanel_tr.properties
+++ b/core/src/main/resources/hudson/model/Computer/sidepanel_tr.properties
@@ -23,7 +23,6 @@
Back\ to\ List=Listeye D\u00f6n
Build\ History=Yap\u0131land\u0131rma Ge\u00e7mi\u015fi
Configure=Yap\u0131land\u0131r
-Delete\ Slave=Ba\u011F\u0131l\u0131(Slave) sil
Load\ Statistics=Y\u00FCklenme istatistikleri
Script\ Console=Script\ Konsolu
Status=Durum
diff --git a/core/src/main/resources/hudson/model/Computer/sidepanel_uk.properties b/core/src/main/resources/hudson/model/Computer/sidepanel_uk.properties
index c103c89144..8917b1c57c 100644
--- a/core/src/main/resources/hudson/model/Computer/sidepanel_uk.properties
+++ b/core/src/main/resources/hudson/model/Computer/sidepanel_uk.properties
@@ -3,7 +3,6 @@
Back\ to\ List=\u041F\u043E\u0432\u0435\u0440\u043D\u0443\u0442\u0438\u0441\u044C \u0434\u043E \u0441\u043F\u0438\u0441\u043A\u0443
Build\ History=\u0406\u0441\u0442\u043E\u0440\u0456\u044F \u043F\u043E\u0431\u0443\u0434\u043E\u0432
Configure=\u041D\u0430\u043B\u0430\u0448\u0442\u0443\u0432\u0430\u043D\u043D\u044F
-Delete\ Slave=\u0412\u0438\u0434\u0430\u043B\u0438\u0442\u0438 Slave
Load\ Statistics=\u0417\u0430\u0432\u0430\u043D\u0442\u0430\u0436\u0438\u0442\u0438 \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043A\u0443
Script\ Console=\u0421\u043A\u0440\u0438\u043F\u0442\u043E\u0432\u0430 \u043A\u043E\u043D\u0441\u043E\u043B\u044C
Status=\u0421\u0442\u0430\u0442\u0443\u0441
diff --git a/core/src/main/resources/hudson/model/Computer/sidepanel_zh_CN.properties b/core/src/main/resources/hudson/model/Computer/sidepanel_zh_CN.properties
index 547bb7a6f4..0861540bb9 100644
--- a/core/src/main/resources/hudson/model/Computer/sidepanel_zh_CN.properties
+++ b/core/src/main/resources/hudson/model/Computer/sidepanel_zh_CN.properties
@@ -23,7 +23,6 @@
Back\ to\ List=\u8fd4\u56de\u5217\u8868
Build\ History=\u6784\u5efa\u5386\u53f2
Configure=\u914D\u7F6E\u4ECE\u8282\u70B9
-Delete\ Slave=\u5220\u9664\u5B50\u8282\u70B9
Load\ Statistics=\u8d1f\u8f7d\u7edf\u8ba1
Script\ Console=\u811a\u672c\u547d\u4ee4\u884c
Status=\u72b6\u6001
diff --git a/core/src/main/resources/hudson/model/Computer/sidepanel_zh_TW.properties b/core/src/main/resources/hudson/model/Computer/sidepanel_zh_TW.properties
index fdc17d9b14..88ef844bb3 100644
--- a/core/src/main/resources/hudson/model/Computer/sidepanel_zh_TW.properties
+++ b/core/src/main/resources/hudson/model/Computer/sidepanel_zh_TW.properties
@@ -22,7 +22,6 @@
Back\ to\ List=\u56DE\u5230\u6E05\u55AE
Status=\u72C0\u614B
-Delete\ Slave=\u522A\u9664 Slave
Configure=\u8A2D\u5B9A
Build\ History=\u5EFA\u69CB\u6B77\u53F2
Load\ Statistics=\u8CA0\u8F09\u7D71\u8A08
diff --git a/core/src/main/resources/hudson/model/ComputerSet/index.jelly b/core/src/main/resources/hudson/model/ComputerSet/index.jelly
index 421865bd2c..22a8f39e34 100644
--- a/core/src/main/resources/hudson/model/ComputerSet/index.jelly
+++ b/core/src/main/resources/hudson/model/ComputerSet/index.jelly
@@ -68,7 +68,7 @@ THE SOFTWARE.
-
+
@@ -54,7 +55,7 @@ THE SOFTWARE.
-
+
diff --git a/core/src/main/resources/hudson/model/Job/configure.properties b/core/src/main/resources/hudson/model/Job/configure.properties
index f6f01a21a9..ba7d95bb98 100644
--- a/core/src/main/resources/hudson/model/Job/configure.properties
+++ b/core/src/main/resources/hudson/model/Job/configure.properties
@@ -20,4 +20,6 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
-name={0} name
\ No newline at end of file
+name={0} name
+Save=Save
+Apply=Apply
\ No newline at end of file
diff --git a/core/src/main/resources/hudson/model/Label/sidepanel.jelly b/core/src/main/resources/hudson/model/Label/sidepanel.jelly
index 734a5c53dd..7d662a0a45 100644
--- a/core/src/main/resources/hudson/model/Label/sidepanel.jelly
+++ b/core/src/main/resources/hudson/model/Label/sidepanel.jelly
@@ -34,7 +34,7 @@ THE SOFTWARE.
-
+
diff --git a/core/src/main/resources/hudson/model/LoadStatistics/main.properties b/core/src/main/resources/hudson/model/LoadStatistics/main.properties
index 9fc34ab657..f8e8787faf 100644
--- a/core/src/main/resources/hudson/model/LoadStatistics/main.properties
+++ b/core/src/main/resources/hudson/model/LoadStatistics/main.properties
@@ -31,7 +31,7 @@ blurb=\
For a label: this is the sum of all executors across all online computers in this label. \
For the entire Jenkins: this is the sum of all executors across all online computers in this Jenkins \
installation. \
- Other than configuration changes, this value can also change when slaves go offline. \
+ Other than configuration changes, this value can also change when agents go offline. \
\
Number of busy executors
\
\
diff --git a/core/src/main/resources/hudson/model/Messages.properties b/core/src/main/resources/hudson/model/Messages.properties
index 571ec8867f..32730a733d 100644
--- a/core/src/main/resources/hudson/model/Messages.properties
+++ b/core/src/main/resources/hudson/model/Messages.properties
@@ -31,7 +31,7 @@ AbstractBuild.KeptBecause=This build is kept because of {0}.
AbstractItem.NoSuchJobExists=No such job \u2018{0}\u2019 exists. Perhaps you meant \u2018{1}\u2019?
AbstractItem.NoSuchJobExistsWithoutSuggestion=No such job \u2018{0}\u2019 exists.
AbstractItem.Pronoun=Item
-AbstractProject.AssignedLabelString_NoMatch_DidYouMean=There\u2019s no slave/cloud that matches this assignment. Did you mean \u2018{1}\u2019 instead of \u2018{0}\u2019?
+AbstractProject.AssignedLabelString_NoMatch_DidYouMean=There\u2019s no agent/cloud that matches this assignment. Did you mean \u2018{1}\u2019 instead of \u2018{0}\u2019?
AbstractProject.NewBuildForWorkspace=Scheduling a new build to get a workspace.
AbstractProject.AwaitingBuildForWorkspace=Awaiting build to get a workspace.
AbstractProject.AwaitingWorkspaceToComeOnline=We need to schedule a new build to get a workspace, but deferring {0}ms in the hope that one will become available soon
@@ -72,7 +72,7 @@ AbstractProject.CancelPermission.Description=\
AbstractProject.AssignedLabelString.InvalidBooleanExpression=\
Invalid boolean expression: {0}
AbstractProject.AssignedLabelString.NoMatch=\
- There's no slave/cloud that matches this assignment
+ There's no agent/cloud that matches this assignment
AbstractProject.CustomWorkspaceEmpty=Custom workspace is empty.
AbstractProject.LabelLink=Label is serviced by {2,choice,0#no nodes|1#1 node|1<{2} nodes}{3,choice,0#|1# and 1 cloud|1< and {3} clouds}
@@ -99,21 +99,21 @@ CLI.offline-node.shortDescription=Stop using a node for performing builds tempor
CLI.wait-node-online.shortDescription=Wait for a node to become online.
CLI.wait-node-offline.shortDescription=Wait for a node to become offline.
-Computer.Caption=Slave {0}
-Computer.NoSuchSlaveExists=No such slave "{0}" exists. Did you mean "{1}"?
-Computer.Permissions.Title=Slave
-Computer.ExtendedReadPermission.Description=This permission allows users to read slave configuration.
-Computer.ConfigurePermission.Description=This permission allows users to configure slaves.
-Computer.DeletePermission.Description=This permission allows users to delete existing slaves.
-Computer.CreatePermission.Description=This permission allows users to create slaves.
-Computer.ConnectPermission.Description=This permission allows users to connect slaves or mark slaves as online.
-Computer.DisconnectPermission.Description=This permission allows users to disconnect slaves or mark slaves as temporarily offline.
-Computer.BuildPermission.Description=This permission allows users to run jobs as them on slaves.
-Computer.BadChannel=Slave node offline or not a remote channel (such as master node).
+Computer.Caption=Agent {0}
+Computer.NoSuchSlaveExists=No such agent "{0}" exists. Did you mean "{1}"?
+Computer.Permissions.Title=Agent
+Computer.ExtendedReadPermission.Description=This permission allows users to read agent configuration.
+Computer.ConfigurePermission.Description=This permission allows users to configure agents.
+Computer.DeletePermission.Description=This permission allows users to delete existing agents.
+Computer.CreatePermission.Description=This permission allows users to create agents.
+Computer.ConnectPermission.Description=This permission allows users to connect agents or mark agents as online.
+Computer.DisconnectPermission.Description=This permission allows users to disconnect agents or mark agents as temporarily offline.
+Computer.BuildPermission.Description=This permission allows users to run jobs as them on agents.
+Computer.BadChannel=Agent node offline or not a remote channel (such as master node).
-ComputerSet.NoSuchSlave=No such slave: {0}
-ComputerSet.SlaveAlreadyExists=Slave called \u2018{0}\u2019 already exists
-ComputerSet.SpecifySlaveToCopy=Specify which slave to copy
+ComputerSet.NoSuchSlave=No such agent: {0}
+ComputerSet.SlaveAlreadyExists=Agent called \u2018{0}\u2019 already exists
+ComputerSet.SpecifySlaveToCopy=Specify which agent to copy
ComputerSet.DisplayName=Nodes
Descriptor.From=(from {0})
@@ -121,6 +121,9 @@ Descriptor.From=(from {0})
Executor.NotAvailable=N/A
FreeStyleProject.DisplayName=Freestyle project
+FreeStyleProject.Description=\
+ This is the central feature of Jenkins. Jenkins will build your project, combining any SCM with any build system, \
+ and this can be even used for something other than software build.
HealthReport.EmptyString=
@@ -232,19 +235,19 @@ Run.Summary.BrokenSinceThisBuild=broken since this build
Run.Summary.BrokenSince=broken since build {0}
Run.Summary.Unknown=?
-Slave.InvalidConfig.Executors=Invalid slave configuration for {0}. Invalid # of executors.
-Slave.InvalidConfig.NoName=Invalid slave configuration. Name is empty
-Slave.InvalidConfig.NoRemoteDir=Invalid slave configuration for {0}. No remote directory given
-Slave.Launching={0} Launching slave agent
+Slave.InvalidConfig.Executors=Invalid agent configuration for {0}. Invalid # of executors.
+Slave.InvalidConfig.NoName=Invalid agent configuration. Name is empty
+Slave.InvalidConfig.NoRemoteDir=Invalid agent configuration for {0}. No remote directory given
+Slave.Launching={0} Launching agent
Slave.Network.Mounted.File.System.Warning=Are you sure you want to use network mounted file system for FS root? Note that this directory does not need to be visible to the master.
Slave.Remote.Director.Mandatory=Remote directory is mandatory
-Slave.Terminated={0} slave agent was terminated
+Slave.Terminated={0} agent was terminated
Slave.Remote.Relative.Path.Warning=Are you sure you want to use a relative path for the FS root? Note that relative \
paths require that you can assure that the selected launcher provides a consistent current working directory. Using \
an absolute path is highly recommended.
-Slave.UnableToLaunch=Unable to launch the slave agent for {0}{1}
-Slave.UnixSlave=This is a Unix slave
-Slave.WindowsSlave=This is a Windows slave
+Slave.UnableToLaunch=Unable to launch the agent for {0}{1}
+Slave.UnixSlave=This is a Unix agent
+Slave.WindowsSlave=This is a Windows agent
TopLevelItemDescriptor.NotApplicableIn={0} items are not applicable within {1}
@@ -300,7 +303,7 @@ UpdateCenter.PluginCategory.scala=Scala Development
UpdateCenter.PluginCategory.scm=Source Code Management
UpdateCenter.PluginCategory.scm-related=Source Code Management related
UpdateCenter.PluginCategory.security=Security
-UpdateCenter.PluginCategory.slaves=Slave Launchers and Controllers
+UpdateCenter.PluginCategory.slaves=Agent Launchers and Controllers
UpdateCenter.PluginCategory.test=Testing
UpdateCenter.PluginCategory.trigger=Build Triggers
UpdateCenter.PluginCategory.ui=User Interface
@@ -319,9 +322,9 @@ Permalink.LastFailedBuild=Last failed build
Permalink.LastCompletedBuild=Last completed build
ParameterAction.DisplayName=Parameters
-ParametersDefinitionProperty.DisplayName=This build is parameterized
+ParametersDefinitionProperty.DisplayName=This project is parameterized
StringParameterDefinition.DisplayName=String Parameter
-TextParameterDefinition.DisplayName=Text Parameter
+TextParameterDefinition.DisplayName=Multi-line String Parameter
FileParameterDefinition.DisplayName=File Parameter
BooleanParameterDefinition.DisplayName=Boolean Parameter
ChoiceParameterDefinition.DisplayName=Choice Parameter
@@ -333,8 +336,8 @@ Node.BecauseNodeIsReserved={0} is reserved for jobs with matching label expressi
Node.BecauseNodeIsNotAcceptingTasks={0} is not accepting tasks
Node.LabelMissing={0} doesn\u2019t have label {1}
Node.LackingBuildPermission={0} doesn\u2019t have a permission to run on {1}
-Node.Mode.NORMAL=Utilize this node as much as possible
-Node.Mode.EXCLUSIVE=Only build jobs with label restrictions matching this node
+Node.Mode.NORMAL=Use this node as much as possible
+Node.Mode.EXCLUSIVE=Only build jobs with label expressions matching this node
ListView.DisplayName=List View
diff --git a/core/src/main/resources/hudson/model/Messages_ar.properties b/core/src/main/resources/hudson/model/Messages_ar.properties
new file mode 100644
index 0000000000..6ff7b6edcf
--- /dev/null
+++ b/core/src/main/resources/hudson/model/Messages_ar.properties
@@ -0,0 +1 @@
+FreeStyleProject.Description=\u0647\u0630\u0647 \u0647\u064A \u0627\u0644\u0645\u064A\u0632\u0629 \u0627\u0644\u0631\u0626\u064A\u0633\u064A\u0629 \u0641\u064A \u062C\u0646\u0643\u0646\u0632. \u062C\u0646\u0643\u0646\u0632 \u0633\u064A\u0628\u0646\u064A \u0644\u0643 \u0645\u0634\u0631\u0648\u0639\u0643\u060C \u064A\u0633\u062A\u062E\u062F\u0645 \u0623\u062F\u0648\u0627\u062A \u0645\u0631\u0627\u0642\u0628\u0629 \u0627\u0644\u0645\u0635\u062F\u0631 \u0627\u0644\u0628\u0631\u0645\u062C\u064A\u060C \u0648\u064A\u0645\u0643\u0646 \u062D\u062A\u0649 \u0627\u0633\u062A\u062E\u062F\u0627\u0645\u0647\u0627 \uFEF7\u0634\u064A\u0627\u0621 \u063A\u064A\u0631 \u0628\u0646\u0627\u0621 \u0627\u0644\u0645\u0634\u0631\u0648\u0639.
\ No newline at end of file
diff --git a/core/src/main/resources/hudson/model/Messages_bg.properties b/core/src/main/resources/hudson/model/Messages_bg.properties
index fad7cc6409..7bfa610ffd 100644
--- a/core/src/main/resources/hudson/model/Messages_bg.properties
+++ b/core/src/main/resources/hudson/model/Messages_bg.properties
@@ -37,8 +37,6 @@ AbstractItem.NoSuchJobExistsWithoutSuggestion=\
\u041d\u0435 \u0441\u044a\u0449\u0435\u0441\u0442\u0432\u0443\u0432\u0430 \u0437\u0430\u0434\u0430\u0447\u0430 \u043d\u0430 \u0438\u043c\u0435 \u201e{0}\u201c.
AbstractItem.Pronoun=\
\u0415\u043b\u0435\u043c\u0435\u043d\u0442
-AbstractProject.AssignedLabelString_NoMatch_DidYouMean=\
- \u041d\u0438\u043a\u043e\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u043d\u0435 \u043e\u0442\u0433\u043e\u0432\u0430\u0440\u044f \u0437\u0430 \u0442\u0430\u0437\u0438 \u0437\u0430\u0434\u0430\u0447\u0430. \u0414\u0430 \u043d\u044f\u043c\u0430\u0442\u0435 \u043f\u0440\u0435\u0434\u0432\u0438\u0434 \u201e{1}\u201c \u0432\u043c\u0435\u0441\u0442\u043e \u201e{0}\u201c?
AbstractProject.NewBuildForWorkspace=\
\u041d\u0430\u0441\u0440\u043e\u0447\u0432\u0430\u043d\u0435 \u043d\u0430 \u043d\u043e\u0432\u043e \u0438\u0437\u0433\u0440\u0430\u0436\u0434\u0430\u043d\u0435, \u0437\u0430 \u0434\u0430 \u0441\u0435 \u043f\u043e\u043b\u0443\u0447\u0438 \u0440\u0430\u0431\u043e\u0442\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e.
AbstractProject.AwaitingBuildForWorkspace=\
@@ -105,8 +103,6 @@ AbstractProject.CancelPermission.Description=\
\u0422\u043e\u0432\u0430 \u0434\u0430\u0432\u0430 \u043f\u0440\u0430\u0432\u043e \u0437\u0430 \u043e\u0442\u043c\u044f\u043d\u0430 \u043d\u0430 \u0437\u0430\u043f\u043b\u0430\u043d\u0443\u0432\u0430\u043d\u043e \u0438 \u0441\u043f\u0438\u0440\u0430\u043d\u0435 \u043d\u0430 \u0438\u0437\u043f\u044a\u043b\u043d\u044f\u0432\u0430\u043d\u043e \u0438\u0437\u0433\u0440\u0430\u0436\u0434\u0430\u043d\u0435.
AbstractProject.AssignedLabelString.InvalidBooleanExpression=\
\u041d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u0435\u043d \u0431\u0443\u043b\u0435\u0432 \u0438\u0437\u0440\u0430\u0437: {0}
-AbstractProject.AssignedLabelString.NoMatch=\
- \u041d\u0438\u043a\u043e\u044f \u043c\u0430\u0448\u0438\u043d\u0430 \u0438\u043b\u0438 \u043e\u0431\u043b\u0430\u043a \u043d\u0435 \u043e\u0442\u0433\u043e\u0432\u0430\u0440\u044f \u043d\u0430 \u0442\u0430\u0437\u0438 \u0437\u0430\u0434\u0430\u0447\u0430.
AbstractProject.CustomWorkspaceEmpty=\
\u041f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b\u0441\u043a\u043e\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e \u0435 \u043f\u0440\u0430\u0437\u043d\u043e.
AbstractProject.LabelLink=\
@@ -164,38 +160,6 @@ CLI.wait-node-online.shortDescription=\
CLI.wait-node-offline.shortDescription=\
\u0418\u0437\u0447\u0430\u043a\u0432\u0430\u043d\u0435 \u043d\u0430 \u043c\u0430\u0448\u0438\u043d\u0430 \u0434\u0430 \u043d\u0435 \u0435 \u043d\u0430 \u043b\u0438\u043d\u0438\u044f.
-Computer.Caption=\
- \u041a\u043e\u043c\u043f\u044e\u0442\u044a\u0440 \u201e{0}\u201c
-Computer.NoSuchSlaveExists=\
- \u041d\u0435 \u0441\u044a\u0449\u0435\u0441\u0442\u0432\u0443\u0432\u0430 \u043f\u043e\u0434\u0447\u0438\u043d\u0435\u043d \u043a\u043e\u043c\u043f\u044e\u0442\u044a\u0440 \u201e{0}\u201c. \u201e{1}\u201c \u043b\u0438 \u0438\u043c\u0430\u0442\u0435 \u043f\u0440\u0435\u0434\u0432\u0438\u0434?
-Computer.Permissions.Title=\
- \u041f\u043e\u0434\u0447\u0438\u043d\u0435\u043d \u043a\u043e\u043c\u043f\u044e\u0442\u044a\u0440
-Computer.ExtendedReadPermission.Description=\
- \u0422\u043e\u0432\u0430 \u0434\u0430\u0432\u0430 \u043f\u0440\u0430\u0432\u043e \u0437\u0430 \u0434\u043e\u0441\u0442\u044a\u043f \u0437\u0430 \u0447\u0435\u0442\u0435\u043d\u0435 \u0434\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438\u0442\u0435 \u043d\u0430 \u043f\u043e\u0434\u0447\u0438\u043d\u0435\u043d\u0438\u0442\u0435 \u043a\u043e\u043c\u043f\u044e\u0442\u0440\u0438.
-Computer.ConfigurePermission.Description=\
- \u0422\u043e\u0432\u0430 \u0434\u0430\u0432\u0430 \u043f\u0440\u0430\u0432\u043e \u0437\u0430 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u0432\u0430\u043d\u0435 \u043d\u0430 \u043f\u043e\u0434\u0447\u0438\u043d\u0435\u043d\u0438 \u043a\u043e\u043c\u043f\u044e\u0442\u0440\u0438.
-Computer.DeletePermission.Description=\
- \u0422\u043e\u0432\u0430 \u0434\u0430\u0432\u0430 \u043f\u0440\u0430\u0432\u043e \u0437\u0430 \u043c\u0430\u0445\u0430\u043d\u0435 \u043d\u0430 \u043f\u043e\u0434\u0447\u0438\u043d\u0435\u043d\u0438 \u043a\u043e\u043c\u043f\u044e\u0442\u0440\u0438.
-Computer.CreatePermission.Description=\
- \u0422\u043e\u0432\u0430 \u0434\u0430\u0432\u0430 \u043f\u0440\u0430\u0432\u043e \u0437\u0430 \u0434\u043e\u0431\u0430\u0432\u044f\u043d\u0435 \u043d\u0430 \u043f\u043e\u0434\u0447\u0438\u043d\u0435\u043d\u0438 \u043a\u043e\u043c\u043f\u044e\u0442\u0440\u0438.
-Computer.ConnectPermission.Description=\
- \u0422\u043e\u0432\u0430 \u0434\u0430\u0432\u0430 \u043f\u0440\u0430\u0432\u043e \u0437\u0430 \u0434\u043e\u0431\u0430\u0432\u044f\u043d\u0435 \u043d\u0430 \u043f\u043e\u0434\u0447\u0438\u043d\u0435\u043d\u0438 \u043a\u043e\u043c\u043f\u044e\u0442\u0440\u0438 \u0438 \u043e\u0431\u044f\u0432\u044f\u0432\u0430\u043d\u0435\u0442\u043e \u0438\u043c, \u0447\u0435 \u0441\u0430 \u043d\u0430\
- \u043b\u0438\u043d\u0438\u044f.
-Computer.DisconnectPermission.Description=\
- \u0422\u043e\u0432\u0430 \u0434\u0430\u0432\u0430 \u043f\u0440\u0430\u0432\u043e \u0437\u0430 \u043c\u0430\u0445\u0430\u043d\u0435 \u043d\u0430 \u043f\u043e\u0434\u0447\u0438\u043d\u0435\u043d\u0438 \u043a\u043e\u043c\u043f\u044e\u0442\u0440\u0438 \u0438 \u043e\u0431\u044f\u0432\u044f\u0432\u0430\u043d\u0435\u0442\u043e \u0438\u043c, \u0447\u0435 \u043d\u0435 \u0441\u0430 \u043d\u0430\
- \u043b\u0438\u043d\u0438\u044f.
-Computer.BuildPermission.Description=\
- \u0422\u043e\u0432\u0430 \u0434\u0430\u0432\u0430 \u043f\u0440\u0430\u0432\u043e \u043d\u0430 \u043f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b\u0438\u0442\u0435 \u0434\u0430 \u0438\u0437\u043f\u044a\u043b\u043d\u044f\u0432\u0430\u0442 \u0437\u0430\u0434\u0430\u0447\u0438 \u043e\u0442 \u0441\u0432\u043e\u0435 \u0438\u043c\u0435 \u043d\u0430\
- \u043f\u043e\u0434\u0447\u0438\u043d\u0435\u043d\u0438\u0442\u0435 \u043a\u043e\u043c\u043f\u044e\u0442\u0440\u0438.
-Computer.BadChannel=\
- \u0410\u043a\u043e \u0442\u043e\u0432\u0430 \u0435 \u043f\u043e\u0434\u0447\u0438\u043d\u0435\u043d \u043a\u043e\u043c\u043f\u044e\u0442\u044a\u0440, \u0442\u043e\u0439 \u043d\u0435 \u0435 \u043d\u0430 \u043b\u0438\u043d\u0438\u044f.
-
-ComputerSet.NoSuchSlave=\
- \u041d\u044f\u043c\u0430 \u043f\u043e\u0434\u0447\u0438\u043d\u0435\u043d \u043a\u043e\u043c\u043f\u044e\u0442\u044a\u0440 \u043d\u0430 \u0438\u043c\u0435 \u201e{0}\u201c.
-ComputerSet.SlaveAlreadyExists=\
- \u0412\u0435\u0447\u0435 \u0441\u044a\u0449\u0435\u0441\u0442\u0432\u0443\u0432\u0430 \u043f\u043e\u0434\u0447\u0438\u043d\u0435\u043d \u043a\u043e\u043c\u043f\u044e\u0442\u044a\u0440 \u043d\u0430 \u0438\u043c\u0435 \u201e{0}\u201c.
-ComputerSet.SpecifySlaveToCopy=\
- \u0412\u044a\u0432\u0435\u0434\u0435\u0442\u0435 \u043f\u043e\u0434\u0447\u0438\u043d\u0435\u043d \u043a\u043e\u043c\u043f\u044e\u0442\u044a\u0440 \u0437\u0430 \u043a\u043e\u043f\u0438\u0440\u0430\u043d\u0435
ComputerSet.DisplayName=\
\u041a\u043e\u043c\u043f\u044e\u0442\u0440\u0438
@@ -207,6 +171,8 @@ Executor.NotAvailable=\
FreeStyleProject.DisplayName=\
\u041f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b\u0441\u043a\u0430 \u0437\u0430\u0434\u0430\u0447\u0430
+FreeStyleProject.Description=\
+ \u0422\u043E\u0432\u0430 \u0435 \u043E\u0441\u043D\u043E\u0432\u043D\u0430 \u0444\u0443\u043D\u043A\u0446\u0438\u043E\u043D\u0430\u043B\u043D\u043E\u0441\u0442 \u0432 Jenkins. Jenkins \u043C\u043E\u0436\u0435 \u0434\u0430 \u0431\u0438\u043B\u0434\u043D\u0435 \u0432\u0430\u0448 \u043F\u0440\u043E\u0435\u043A\u0442 \u043A\u043E\u043C\u0431\u0438\u043D\u0438\u0440\u0430\u0439\u043A\u0438 \u043F\u0440\u043E\u0438\u0437\u0432\u043E\u043B\u0435\u043D \u0441\u043E\u0440\u0441 \u043A\u043E\u043D\u0442\u0440\u043E\u043B \u0441 \u043F\u0440\u043E\u0438\u0437\u0432\u043E\u043B\u043D\u0430 \u0431\u0438\u043B\u0434 \u0441\u0438\u0441\u0442\u0435\u043C\u0430, \u043A\u0430\u0442\u043E \u043C\u043E\u0436\u0435\u0442\u0435 \u0434\u043E\u0440\u0438 \u0434\u0430 \u0433\u043E \u043F\u043E\u043B\u0437\u0432\u0430\u0442\u0435 \u0438 \u0437\u0430 \u0434\u0440\u0443\u0433\u0438 \u0446\u0435\u043B\u0438 \u0440\u0430\u0437\u043B\u0438\u0447\u043D\u0438 \u043E\u0442 \u0431\u0438\u043B\u0434\u0432\u0430\u043D\u0435 \u043D\u0430 \u0441\u043E\u0444\u0442\u0443\u0435\u0440.
HealthReport.EmptyString=
@@ -403,33 +369,16 @@ Run.Summary.BrokenSince=\
Run.Summary.Unknown=\
\u043d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e
-Slave.InvalidConfig.Executors=\
- \u041d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u043d\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043d\u0430 \u043f\u043e\u0434\u0447\u0438\u043d\u0435\u043d \u043a\u043e\u043c\u043f\u044e\u0442\u044a\u0440 \u201e{0}\u201c \u2014 \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u0435\u043d \u0431\u0440\u043e\u0439 \u043d\u0430\
- \u0438\u0437\u043f\u044a\u043b\u043d\u0438\u0442\u0435\u043b\u0438\u0442\u0435.
-Slave.InvalidConfig.NoName=\
- \u041d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u043d\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043d\u0430 \u043f\u043e\u0434\u0447\u0438\u043d\u0435\u043d \u043a\u043e\u043c\u043f\u044e\u0442\u044a\u0440 \u2014 \u0438\u043c\u0435\u0442\u043e \u0435 \u043f\u0440\u0430\u0437\u043d\u043e.
-Slave.InvalidConfig.NoRemoteDir=\
- \u041d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u043d\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043d\u0430 \u043f\u043e\u0434\u0447\u0438\u043d\u0435\u043d \u043a\u043e\u043c\u043f\u044e\u0442\u044a\u0440 \u201e{0}\u201c \u2014 \u043b\u0438\u043f\u0441\u0432\u0430 \u043e\u0442\u0434\u0430\u043b\u0435\u0447\u0435\u043d\u0430 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044f.
-Slave.Launching=\
- {0} \u2014 \u0441\u0442\u0430\u0440\u0442\u0438\u0440\u0430\u043d\u0435 \u043d\u0430 \u043f\u043e\u0434\u0447\u0438\u043d\u0435\u043d \u043f\u0440\u043e\u0446\u0435\u0441
Slave.Network.Mounted.File.System.Warning=\
\u0421\u0438\u0433\u0443\u0440\u043d\u0438 \u043b\u0438 \u0441\u0442\u0435, \u0447\u0435 \u0438\u0441\u043a\u0430\u0442\u0435 \u0441\u0430 \u0438\u0437\u043f\u043e\u043b\u0437\u0432\u0430\u0442\u0435 \u0444\u0430\u0439\u043b\u043e\u0432\u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u0430, \u043c\u043e\u043d\u0442\u0438\u0440\u0430\u043d\u0430 \u043f\u043e\
\u043c\u0440\u0435\u0436\u0430\u0442\u0430, \u043a\u0430\u0442\u043e \u043a\u043e\u0440\u0435\u043d\u043e\u0432\u0430 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044f? \u041d\u044f\u043c\u0430 \u043d\u0443\u0436\u0434\u0430 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044f\u0442\u0430 \u0434\u0430 \u0441\u0435 \u0432\u0438\u0436\u0434\u0430 \u043e\u0442\
\u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0432\u0430\u0449\u0438\u044f \u043a\u043e\u043c\u043f\u044e\u0442\u044a\u0440.
Slave.Remote.Director.Mandatory=\
\u041e\u0442\u0434\u0430\u043b\u0435\u0447\u0435\u043d\u0430\u0442\u0430 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044f \u0435 \u0437\u0430\u0434\u044a\u043b\u0436\u0438\u0442\u0435\u043b\u043d\u0430.
-Slave.Terminated=\
- {0} \u2014 \u043f\u043e\u0434\u0447\u0438\u043d\u0435\u043d\u0438\u044f\u0442 \u043f\u0440\u043e\u0446\u0435\u0441 \u0431\u0435 \u043f\u0440\u0435\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0435\u043d
Slave.Remote.Relative.Path.Warning=\
\u0421\u0438\u0433\u0443\u0440\u043d\u0438 \u043b\u0438 \u0441\u0442\u0435, \u0447\u0435 \u0438\u0441\u043a\u0430\u0442\u0435 \u0441\u0430 \u0438\u0437\u043f\u043e\u043b\u0437\u0432\u0430\u0442\u0435 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u0435\u043d \u043f\u044a\u0442 \u043a\u0430\u0442\u043e \u043a\u043e\u0440\u0435\u043d\u043e\u0432\u0430\
\u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044f? \u041f\u0440\u043e\u0432\u0435\u0440\u0435\u0442\u0435 \u0434\u0430\u043b\u0438 \u0438\u0437\u0431\u0440\u0430\u043d\u0438\u044f\u0442 \u0441\u0442\u0430\u0440\u0442\u0438\u0440\u0430\u0449 \u043f\u0440\u043e\u0446\u0435\u0441 \u043e\u0441\u0438\u0433\u0443\u0440\u044f\u0432\u0430 \u043a\u043e\u043d\u0441\u0438\u0441\u0442\u0435\u043d\u0442\u043d\u043e\u0441\u0442\
\u043d\u0430 \u0442\u0435\u043a\u0443\u0449\u0430\u0442\u0430 \u0440\u0430\u0431\u043e\u0442\u043d\u0430 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044f. \u041f\u0440\u0435\u043f\u043e\u0440\u044a\u0447\u0438\u0442\u0435\u043b\u043d\u043e \u0435 \u0434\u0430 \u043f\u043e\u043b\u0437\u0432\u0430\u0442\u0435 \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u0435\u043d \u043f\u044a\u0442.
-Slave.UnableToLaunch=\
- \u041d\u0435\u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0441\u0442\u0430\u0440\u0442\u0438\u0440\u0430\u043d\u0435 \u043d\u0430 \u043f\u043e\u0434\u0447\u0438\u043d\u0435\u043d \u043f\u0440\u043e\u0446\u0435\u0441 \u0437\u0430 \u201e{0}{1}\u201c
-Slave.UnixSlave=\
- \u041f\u043e\u0434\u0447\u0438\u043d\u0435\u043d \u043a\u043e\u043c\u043f\u044e\u0442\u044a\u0440 \u0441 Unix.
-Slave.WindowsSlave=\
- \u041f\u043e\u0434\u0447\u0438\u043d\u0435\u043d \u043a\u043e\u043c\u043f\u044e\u0442\u044a\u0440 \u0441 Windows.
TopLevelItemDescriptor.NotApplicableIn=\
{0} \u0435\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u043d\u0435 \u043c\u043e\u0433\u0430\u0442 \u0434\u0430 \u0441\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0430\u0442 \u0432 {1}
@@ -525,8 +474,6 @@ UpdateCenter.PluginCategory.scm-related=\
\u041e\u0449\u0435 \u0437\u0430 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u0442\u043e \u043d\u0430 \u0432\u0435\u0440\u0441\u0438\u0438\u0442\u0435
UpdateCenter.PluginCategory.security=\
\u0421\u0438\u0433\u0443\u0440\u043d\u043e\u0441\u0442
-UpdateCenter.PluginCategory.slaves=\
- \u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043d\u0430 \u043f\u043e\u0434\u0447\u0438\u043d\u0435\u043d\u0438\u0442\u0435 \u0438\u0437\u043f\u044a\u043b\u043d\u0438\u0442\u0435\u043b\u0438 \u043d\u0430 \u0437\u0430\u0434\u0430\u0447\u0438
UpdateCenter.PluginCategory.test=\
\u0422\u0435\u0441\u0442\u0432\u0430\u043d\u0435
UpdateCenter.PluginCategory.trigger=\
diff --git a/core/src/main/resources/hudson/model/Messages_ca.properties b/core/src/main/resources/hudson/model/Messages_ca.properties
index 2237bbee1d..0a5f3a512e 100644
--- a/core/src/main/resources/hudson/model/Messages_ca.properties
+++ b/core/src/main/resources/hudson/model/Messages_ca.properties
@@ -1 +1,3 @@
ManageJenkinsAction.DisplayName=Configuraci\u00F3 de Jenkins
+
+FreeStyleProject.Description=Aquesta \u00E9s la funcionalitat principal de Jenkins. Jenkins far\u00E0 un build del vostre projecte combinant qualsevol SCM amb qualsevol sistema de build. Aix\u00F2 tamb\u00E9 es pot usar per tasques que no siguin un build de software
diff --git a/core/src/main/resources/hudson/model/Messages_cs.properties b/core/src/main/resources/hudson/model/Messages_cs.properties
index c294dbd242..11de8e6c7a 100644
--- a/core/src/main/resources/hudson/model/Messages_cs.properties
+++ b/core/src/main/resources/hudson/model/Messages_cs.properties
@@ -1 +1,3 @@
ManageJenkinsAction.DisplayName=Administrace
+
+FreeStyleProject.Description=Toto je hlavn\u00ED funkce Jenkins. Jenkins sestav\u00ED v\u00E1\u0161 projekt, spoj\u00ED jak\u00FDkoli syst\u00E9m pro spr\u00E1vu verz\u00ED se syst\u00E9mem pro sestaven\u00ED. Nemus\u00ED b\u00FDt pou\u017Eit jen pro sestaven\u00ED softwaru.
\ No newline at end of file
diff --git a/core/src/main/resources/hudson/model/Messages_da.properties b/core/src/main/resources/hudson/model/Messages_da.properties
index 76378ed018..427ba244f1 100644
--- a/core/src/main/resources/hudson/model/Messages_da.properties
+++ b/core/src/main/resources/hudson/model/Messages_da.properties
@@ -38,7 +38,6 @@ Denne tilladelse g\u00f8r det muligt for brugeren at opdatere beskrivelsen og an
for eksempel for at skrive en besked om hvorfor et byg fejler.
StringParameterDefinition.DisplayName=Strengparameter
Node.Mode.NORMAL=Benyt denne slave s\u00e5 meget som overhovedet muligt
-Computer.Caption=Slave {0}
ProxyView.NoSuchViewExists=Global visning {0} findes ikke
UpdateCenter.PluginCategory.external=Eksternt site/ v\u00e6rkt\u00f8jsintegration
BallColor.Pending=I k\u00f8
@@ -60,18 +59,18 @@ Run.DeletePermission.Description=Denne tilladelse g\u00f8r det muligt for bruger
Run.Summary.BrokenForALongTime=fejlet l\u00e6nge
CLI.safe-restart.shortDescription=Sikker genstart af Jenkins
CLI.quiet-down.shortDescription=Forbereder nedlukning, starter ingen nye byg.
+
FreeStyleProject.DisplayName=Byg et free-style projekt
+FreeStyleProject.Description=Dette er den centrale feature i Jenkins. Jenkins vil bygge dit projekt i enhver kombination af kildekodestyring (SCM) med ethvert byggesystem og dette kan bruges til meget andet end at bygge software.
+
ProxyView.DisplayName=Inkluder en global visning
-ComputerSet.SpecifySlaveToCopy=Angiv hvilken slave der skal kopieres
Run.Permissions.Title=K\u00f8r
Hudson.DisplayName=Jenkins
Hudson.NotANonNegativeNumber=V\u00e6rdien m\u00e5 ikke v\u00e6re negativ
-Slave.Launching={0} Starter slave agent
BallColor.InProgress=I gang
AbstractProject.NoBuilds=Ingen eksisterende byg. Skedulerer et nyt.
Run.BuildAborted=Byg afbrudt
BallColor.Aborted=Afbrudt
-Slave.InvalidConfig.NoRemoteDir=Ugyldig slavekonfiguration for {0}. Intet fjerndirektorie angivet.
ListView.DisplayName=Listevisning
UpdateCenter.PluginCategory.page-decorator=Sidedekorat\u00f8rer
Cause.LegacyCodeCause.ShortDescription=Legacy kode startede dette job. Ingen startbegrundelse tilg\u00e6ngelig.
@@ -80,15 +79,11 @@ UpdateCenter.PluginCategory.post-build=Andre postbyg handlinger
Cause.UpstreamCause.ShortDescription=Startet af upstreamprojektet "{0}" byg nummer {1}
UpdateCenter.PluginCategory.cli=Kommandolinieinterface
UpdateCenter.PluginCategory.builder=Byggev\u00e6rkt\u00f8jer
-Slave.UnixSlave=Dette er en Unix slave
FileParameterDefinition.DisplayName=Filparametre
Run.Summary.Unstable=Ustabil
CLI.reload-configuration.shortDescription=Genindl\u00e6s alle data fra filsystemet. \
Nyttigt hvis du har modificeret konfigurationsfiler direkte, udenom Jenkins.
-ComputerSet.NoSuchSlave=Ingen slave ved navn: {0}
-ComputerSet.SlaveAlreadyExists=En slave ved navn ''{0}'' eksisterer allerede
Executor.NotAvailable=N/A
-Slave.Terminated={0} slave agenten blev tilintetgjort
Item.Permissions.Title=Job
AbstractProject.NoWorkspace=Intet arbejdsomr\u00e5de tilg\u00e6ngeligt, kan ikke checke for opdateringer.
CLI.disable-job.shortDescription=Sl\u00e5r et job fra
@@ -109,7 +104,6 @@ MyView.DisplayName=Min visning
Hudson.USER_CONTENT_README=Filer i dette direktorie vil blive serveret under http://server/hudson/userContent/
UpdateCenter.PluginCategory.scm-related=Kildekodestyring (SCM) relateret
CLI.cancel-quiet-down.shortDescription=Sl\u00e5 effekten af "quite-down" kommandoen fra.
-Slave.InvalidConfig.Executors=Ugyldig slavekonfiguration for {0}. Ugyldigt # afviklere.
Api.NoXPathMatch=XPath {0} matcher ikke
Run.MarkedExplicitly=Eksplicit markeret til at blive gemt
Hudson.Permissions.Title=Overordnet
@@ -117,7 +111,6 @@ AbstractProject.UpstreamBuildInProgress=Upstreamprojektet {0} bygger allerede.
Permalink.LastBuild=Seneste Byg
MyViewsProperty.ViewExistsCheck.NotExist=En visning ved navn {0} findes ikke
AbstractItem.NoSuchJobExists=Intet job ved navn ''{0}'' eksisterer. M\u00e5ske mener du ''{1}''?
-Slave.InvalidConfig.NoName=Ugyldig slavekonfiguration. Navnet er tomt.
Run.Summary.BackToNormal=tilbage p\u00e5 sporet
BooleanParameterDefinition.DisplayName=Boolesk V\u00e6rdi
Permalink.LastSuccessfulBuild=Seneste succesfulde byg
@@ -135,7 +128,6 @@ UpdateCenter.PluginCategory.notifier=Bygge Notifikatorer
Label.ProvisionedFrom=Provisioneret fra {0}
Run.Summary.Aborted=afbrudt
UpdateCenter.PluginCategory.report=Bygge Rapporter
-Computer.ConfigurePermission.Description=Denne rettighed tillader brugere at konfigurere slaver.
View.Permissions.Title=Visninger
Permalink.LastFailedBuild=Seneste fejlede byg
UpdateCenter.PluginCategory.scm=Kildekodestyring (SCM)
@@ -151,12 +143,10 @@ UpdateCenter.PluginCategory.cluster=Klyngestyring og distribuerede byg
AbstractBuild.KeptBecause=beholdt pga. {0}
Hudson.NotADirectory={0} er ikke et direktorie
Cause.RemoteCause.ShortDescription=Startet af fjernv\u00e6rt {0}
-Slave.WindowsSlave=Dette er en Windows slave
Run.ArtifactsPermission.Description=\
Denne rettighed g\u00f8r det muligt at hente byggeartifakter. \
Hvis du ikke vil have at en bruger skal kunne tilg\u00e5 byggeartifakter kan \
du fratage vedkommende denne rettighed.
-Computer.BadChannel=Slave node offline eller ikke en fjernkanal (f.eks. en masternode).
AbstractProject.Aborted=Afbrudt
Queue.init=Genopretter byggek\u00f8en
Hudson.NodeDescription=master Jenkins noden
@@ -176,10 +166,8 @@ s\u00e5vel som at k\u00f8re yderst f\u00f8lsomme operationer der effektivt svare
Hudson.NotJDKDir={0} ligner ikke et JDK direktorie
AbstractProject.WorkspaceOffline=Arbejdsomr\u00e5det er offline.
Queue.HudsonIsAboutToShutDown=Jenkins skal til at lukke ned
-UpdateCenter.PluginCategory.slaves=Slavestartere og kontroll\u00f8rer
Api.MultipleMatch=XPath "{0}" matcher {1} noder. \
Lav en XPath der kun matcher en, eller brug en "omslags" foresp\u00f8rgselsparameter til at samle dem alle under et rodelement.
-Slave.UnableToLaunch=Kan ikke starte en slave agent for {0}{1}
Queue.Unknown=???
BallColor.Unstable=Ustabil
Job.AllRecentBuildFailed=Alle de seneste byg er fejlet.
@@ -212,10 +200,8 @@ Queue.WaitingForNextAvailableExecutorOn=Venter p\u00e5 n\u00e6ste ledige afvikle
Hudson.NotANegativeNumber=Ikke en negativ v\u00e6rdi
UpdateCenter.PluginCategory.misc=Diverse
Queue.InProgress=Et byg er allerede i gang
-Computer.DeletePermission.Description=Denne rettighed tillader brugere at slette eksisterende slaver.
UpdateCenter.Status.ConnectionFailed=
UpdateCenter.PluginCategory.maven=Maven
-Computer.Permissions.Title=Slave
BallColor.Success=Succes
UpdateCenter.PluginCategory.upload=Artifaktsendere
Permalink.LastUnstableBuild=Seneste ustabile byg
diff --git a/core/src/main/resources/hudson/model/Messages_de.properties b/core/src/main/resources/hudson/model/Messages_de.properties
index 5364f43697..21e7988d2c 100644
--- a/core/src/main/resources/hudson/model/Messages_de.properties
+++ b/core/src/main/resources/hudson/model/Messages_de.properties
@@ -20,7 +20,6 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
-AbstractBuild.BuildingRemotely=Baue auf Slave {0}
AbstractBuild.BuildingOnMaster=Baue auf Master
AbstractBuild_Building=Baue
AbstractBuild.BuildingInWorkspace=\ in Arbeitsbereich {0}
@@ -86,23 +85,14 @@ CLI.offline-node.shortDescription=Knoten wird bis zum n\u00e4chsten "online-node
CLI.safe-restart.shortDescription=Startet Jenkins neu.
Queue.init=Build-Warteschlange neu initialisieren
-Computer.Caption=Slave {0}
-Computer.Permissions.Title=Slave
-Computer.ConfigurePermission.Description=Dieses Recht erlaubt, Slaves zu konfigurieren.
-Computer.DeletePermission.Description=Dieses Recht erlaubt, bestehende Slaves zu l\u00f6schen.
-Computer.CreatePermission.Description=Dieses Recht erlaubt, neue Slaves zu erstellen.
-Computer.ConnectPermission.Description=Dieses Recht erlaubt, Slaves zu verbinden oder als verf\u00fcgbar zu markieren.
-Computer.DisconnectPermission.Description=Dieses Recht erlaubt, bestehende Slaves zu entfernen oder als vor\u00fcbergehend nicht verf\u00fcgbar zu markieren.
-ComputerSet.NoSuchSlave=Slave ''{0}'' existiert nicht.
-ComputerSet.SlaveAlreadyExists=Ein Slave mit Namen ''{0}'' existiert bereits.
-ComputerSet.SpecifySlaveToCopy=Geben Sie an, welcher Slave kopiert werden soll
ComputerSet.DisplayName=Knoten
Executor.NotAvailable=nicht verf\u00fcgbar
FreeStyleProject.DisplayName="Free Style"-Softwareprojekt bauen
+FreeStyleProject.Description=Dieses Profil ist das meistgenutzte in Jenkins. Jenkins baut Ihr Projekt, wobei Sie universell jedes SCM System mit jedem Build-Verfahren kombinieren k\u00F6nnen. Dieses Profil ist nicht nur auf das Bauen von Software beschr\u00E4nkt, sondern kann dar\u00FCber hinaus auch f\u00FCr weitere Anwendungsgebiete verwendet werden.
HealthReport.EmptyString=
@@ -208,18 +198,10 @@ Run.Summary.BrokenSinceThisBuild=Defekt seit diesem Build.
Run.Summary.BrokenSince=Defekt seit Build {0}
Run.Summary.Unknown=Ergebnis unbekannt
-Slave.InvalidConfig.Executors=Ung\u00fcltige Slave-Einstellungen f\u00fcr {0}. Ung\u00fcltige Anzahl von Build-Prozessoren.
-Slave.InvalidConfig.NoName=Ung\u00fcltige Slave-Einstellungen. Name ist leer.
-Slave.InvalidConfig.NoRemoteDir=Ung\u00fcltige Slave-Einstellungen f\u00fcr {0}. Kein entferntes Verzeichnis angegeben.
-Slave.Launching={0} Starte Slave-Agent
Slave.Network.Mounted.File.System.Warning=\
Sind Sie sicher, da\u00df Sie ein Netzlaufwerk als Stammverzeichnis verwenden m\u00f6chen? \
Hinweis: Dieses Verzeichnis mu\u00df nicht vom Master-Knoten aus sichtbar sein.
Slave.Remote.Director.Mandatory=Ein Stammverzeichnis muss angegeben werden.
-Slave.Terminated={0} Slave-Agent wurde beendet
-Slave.UnableToLaunch=Kann keinen Slave-Agenten starten f\u00fcr {0}{1}
-Slave.UnixSlave=Dies ist ein UNIX-Slave
-Slave.WindowsSlave=Dies ist ein Windows-Slave
UpdateCenter.DownloadButNotActivated=Erfolgreich heruntergeladen. Wird beim n\u00e4chsten Neustart aktiviert.
UpdateCenter.n_a=(nicht verf\u00fcgbar)
@@ -257,7 +239,6 @@ UpdateCenter.PluginCategory.post-build=Post-Build-Aktionen
UpdateCenter.PluginCategory.report=Build-Berichte
UpdateCenter.PluginCategory.scm=Versionsverwaltung
UpdateCenter.PluginCategory.scm-related=Versionsverwaltung (weiteres Umfeld)
-UpdateCenter.PluginCategory.slaves=Slave-Knoten Management
UpdateCenter.PluginCategory.trigger=Build-Ausl\u00f6ser
UpdateCenter.PluginCategory.ui=Benutzeroberfl\u00e4che
UpdateCenter.PluginCategory.upload=Distribution von Artefakten
diff --git a/core/src/main/resources/hudson/model/Messages_en_GB.properties b/core/src/main/resources/hudson/model/Messages_en_GB.properties
index 9e18978be2..b9d3954d76 100644
--- a/core/src/main/resources/hudson/model/Messages_en_GB.properties
+++ b/core/src/main/resources/hudson/model/Messages_en_GB.properties
@@ -1 +1 @@
-ParametersDefinitionProperty.DisplayName=This build is parameterised
+ParametersDefinitionProperty.DisplayName=This project is parameterised
diff --git a/core/src/main/resources/hudson/model/Messages_es.properties b/core/src/main/resources/hudson/model/Messages_es.properties
index 0fcdb186d2..29feb6dbeb 100644
--- a/core/src/main/resources/hudson/model/Messages_es.properties
+++ b/core/src/main/resources/hudson/model/Messages_es.properties
@@ -74,7 +74,7 @@ Executor.NotAvailable=N/D
FreeStyleProject.DisplayName=Crear un proyecto de estilo libre
-
+FreeStyleProject.Description=Esta es la caracter\u00EDstica principal de Jenkins, la de ejecutar el proyecto combinando cualquier tipo de repositorio de software (SCM) con cualquier modo de construcci\u00F3n o ejecuci\u00F3n (make, ant, mvn, rake, script ...). Por tanto se podr\u00E1 tanto compilar y empaquetar software, como ejecutar cualquier proceso que requiera monitorizaci\u00F3n.
Hudson.BadPortNumber=N\u00famero err\u00f3neo de puerto {0}
Hudson.Computer.Caption=Principal
diff --git a/core/src/main/resources/hudson/model/Messages_et.properties b/core/src/main/resources/hudson/model/Messages_et.properties
new file mode 100644
index 0000000000..ff3d7fc8bd
--- /dev/null
+++ b/core/src/main/resources/hudson/model/Messages_et.properties
@@ -0,0 +1 @@
+FreeStyleProject.Description=See on Jenkinsi p\u00F5hifunktsioon! Jenkins ehitab su projekti, kombineerides sinu versioonihalduse mistahes ehitusprotsessiga. Sa v\u00F5id seda kasutada ka muudeks asjadeks kui tarkvara ehitamine.
\ No newline at end of file
diff --git a/core/src/main/resources/hudson/model/Messages_fi.properties b/core/src/main/resources/hudson/model/Messages_fi.properties
index b8537b4403..cc62c20834 100644
--- a/core/src/main/resources/hudson/model/Messages_fi.properties
+++ b/core/src/main/resources/hudson/model/Messages_fi.properties
@@ -1 +1,3 @@
ManageJenkinsAction.DisplayName=Hallitse Jenkinsia
+
+FreeStyleProject.Description=T\u00E4m\u00E4 on Jenkins t\u00E4rkein ominaisuus. Jenkins rakentaa projektisi k\u00E4ytt\u00E4en versionhallintaa ja buildij\u00E4rjestelmi\u00E4. Voit k\u00E4ytt\u00E4\u00E4 t\u00E4t\u00E4 my\u00F6s muuhun kuin ohjelmien k\u00E4\u00E4nt\u00E4miseen.
\ No newline at end of file
diff --git a/core/src/main/resources/hudson/model/Messages_fr.properties b/core/src/main/resources/hudson/model/Messages_fr.properties
index 8808e4727c..f9d5295135 100644
--- a/core/src/main/resources/hudson/model/Messages_fr.properties
+++ b/core/src/main/resources/hudson/model/Messages_fr.properties
@@ -50,18 +50,12 @@ BallColor.Pending=En attente
BallColor.Success=Succ\u00e8s
BallColor.Unstable=Instable
-Computer.Caption=Esclave {0}
-Computer.Permissions.Title=Esclave
-Computer.ConfigurePermission.Description=Ce droit permet aux utilisateurs de configurer les esclaves.
-Computer.DeletePermission.Description=Ce droit permet aux utilisateurs de supprimer les esclaves.
-ComputerSet.NoSuchSlave=Cet esclave n''existe pas : {0}
-ComputerSet.SlaveAlreadyExists=L''esclave appel\u00e9 ''{0}'' existe d\u00e9j\u00e0
-ComputerSet.SpecifySlaveToCopy=Sp\u00e9cifiez l''esclave \u00e0 copier
Executor.NotAvailable=N/A
FreeStyleProject.DisplayName=Construire un projet free-style
+FreeStyleProject.Description=Ceci est la fonction principale de Jenkins qui sert \u00E0 builder (construire) votre projet. Vous pouvez int\u00E9grer tous les outils de gestion de version avec tous les syst\u00E8mes de build. Il est m\u00EAme possible d''utiliser Jenkins pour tout autre chose qu''un build logiciel.
Hudson.BadPortNumber=Num\u00e9ro de port incorrect {0}
Hudson.Computer.Caption=Ma\u00eetre
@@ -126,14 +120,6 @@ Run.UpdatePermission.Description=\
Cette option permet aux utilisateurs de mettre \u00e0 jour la description et d''autres propri\u00e9t\u00e9s d''un build, \
par exemple pour laisser des notes sur la cause d''\u00e9chec d''un build.
-Slave.InvalidConfig.Executors=Configuration esclave invalide pour {0}. Nombre d''ex\u00e9cuteurs invalide.
-Slave.InvalidConfig.NoName=Configuration esclave invalide. Le nom est vide.
-Slave.InvalidConfig.NoRemoteDir=Configuration esclave invalide pour {0}. Pas de r\u00e9pertoire distant fourni
-Slave.Launching={0} Lancement de l''agent esclave
-Slave.Terminated={0} l''agent esclave a \u00e9t\u00e9 termin\u00e9
-Slave.UnableToLaunch=Impossible de lancer l''agent esclave pour {0} {1}
-Slave.UnixSlave=Ceci est un esclave Unix
-Slave.WindowsSlave=Ceci est un esclave Windows
View.Permissions.Title=Vues
View.CreatePermission.Description=\
diff --git a/core/src/main/resources/hudson/model/Messages_hi_IN.properties b/core/src/main/resources/hudson/model/Messages_hi_IN.properties
new file mode 100644
index 0000000000..58a16a05dd
--- /dev/null
+++ b/core/src/main/resources/hudson/model/Messages_hi_IN.properties
@@ -0,0 +1 @@
+FreeStyleProject.Description=\u092F\u0939 \u091C\u0947\u0928\u0915\u0940\u0902\u0938 \u0915\u0940 \u0915\u0947\u0902\u0926\u094D\u0930\u0940\u092F \u0935\u093F\u0936\u0947\u0937\u0924\u093E \u0939\u0948\u0964 \u091C\u0947\u0928\u0915\u0940\u0902\u0938, \u0915\u093F\u0938\u0940 \u092D\u0940 \u0928\u093F\u0930\u094D\u092E\u093E\u0923 \u092A\u094D\u0930\u0923\u093E\u0932\u0940 \u0915\u0947 \u0938\u093E\u0925 \u0915\u093F\u0938\u0940 \u092D\u0940 \u0938\u0949\u092B\u094D\u091F\u0935\u0947\u092F\u0930 \u0935\u093F\u0928\u094D\u092F\u093E\u0938 \u092A\u094D\u0930\u092C\u0902\u0927\u0928 \u0915\u093E \u0938\u0902\u092F\u094B\u091C\u0928 \u0915\u0930\u0915\u0947 \u0906\u092A\u0915\u0940 \u092A\u0930\u093F\u092F\u094B\u091C\u0928\u093E \u0915\u093E \u0928\u093F\u0930\u094D\u092E\u093E\u0923 \u0915\u0930\u0947\u0917\u093E, \u0914\u0930 \u0907\u0938\u0915\u093E \u092A\u094D\u0930\u092F\u094B\u0917 \u0938\u0949\u092B\u094D\u091F\u0935\u0947\u092F\u0930 \u0915\u093E \u0928\u093F\u0930\u094D\u092E\u093E\u0923 \u0915\u0930\u0928\u0947 \u0915\u0947 \u0905\u0932\u093E\u0935\u093E \u0905\u0928\u094D\u092F \u0915\u093E\u0930\u094D\u092F\u094B\u0902 \u0915\u0947 \u0932\u093F\u090F \u092D\u0940 \u0915\u093F\u092F\u093E \u091C\u093E \u0938\u0915\u0924\u093E \u0939\u0948.
diff --git a/core/src/main/resources/hudson/model/Messages_id.properties b/core/src/main/resources/hudson/model/Messages_id.properties
new file mode 100644
index 0000000000..fbb242f35c
--- /dev/null
+++ b/core/src/main/resources/hudson/model/Messages_id.properties
@@ -0,0 +1 @@
+FreeStyleProject.Description=Ini adalah fitur sentral dari Jenkins. Jenkins akan membangun proyek anda, mengkombinasikan SCM apa pun dengan sistem pembangunan, dan ini akan digunakan untuk sesuatu selain pembangunan piranti lunak.
diff --git a/core/src/main/resources/hudson/model/Messages_it.properties b/core/src/main/resources/hudson/model/Messages_it.properties
index faa69c1371..6beced04f0 100644
--- a/core/src/main/resources/hudson/model/Messages_it.properties
+++ b/core/src/main/resources/hudson/model/Messages_it.properties
@@ -28,7 +28,6 @@ AbstractBuild.KeptBecause=kept because of {0}
AbstractItem.NoSuchJobExists=Nessun job di nome ''{0}'' esiste. Intendevi forse ''{1}''?
AbstractItem.Pronoun=Job
-AbstractProject.AssignedLabelString_NoMatch_DidYouMean=There''s no slave/cloud that matches this assignment. Did you mean ''{1}'' instead of ''{0}''?
AbstractProject.NewBuildForWorkspace=Scheduling a new build to get a workspace.
AbstractProject.AwaitingBuildForWorkspace=Awaiting build to get a workspace.
AbstractProject.Pronoun=Progetto
@@ -56,8 +55,6 @@ AbstractProject.WipeOutPermission.Description=\
This permission grants the ability to wipe out the contents of a workspace.
AbstractProject.AssignedLabelString.InvalidBooleanExpression=\
Espressione booleana non valida: {0}
-AbstractProject.AssignedLabelString.NoMatch=\
- There's no slave/cloud that matches this assignment
Api.MultipleMatch=XPath "{0}" corrisponde a {1} nodi. \
Creare un XPath che corrisponde ad un solo valore, oppure utilizzare una query "wrapper" \
@@ -81,24 +78,13 @@ CLI.offline-node.shortDescription=Stop using a node for performing builds tempor
CLI.wait-node-online.shortDescription=Attende che il nodo sia attivo
CLI.wait-node-offline.shortDescription=Attende che un nodo sia disattivo
-Computer.Caption=Slave {0}
-Computer.NoSuchSlaveExists=No such slave "{0}" exists. Did you mean "{1}"?
-Computer.Permissions.Title=Slave
-Computer.ConfigurePermission.Description=This permission allows users to configure slaves.
-Computer.DeletePermission.Description=This permission allows users to delete existing slaves.
-Computer.CreatePermission.Description=This permission allows users to create slaves.
-Computer.ConnectPermission.Description=This permission allows users to connect slaves or mark slaves as online.
-Computer.DisconnectPermission.Description=This permission allows users to disconnect slaves or mark slaves as temporarily offline.
-Computer.BadChannel=Slave node offline or not a remote channel (such as master node).
-ComputerSet.NoSuchSlave=No such slave: {0}
-ComputerSet.SlaveAlreadyExists=Slave called ''{0}'' already exists
-ComputerSet.SpecifySlaveToCopy=Specify which slave to copy
ComputerSet.DisplayName=nodes
Executor.NotAvailable=N/A
FreeStyleProject.DisplayName=Configura una build di tipo generico
+FreeStyleProject.Description=Questa \u00E8 la funzione principale di Jenkins. Jenkins effettuer\u00E0 una compilazione del progetto, combinando qualsiasi SCM con qualsiasi sistema di compilazione e si pu\u00F2 usare anche per qualcosa di altro che non sia un programma di compilazione.
HealthReport.EmptyString=
@@ -204,16 +190,8 @@ Run.Summary.BrokenSinceThisBuild=broken since this build
Run.Summary.BrokenSince=broken since build {0}
Run.Summary.Unknown=?
-Slave.InvalidConfig.Executors=Invalid slave configuration for {0}. Invalid # of executors.
-Slave.InvalidConfig.NoName=Invalid slave configuration. Name is empty
-Slave.InvalidConfig.NoRemoteDir=Invalid slave configuration for {0}. No remote directory given
-Slave.Launching={0} Launching slave agent
Slave.Network.Mounted.File.System.Warning=Are you sure you want to use network mounted file system for FS root? Note that this directory does not need to be visible to the master.
Slave.Remote.Director.Mandatory=Remote directory is mandatory
-Slave.Terminated={0} slave agent was terminated
-Slave.UnableToLaunch=Unable to launch the slave agent for {0}{1}
-Slave.UnixSlave=This is a Unix slave
-Slave.WindowsSlave=This is a Windows slave
UpdateCenter.DownloadButNotActivated=Downloaded Successfully. Will be activated during the next boot
View.Permissions.Title=View
@@ -249,7 +227,6 @@ UpdateCenter.PluginCategory.post-build=Other Post-Build Actions
UpdateCenter.PluginCategory.report=Build Reports
UpdateCenter.PluginCategory.scm=Source Code Management
UpdateCenter.PluginCategory.scm-related=Source Code Management related
-UpdateCenter.PluginCategory.slaves=Slave Launchers and Controllers
UpdateCenter.PluginCategory.trigger=Build Triggers
UpdateCenter.PluginCategory.ui=User Interface
UpdateCenter.PluginCategory.upload=Artifact Uploaders
@@ -266,14 +243,14 @@ Permalink.LastFailedBuild=Last failed build
ParameterAction.DisplayName=Parameters
StringParameterDefinition.DisplayName=String Parameter
-TextParameterDefinition.DisplayName=Text Parameter
+TextParameterDefinition.DisplayName=Multi-line String Parameter
FileParameterDefinition.DisplayName=File Parameter
BooleanParameterDefinition.DisplayName=Boolean Value
ChoiceParameterDefinition.DisplayName=Choice
RunParameterDefinition.DisplayName=Run Parameter
PasswordParameterDefinition.DisplayName=Password Parameter
-Node.Mode.NORMAL=Utilize this slave as much as possible
+Node.Mode.NORMAL=Utilize this agent as much as possible
Node.Mode.EXCLUSIVE=Leave this machine for tied jobs only
ListView.DisplayName=List View
diff --git a/core/src/main/resources/hudson/model/Messages_ja.properties b/core/src/main/resources/hudson/model/Messages_ja.properties
index 44c18eefc5..f36f34306a 100644
--- a/core/src/main/resources/hudson/model/Messages_ja.properties
+++ b/core/src/main/resources/hudson/model/Messages_ja.properties
@@ -28,8 +28,6 @@ AbstractBuild.KeptBecause={0}\u306e\u305f\u3081\u3001\u4fdd\u5b58\u3057\u307e\u3
AbstractItem.NoSuchJobExists=\u30b8\u30e7\u30d6''{0}''\u306f\u5b58\u5728\u3057\u307e\u305b\u3093\u3002''{1}''\u3067\u3059\u304b?
AbstractItem.Pronoun=\u30b8\u30e7\u30d6
-AbstractProject.AssignedLabelString_NoMatch_DidYouMean=\
- \u8a72\u5f53\u3059\u308b\u30b9\u30ec\u30fc\u30d6\u3084\u30ce\u30fc\u30c9\u306f\u3042\u308a\u307e\u305b\u3093\u3002''{0}''\u3067\u306f\u306a\u304f\u3066''{1}''\u306e\u3053\u3068\u3067\u3059\u304b?
AbstractProject.NewBuildForWorkspace=\u65b0\u898f\u306e\u30d3\u30eb\u30c9\u3092\u5b9f\u884c\u3057\u3066\u3001\u30ef\u30fc\u30af\u30b9\u30da\u30fc\u30b9\u3092\u4f5c\u6210\u3057\u3066\u304f\u3060\u3055\u3044\u3002
AbstractProject.AwaitingBuildForWorkspace=\u30ef\u30fc\u30af\u30b9\u30da\u30fc\u30b9\u304c\u7528\u610f\u3067\u304d\u308b\u307e\u3067\u30d3\u30eb\u30c9\u3092\u4fdd\u7559\u3057\u307e\u3059\u3002
AbstractProject.Pronoun=\u30d7\u30ed\u30b8\u30a7\u30af\u30c8
@@ -60,7 +58,6 @@ AbstractProject.CancelPermission.Description=\
\u30d3\u30eb\u30c9\u306e\u30ad\u30e3\u30f3\u30bb\u30eb\u3092\u8a31\u53ef\u3057\u307e\u3059\u3002
AbstractProject.AssignedLabelString.InvalidBooleanExpression=\
\u30e9\u30d9\u30eb\u5f0f\u306b\u9593\u9055\u3044\u304c\u3042\u308a\u307e\u3059\u3002: {0}
-AbstractProject.AssignedLabelString.NoMatch=\
\u8a72\u5f53\u3059\u308b\u30b9\u30ec\u30fc\u30d6\u3082\u3057\u304f\u306f\u30af\u30e9\u30a6\u30c9\u306f\u3042\u308a\u307e\u305b\u3093\u3002
AbstractProject.CustomWorkspaceEmpty=\u30ab\u30b9\u30bf\u30e0\u30ef\u30fc\u30af\u30b9\u30da\u30fc\u30b9\u304c\u5165\u529b\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002
@@ -77,21 +74,7 @@ BallColor.Pending=\u672a\u6c7a\u5b9a
BallColor.Success=\u6210\u529f
BallColor.Unstable=\u4e0d\u5b89\u5b9a
-Computer.Caption=\u30b9\u30ec\u30fc\u30d6 {0}
-Computer.NoSuchSlaveExists="{0}"\u3068\u3044\u3046\u30b9\u30ec\u30fc\u30d6\u306f\u5b58\u5728\u3057\u307e\u305b\u3093\u3002"{1}"\u306e\u3053\u3068\u3067\u3059\u304b?
-Computer.Permissions.Title=\u30b9\u30ec\u30fc\u30d6
-Computer.ExtendedReadPermission.Description=\u30b9\u30ec\u30fc\u30d6\u306e\u8a2d\u5b9a\u306e\u53c2\u7167\u3092\u8a31\u53ef\u3057\u307e\u3059\u3002
-Computer.ConfigurePermission.Description=\u30b9\u30ec\u30fc\u30d6\u306e\u8a2d\u5b9a\u3092\u8a31\u53ef\u3057\u307e\u3059\u3002
-Computer.DeletePermission.Description=\u30b9\u30ec\u30fc\u30d6\u306e\u524a\u9664\u3092\u8a31\u53ef\u3057\u307e\u3059\u3002
-Computer.CreatePermission.Description=\u30b9\u30ec\u30fc\u30d6\u306e\u4f5c\u6210\u3092\u8a31\u53ef\u3057\u307e\u3059\u3002
-Computer.ConnectPermission.Description=\u30b9\u30ec\u30fc\u30d6\u3078\u306e\u63a5\u7d9a\u3068\u30aa\u30f3\u30e9\u30a4\u30f3\u5316\u3092\u8a31\u53ef\u3057\u307e\u3059\u3002
-Computer.DisconnectPermission.Description=\u30b9\u30ec\u30fc\u30d6\u306e\u5207\u65ad\u3068\u4e00\u6642\u7684\u306a\u30aa\u30d5\u30e9\u30a4\u30f3\u5316\u3092\u8a31\u53ef\u3057\u307e\u3059\u3002
-Computer.BuildPermission.Description=\u30b9\u30ec\u30fc\u30d6\u4e0a\u3067\u306e\u30b8\u30e7\u30d6\u306e\u8d77\u52d5\u3092\u8a31\u53ef\u3057\u307e\u3059\u3002
-Computer.BadChannel=\u30b9\u30ec\u30fc\u30d6\u30ce\u30fc\u30c9\u304c\u30aa\u30d5\u30e9\u30a4\u30f3\u304b\u30ea\u30e2\u30fc\u30c8\u30c1\u30e3\u30cd\u30eb\u3067\u3059(\u30de\u30b9\u30bf\u30fc\u30ce\u30fc\u30c9\u306a\u3069)\u3002
-ComputerSet.NoSuchSlave=\u30b9\u30ec\u30fc\u30d6\u304c\u5b58\u5728\u3057\u307e\u305b\u3093: {0}
-ComputerSet.SlaveAlreadyExists=''{0}''\u306f\u3059\u3067\u306b\u5b58\u5728\u3057\u307e\u3059
-ComputerSet.SpecifySlaveToCopy=\u30b3\u30d4\u30fc\u3059\u308b\u30b9\u30ec\u30fc\u30d6\u3092\u6307\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044\u3002
ComputerSet.DisplayName=\u30ce\u30fc\u30c9
Descriptor.From=(from {0})
@@ -100,6 +83,10 @@ Executor.NotAvailable=N/A
FreeStyleProject.DisplayName=\u30d5\u30ea\u30fc\u30b9\u30bf\u30a4\u30eb\u30fb\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u30d3\u30eb\u30c9
+FreeStyleProject.Description=\
+ \u3082\u3063\u3068\u3082\u6c4e\u7528\u6027\u306e\u9ad8\u3044Jenkins\u306e\u4e2d\u6838\u6a5f\u80fd\u3067\u3059\u3002\u4efb\u610f\u306eSCM\u304b\u3089\u30bd\u30fc\u30b9\u30b3\u30fc\u30c9\u3092\u30c1\u30a7\u30c3\u30af\u30a2\u30a6\u30c8\u3057\u3001\
+ \u4efb\u610f\u306e\u30d3\u30eb\u30c9\u30b7\u30b9\u30c6\u30e0\u3067\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u304c\u30d3\u30eb\u30c9\u3067\u304d\u307e\u3059\u3002\u5f80\u3005\u306b\u3057\u3066\u3001\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u306e\u30d3\u30eb\u30c9\u4ee5\u5916\u306b\u3082\
+ \u69d8\u3005\u306a\u4ed5\u4e8b\u306e\u81ea\u52d5\u5316\u306b\u5229\u7528\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
HealthReport.EmptyString=
@@ -204,17 +191,9 @@ Run.Summary.BrokenSinceThisBuild=\u3053\u306e\u30d3\u30eb\u30c9\u304b\u3089\u654
Run.Summary.BrokenSince=\u30d3\u30eb\u30c9{0}\u304b\u3089\u6545\u969c
Run.Summary.Unknown=?
-Slave.InvalidConfig.Executors=\u30b9\u30ec\u30fc\u30d6 {0} \u306e\u8a2d\u5b9a\u306b\u8aa4\u308a\u304c\u3042\u308a\u307e\u3059\u3002\u540c\u6642\u5b9f\u884c\u6570\u304c\u4e0d\u6b63\u3067\u3059\u3002
-Slave.InvalidConfig.NoName=\u30b9\u30ec\u30fc\u30d6\u306e\u8a2d\u5b9a\u306b\u8aa4\u308a\u304c\u3042\u308a\u307e\u3059\u3002\u540d\u524d\u304c\u672a\u8a2d\u5b9a\u3067\u3059\u3002
-Slave.InvalidConfig.NoRemoteDir=\u30b9\u30ec\u30fc\u30d6 {0} \u306e\u8a2d\u5b9a\u306b\u8aa4\u308a\u304c\u3042\u308a\u307e\u3059\u3002\u30ea\u30e2\u30fc\u30c8FS\u30eb\u30fc\u30c8\u304c\u672a\u8a2d\u5b9a\u3067\u3059\u3002
-Slave.Launching=\u30b9\u30ec\u30fc\u30d6\u30a8\u30fc\u30b8\u30a7\u30f3\u30c8\u3092\u8d77\u52d5\u3057\u307e\u3057\u305f\u3002{0}
Slave.Network.Mounted.File.System.Warning=\u672c\u5f53\u306bFS\u30eb\u30fc\u30c8\u3068\u3057\u3066\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u30de\u30a6\u30f3\u30c8\u3055\u308c\u305f\u30d5\u30a1\u30a4\u30eb\u30b7\u30b9\u30c6\u30e0\u3092\u4f7f\u7528\u3057\u305f\u3044\u3067\u3059\u304b\uff1f \u3053\u306e\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306f\u30de\u30b9\u30bf\u30fc\u306b\u898b\u3048\u308b\u5fc5\u8981\u306f\u7121\u3044\u3053\u3068\u306b\u6ce8\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3002
Slave.Remote.Director.Mandatory=\u30ea\u30e2\u30fc\u30c8\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306f\u5fc5\u9808\u3067\u3059\u3002
-Slave.Terminated=\u30b9\u30ec\u30fc\u30d6\u30a8\u30fc\u30b8\u30a7\u30f3\u30c8\u3092\u7d42\u4e86\u3057\u307e\u3057\u305f\u3002{0}
Slave.the_remote_root_must_be_an_absolute_path=\u30ea\u30e2\u30fc\u30c9\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306f\u7d76\u5bfe\u30d1\u30b9\u3067\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002
-Slave.UnableToLaunch=\u30b9\u30ec\u30fc\u30d6\u30a8\u30fc\u30b8\u30a7\u30f3\u30c8 {0} \u3092\u8d77\u52d5\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002{1}
-Slave.UnixSlave=\u3053\u308c\u306fUnix\u306e\u30b9\u30ec\u30fc\u30d6\u3067\u3059\u3002
-Slave.WindowsSlave=\u3053\u308c\u306fWindows\u306e\u30b9\u30ec\u30fc\u30d6\u3067\u3059\u3002
UpdateCenter.DownloadButNotActivated=\u6b63\u5e38\u306b\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3057\u307e\u3057\u305f\u3002\u6b21\u306e\u30d6\u30fc\u30c8\u6642\u306b\u6709\u52b9\u306b\u306a\u308a\u307e\u3059\u3002
UpdateCenter.n_a=N/A
@@ -254,7 +233,6 @@ UpdateCenter.PluginCategory.post-build=\u30d3\u30eb\u30c9\u5f8c\u306e\u30a2\u30a
UpdateCenter.PluginCategory.report=\u30d3\u30eb\u30c9\u30ec\u30dd\u30fc\u30c8
UpdateCenter.PluginCategory.scm=\u30bd\u30fc\u30b9\u7ba1\u7406\u30b7\u30b9\u30c6\u30e0
UpdateCenter.PluginCategory.scm-related=\u30bd\u30fc\u30b9\u7ba1\u7406\u30b7\u30b9\u30c6\u30e0\u95a2\u9023
-UpdateCenter.PluginCategory.slaves=\u30b9\u30ec\u30fc\u30d6\u306e\u8d77\u52d5\u3068\u7ba1\u7406
UpdateCenter.PluginCategory.trigger=\u30d3\u30eb\u30c9\u30c8\u30ea\u30ac
UpdateCenter.PluginCategory.ui=\u30e6\u30fc\u30b6\u30fc\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9
UpdateCenter.PluginCategory.upload=\u6210\u679c\u7269\u306e\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9
diff --git a/core/src/main/resources/hudson/model/Messages_ko.properties b/core/src/main/resources/hudson/model/Messages_ko.properties
index 70020b26be..02b6a1d0ae 100644
--- a/core/src/main/resources/hudson/model/Messages_ko.properties
+++ b/core/src/main/resources/hudson/model/Messages_ko.properties
@@ -1,2 +1,4 @@
ManageJenkinsAction.DisplayName=Jenkins \uAD00\uB9AC
ParametersDefinitionProperty.DisplayName=\uC774 \uBE4C\uB4DC\uB294 \uB9E4\uAC1C\uBCC0\uC218\uAC00 \uC788\uC2B5\uB2C8\uB2E4
+
+FreeStyleProject.Description=\uC774\uAC83\uC740 Jenkins\uC758 \uC8FC\uC694 \uAE30\uB2A5\uC785\uB2C8\uB2E4. Jenkins\uC740 \uC5B4\uB290 \uBE4C\uB4DC \uC2DC\uC2A4\uD15C\uACFC \uC5B4\uB5A4 SCM(\uD615\uC0C1\uAD00\uB9AC)\uC73C\uB85C \uBB36\uC778 \uB2F9\uC2E0\uC758 \uD504\uB85C\uC81D\uD2B8\uB97C \uBE4C\uB4DC\uD560 \uAC83\uC774\uACE0, \uC18C\uD504\uD2B8\uC6E8\uC5B4 \uBE4C\uB4DC\uBCF4\uB2E4 \uB2E4\uB978 \uC5B4\uB5A4 \uAC83\uC5D0 \uC790\uC8FC \uC0AC\uC6A9\uB420 \uC218 \uC788\uC2B5\uB2C8\uB2E4.
\ No newline at end of file
diff --git a/core/src/main/resources/hudson/model/Messages_lt.properties b/core/src/main/resources/hudson/model/Messages_lt.properties
index 4dac83724a..f29e8e9d88 100644
--- a/core/src/main/resources/hudson/model/Messages_lt.properties
+++ b/core/src/main/resources/hudson/model/Messages_lt.properties
@@ -1 +1,3 @@
ParametersDefinitionProperty.DisplayName=\u0160is darbas yra parametrizuotas
+
+FreeStyleProject.Description=Pagrindin\u0117 Jenkins funkcija. Jenkins sukonstruos j\u016Bs\u0173 projekt\u0105, sujungdamas betkok\u012F SCM su betkokia konstravimo sistema. \u0160is darbo tipas gali b\u016Bt pritaikytas ne tik program\u0173 konstravimui.
\ No newline at end of file
diff --git a/core/src/main/resources/hudson/model/Messages_nb_NO.properties b/core/src/main/resources/hudson/model/Messages_nb_NO.properties
index fe7187183a..d1098629e6 100644
--- a/core/src/main/resources/hudson/model/Messages_nb_NO.properties
+++ b/core/src/main/resources/hudson/model/Messages_nb_NO.properties
@@ -1,2 +1,4 @@
ManageJenkinsAction.DisplayName=Konfigurer Jenkins
ParametersDefinitionProperty.DisplayName=Denne build har parametre
+
+FreeStyleProject.Description=Dette er en sentral egenskap ved Jenkins. Jenkins bygger dine prosjekter, kombinerer SCM (Source Control Management - Kildekodekontrollsystem ) med forskjellige byggsystemer og denne kan ogs\u00E5 brukes til mer enn bare \u00E5 bygge applikasjoner.
diff --git a/core/src/main/resources/hudson/model/Messages_nl.properties b/core/src/main/resources/hudson/model/Messages_nl.properties
index e7b5b57aa6..3db4e11f0b 100644
--- a/core/src/main/resources/hudson/model/Messages_nl.properties
+++ b/core/src/main/resources/hudson/model/Messages_nl.properties
@@ -44,12 +44,12 @@ BallColor.Pending=In afwachting
BallColor.Success=Succes
BallColor.Unstable=Onstabiel
-Computer.Caption=Slaaf {0}
Executor.NotAvailable=Niet beschikbaar
FreeStyleProject.DisplayName=Bouw een vrije stijl type software project
+FreeStyleProject.Description=Dit is de basisfunctionaliteit van Jenkins. Bij dit type project kun je gebruik maken van een willekeurige combinatie van versiebeheer- en bouwsysteem. Je zou Jenkins zelfs kunnen gebruiken voor andere zaken dan het bouwen van software.
Hudson.BadPortNumber=Verkeerd poortnummer {0}
Hudson.Computer.Caption=Hoofdnode
@@ -86,14 +86,6 @@ Run.MarkedExplicitly=Expliciet gemarkeerd ter opbouw van historiek
Run.Permissions.Title=Starten
Run.UnableToDelete=Kan {0} niet verwijderen: {1}
-Slave.InvalidConfig.Executors=Ongeldige configuratie voor slaaf {0}: Ongeldig aantal uitvoerders.
-Slave.InvalidConfig.NoName=Ongeldige configuratie voor slaaf. Geen naam gespecificeerd.
-Slave.InvalidConfig.NoRemoteDir=Ongeldige configuratie voor slaaf {0}. Geen pad op afstand opgegeven.
-Slave.Launching={0} Slaaf node wordt gestart.
-Slave.Terminated={0} Slaaf node werd be\u00ebindigd
-Slave.UnableToLaunch=Kon de slaaf node niet starten voor {0} {1}
-Slave.UnixSlave=Dit is een Unix slaaf node
-Slave.WindowsSlave=Dit is een Windows slaaf node
View.Permissions.Title=Tonen
Permalink.LastBuild=Laatste bouwpoging
diff --git a/core/src/main/resources/hudson/model/Messages_pl.properties b/core/src/main/resources/hudson/model/Messages_pl.properties
index 87f49975e9..1ffaf84e4e 100644
--- a/core/src/main/resources/hudson/model/Messages_pl.properties
+++ b/core/src/main/resources/hudson/model/Messages_pl.properties
@@ -46,3 +46,4 @@ UpdateCenter.Status.Success=Zako\u0144czono pomy\u015Blnie
MyViewsProperty.DisplayName=Moje widoki
MyViewsProperty.GlobalAction.DisplayName=Moje widoki
+FreeStyleProject.Description=To jest podstawowa funkcja Jenkinsa. Jenkins stworzy projekt \u0142\u0105cz\u0105cy dowolny SCM z dowolnym systemem buduj\u0105cym, mo\u017Ce to by\u0107 r\u00F3wnie\u017C wykorzystane do czego\u015B innego ni\u017C budowanie oprogramowania.
\ No newline at end of file
diff --git a/core/src/main/resources/hudson/model/Messages_pt_BR.properties b/core/src/main/resources/hudson/model/Messages_pt_BR.properties
index e835890220..0a3f406e25 100644
--- a/core/src/main/resources/hudson/model/Messages_pt_BR.properties
+++ b/core/src/main/resources/hudson/model/Messages_pt_BR.properties
@@ -44,12 +44,12 @@ BallColor.Pending=Pendente
BallColor.Success=Sucesso
BallColor.Unstable=Inst\u00e1vel
-Computer.Caption=Slave {0}
Executor.NotAvailable=N/D
FreeStyleProject.DisplayName=Construir um projeto de software free-style
+FreeStyleProject.Description=Esta \u00e9 a central de funcionalidades do Jenkins. Ele construir\u00e1 seu projeto,e voc\u00ea pode combinar qualquer SCM com qualquer sistema de builds, e ele at\u00e9 mesmo pode ser usado para outras jobs diferentes de builds de software.
Hudson.BadPortNumber=N\u00famero de porta ruim {0}
Hudson.Computer.Caption=Master
@@ -85,14 +85,6 @@ Run.MarkedExplicitly=Explicitamente marcada para manter o registro
Run.Permissions.Title=Executar
Run.UnableToDelete=N\u00e3o foi poss\u00edvel excluir {0}: {1}
-Slave.InvalidConfig.Executors=Configura\u00e7\u00e3o de slave inv\u00e1lida para {0}. Inv\u00e1lido # de executores.
-Slave.InvalidConfig.NoName=Configura\u00e7\u00e3o de slave inv\u00e1lida. O nome est\u00e1 vazio
-Slave.InvalidConfig.NoRemoteDir=Configura\u00e7\u00e3o de slave inv\u00e1lida para {0}. Nenhum diret\u00f3rio remoto foi informado
-Slave.Launching={0} Iniciando agente slave
-Slave.Terminated={0} Agente slave foi encerrado
-Slave.UnableToLaunch=N\u00e3o foi poss\u00edvel iniciar o agente slave para {0}{1}
-Slave.UnixSlave=Este \u00e9 um slave Unix
-Slave.WindowsSlave=Este \u00e9 um slave Windows
View.Permissions.Title=Vis\u00e3o
Permalink.LastBuild=\u00daltimo build
@@ -123,8 +115,6 @@ MyViewsProperty.GlobalAction.DisplayName= Minhas views
Run.UpdatePermission.Description=Essa permiss\u00e3o permite aos usu\u00e1rios atualizarem a descri\u00e7\u00e3o e outras propriedades do build
# String Parameter
StringParameterDefinition.DisplayName=Par\u00e2metro string
-# Utilize this slave as much as possible
-Node.Mode.NORMAL=Utilize este slave, tanto quanto poss\u00edvel
# Global view {0} does not exist
ProxyView.NoSuchViewExists= Vis\u00e3o global {0} n\u00e3o existe
# External Site/Tool Integrations
@@ -160,8 +150,6 @@ CLI.safe-restart.shortDescription=Seguro reiniciar o Jenkins
CLI.quiet-down.shortDescription=Desativar em modo silencioso, em prepara\u00e7\u00e3o para o rein\u00edcio. N\u00e3o come\u00e7e nenhum build.
# Include a global view
ProxyView.DisplayName=Incluir uma vis\u00e3o global
-# Specify which slave to copy
-ComputerSet.SpecifySlaveToCopy=Especifica para qual slave copiar
# Number may not be negative
Hudson.NotANonNegativeNumber=N\u00famero n\u00e3o pode ser negativo
# No existing build. Scheduling a new one.
@@ -190,10 +178,6 @@ Run.Summary.Unstable=Inst\u00e1vel
# Discard all the loaded data in memory and reload everything from file system. Useful when you modified config files directly on disk.
CLI.reload-configuration.shortDescription=Descarta todo o conte\u00fado de mem\u00f3ria e recarrega novamente a partir do arquivo. /
Indicado quando voc\u00ea modificou os arquivos diretamente no disco.
-# Slave called ''{0}'' already exists
-ComputerSet.SlaveAlreadyExists=Slave ''{0}'' j\u00e1 existe
-# No such slave: {0}
-ComputerSet.NoSuchSlave=Nenhum slave: {0}
# Disables a job
CLI.disable-job.shortDescription=Desabilitar uma job
# Build Triggers
@@ -261,8 +245,6 @@ Label.ProvisionedFrom=Aprovisionado para {0}
Run.Summary.Aborted=Abortado
# Build Reports
UpdateCenter.PluginCategory.report=Relat\u00f3rio de builds
-# This permission allows users to configure slaves.
-Computer.ConfigurePermission.Description=Essa permiss\u00e3o permite aos usu\u00e1rios configurarem os slaves
# Source Code Management
UpdateCenter.PluginCategory.scm=Gerenciamento de c\u00f3digo fonte
# \
@@ -283,8 +265,6 @@ PasswordParameterDefinition.DisplayName=Par\u00e2metro da senha
UpdateCenter.PluginCategory.cluster=Gerenciamento de cluster e builds distribu\u00eddos
# Started by remote host {0}
Cause.RemoteCause.ShortDescription=Iniciado pelo host remoto {0}
-# Slave node offline or not a remote channel (such as master node).
-Computer.BadChannel=N\u00f3 slave est\u00e1 offline ou n\u00e3o existe um canal remoto (n\u00f3 master)
# Restoring the build queue
Queue.init=Restaurando a fila de builds
# the master Jenkins node
@@ -308,9 +288,6 @@ MyViewsProperty.ViewExistsCheck.AlreadyExists=J\u00e1 existe uma view com o nome
Hudson.AdministerPermission.Description=Permiss\u00e3o para habilitar a configura\u00e7\u00e3o ampla
# Jenkins is about to shut down
Queue.HudsonIsAboutToShutDown=Jenkins est\u00e1 prestes a encerrar
-# {0} less {0,choice,0#tests are|1#test is|1Failed to connect to {0}. \
# Perhaps you need to configure HTTP proxy?
UpdateCenter.Status.ConnectionFailed=Erro ao conectar {0} /
# Maven
UpdateCenter.PluginCategory.maven=Maven
-# Slave
-Computer.Permissions.Title=Slave
# Artifact Uploaders
UpdateCenter.PluginCategory.upload=Carregadores de artefatos
# Last unstable build
@@ -400,10 +371,6 @@ AbstractBuild_Building=Construindo
Item.CREATE.description=Cria um novo job.
# The remote root must be an absolute path.
Slave.the_remote_root_must_be_an_absolute_path=A raiz remota deve ser um caminho absoluto.
-# This permission allows users to disconnect slaves or mark slaves as temporarily offline.
-Computer.DisconnectPermission.Description=Esta permiss\u00e3o deixa que usu\u00e1rios desconectem slaves ou os marque como temporariamente offline.
-# This permission allows users to create slaves.
-Computer.CreatePermission.Description=Exta permiss\u00e3o deixa usu\u00e1rios criarem slaves.
# See a job. (You may deny this permission but allow Discover to force an anonymous user to log in to see the job.)
Item.READ.description=Ver um job. (Voc\u00ea pode impedir essa permiss\u00e3o mas permitir Discover para forcar um usu\u00e1rio an\u00f4nimo a logar para ver o job)
# This permission grants the ability to retrieve the artifacts produced by \
@@ -414,8 +381,6 @@ Run.ArtifactsPermission.Description=Esta permiss\u00e3o permite a habilidade de
revogar esta permiss\u00e3o.
# Invalid boolean expression: {0}
AbstractProject.AssignedLabelString.InvalidBooleanExpression=Espress\u00e3o booleana inv\u00e1lida: {0}
-# This permission allows users to connect slaves or mark slaves as online.
-Computer.ConnectPermission.Description=Esta permiss\u00e3o deixa que usu\u00e1rios conectem slaves ou os marque como online.
# originally caused by:
Cause.UpstreamCause.CausedBy=originalmente causado por:
# Invalid token provided.
@@ -424,12 +389,8 @@ BuildAuthorizationToken.InvalidTokenProvided=Token inv\u00e1lido fornecido.
TextParameterDefinition.DisplayName=Par\u00e2metro de texto
# Downloaded Successfully. Will be activated during the next boot
UpdateCenter.DownloadButNotActivated=Download finalizado com sucesso. Ser\u00e1 ativado no pr\u00f3ximo boot
-# There\u2019s no slave/cloud that matches this assignment. Did you mean \u2018{1}\u2019 instead of \u2018{0}\u2019?
-AbstractProject.AssignedLabelString_NoMatch_DidYouMean=N\u00e3o h\u00e1 um slave ou n\u00favem que combine com esta atribui\u00e7\u00e3o. Voc\u00ea quis dizer \u2018{1}\u2019 ao inv\u00e9s de \u2018{0}\u2019?
# {0} doesn\u2019t have a permission to run on {1}
Node.LackingBuildPermission={0} n\u00e3o tem permiss\u00e3o para executar em {1}
-# This permission allows users to read slave configuration.
-Computer.ExtendedReadPermission.Description=Esta permiss\u00e3o deixa usu\u00e1rios lerem as configura\u00e7\u00f5es dos slaves.
# Not built
ResultTrend.NotBuilt=N\u00e3o constru\u00eddo
# There are no nodes with the label \u2018{0}\u2019
@@ -470,18 +431,12 @@ ResultTrend.Failure=Falha
AbstractProject.WipeOutPermission.Description=Esta permiss\u00e3o deixa que seja eleminado o conte\u00fado de um workspace.
# Requires Choices.
ChoiceParameterDefinition.MissingChoices=Exige escolhas.
-# This permission allows users to run jobs as them on slaves.
-Computer.BuildPermission.Description=Esta permiss\u00e3o deixa que usu\u00e1rios executem jobs em slaves.
-# No such slave "{0}" exists. Did you mean "{1}"?
-Computer.NoSuchSlaveExists=N\u00e3o existe o slave {0}. Voc\u00ea quis dizer "{1}"?
# Aborted
ResultTrend.Aborted=Abortado
# This permission allows users to see views (implied by generic read access).
View.ReadPermission.Description=Esta permiss\u00e3o deixa que usu\u00e1rios vejam views (inpl\u00edcito pela permiss\u00e3o gen\u00e9rica de leitura).
# "{0}" is not allowed name
Jenkins.NotAllowedName="{0}" n\u00e3o \u00e9 um nome permitido
-# There's no slave/cloud that matches this assignment
-AbstractProject.AssignedLabelString.NoMatch=N\u00e3o h\u00e1 um slave/n\u00favem que combine com esta atribui\u00e7\u00e3o
# Workspace of {0} on {1}
AbstractProject.WorkspaceTitleOnComputer=Workspace {0} em {1}
# This permission grants the ability to cancel a scheduled, or abort a running, build.
diff --git a/core/src/main/resources/hudson/model/Messages_pt_PT.properties b/core/src/main/resources/hudson/model/Messages_pt_PT.properties
index e022d96cef..be8cf4950c 100644
--- a/core/src/main/resources/hudson/model/Messages_pt_PT.properties
+++ b/core/src/main/resources/hudson/model/Messages_pt_PT.properties
@@ -1 +1,3 @@
ManageJenkinsAction.DisplayName=Gerir o Jenkins
+
+FreeStyleProject.Description=Isto \u00E9 uma caracter\u00EDstica central do Jenkins. Jenkins vai construir o seu projecto, combinando qualquer SCM com qualquer sistema de compila\u00E7\u00E3o e isto pode ser usado mesmo em qualquer outra compila\u00E7\u00E3o de software.
diff --git a/core/src/main/resources/hudson/model/Messages_ro.properties b/core/src/main/resources/hudson/model/Messages_ro.properties
index 106056997c..8a8fa99a17 100644
--- a/core/src/main/resources/hudson/model/Messages_ro.properties
+++ b/core/src/main/resources/hudson/model/Messages_ro.properties
@@ -1 +1,3 @@
ParametersDefinitionProperty.DisplayName=Acest build este parametrizat
+
+FreeStyleProject.Description=Aceasta este func\u021Bionalitatea principal\u0103 a lui Jenkins. Jenkins va construi proiectul dvs, combin\u00E2nd orice SCM cu orice sistem de build-uri, \u0219i aceasta poate fi folosit\u0103 chiar \u0219i la altceva dec\u00E2t build-uri de aplica\u021Bii.
diff --git a/core/src/main/resources/hudson/model/Messages_ru.properties b/core/src/main/resources/hudson/model/Messages_ru.properties
index b966716ec0..2b0130c8fd 100644
--- a/core/src/main/resources/hudson/model/Messages_ru.properties
+++ b/core/src/main/resources/hudson/model/Messages_ru.properties
@@ -44,12 +44,15 @@ BallColor.Pending=\u041e\u0436\u0438\u0434\u0430\u0435\u0442
BallColor.Success=\u0423\u0441\u043f\u0435\u0448\u043d\u043e
BallColor.Unstable=\u041D\u0435\u0441\u0442\u0430\u0431\u0438\u043B\u044C\u043D\u044B\u0439
-Computer.Caption=\u041f\u043e\u0434\u0447\u0438\u043d\u0435\u043d\u043d\u044b\u0439 \u0443\u0437\u0435\u043b {0}
Executor.NotAvailable=\u041d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e
FreeStyleProject.DisplayName=\u0421\u043e\u0437\u0434\u0430\u0442\u044c \u0437\u0430\u0434\u0430\u0447\u0443 \u0441\u043e \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0435\u0439
+FreeStyleProject.Description=\
+ \u042d\u0442\u043e - \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0438 \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u044b\u0439 \u0442\u0438\u043f \u0437\u0430\u0434\u0430\u0447 \u0432 Jenkins. \
+ Jenkins \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c \u0432\u0430\u0448 \u043f\u0440\u043e\u0435\u043a\u0442, \u043a\u043e\u043c\u0431\u0438\u043d\u0438\u0440\u0443\u044f \u043b\u044e\u0431\u0443\u044e SCM \u0441 \u043b\u044e\u0431\u043e\u0439 \u0441\u0431\u043e\u0440\u043e\u0447\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439. \
+ \u0414\u0430\u043d\u043d\u044b\u0439 \u0442\u0438\u043f \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u043c\u043e\u0436\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0434\u043b\u044f \u0437\u0430\u0434\u0430\u0447, \u043e\u0442\u043b\u0438\u0447\u043d\u044b\u0445 \u043e\u0442 \u0441\u0431\u043e\u0440\u043a\u0438 \u041f\u041e.
Hudson.BadPortNumber=\u041d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u0439 \u043d\u043e\u043c\u0435\u0440 \u043f\u043e\u0440\u0442\u0430: {0}
Hudson.Computer.Caption=\u041c\u0430\u0441\u0442\u0435\u0440
@@ -86,14 +89,6 @@ Run.MarkedExplicitly=\u043e\u0442\u043c\u0435\u0447\u0435\u043d\u043e \u0434\u04
Run.Permissions.Title=\u0417\u0430\u043f\u0443\u0441\u043a
Run.UnableToDelete=\u041d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0443\u0434\u0430\u043b\u0438\u0442\u044c {0}: {1}
-Slave.InvalidConfig.Executors=\u041d\u0435\u0432\u0435\u0440\u043d\u0430\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043f\u043e\u0434\u0447\u0438\u043d\u0435\u043d\u043d\u043e\u0433\u043e \u0443\u0437\u043b\u0430 {0}. \u041d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432.
-Slave.InvalidConfig.NoName=\u041d\u0435\u0432\u0435\u0440\u043d\u0430\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043f\u043e\u0434\u0447\u0438\u043d\u0435\u043d\u043d\u043e\u0433\u043e \u0443\u0437\u043b\u0430. \u0418\u043c\u044f \u0443\u0437\u043b\u0430 \u043f\u0443\u0441\u0442\u043e.
-Slave.InvalidConfig.NoRemoteDir=\u041d\u0435\u0432\u0435\u0440\u043d\u0430\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043f\u043e\u0434\u0447\u0438\u043d\u0435\u043d\u043d\u043e\u0433\u043e \u0443\u0437\u043b\u0430 {0}. \u041d\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u0430 \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u0430\u044f \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044f.
-Slave.Launching={0} \u0417\u0430\u043f\u0443\u0441\u043a \u0430\u0433\u0435\u043d\u0442\u0430 \u043f\u043e\u0434\u0447\u0438\u043d\u0435\u043d\u043d\u043e\u0433\u043e \u0443\u0437\u043b\u0430
-Slave.Terminated={0} \u0410\u0433\u0435\u043d\u0442 \u043f\u043e\u0434\u0447\u0438\u043d\u0435\u043d\u043d\u043e\u0433\u043e \u0443\u0437\u043b\u0430 \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d
-Slave.UnableToLaunch= \u041d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0430\u0433\u0435\u043d\u0442\u0430 \u043f\u043e\u0434\u0447\u0438\u043d\u0435\u043d\u043d\u043e\u0433\u043e \u0443\u0437\u043b\u0430 {0} {1}
-Slave.UnixSlave=\u0423\u0437\u0435\u043b \u043f\u043e\u0434 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c Unix
-Slave.WindowsSlave=\u0423\u0437\u0435\u043b \u043f\u043e\u0434 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c Windows
View.Permissions.Title=\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440
Permalink.LastBuild=\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u044f\u044f \u0441\u0431\u043e\u0440\u043a\u0430
diff --git a/core/src/main/resources/hudson/model/Messages_sv_SE.properties b/core/src/main/resources/hudson/model/Messages_sv_SE.properties
index 278c419304..6376d4e09d 100644
--- a/core/src/main/resources/hudson/model/Messages_sv_SE.properties
+++ b/core/src/main/resources/hudson/model/Messages_sv_SE.properties
@@ -5,3 +5,5 @@ Job.Pronoun=Projekt
ManageJenkinsAction.DisplayName=Hantera Jenkins
ParametersDefinitionProperty.DisplayName=Detta bygge \u00E4r parametriserat
+
+FreeStyleProject.Description=Detta \u00E4r en central del i Jenkins. Jenkins kommer att bygga ditt projekt med valfri versionshanterare och med vilket byggsystem som helst, och detta kan \u00E4ven anv\u00E4ndas f\u00F6r n\u00E5got annat \u00E4n mjukvarubyggen.
diff --git a/core/src/main/resources/hudson/model/Messages_tr.properties b/core/src/main/resources/hudson/model/Messages_tr.properties
index 2d3aaf2179..ee48426b3b 100644
--- a/core/src/main/resources/hudson/model/Messages_tr.properties
+++ b/core/src/main/resources/hudson/model/Messages_tr.properties
@@ -45,12 +45,16 @@ BallColor.Pending=Bekliyor
BallColor.Success=Ba\u015far\u0131l\u0131
BallColor.Unstable=Dengesiz
-Computer.Caption=Slave {0}
Executor.NotAvailable=Mevcut De\u011fil
FreeStyleProject.DisplayName=Serbest-stil yaz\u0131l\u0131m projesi yap\u0131land\u0131r
+FreeStyleProject.Description=\
+ Jenkins''\u0131n merkezi \u00f6zelli\u011fi, projelerinizi yap\u0131land\u0131rman\u0131za yard\u0131m etmesidir. Bu proje t\u00fcr\u00fcn\u00fc kullanarak, \
+ herhangi bir yap\u0131land\u0131rma sistemini herhangi bir Kaynak Kodu Y\u00f6netimi arac\u0131 ile birle\u015ftirebilirsiniz,\
+ ve hatta yaz\u0131l\u0131m yap\u0131land\u0131rman\u0131n d\u0131\u015f\u0131nda ba\u015fka t\u00fcr projeler i\u00e7in dahi kullanabilirsiniz.
+
Hudson.BadPortNumber=Yanl\u0131\u015f Port Numaras\u0131 {0}
Hudson.Computer.Caption=Master
@@ -87,14 +91,6 @@ Run.MarkedExplicitly=kayd\u0131 tutmak i\u00e7in d\u0131\u015far\u0131dan i\u015
Run.Permissions.Title=\u00c7al\u0131\u015ft\u0131r
Run.UnableToDelete={0} silinemiyor: {1}
-Slave.InvalidConfig.Executors={0} i\u00e7in ge\u00e7ersiz slave konfig\u00fcrasyonu. Ge\u00e7ersiz yap\u0131land\u0131r\u0131c\u0131 say\u0131s\u0131.
-Slave.InvalidConfig.NoName=Ge\u00e7ersiz slave konfig\u00fcrasyonu. \u0130sim bo\u015f.
-Slave.InvalidConfig.NoRemoteDir={0} i\u00e7in ge\u00e7ersiz slave konfig\u00fcrasyonu. Uzak dizin verilmedi.
-Slave.Launching={0} slave ajan\u0131 \u00e7al\u0131\u015ft\u0131r\u0131yor
-Slave.Terminated={0} slave ajan\u0131 sonland\u0131r\u0131ld\u0131
-Slave.UnableToLaunch={0} y\u00fcz\u00fcnden slave ajan\u0131 \u00e7al\u0131\u015ft\u0131r\u0131lamad\u0131 {1}
-Slave.UnixSlave=Bu bir unix slave
-Slave.WindowsSlave=Bu bir windows slave
View.Permissions.Title=G\u00f6r\u00fcnt\u00fc
Permalink.LastBuild=Son yap\u0131land\u0131rma
diff --git a/core/src/main/resources/hudson/model/Messages_uk.properties b/core/src/main/resources/hudson/model/Messages_uk.properties
index e48bfb0375..59c4b0bc96 100644
--- a/core/src/main/resources/hudson/model/Messages_uk.properties
+++ b/core/src/main/resources/hudson/model/Messages_uk.properties
@@ -1 +1,3 @@
ParametersDefinitionProperty.DisplayName=\u0426\u044F \u0431\u0443\u0434\u043E\u0432\u0430 \u043C\u0430\u0454 \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u0438
+
+FreeStyleProject.Description=\u0426\u0435 - \u043E\u0441\u043D\u043E\u0432\u043D\u0430 \u0432\u0456\u0434\u043C\u0456\u043D\u043D\u0456\u0441\u0442\u044C Jenkins. Jenkins \u043F\u043E\u0431\u0443\u0434\u0443\u0454 \u0432\u0430\u0448 \u043F\u0440\u043E\u0435\u043A\u0442, \u043A\u043E\u043C\u0431\u0456\u043D\u0443\u044E\u0447\u0438 \u0431\u0443\u0434\u044C-\u044F\u043A\u0456 \u0441\u0438\u0441\u0442\u0435\u043C\u0438 \u0443\u043F\u0440\u0430\u0432\u043B\u0456\u043D\u043D\u044F \u043A\u043E\u0434\u043E\u043C \u0437 \u0431\u0443\u0434\u044C-\u044F\u043A\u0438\u043C\u0438 \u0441\u0438\u0441\u0442\u0435\u043C\u0430\u043C\u0438 \u0437\u0431\u0456\u0440\u043A\u0438, \u0449\u043E \u043C\u043E\u0436\u0435 \u0431\u0443\u0442\u0438 \u0432\u0438\u043A\u043E\u0440\u0438\u0441\u0442\u0430\u043D\u043E \u043D\u0430\u0432\u0456\u0442\u044C \u0434\u043B\u044F \u0446\u0456\u043B\u0435\u0439 \u0432\u0456\u0434\u043C\u0456\u043D\u043D\u0438\u0445 \u0432\u0456\u0434 \u0437\u0431\u0456\u0440\u043A\u0438 \u043F\u0440\u043E\u0433\u0440\u0430\u043C\u043D\u043E\u0433\u043E \u0437\u0430\u0431\u0435\u0437\u043F\u0435\u0447\u0435\u043D\u043D\u044F.
\ No newline at end of file
diff --git a/core/src/main/resources/hudson/model/Messages_zh_CN.properties b/core/src/main/resources/hudson/model/Messages_zh_CN.properties
index add4006a2c..15d419d1f9 100644
--- a/core/src/main/resources/hudson/model/Messages_zh_CN.properties
+++ b/core/src/main/resources/hudson/model/Messages_zh_CN.properties
@@ -67,20 +67,13 @@ CLI.connect-node.shortDescription=Reconnect to a node
CLI.online-node.shortDescription=Resume using a node for performing builds, to cancel out the earlier "offline-node" command.
CLI.offline-node.shortDescription=Stop using a node for performing builds temporarily, until the next "online-node" command.
-Computer.Caption=Slave {0}
-Computer.Permissions.Title=Slave
-Computer.ConfigurePermission.Description=This permission allows users to configure slaves.
-Computer.DeletePermission.Description=This permission allows users to delete existing slaves.
-Computer.BadChannel=Slave node offline or not a remote channel (such as master node).
-ComputerSet.NoSuchSlave=No such slave: {0}
-ComputerSet.SlaveAlreadyExists=Slave called ''{0}'' already exists
-ComputerSet.SpecifySlaveToCopy=Specify which slave to copy
ComputerSet.DisplayName=nodes
Executor.NotAvailable=N/A
FreeStyleProject.DisplayName=\u6784\u5efa\u4e00\u4e2a\u81ea\u7531\u98ce\u683c\u7684\u8f6f\u4ef6\u9879\u76ee
+FreeStyleProject.Description=\u8FD9\u662FJenkins\u7684\u4E3B\u8981\u529F\u80FD.Jenkins\u5C06\u4F1A\u7ED3\u5408\u4EFB\u4F55SCM\u548C\u4EFB\u4F55\u6784\u5EFA\u7CFB\u7EDF\u6765\u6784\u5EFA\u4F60\u7684\u9879\u76EE, \u751A\u81F3\u53EF\u4EE5\u6784\u5EFA\u8F6F\u4EF6\u4EE5\u5916\u7684\u7CFB\u7EDF.
HealthReport.EmptyString=
@@ -168,16 +161,8 @@ Run.Summary.BrokenSinceThisBuild=broken since this build
Run.Summary.BrokenSince=broken since build {0}
Run.Summary.Unknown=?
-Slave.InvalidConfig.Executors=Invalid slave configuration for {0}. Invalid # of executors.
-Slave.InvalidConfig.NoName=Invalid slave configuration. Name is empty
-Slave.InvalidConfig.NoRemoteDir=Invalid slave configuration for {0}. No remote directory given
-Slave.Launching={0} Launching slave agent
Slave.Network.Mounted.File.System.Warning=Are you sure you want to use network mounted file system for FS root? Note that this directory does not need to be visible to the master.
Slave.Remote.Director.Mandatory=Remote directory is mandatory
-Slave.Terminated={0} slave agent was terminated
-Slave.UnableToLaunch=Unable to launch the slave agent for {0}{1}
-Slave.UnixSlave=This is a Unix slave
-Slave.WindowsSlave=This is a Windows slave
View.Permissions.Title=View
View.CreatePermission.Description=\
@@ -211,7 +196,6 @@ UpdateCenter.PluginCategory.post-build=Other Post-Build Actions
UpdateCenter.PluginCategory.report=Build Reports
UpdateCenter.PluginCategory.scm=Source Code Management
UpdateCenter.PluginCategory.scm-related=Source Code Management related
-UpdateCenter.PluginCategory.slaves=Slave Launchers and Controllers
UpdateCenter.PluginCategory.trigger=Build Triggers
UpdateCenter.PluginCategory.ui=User Interface
UpdateCenter.PluginCategory.upload=Artifact Uploaders
diff --git a/core/src/main/resources/hudson/model/Messages_zh_TW.properties b/core/src/main/resources/hudson/model/Messages_zh_TW.properties
index 80bb8d071b..9109aa1f54 100644
--- a/core/src/main/resources/hudson/model/Messages_zh_TW.properties
+++ b/core/src/main/resources/hudson/model/Messages_zh_TW.properties
@@ -29,7 +29,6 @@ AbstractBuild.KeptBecause=\u56e0\u70ba {0} \u800c\u4fdd\u7559
AbstractItem.NoSuchJobExists=\u6c92\u6709 ''{0}'' \u4f5c\u696d\u3002\u60a8\u6307\u7684\u662f ''{1}'' \u55ce?
AbstractItem.Pronoun=\u4f5c\u696d
-AbstractProject.AssignedLabelString_NoMatch_DidYouMean=\u6c92\u6709\u7b26\u5408\u7684\u7bc0\u9ede\u3002\u60a8\u60f3\u7684\u8a72\u4e0d\u6703\u662f ''{1}''\uff0c\u800c\u4e0d\u662f ''{0}'' \u5427?
AbstractProject.NewBuildForWorkspace=\u6311\u500b\u6642\u9593\u5efa\u7f6e\uff0c\u5c31\u80fd\u7522\u751f\u5de5\u4f5c\u5340\u3002
AbstractProject.AwaitingBuildForWorkspace=\u7b49\u5019\u5efa\u7f6e\u7522\u51fa\u5de5\u4f5c\u5340\u3002
AbstractProject.Pronoun=\u5c08\u6848
@@ -61,7 +60,6 @@ AbstractProject.CancelPermission.Description=\
\u6388\u8207\u53d6\u6d88\u5efa\u7f6e\u7684\u80fd\u529b\u3002
AbstractProject.AssignedLabelString.InvalidBooleanExpression=\
\u7121\u6548\u7684\u5e03\u6797\u8868\u793a\u5f0f: {0}
-AbstractProject.AssignedLabelString.NoMatch=\
\u6c92\u6709\u7b26\u5408\u7684\u7bc0\u9ede
AbstractProject.CustomWorkspaceEmpty=\u81ea\u8a02\u5de5\u4f5c\u5340\u662f\u7a7a\u7684\u3002
@@ -87,19 +85,7 @@ CLI.offline-node.shortDescription=\u66ab\u6642\u4e0d\u4f7f\u7528\u6307\u5b9a\u7b
CLI.wait-node-online.shortDescription=\u7b49\u5019\u6307\u5b9a\u7bc0\u9ede\u4e0a\u7dda\u3002
CLI.wait-node-offline.shortDescription=\u7b49\u5019\u6307\u5b9a\u7bc0\u9ede\u96e2\u7dda\u3002
-Computer.Caption=Slave {0}
-Computer.NoSuchSlaveExists=\u6c92\u6709 Slave "{0}"\u3002\u60a8\u6307\u7684\u662f "{1}" \u55ce?
-Computer.Permissions.Title=Slave
-Computer.ConfigurePermission.Description=\u6388\u8207\u8a2d\u5b9a Slave \u7684\u6b0a\u9650\u3002
-Computer.DeletePermission.Description=\u6388\u8207\u522a\u9664\u65e2\u6709 Slave \u7684\u6b0a\u9650\u3002
-Computer.CreatePermission.Description=\u6388\u8207\u4f7f\u7528\u8005\u5efa\u7acb Slave \u7684\u6b0a\u9650\u3002
-Computer.ConnectPermission.Description=\u6388\u8207\u4f7f\u7528\u8005\u9023\u7dda\u5230 Slave \u6216\u662f\u5c07\u5176\u8a2d\u70ba\u4e0a\u7dda\u7684\u6b0a\u9650\u3002
-Computer.DisconnectPermission.Description=\u6388\u8207\u4f7f\u7528\u8005\u4e2d\u65b7 Slave \u9023\u7dda\uff0c\u6216\u5c07\u5176\u6a19\u793a\u70ba\u66ab\u6642\u96e2\u7dda\u3002
-Computer.BadChannel=Slave \u7bc0\u9ede\u96e2\u7dda\u6216\u4e0d\u662f\u9060\u7aef\u901a\u9053 (\u4f8b\u5982 Master \u7bc0\u9ede)\u3002
-ComputerSet.NoSuchSlave=\u6c92\u6709 Slave: {0}
-ComputerSet.SlaveAlreadyExists=\u5df2\u7d93\u6709\u53eb\u505a ''{0}'' \u7684 Slave \u4e86
-ComputerSet.SpecifySlaveToCopy=\u6307\u5b9a\u8981\u8907\u88fd\u7684 Slave
ComputerSet.DisplayName=\u7bc0\u9ede
Descriptor.From=(from {0})
@@ -108,6 +94,11 @@ Executor.NotAvailable=N/A
FreeStyleProject.DisplayName=\u5efa\u7f6e Free-Style \u8edf\u9ad4\u5c08\u6848
+FreeStyleProject.Description=\
+ \u9019\u662f Jenkins \u7684\u4e3b\u8981\u529f\u80fd\u3002\
+ Jenkins \u80fd\u642d\u914d\u5404\u5f0f\u7a0b\u5f0f\u78bc\u7ba1\u7406\u3001\u5efa\u7f6e\u7cfb\u7d71\u4f86\u5efa\u7f6e\u60a8\u7684\u5c08\u6848\uff0c\
+ \u751a\u81f3\u9084\u80fd\u505a\u8edf\u9ad4\u5efa\u7f6e\u4ee5\u5916\u7684\u5176\u4ed6\u4e8b\u60c5\u3002
+
Hudson.BadPortNumber=\u9023\u63a5\u57e0\u865f {0} \u7121\u6548
Hudson.Computer.Caption=Master
@@ -211,16 +202,8 @@ Run.Summary.BrokenSinceThisBuild=\u5f9e\u9019\u6b21\u5efa\u7f6e\u958b\u59cb\u721
Run.Summary.BrokenSince=\u5f9e {0} \u6b21\u5efa\u7f6e\u958b\u59cb\u721b\u4e86
Run.Summary.Unknown=?
-Slave.InvalidConfig.Executors=Slave {0} \u8a2d\u5b9a\u932f\u8aa4\u3002\u57f7\u884c\u7a0b\u5f0f\u6578\u7121\u6548\u3002
-Slave.InvalidConfig.NoName=Slave \u8a2d\u5b9a\u932f\u8aa4\u3002\u6c92\u6709\u6307\u5b9a\u540d\u7a31\u3002
-Slave.InvalidConfig.NoRemoteDir=Slave {0} \u8a2d\u5b9a\u932f\u8aa4\u3002\u6c92\u6709\u6307\u5b9a\u9060\u7aef\u76ee\u9304\u3002
-Slave.Launching={0} \u555f\u52d5 Slave \u4ee3\u7406\u7a0b\u5f0f
Slave.Network.Mounted.File.System.Warning=\u60a8\u78ba\u5b9a\u8981\u4f7f\u7528\u7db2\u8def\u639b\u8f09\u7684\u6a94\u6848\u7cfb\u7d71\u505a\u70ba\u6839\u76ee\u9304\u55ce? \u9019\u500b\u76ee\u9304 Master \u4e0d\u9700\u8981\u8b93\u76f4\u63a5\u5b58\u53d6\u5594\u3002
Slave.Remote.Director.Mandatory=\u4e00\u5b9a\u8981\u6307\u5b9a\u9060\u7aef\u76ee\u9304
-Slave.Terminated={0} Slave \u4ee3\u7406\u7a0b\u5f0f\u5df2\u7d50\u675f
-Slave.UnableToLaunch=\u7121\u6cd5\u555f\u52d5 Slave {0} \u7684\u4ee3\u7406\u7a0b\u5f0f{1}
-Slave.UnixSlave=\u9019\u662f Unix slave
-Slave.WindowsSlave=\u9019\u662f Windows slave
View.Permissions.Title=\u8996\u666f
View.CreatePermission.Description=\
@@ -259,7 +242,6 @@ UpdateCenter.PluginCategory.post-build=\u5176\u4ed6\u5efa\u7f6e\u5f8c\u52d5\u4f5
UpdateCenter.PluginCategory.report=\u5efa\u7f6e\u5831\u8868
UpdateCenter.PluginCategory.scm=\u539f\u59cb\u78bc\u7ba1\u7406
UpdateCenter.PluginCategory.scm-related=\u539f\u59cb\u78bc\u7ba1\u7406\u76f8\u95dc
-UpdateCenter.PluginCategory.slaves=Slave \u555f\u52d5\u53ca\u63a7\u5236\u7a0b\u5f0f
UpdateCenter.PluginCategory.trigger=\u5efa\u7f6e\u89f8\u767c\u7a0b\u5e8f
UpdateCenter.PluginCategory.ui=\u4f7f\u7528\u8005\u4ecb\u9762
UpdateCenter.PluginCategory.upload=\u6210\u54c1\u4e0a\u50b3
diff --git a/core/src/main/resources/hudson/model/Node/help-labelString.html b/core/src/main/resources/hudson/model/Node/help-labelString.html
index d6951e220f..a7cfc252c1 100644
--- a/core/src/main/resources/hudson/model/Node/help-labelString.html
+++ b/core/src/main/resources/hudson/model/Node/help-labelString.html
@@ -1,11 +1,23 @@
- Labels (AKA tags) are used for grouping multiple slaves into one logical group.
- Use spaces between each label. For instance 'regression java6' will assign a
- node the labels 'regression' and 'java6'.
-
+ Labels (or tags) are used to group multiple agents into one logical group.
- For example, if you have multiple Windows slaves and you have jobs that require
- Windows, then you can configure all your Windows slaves to have the label 'windows',
- then tie the job to the 'windows' label. This allows your job to run on any
- of your Windows slaves but not on anywhere else.
-
\ No newline at end of file
+ For example, if you have multiple Windows agents and you have a job that
+ must run on Windows, then you could configure all your Windows agents to have
+ the label windows, and then tie that job to this label.
+
+ This would ensure that your job runs on one of your Windows agents, but not on
+ any agents without this label.
+
+ Labels do not necessarily have to represent the operating system on the agent;
+ you can also use labels to note the CPU architecture, or that a certain tool
+ is installed on the agent.
+
+ Multiple labels must be separated by a space. For example,
+ windows docker would assign two labels to the agent: windows
+ and docker.
+
+ Labels may contain any non-space characters, but you should avoid special
+ characters such as any of these: !&|<>(), as other Jenkins
+ features allow for defining label expressions, where these characters may be
+ used.
+
diff --git a/core/src/main/resources/hudson/model/Node/help-labelString_de.html b/core/src/main/resources/hudson/model/Node/help-labelString_de.html
deleted file mode 100644
index 10fc53a877..0000000000
--- a/core/src/main/resources/hudson/model/Node/help-labelString_de.html
+++ /dev/null
@@ -1,11 +0,0 @@
-
- Gruppen (auch: Labels oder Tags) werden benutzt, um mehrere Slave-Knoten in eine
- logische Gruppe zusammenzufassen. Die Angabe 'regression java6' ordnet beispielsweise
- einen Knoten den Gruppen 'regression' und 'java6' zu.
-
- Beispiel: Sie haben mehrere Slave-Knoten unter Windows und einen Job, der Windows
- erfordert. Sie können dann alle Ihre Windows-Slave-Knoten unter der Gruppe
- "windows" zusammenfassen und den Job an die Gruppe "windows" binden.
- Dadurch kann Ihr Job jedem der Windows-Slave-Knoten zugewiesen werden - aber
- keinem anderen Slave-Knoten sonst.
-
\ No newline at end of file
diff --git a/core/src/main/resources/hudson/model/Node/help-labelString_pt_BR.html b/core/src/main/resources/hudson/model/Node/help-labelString_pt_BR.html
deleted file mode 100644
index 685874ebc9..0000000000
--- a/core/src/main/resources/hudson/model/Node/help-labelString_pt_BR.html
+++ /dev/null
@@ -1,9 +0,0 @@
-
- Marcações também são usadas para agrupar múltiplos slaves em um grupo lógico.
-
-
- Por exemplo, se você tem múltiplos slaves Windows e você tem tarefas que requerem
- Windows, então você pode configurar todos seus slaves Windows para ter a marcação 'windows',
- então amarre a tarefa à marcação 'windows'. Isto permite que sua tarefa executar apenas
- nos seus slaves Windows.
-
- Etiketler (diğer adıyla tag'ler) birden fazla slave'i mantıklı bir grup içinde birleştirmek
- için kullanılır.
-
-
- Mesela, birden fazla Windows slave'iniz varsa ve bazı işlerinizin Windows üzerinde çalışması
- gerekiyorsa, bu durumda Windows slave'lerini 'windows' etiketi ile birleştirip, çalıştırmak
- istediğiniz işe, çalışacağı yer olarak 'windows' etiketini vermeniz yeterli olacaktır.
- Ayarlarınızı bu şekilde yaparsanız, istediğiniz işler, windows slave'lerinden başka yerde
- çalıştırılmayacaktır.
-
\ No newline at end of file
diff --git a/core/src/main/resources/hudson/model/Node/help-labelString_zh_TW.html b/core/src/main/resources/hudson/model/Node/help-labelString_zh_TW.html
deleted file mode 100644
index 0e3a303930..0000000000
--- a/core/src/main/resources/hudson/model/Node/help-labelString_zh_TW.html
+++ /dev/null
@@ -1,9 +0,0 @@
-
- 舉例來說,如果您有多部 Windows 的 Slave,而且有只能在 Windows 平台上跑的作業,
- 那麼就可以把這些 Windows Slave 標上 'windows' 標籤,並將作業限定成只能在 'windows' 標籤上跑。
- 這麼一來,您的作業就只能在 Windows 的 Slave 上面跑。
-
\ No newline at end of file
diff --git a/core/src/main/resources/hudson/model/Node/help-name.html b/core/src/main/resources/hudson/model/Node/help-name.html
index dd66b5aa64..aa412606d4 100644
--- a/core/src/main/resources/hudson/model/Node/help-name.html
+++ b/core/src/main/resources/hudson/model/Node/help-name.html
@@ -1,7 +1,10 @@
- Name that uniquely identifies a slave within this Jenkins installation.
-
+ Name that uniquely identifies an agent within this Jenkins installation.
- This value could be any string, and doesn't have to be the same as the slave host name,
- but it's often convenient to make them the same.
+ This does not have to be the same as the agent hostname (where applicable),
+ but it is often convenient to make them the same.
+
+ The name may not contain any characters from this list:
+ ?*/\%!@#$^&|<>[]:;
+
- Name, der einen Slave-Knoten eindeutig innerhalb dieser Jenkins-Installation identifiziert.
-
-
- Dieser Wert kann zwar beliebig gewählt werden und muß nicht zwingend mit dem Rechnernamen
- des Slave-Knoten übereinstimmen - aber in vielen Fällen ist diese einfache Konvention
- sehr praktisch.
-
- This controls the number of concurrent builds that Jenkins can perform. So the value
- affects the overall system load Jenkins may incur.
- A good value to start with would be the number of processors on your system.
-
+ The maximum number of concurrent builds that Jenkins may perform on this
+ agent.
- Increasing this value beyond that would cause each build to take longer, but it could increase
- the overall throughput, because it allows CPU to build one project while another build is waiting
- for I/O.
-
+ A good value to start with would be the number of CPU cores on the machine.
+ Setting a higher value would cause each build to take longer, but could
+ increase the overall throughput. For example, one build might be CPU-bound,
+ while a second build running at the same time might be I/O-bound — so
+ the second build could take advantage of the spare I/O capacity at that
+ moment.
- When using Jenkins in the master/slave mode, setting this value to 0 would prevent the master
- from doing any building on its own. Slaves may not have zero executors, but may be
- temporarily disabled using the button on the slave's status page.
+ Agents must have at least one executor. To temporarily prevent any builds from
+ being executed on an agent, use the Mark this node temporarily offline
+ button on the agent's page.
+
+ This does not apply to the Jenkins master — setting the number of
+ executors to zero will prevent any builds from being executed on the master.
- Diese Einstellung legt die Anzahl gleichzeitiger Build-Prozesse in Jenkins fest.
- Sie beeinflusst daher die Gesamtlast, die Jenkins auf einem System erzeugen kann.
- Ein guter Ausgangspunkt wäre die Anzahl der CPUs Ihres Systems.
-
-
-
- Eine Erhöhung der Anzahl über diesen Wert hinaus würde zunächst die einzelnen Builds
- verlängern, könnte aber insgesamt den Durchsatz erhöhen, weil es den CPUs erlaubt,
- an einem Build zu rechnen, während ein anderer Build wegen Ein-/Ausgabeoperationen
- wartet.
-
-
-
- Falls Jenkins im Master/Slave-Modus betrieben wird, legt ein Wert von 0 auf dem Master
- fest, daß ausschließlich auf den Slaves Build-Prozesse durchgeführt werden, nie aber
- auf dem Master selbst. Slaves müssen mindestens 1 Build-Prozessor bereitstellen, können
- aber temporär durch eine Schaltfläche auf der Statusseite des Slaves deaktiviert werden.
-
- Isto controla o número de construções concorrentes que o Jenkins pode executar. Assim o valor
- afeta toda a carga do sistema que o Jenkins pode sustentar.
- Um bom valor para iniciar seria o número de processadores em seu sistema.
-
- Aumentando este valor além disso pode causar lentidão na construção, mas também pode aumentar
- a capacidade total, porque permite a CPU construir um projeto enquanto uma outra construção
- está aguardando por operação de E/S.
-
-
- Quando usando o Jenkins no modo master/slave, atribuir este valor a 0 evitará que o master
- faça qualquer construção nele mesmo.
-
- Jenkins'ın bu slave üzerinde eş zamanlı kaç tane yapılandırma yürütebileceğini kontrol eder.
- Yani, buraya girilecek değer, Jenkins'ın ne kadar yüke maruz kalacağını belirler.
- Başlangıç için, işlemci sayısı iyi bir rakam olabilir.
-
-
- Bu sayıyı artırmak, yapılandırmaların daha uzun sürmesine yol açsa da, toplam üretim kapasitesinde bir
- artış sağlayacaktır, çünkü bu durum, bir yapılandırma I/O için beklerken, CPU'nun başka bir yapılandırma
- ile uğraşmasına yol açacaktır.
-
-
- Bu değeri 0 yapmak, Jenkins'ın, konfigürasyonunu kaybetmeden, devre dışı bırakılmış bir slave'i
- silmesine olanak tanır.
-
- When you are using Jenkins for various automations, it's sometimes convenient
- to be able to "parameterize" a build, by requiring a set of user inputs to
- be made available to the build process. For example, you might be setting up
- an on-demand test job, where the user can submit a zip file of the binaries to be tested.
-
-
- This section configures what parameters your build takes. Parameters are distinguished
- by their names, and so you can have multiple parameters provided that they have different names.
-
-
- See the Wiki topic
- for more discussions about this feature.
+ Parameters allow you to prompt users for one or more inputs that will be
+ passed into a build. For example, you might have a project that runs tests on
+ demand by allowing users to upload a zip file with binaries to be tested.
+ This could be done by adding a File Parameter here.
+
+ Or you might have a project that releases some software, and you want users to
+ enter release notes that will be uploaded along with the software. This could
+ be done by adding a Multi-line String Parameter here.
+
+ Each parameter has a Name and some sort of Value, depending on
+ the parameter type. These name-value pairs will be exported as environment
+ variables when the build starts, allowing subsequent parts of the build
+ configuration (such as build steps) to access those values, e.g. by using the
+ ${PARAMETER_NAME} syntax (or %PARAMETER_NAME% on Windows).
+
+ This also implies that each parameter defined here should have a unique
+ Name.
+
+ When a project is parameterized, the usual Build Now link will be
+ replaced with a Build with Parameters link, where users will be
+ prompted to specify values for each of the defined parameters. If they choose
+ not to enter anything, the build will start with the default value for each
+ parameter.
+
+ If a build is started automatically, for example if started by an SCM trigger,
+ the default values for each parameter will be used.
+
+ When a parameterized build is in the queue, attempting to start another build
+ of the same project will only succeed if the parameter values are different,
+ or if the Execute concurrent builds if necessary option is enabled.
+
diff --git a/core/src/main/resources/hudson/model/Slave/help-launcher.jelly b/core/src/main/resources/hudson/model/Slave/help-launcher.jelly
index 7b80362ec3..c9156b09fd 100644
--- a/core/src/main/resources/hudson/model/Slave/help-launcher.jelly
+++ b/core/src/main/resources/hudson/model/Slave/help-launcher.jelly
@@ -26,7 +26,7 @@ THE SOFTWARE.
- ${%Controls how Jenkins starts this slave.}
+ ${%Controls how Jenkins starts this agent.}
diff --git a/core/src/main/resources/hudson/model/Slave/help-launcher_da.properties b/core/src/main/resources/hudson/model/Slave/help-launcher_da.properties
deleted file mode 100644
index 15f2e396ca..0000000000
--- a/core/src/main/resources/hudson/model/Slave/help-launcher_da.properties
+++ /dev/null
@@ -1,23 +0,0 @@
-# The MIT License
-#
-# Copyright (c) 2004-2010, Sun Microsystems, Inc. Kohsuke Kawaguchi. Knud Poulsen.
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-# copies of the Software, and to permit persons to whom the Software is
-# furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included in
-# all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-# THE SOFTWARE.
-
-Controls\ how\ Jenkins\ starts\ this\ slave.=Styrer hvordan Jenkins starter denne slave.
diff --git a/core/src/main/resources/hudson/model/Slave/help-launcher_de.properties b/core/src/main/resources/hudson/model/Slave/help-launcher_de.properties
deleted file mode 100644
index dc586b7e4b..0000000000
--- a/core/src/main/resources/hudson/model/Slave/help-launcher_de.properties
+++ /dev/null
@@ -1 +0,0 @@
-Controls\ how\ Jenkins\ starts\ this\ slave.=Steuert, wie Jenkins den Slave-Knoten startet.
diff --git a/core/src/main/resources/hudson/model/Slave/help-launcher_es.properties b/core/src/main/resources/hudson/model/Slave/help-launcher_es.properties
index bb2e5e2309..94f86e708e 100644
--- a/core/src/main/resources/hudson/model/Slave/help-launcher_es.properties
+++ b/core/src/main/resources/hudson/model/Slave/help-launcher_es.properties
@@ -20,4 +20,4 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
-Controls\ how\ Jenkins\ starts\ this\ slave.=Controla cómo Jenkins inicia este esclavo.
+Controls\ how\ Jenkins\ starts\ this\ agent.=Controla como Jenkins inicia este agente.
diff --git a/core/src/main/resources/hudson/model/Slave/help-launcher_fr.properties b/core/src/main/resources/hudson/model/Slave/help-launcher_fr.properties
deleted file mode 100644
index bf30272406..0000000000
--- a/core/src/main/resources/hudson/model/Slave/help-launcher_fr.properties
+++ /dev/null
@@ -1,23 +0,0 @@
-# The MIT License
-#
-# Copyright (c) 2004-2009, Sun Microsystems, Inc., Alan Harder, Eric Lefevre-Ardant
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-# copies of the Software, and to permit persons to whom the Software is
-# furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included in
-# all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-# THE SOFTWARE.
-
-Controls\ how\ Jenkins\ starts\ this\ slave.=Contrôle la façon dont Jenkins démarre l''esclave.
diff --git a/core/src/main/resources/hudson/model/Slave/help-launcher_ja.properties b/core/src/main/resources/hudson/model/Slave/help-launcher_ja.properties
deleted file mode 100644
index 55ed67ea5f..0000000000
--- a/core/src/main/resources/hudson/model/Slave/help-launcher_ja.properties
+++ /dev/null
@@ -1,23 +0,0 @@
-# The MIT License
-#
-# Copyright (c) 2004-2009, Sun Microsystems, Inc., Seiji Sogabe
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-# copies of the Software, and to permit persons to whom the Software is
-# furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included in
-# all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-# THE SOFTWARE.
-
-Controls\ how\ Jenkins\ starts\ this\ slave.=\u3053\u306E\u30B9\u30EC\u30FC\u30D6\u306E\u8D77\u52D5\u65B9\u6CD5\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002
diff --git a/core/src/main/resources/hudson/model/Slave/help-launcher_pt_BR.properties b/core/src/main/resources/hudson/model/Slave/help-launcher_pt_BR.properties
deleted file mode 100644
index d02da19515..0000000000
--- a/core/src/main/resources/hudson/model/Slave/help-launcher_pt_BR.properties
+++ /dev/null
@@ -1,23 +0,0 @@
-# The MIT License
-#
-# Copyright (c) 2004-2010, Sun Microsystems, Inc., Cleiber Silva, Fernando Boaglio
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-# copies of the Software, and to permit persons to whom the Software is
-# furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included in
-# all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-# THE SOFTWARE.
-
-Controls\ how\ Jenkins\ starts\ this\ slave.=Controla como o Jenkins inicia esse slave
diff --git a/core/src/main/resources/hudson/model/Slave/help-launcher_tr.properties b/core/src/main/resources/hudson/model/Slave/help-launcher_tr.properties
deleted file mode 100644
index c897a4126f..0000000000
--- a/core/src/main/resources/hudson/model/Slave/help-launcher_tr.properties
+++ /dev/null
@@ -1 +0,0 @@
-Controls\ how\ Jenkins\ starts\ this\ slave.= Jenkins'?n slave'i nas?l ba?lataca??n? kontrol eder.
diff --git a/core/src/main/resources/hudson/model/Slave/help-launcher_zh_TW.properties b/core/src/main/resources/hudson/model/Slave/help-launcher_zh_TW.properties
deleted file mode 100644
index 53d4c8d021..0000000000
--- a/core/src/main/resources/hudson/model/Slave/help-launcher_zh_TW.properties
+++ /dev/null
@@ -1,23 +0,0 @@
-# The MIT License
-#
-# Copyright (c) 2013, Chunghwa Telecom Co., Ltd., Pei-Tang Huang
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-# copies of the Software, and to permit persons to whom the Software is
-# furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included in
-# all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-# THE SOFTWARE.
-
-Controls\ how\ Jenkins\ starts\ this\ slave.=\u63a7\u5236 Jenkins \u4f7f\u7528\u4ec0\u9ebc\u65b9\u5f0f\u555f\u52d5 Slave\u3002
diff --git a/core/src/main/resources/hudson/model/Slave/help-remoteFS.html b/core/src/main/resources/hudson/model/Slave/help-remoteFS.html
index 477c19c6a0..6915c41fb3 100644
--- a/core/src/main/resources/hudson/model/Slave/help-remoteFS.html
+++ b/core/src/main/resources/hudson/model/Slave/help-remoteFS.html
@@ -1,36 +1,34 @@
- A slave needs to have a directory dedicated to Jenkins. Specify
- the path of this work directory on the slave. It is best to use
- an absolute path, such as '/var/jenkins' or 'c:\jenkins'. This
- should be a path local to the slave machine. There's no need for
- this path to be visible from the master, under normal circumstances.
-
+ An agent needs to have a directory dedicated to Jenkins. Specify
+ the path to this directory on the agent. It is best to use
+ an absolute path, such as /var/jenkins or c:\jenkins.
+ This should be a path local to the agent machine. There is no need for
+ this path to be visible from the master.
- Slaves do not maintain important data (other than active workspaces
- of projects last built on it), so you can possibly set the slave
- workspace to a temporary directory. The only downside of doing this
- is that you may lose the up-to-date workspace if the slave is turned off.
-
+ Agents do not maintain important data; all job configurations, build logs and
+ artifacts are stored on the master, so it would be possible to use a temporary
+ directory as the agent root directory.
+
+ However, by giving an agent a directory that is not deleted after a machine
+ reboot, for example, the agent can cache data such as tool installations, or
+ build workspaces. This prevents unnecessary downloading of tools, or checking
+ out source code again when builds start to run on this agent again after a
+ reboot.
- If you use a relative path, such as './jenkins-slave', the path will
- be relative to the current working directory that the launcher provides.
+ If you use a relative path, such as ./jenkins-agent, the path will be
+ relative to the working directory provided by the Launch method.
-
For launchers where Jenkins controls starting the slave process, such
+
For launchers where Jenkins controls starting the agent process, such
as SSH, the current working directory will typically be consistent,
- e.g. the user's home directory. This means that Jenkins will be able to
- rely on the caching of tool installations and workspaces from previous
- builds.
-
-
For launchers where Jenkins has no control over starting the slave
+ e.g. the user's home directory.
+
For launchers where Jenkins has no control over starting the agent
process, such as JNLP when launched from either the command line or via
a web browser link, the current working directory may change between
- launches of the slave and use of a relative path may prove problematic.
+ launches of the agent and use of a relative path may prove problematic.
+
The principal issue encountered when using relative paths with launchers
like JNLP is the proliferation of stale workspaces and tool installation
- on the slave machine. This can cause disk space issues.
- Note: there are some cloud providers that specifically use relative
- paths with the JNLP launcher to allow for dynamically provisioned pools
- of semi-heterogeneous slaves.
+ on the agent machine. This can cause disk space issues.
- Ein Slave-Knoten benötigt ein Verzeichnis, das Jenkins exklusiv
- zur Verfügung steht. Geben Sie den absoluten Pfad dieses
- Arbeitsverzeichnisses auf dem Slave-Knoten an, z.B.
- '/export/home/jenkins' oder 'c:\jenkins'. Dieses Verzeichnis muß unter normalen
- Umständen nicht vom Master aus erreichbar sein.
-
-
- Slave-Knoten speichern keine wichtigen Daten (abgesehen von den
- aktiven Arbeitsbereichen derjenigen Projekte, die zuletzt auf dem
- Slave-Knoten gebaut wurden). Sie können daher gefahrlos das Slave-Arbeitsverzeichnis
- auf ein temporäres Verzeichnis setzen. Der einzige Nachteil dieses Vorgehens
- wäre der Verlust der aktuellen Arbeitsbereiche, falls der Slave-Knoten
- abgeschaltet würde.
-
- Um slave precisa ter um diretório dedicado ao Jenkins. Especifique
- o caminho absoluto deste diretório de trabalho no slave, tal como
- '/export/home/jenkins'.
-
-
- Slaves não mantém dados importantes (além dos workspaces ativos
- dos últimos projetos construídos neles), assim você pode configurar o
- workspace do slave para um diretório temporário. A única desvantagem de fazer isto
- é que você pode perder o workspace atualizado se o slave for desligado.
-
- Slave'in üzerinde bir dizini, Jenkins'ın kullanımı için ayırmanız
- gerekmektedir. Bu alana, bu dizinin mutlak yolunu yazmanız gerekir
- ('/export/home/jenkins' gibi). Bu dizinin yolu slave makineye göredirr. Normal şartlar altında master tarafından
- görünür olmasına gerek yoktur.
-
-
- Slave'ler çok önemli veriler oluşturmazlar (üzerinde çalışan projelerin
- aktif çalışma alanları dışında). Dolayısıyla, slave'in çalışma alanı, geçici
- bir dizine ayarlanabilir. Bu şekilde yapmanın tek dezavantajı, slave çevrim
- dışı olduğunda, güncel çalışma alanını kaybedebilecek olmanızdır.
-
- Zu wissen, wie Jenkins genutzt wird, ist ungemein hilfreich, wenn es um die Richtung der
- Weiterentwicklung geht - insbesondere bei OpenSource-Projekten, bei denen die Anwender
- nicht genau bekannt sind. Wenn angewählt, sendet Jenkins in Abständen Informationen über
- die Nutzung dieser Instanz.
-
- Diese Informationen umfassen ausschließlich:
-
-
Ihre Jenkins-Version
-
Für jeden Master- und Slave-Knoten: Betriebssystem und Anzahl der Build-Prozessoren
-
Installierte Plugins und deren Version
-
Anzahl per angelegten Jobs pro Jobtyp
-
-
-
- Diese Informationen enthalten nichts, was Sie identifiziert oder uns erlauben könnte,
- mit Ihnen in Kontakt zu treten (außer Daten, die inhärent bei HTTP übermittelt werden,
- wie beispielsweise IP-Adressen). Diese Daten werden in zusammengefasster Form als
- Nutzungsstatistiken der Jenkins-Community zur Verfügung gestellt.
-
-
diff --git a/core/src/main/resources/hudson/model/User/sidepanel.jelly b/core/src/main/resources/hudson/model/User/sidepanel.jelly
index 126bdae5d8..46bad7a605 100644
--- a/core/src/main/resources/hudson/model/User/sidepanel.jelly
+++ b/core/src/main/resources/hudson/model/User/sidepanel.jelly
@@ -34,7 +34,7 @@ THE SOFTWARE.
-
+
diff --git a/core/src/main/resources/hudson/model/View/newJob.jelly b/core/src/main/resources/hudson/model/View/newJob.jelly
index ba6ae05161..c37a22c836 100644
--- a/core/src/main/resources/hudson/model/View/newJob.jelly
+++ b/core/src/main/resources/hudson/model/View/newJob.jelly
@@ -22,20 +22,54 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
-->
-
-
-
+
+
+
+
+
+
-
-
-
-
+
+
+
+
diff --git a/core/src/main/resources/hudson/model/View/newJob.properties b/core/src/main/resources/hudson/model/View/newJob.properties
index 2b841de29e..888f5bb4d6 100644
--- a/core/src/main/resources/hudson/model/View/newJob.properties
+++ b/core/src/main/resources/hudson/model/View/newJob.properties
@@ -1,3 +1,11 @@
NewJob=New {0}
JobName={0} name
+ItemName.help=Required field
+ItemName.label=Enter an item name
+ItemName.validation.required=This field cannot be empty. Please enter a valid name and press OK button.
+ItemType.validation.required=Please select an item type
+CopyOption.placeholder=Type to autocomplete
+CopyOption.description=if you want to create a new item from other existing, you can use this option
+CopyOption.label=Copy from
CopyExisting=Copy existing {0}
+
diff --git a/core/src/main/resources/hudson/node_monitors/AbstractDiskSpaceMonitor/help-freeSpaceThreshold.html b/core/src/main/resources/hudson/node_monitors/AbstractDiskSpaceMonitor/help-freeSpaceThreshold.html
index e3c7ce0d8e..3bc40d8cc7 100644
--- a/core/src/main/resources/hudson/node_monitors/AbstractDiskSpaceMonitor/help-freeSpaceThreshold.html
+++ b/core/src/main/resources/hudson/node_monitors/AbstractDiskSpaceMonitor/help-freeSpaceThreshold.html
@@ -1,5 +1,5 @@
This option configures the amount of minimum amount of free disk space
- desired for a slave's proper operation, such as "1.5GB", "100KB", etc.
- If a slave is found to have less free disk space than this amount, it will be marked offline.
+ desired for an agent's proper operation, such as "1.5GB", "100KB", etc.
+ If an agent is found to have less free disk space than this amount, it will be marked offline.
\ No newline at end of file
diff --git a/core/src/main/resources/hudson/node_monitors/AbstractDiskSpaceMonitor/help-freeSpaceThreshold_de.html b/core/src/main/resources/hudson/node_monitors/AbstractDiskSpaceMonitor/help-freeSpaceThreshold_de.html
deleted file mode 100644
index 1478dd66d0..0000000000
--- a/core/src/main/resources/hudson/node_monitors/AbstractDiskSpaceMonitor/help-freeSpaceThreshold_de.html
+++ /dev/null
@@ -1,6 +0,0 @@
-
- Diese Option legt die Mindestgrenze für den freien Plattenplatz fest,
- den ein Slave-Knoten zur korrekten Ausführung benötigt, z.B. "1.5GB", "100KB".
- Unterschreitet der freie Plattenplatz eines Slave-Knotens diese Grenze, wird er
- offline genommen.
-
\ No newline at end of file
diff --git a/core/src/main/resources/hudson/node_monitors/AbstractDiskSpaceMonitor/help-freeSpaceThreshold_zh_TW.html b/core/src/main/resources/hudson/node_monitors/AbstractDiskSpaceMonitor/help-freeSpaceThreshold_zh_TW.html
deleted file mode 100644
index fa7db9b713..0000000000
--- a/core/src/main/resources/hudson/node_monitors/AbstractDiskSpaceMonitor/help-freeSpaceThreshold_zh_TW.html
+++ /dev/null
@@ -1,4 +0,0 @@
-
\ No newline at end of file
diff --git a/core/src/main/resources/hudson/node_monitors/ArchitectureMonitor/help.html b/core/src/main/resources/hudson/node_monitors/ArchitectureMonitor/help.html
index aab9bec30e..c25399638b 100644
--- a/core/src/main/resources/hudson/node_monitors/ArchitectureMonitor/help.html
+++ b/core/src/main/resources/hudson/node_monitors/ArchitectureMonitor/help.html
@@ -1,3 +1,3 @@
- This monitor just shows the architecture of the slave for your information. It never marks the slave offline.
+ This monitor just shows the architecture of the agent for your information. It never marks the agent offline.
\ No newline at end of file
diff --git a/core/src/main/resources/hudson/node_monitors/ArchitectureMonitor/help_de.html b/core/src/main/resources/hudson/node_monitors/ArchitectureMonitor/help_de.html
deleted file mode 100644
index 635d1ec1e3..0000000000
--- a/core/src/main/resources/hudson/node_monitors/ArchitectureMonitor/help_de.html
+++ /dev/null
@@ -1,4 +0,0 @@
-
- Zeigt lediglich zur Information das Betriebssystem eines Slaves an.
- Diese Anzeige beeinflusst niemals den Online/Offline-Status eines Slaves.
-
\ No newline at end of file
diff --git a/core/src/main/resources/hudson/node_monitors/ClockMonitor/help_de.html b/core/src/main/resources/hudson/node_monitors/ClockMonitor/help_de.html
deleted file mode 100644
index 43f8cdd7b7..0000000000
--- a/core/src/main/resources/hudson/node_monitors/ClockMonitor/help_de.html
+++ /dev/null
@@ -1,9 +0,0 @@
-
- Überwacht die Zeitdifferenz zwischen dem Master und den Slaves.
- Obwohl Jenkins mit zeitlichen Differenzen zwischen Rechnern zurechtkommt,
- neigen Versionsmanagementsysteme und verteilte Dateizugriffe unter diesen
- Umständen zu merkwürdigen Problemen.
-
-
- Um Uhren auf mehreren Rechnern synchron zu halten, ziehen Sie NTP im Betracht.
-
- This monitors the available disk space of $JENKINS_HOME on each slave, and if it gets below
- a threshold, the slave will be marked offline.
+ This monitors the available disk space of $JENKINS_HOME on each agent, and if it gets below
+ a threshold, the agent will be marked offline.
This directory is where all your builds are performed, so if it fills up, all the builds will fail.
diff --git a/core/src/main/resources/hudson/node_monitors/DiskSpaceMonitor/help_de.html b/core/src/main/resources/hudson/node_monitors/DiskSpaceMonitor/help_de.html
deleted file mode 100644
index ed2cbfdca3..0000000000
--- a/core/src/main/resources/hudson/node_monitors/DiskSpaceMonitor/help_de.html
+++ /dev/null
@@ -1,8 +0,0 @@
-
- Überwacht den freien Festplattenplatz in $JENKINS_HOME auf jedem Slave.
- Unterschreitet der freie Platz eine bestimmte Schwelle, so wird der Slave offline genommen.
-
-
- In diesem Verzeichnis $JENKINS_HOME finden alle Builds statt, so daß ein
- volles Verzeichnis Builds scheitern lässt.
-
\ No newline at end of file
diff --git a/core/src/main/resources/hudson/node_monitors/DiskSpaceMonitor/help_zh_TW.html b/core/src/main/resources/hudson/node_monitors/DiskSpaceMonitor/help_zh_TW.html
deleted file mode 100644
index 510d169fa3..0000000000
--- a/core/src/main/resources/hudson/node_monitors/DiskSpaceMonitor/help_zh_TW.html
+++ /dev/null
@@ -1,6 +0,0 @@
-
\ No newline at end of file
diff --git a/core/src/main/resources/hudson/node_monitors/Messages_de.properties b/core/src/main/resources/hudson/node_monitors/Messages_de.properties
index 704bc5835b..6bc58ba7ef 100644
--- a/core/src/main/resources/hudson/node_monitors/Messages_de.properties
+++ b/core/src/main/resources/hudson/node_monitors/Messages_de.properties
@@ -25,7 +25,6 @@ ClockMonitor.DisplayName=Zeitdifferenz
DiskSpaceMonitor.DisplayName=Freier Plattenplatz
DiskSpaceMonitor.MarkedOffline=Nehme {0} temporär offline, da der Festplattenplatz knapp geworden ist.
ResponseTimeMonitor.DisplayName=Antwortzeit
-ResponseTimeMonitor.MarkedOffline=Nehme {0} temporär offline, weil Slave nicht antwortet.
ResponseTimeMonitor.TimeOut= {0} mal keine Antwort
SwapSpaceMonitor.DisplayName=Freier Swap Space
TemporarySpaceMonitor.DisplayName=Freier TEMP-Platz
diff --git a/core/src/main/resources/hudson/node_monitors/MonitorMarkedNodeOffline/message.properties b/core/src/main/resources/hudson/node_monitors/MonitorMarkedNodeOffline/message.properties
index d3e7535290..8df89a9341 100644
--- a/core/src/main/resources/hudson/node_monitors/MonitorMarkedNodeOffline/message.properties
+++ b/core/src/main/resources/hudson/node_monitors/MonitorMarkedNodeOffline/message.properties
@@ -1,3 +1,3 @@
-blurb=Jenkins took some slaves offline because their key health metrics went below a threshold. \
+blurb=Jenkins took some agents offline because their key health metrics went below a threshold. \
If you don\u2019t want Jenkins to do this, \
change the setting.
diff --git a/core/src/main/resources/hudson/node_monitors/MonitorMarkedNodeOffline/message_cs.properties b/core/src/main/resources/hudson/node_monitors/MonitorMarkedNodeOffline/message_cs.properties
index 030be99a69..633d58b85a 100644
--- a/core/src/main/resources/hudson/node_monitors/MonitorMarkedNodeOffline/message_cs.properties
+++ b/core/src/main/resources/hudson/node_monitors/MonitorMarkedNodeOffline/message_cs.properties
@@ -1,4 +1,3 @@
# This file is under the MIT License by authors
Dismiss=Zru\u0161it
-blurb=Jenkins nastavil n\u011Bkter\u00E9 slave-y do offline m\u00F3du jejich stav se zhor\u0161il. Pokud nechcete, aby to Jenkins d\u011Blal, zm\u011B\u0148te tohle nastaven\u00ED.
diff --git a/core/src/main/resources/hudson/node_monitors/MonitorMarkedNodeOffline/message_da.properties b/core/src/main/resources/hudson/node_monitors/MonitorMarkedNodeOffline/message_da.properties
index aa98019f19..d2e887bc0b 100644
--- a/core/src/main/resources/hudson/node_monitors/MonitorMarkedNodeOffline/message_da.properties
+++ b/core/src/main/resources/hudson/node_monitors/MonitorMarkedNodeOffline/message_da.properties
@@ -20,5 +20,4 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
-blurb=Jenkins tog nogle slaver offline, da deres helbredsparametre kom under en t\u00e6rskelv\u00e6rdi.
Dismiss=Luk
diff --git a/core/src/main/resources/hudson/node_monitors/MonitorMarkedNodeOffline/message_de.properties b/core/src/main/resources/hudson/node_monitors/MonitorMarkedNodeOffline/message_de.properties
index 8616095243..99e9e6fccd 100644
--- a/core/src/main/resources/hudson/node_monitors/MonitorMarkedNodeOffline/message_de.properties
+++ b/core/src/main/resources/hudson/node_monitors/MonitorMarkedNodeOffline/message_de.properties
@@ -1,5 +1 @@
-blurb=\
- Jenkins hat einige Slaves offline genommen, da deren Gesundheitszustand \
- eine bestimmte Schwelle unterschritten hatte. Wenn Sie nicht möchten, daß Jenkins dies vornimmt, \
- können Sie die Konfiguration ändern.
Dismiss=Schließen
diff --git a/core/src/main/resources/hudson/node_monitors/MonitorMarkedNodeOffline/message_es.properties b/core/src/main/resources/hudson/node_monitors/MonitorMarkedNodeOffline/message_es.properties
index 30c2e223f9..79e2f8cb96 100644
--- a/core/src/main/resources/hudson/node_monitors/MonitorMarkedNodeOffline/message_es.properties
+++ b/core/src/main/resources/hudson/node_monitors/MonitorMarkedNodeOffline/message_es.properties
@@ -20,6 +20,6 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
-blurb=Jenkins puso algún esclavo fuera de línea porque su estado de disponibilidad \
+blurb=Jenkins puso algún agente fuera de línea porque su estado de disponibilidad \
ha bajado por debajo e un umbral. Si quieres que Jenkins no haga ésto, cambia la configuración..
Dismiss=Descartar
diff --git a/core/src/main/resources/hudson/node_monitors/MonitorMarkedNodeOffline/message_fr.properties b/core/src/main/resources/hudson/node_monitors/MonitorMarkedNodeOffline/message_fr.properties
index f5a6f9ba1e..9cb007a1fe 100644
--- a/core/src/main/resources/hudson/node_monitors/MonitorMarkedNodeOffline/message_fr.properties
+++ b/core/src/main/resources/hudson/node_monitors/MonitorMarkedNodeOffline/message_fr.properties
@@ -21,5 +21,4 @@
# THE SOFTWARE.
Dismiss=Cacher
-blurb=Jenkins a mis hors ligne des esclaves leur m\u00E9triques d''\u00E9tat de sant\u00E9 \u00E9taient sous les exigences. Si vous ne voulez pas que Jenkins face cela, vous pouvez changer la configuration.
diff --git a/core/src/main/resources/hudson/node_monitors/MonitorMarkedNodeOffline/message_ja.properties b/core/src/main/resources/hudson/node_monitors/MonitorMarkedNodeOffline/message_ja.properties
index c6193420e5..703a560539 100644
--- a/core/src/main/resources/hudson/node_monitors/MonitorMarkedNodeOffline/message_ja.properties
+++ b/core/src/main/resources/hudson/node_monitors/MonitorMarkedNodeOffline/message_ja.properties
@@ -20,7 +20,4 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
-blurb=\
- \u30B9\u30EC\u30FC\u30D6\u306E\u72B6\u614B\u304C\u95BE\u5024\u3092\u4E0B\u56DE\u3063\u305F\u305F\u3081\u3001\u30B9\u30EC\u30FC\u30D6\u3092\u30AA\u30D5\u30E9\u30A4\u30F3\u306B\u3057\u307E\u3057\u305F\u3002\
- \u30AA\u30D5\u30E9\u30A4\u30F3\u306B\u3057\u306A\u3044\u3088\u3046\u306B\u3059\u308B\u306B\u306F\u3001\u8A2D\u5B9A\u3092\u5909\u66F4\u3057\u3066\u304F\u3060\u3055\u3044\u3002
-Dismiss=\u7121\u8996
\ No newline at end of file
+Dismiss=\u7121\u8996
diff --git a/core/src/main/resources/hudson/node_monitors/MonitorMarkedNodeOffline/message_pt.properties b/core/src/main/resources/hudson/node_monitors/MonitorMarkedNodeOffline/message_pt.properties
index e6c3c92bd9..91e4c21a6b 100644
--- a/core/src/main/resources/hudson/node_monitors/MonitorMarkedNodeOffline/message_pt.properties
+++ b/core/src/main/resources/hudson/node_monitors/MonitorMarkedNodeOffline/message_pt.properties
@@ -21,7 +21,4 @@
# THE SOFTWARE.
Dismiss=Dispensar
-blurb=O Jenkins deixou alguns slaves offlineporque a href="{0}/computer/">suas m\u00e9tricas estavam abaixo do limite. \
- Se voc\u00ea n\u00e3o quiser que o Jenkins fa\u00e7a isso, \
- mude a configura\u00e7\u00e3o.
diff --git a/core/src/main/resources/hudson/node_monitors/MonitorMarkedNodeOffline/message_pt_BR.properties b/core/src/main/resources/hudson/node_monitors/MonitorMarkedNodeOffline/message_pt_BR.properties
index 93ba752157..81af812fd2 100644
--- a/core/src/main/resources/hudson/node_monitors/MonitorMarkedNodeOffline/message_pt_BR.properties
+++ b/core/src/main/resources/hudson/node_monitors/MonitorMarkedNodeOffline/message_pt_BR.properties
@@ -21,10 +21,3 @@
# THE SOFTWARE.
Dismiss=
-# Jenkins took some slaves offline because their key health metrics went below a threshold. \
-# If you don''t want Jenkins to do this, \
-# change the setting.
-blurb=Jenkins colocou alguns slaves offline porque sua m\u00e9tricas est\u00e3o abaixo do esperado.\
- Se voc\u00ea n\u00e3o quer que o Jenkins fa\u00e7a mais isso,\
- mude suas configura\u00e7\u00f5es.
-g.
diff --git a/core/src/main/resources/hudson/node_monitors/MonitorMarkedNodeOffline/message_sv_SE.properties b/core/src/main/resources/hudson/node_monitors/MonitorMarkedNodeOffline/message_sv_SE.properties
index f493a75eb9..e8eef30b21 100644
--- a/core/src/main/resources/hudson/node_monitors/MonitorMarkedNodeOffline/message_sv_SE.properties
+++ b/core/src/main/resources/hudson/node_monitors/MonitorMarkedNodeOffline/message_sv_SE.properties
@@ -1,4 +1,3 @@
# This file is under the MIT License by authors
Dismiss=Avvisa
-blurb=Jenkins st\u00E4ngde ned slavprocesser vars nyckelv\u00E4rde f\u00F6r systemh\u00E4lsa g\u00E5tt under deras gr\u00E4nsv\u00E4rde. Om du inte vill att Jenkins ska g\u00F6ra det i forts\u00E4ttningen, \u00E4ndra i inst\u00E4llningarna.
diff --git a/core/src/main/resources/hudson/node_monitors/MonitorMarkedNodeOffline/message_zh_CN.properties b/core/src/main/resources/hudson/node_monitors/MonitorMarkedNodeOffline/message_zh_CN.properties
index 61e902bdca..89f20d137b 100644
--- a/core/src/main/resources/hudson/node_monitors/MonitorMarkedNodeOffline/message_zh_CN.properties
+++ b/core/src/main/resources/hudson/node_monitors/MonitorMarkedNodeOffline/message_zh_CN.properties
@@ -1,4 +1,3 @@
# This file is under the MIT License by authors
Dismiss=\u5FFD\u7565
-blurb=Jenkins\u4F1A\u8BA9\u5065\u5EB7\u6570\u636E \u4F4E\u4E8E\u4E34\u754C\u503C\u7684slaves \u673A\u5668\u79BB\u7EBF \u3002\u5982\u679C\u4F60\u4E0D\u5E0C\u671B Jenkins \u8FD9\u6837\u505A\uFF0C \u8BF7\u66F4\u6539\u8BBE\u7F6E.
diff --git a/core/src/main/resources/hudson/node_monitors/MonitorMarkedNodeOffline/message_zh_TW.properties b/core/src/main/resources/hudson/node_monitors/MonitorMarkedNodeOffline/message_zh_TW.properties
index b124c61599..3a970b7399 100644
--- a/core/src/main/resources/hudson/node_monitors/MonitorMarkedNodeOffline/message_zh_TW.properties
+++ b/core/src/main/resources/hudson/node_monitors/MonitorMarkedNodeOffline/message_zh_TW.properties
@@ -20,5 +20,4 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
-blurb=Jenkins \u5C07\u90E8\u5206 Slave \u8A2D\u70BA\u96E2\u7DDA\uFF0C\u56E0\u70BA\u5B83\u5011\u7684\u5065\u5EB7\u8861\u91CF\u6A19\u6E96\u5DF2\u7D93\u4F4E\u65BC\u81E8\u754C\u503C\u3002\u5982\u679C\u4F60\u89BA\u5F97 Jenkins \u592A\u96DE\u5A46\uFF0C\u8ACB\u4FEE\u6539\u8A2D\u5B9A\u3002
Dismiss=\u89E3\u9664
diff --git a/core/src/main/resources/hudson/node_monitors/ResponseTimeMonitor/help.html b/core/src/main/resources/hudson/node_monitors/ResponseTimeMonitor/help.html
index 366e1d9633..5a6f27a412 100644
--- a/core/src/main/resources/hudson/node_monitors/ResponseTimeMonitor/help.html
+++ b/core/src/main/resources/hudson/node_monitors/ResponseTimeMonitor/help.html
@@ -1,9 +1,9 @@
- This monitors the round trip network response time from the master to the slave, and if it
- goes above a threshold repeatedly, it marks the slave offline.
+ This monitors the round trip network response time from the master to the agent, and if it
+ goes above a threshold repeatedly, it marks the agent offline.
- This is useful for detecting unresponsive slaves, or other network problems that clog the
- communication channel. More specifically, the master sends a no-op command to the slave,
+ This is useful for detecting unresponsive agents, or other network problems that clog the
+ communication channel. More specifically, the master sends a no-op command to the agent,
and checks the time it takes to get back the result of this no-op command.
\ No newline at end of file
diff --git a/core/src/main/resources/hudson/node_monitors/ResponseTimeMonitor/help_de.html b/core/src/main/resources/hudson/node_monitors/ResponseTimeMonitor/help_de.html
deleted file mode 100644
index a86c7c2f8e..0000000000
--- a/core/src/main/resources/hudson/node_monitors/ResponseTimeMonitor/help_de.html
+++ /dev/null
@@ -1,9 +0,0 @@
-
- Misst die Laufzeit vom Master zum Slave und zurück. Überschreitet die Laufzeit
- wiederholt einen Schwellwert, so wird der Slave offline genommen.
-
-
- Dies ist nützlich, um abgestürzte Slaves auszumachen oder Netzwerkprobleme zu erkennen.
- Präziser ausgedrückt, schickt der Master ein "NO-OP"-Kommando an den Slave und misst die Zeit,
- die vergeht, bis das Ergebnis des NO-OP-Kommandos wieder eintrifft.
-
\ No newline at end of file
diff --git a/core/src/main/resources/hudson/node_monitors/ResponseTimeMonitor/help_zh_TW.html b/core/src/main/resources/hudson/node_monitors/ResponseTimeMonitor/help_zh_TW.html
deleted file mode 100644
index c6c473d441..0000000000
--- a/core/src/main/resources/hudson/node_monitors/ResponseTimeMonitor/help_zh_TW.html
+++ /dev/null
@@ -1,7 +0,0 @@
-
\ No newline at end of file
diff --git a/core/src/main/resources/hudson/node_monitors/SwapSpaceMonitor/help.html b/core/src/main/resources/hudson/node_monitors/SwapSpaceMonitor/help.html
deleted file mode 100644
index abb86420d2..0000000000
--- a/core/src/main/resources/hudson/node_monitors/SwapSpaceMonitor/help.html
+++ /dev/null
@@ -1,23 +0,0 @@
-
- This monitors the available virtual memory space of the computer (commonly known as "swap space"),
- and if it goes below a threshold, the slave is marked offline.
-
-
- The exact definition of the swap space is platform dependent.
-
-
-
- On Windows, this value is
- the available space in the page file,
- but because Windows is capable of expanding the page file size automatically, the value doesn't really mean much.
-
-
- On Linux, this value is obtained from /proc/meminfo.
-
-
- On other Unix systems, this value is obtained by executing the top command.
-
-
-
- If you have an operating system where this value is not reported, please let us know so that we can improve this.
-
\ No newline at end of file
diff --git a/core/src/main/resources/hudson/node_monitors/SwapSpaceMonitor/help_de.html b/core/src/main/resources/hudson/node_monitors/SwapSpaceMonitor/help_de.html
deleted file mode 100644
index 4094d6cb63..0000000000
--- a/core/src/main/resources/hudson/node_monitors/SwapSpaceMonitor/help_de.html
+++ /dev/null
@@ -1,24 +0,0 @@
-
- Dieser Monitor überwacht den freien virtuellen Speicher auf den Slaves (auch als "Swap Space"
- bekannt). Unterschreitet dieser eine bestimmte Schwelle, wird ein Slave offline genommen.
-
-
- Die exakte Definition des Swap Spaces ist betriebssystemabhängig:
-
-
-
- Unter Windows ist dieser Wert
- der freie Platz in der Page-Datei,
- da aber Windows die Page-Datei automatisch vergrößern kann, ist der Wert nur bedingt von Bedeutung.
-
-
- Unter Linux, wird dieser Wert aus /proc/meminfo ermittelt.
-
-
- Unter anderen Unix-Betriebssystemen wird der Wert durch Ausführung des top-Kommandos ermittelt.
-
-
-
- Wenn Sie ein Betriebssystem einsetzen, bei dem dieser Wert nicht angezeigt wird,
- geben Sie uns Bescheid, damit wir diese Funktion weiter verbessern können.
-
\ No newline at end of file
diff --git a/core/src/main/resources/hudson/node_monitors/SwapSpaceMonitor/help_zh_TW.html b/core/src/main/resources/hudson/node_monitors/SwapSpaceMonitor/help_zh_TW.html
deleted file mode 100644
index 0c55c93eda..0000000000
--- a/core/src/main/resources/hudson/node_monitors/SwapSpaceMonitor/help_zh_TW.html
+++ /dev/null
@@ -1,22 +0,0 @@
-
- 在 Windows 下,該值代表
- 分頁檔的可用空間。
- 不過 Windows 可以自動加大分頁檔,所以數據的意義不大。
-
-
- 在 Linux 環境下,該值將由 /proc/meminfo 取得。
-
-
- 在其他的 Unix 系統裡,我們會執行 top 指令取得數據。
-
-
-
- 如果您用到了無法正確取得數據的作業系統,請不吝指教,方便我們著手改善。
-
\ No newline at end of file
diff --git a/core/src/main/resources/hudson/node_monitors/TemporarySpaceMonitor/help.html b/core/src/main/resources/hudson/node_monitors/TemporarySpaceMonitor/help.html
index 31d6a0becb..d285370f91 100644
--- a/core/src/main/resources/hudson/node_monitors/TemporarySpaceMonitor/help.html
+++ b/core/src/main/resources/hudson/node_monitors/TemporarySpaceMonitor/help.html
@@ -9,5 +9,5 @@
More specifically, it checks the available disk space of a partition
that includes directory designated by the java.io.tmpdir system property.
- To check where this directory is on a given slave, go to ${rootURL}/computer/SLAVENAME/systemInfo.
+ To check where this directory is on a given agent, go to ${rootURL}/computer/SLAVENAME/systemInfo.
\ No newline at end of file
diff --git a/core/src/main/resources/hudson/node_monitors/TemporarySpaceMonitor/help_de.html b/core/src/main/resources/hudson/node_monitors/TemporarySpaceMonitor/help_de.html
deleted file mode 100644
index 5af367f282..0000000000
--- a/core/src/main/resources/hudson/node_monitors/TemporarySpaceMonitor/help_de.html
+++ /dev/null
@@ -1,13 +0,0 @@
-
- Überwacht den freien Festplattenplatz im Temporärverzeichnis. Unterschreitet der freie Platz eine
- gewisse Schwelle, so wird der Slave offline genommen.
-
- Java-Werkzeuge und Tests/Builds arbeiten häufig mit Dateien im Temporärverzeichnis und können
- daher unerwartete Ergebnisse liefern, wenn der Platz in diesem Verzeichnis erschöpft ist.
-
-
- Präziser ausgedrückt, wird der freie Festplattenplatz auf der Partition ermittelt, die das
- Verzeichnis enthält, auf welches die Systemeigenschaft java.io.tmpdir verweist.
- Um herauszufinden, wo dieses Verzeichnis auf einem bestimmten Slave liegt, rufen Sie
- ${rootURL}/computer/SLAVENAME/systemInfo auf.
-
\ No newline at end of file
diff --git a/core/src/main/resources/hudson/node_monitors/TemporarySpaceMonitor/help_zh_TW.html b/core/src/main/resources/hudson/node_monitors/TemporarySpaceMonitor/help_zh_TW.html
deleted file mode 100644
index 8f955aa373..0000000000
--- a/core/src/main/resources/hudson/node_monitors/TemporarySpaceMonitor/help_zh_TW.html
+++ /dev/null
@@ -1,10 +0,0 @@
-
- Jenkins uses a TCP port to communicate with slave agents launched via JNLP.
+ Jenkins uses a TCP port to communicate with agent agents launched via JNLP.
Normally this port is chosen randomly to avoid collisions, but this would
- make securing the system difficult. If you are not using JNLP slaves,
+ make securing the system difficult. If you are not using JNLP agents,
it's recommend to disable this TCP port. Alternatively, you can specify
the fixed port number so that you can configure your firewall accordingly.
\ No newline at end of file
diff --git a/core/src/main/resources/hudson/security/GlobalSecurityConfiguration/help-slaveAgentPort_de.html b/core/src/main/resources/hudson/security/GlobalSecurityConfiguration/help-slaveAgentPort_de.html
deleted file mode 100644
index bad870a778..0000000000
--- a/core/src/main/resources/hudson/security/GlobalSecurityConfiguration/help-slaveAgentPort_de.html
+++ /dev/null
@@ -1,8 +0,0 @@
-
- Jenkins verwendet einen TCP-Port, um mit Slave-Knoten zu kommunizieren, die
- über JNLP gestartet wurden. Normalerweise wird dieser Port zufällig
- gewählt, um Kollisionen zu vermeiden - dies erschwert jedoch die Absicherung
- des Systems. Wenn Sie keine JNLP-Slave-Knoten einsetzen, wird empfohlen,
- diesen TCP-Port zu deaktivieren. Alternativ können Sie auch einen statischen Port
- festlegen, um Ihre Firewall entsprechend leichter konfigurieren zu können.
-
\ No newline at end of file
diff --git a/core/src/main/resources/hudson/security/GlobalSecurityConfiguration/help-slaveAgentPort_pt_BR.html b/core/src/main/resources/hudson/security/GlobalSecurityConfiguration/help-slaveAgentPort_pt_BR.html
deleted file mode 100644
index 9e11fe0054..0000000000
--- a/core/src/main/resources/hudson/security/GlobalSecurityConfiguration/help-slaveAgentPort_pt_BR.html
+++ /dev/null
@@ -1,7 +0,0 @@
-
- O Jenkins usa uma porta TCP para se comunicar com os agentes slave lançados via JNLP.
- Normalmente esta porta é escolhida aleatóriamente para evitar colisões, mas isto
- tornaria difícil fazer a segurança do sistema. Se você não estiver usado slaves JNLP,
- é recomendado desabilitar esta porta TCP. Alternativamente, você pode especificar
- um número de porta específico tal que você possa configurar seu firewall corretamente.
-
- Jenkins, JNLP aracılığı ile başlatılan slave'ler ile iletişiminde TCP portunu
- kullanır. Her ne kadar bu port numarası, herhangi bir çakışmayı önlemek adına
- rastgele verilse de, sistem güvenliğinin yönetiminde zorluk çıkaracaktır. Eğer
- JNLP slave'i kullanmıyorsanız, bu TCP port numarasını devre dışı bırakınız.
- Buna alternatif olarak, bu port numarasını sabit bir numara olarak belirlerseniz,
- firewall kurallarını buna göre daha rahat ayarlayabilirsiniz (Port numarası sabit olduğundan,
- firewall kurallarını bir defa tanımlamanız yeterli olabilecektir).
-
\ No newline at end of file
diff --git a/core/src/main/resources/hudson/security/GlobalSecurityConfiguration/help-slaveAgentPort_zh_TW.html b/core/src/main/resources/hudson/security/GlobalSecurityConfiguration/help-slaveAgentPort_zh_TW.html
deleted file mode 100644
index 6f7678ed46..0000000000
--- a/core/src/main/resources/hudson/security/GlobalSecurityConfiguration/help-slaveAgentPort_zh_TW.html
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
+
diff --git a/core/src/main/resources/hudson/security/HudsonPrivateSecurityRealm/sidepanel.jelly b/core/src/main/resources/hudson/security/HudsonPrivateSecurityRealm/sidepanel.jelly
index 49ef418e78..8d864d01e9 100644
--- a/core/src/main/resources/hudson/security/HudsonPrivateSecurityRealm/sidepanel.jelly
+++ b/core/src/main/resources/hudson/security/HudsonPrivateSecurityRealm/sidepanel.jelly
@@ -28,7 +28,7 @@ THE SOFTWARE.
-
+
diff --git a/core/src/main/resources/hudson/security/HudsonPrivateSecurityRealm/signup.jelly b/core/src/main/resources/hudson/security/HudsonPrivateSecurityRealm/signup.jelly
index 656e96c3c9..f2477da1df 100644
--- a/core/src/main/resources/hudson/security/HudsonPrivateSecurityRealm/signup.jelly
+++ b/core/src/main/resources/hudson/security/HudsonPrivateSecurityRealm/signup.jelly
@@ -27,5 +27,5 @@ THE SOFTWARE.
-->
-
+
diff --git a/core/src/main/resources/hudson/security/HudsonPrivateSecurityRealm/signupWithFederatedIdentity.jelly b/core/src/main/resources/hudson/security/HudsonPrivateSecurityRealm/signupWithFederatedIdentity.jelly
index 01c0197a62..8daec8d381 100644
--- a/core/src/main/resources/hudson/security/HudsonPrivateSecurityRealm/signupWithFederatedIdentity.jelly
+++ b/core/src/main/resources/hudson/security/HudsonPrivateSecurityRealm/signupWithFederatedIdentity.jelly
@@ -27,5 +27,5 @@ THE SOFTWARE.
-->
-
+
\ No newline at end of file
diff --git a/core/src/main/resources/hudson/slaves/AbstractCloudImpl/help-instanceCapStr.html b/core/src/main/resources/hudson/slaves/AbstractCloudImpl/help-instanceCapStr.html
index 08a970a6bf..75a258c36e 100644
--- a/core/src/main/resources/hudson/slaves/AbstractCloudImpl/help-instanceCapStr.html
+++ b/core/src/main/resources/hudson/slaves/AbstractCloudImpl/help-instanceCapStr.html
@@ -1,5 +1,5 @@
- You can place the upward limit to the number of slaves that Jenkins may launch from this cloud.
+ You can place the upward limit to the number of agents that Jenkins may launch from this cloud.
This is useful for avoiding surprises in the billing statement.
- Command to be used to launch a slave agent program, which controls the slave
+ Command to be used to launch an agent program, which controls the agent
computer and communicates with the master. Jenkins assumes that
the executed program launches the slave.jar program on the correct
- slave machine.
+ machine.
A copy of slave.jar can be downloaded from here.
@@ -11,9 +11,9 @@
In a simple case, this could be
something like "ssh hostname java -jar ~/bin/slave.jar".
- However, it is often a good idea to write a small shell script, like the following, on a slave
+ However, it is often a good idea to write a small shell script, like the following, on an agent
so that you can control the location of Java and/or slave.jar, as well as set up any
- environment variables specific to this slave node, such as PATH.
+ environment variables specific to this node, such as PATH.
- You can use any command to run a process on the slave machine, such as RSH,
+ You can use any command to run a process on the agent machine, such as RSH,
as long as stdin/stdout of this process will be connected to
"java -jar ~/bin/slave.jar" eventually.
diff --git a/core/src/main/resources/hudson/slaves/CommandLauncher/help-command_de.html b/core/src/main/resources/hudson/slaves/CommandLauncher/help-command_de.html
deleted file mode 100644
index 699a727208..0000000000
--- a/core/src/main/resources/hudson/slaves/CommandLauncher/help-command_de.html
+++ /dev/null
@@ -1,42 +0,0 @@
-
- Befehl, um einen Slave-Agenten zu starten, der den Slave-Knoten kontrolliert
- und mit dem Master-Knoten kommuniziert.
-
-
- Wenn in diesem Feld ein Befehl angegeben ist, so wird dieser auf dem Master-Knoten
- ausgeführt. Jenkins nimmt in diesem Fall an, daß der ausgeführte Befehl
- das Programm slave.jar auf dem jeweiligen Slave-Knoten startet.
-
-
- Ein einfachen Fällen, könnte der Befehl zum Beispiel so aussehen:
- "ssh hostname java -jar ~/bin/slave.jar".
-
- Trotzdem ist es meistens eine gute Idee, ein kleines Shell-Skript wie das
- folgende auf dem Slave-Knoten einzusetzen. Dies ermöglicht zum einen, den Pfad der
- verwendeten Java-Installation und/oder des Archives slave.jar
- zu kontrollieren, als auch Umgebungsvariablen zu setzen, die spezifisch für
- den jeweiligen Slave-Knoten sind (etwa PATH).
-
-
-#!/bin/sh
-exec java -jar ~/bin/slave.jar
-
-
-
- Sie können jeden beliebigen Befehl verwenden, um einen Prozess auf dem
- Slave-Knoten zu starten, z.B. rsh, solange die Standardein- und ausgabe
- (STDIN, STDOUT) dieses Prozesses mit "java -jar ~/bin/slave.jar" verbunden sind.
-
-
- In einer größeren Installation könnte man außerdem in Betracht ziehen,
- slave.jar von einem gemeinsamen Netzlaufwerk zu laden, so daß die
- komplette Installation einfacher aktualisiert werden kann.
-
-
- Tipp: Eine Einstellung von "ssh -v hostname" kann hilfreich bei der Analyse von
- Verbindungsproblemen sein.
-
-
- Comando para ser usado para lançar o program agente na máquina slave, o qual controla o
- computador slave e se comunica com o master.
-
-
Agentes slave JNLP
-
- Deixe este campo vazio se você quiser lançar os agentes slave via JNLP.
- Com esta configuração, a página de informações do slave (jenkins/computer/***/)
- terá um ícone de lançamento JNLP, e você poderá clicar no link da máquina slave
- correta para lançar o agente slave via JNLP.
-
- Este modo é conveniente para slaves Windows que frequentemente não tem um mecanismo
- de execução remota.
-
-
Agentes slave ssh/rsh
-
- Quando um comando real é especificado neste campo,
- este comando é executado na máquina
- master, e o Jenkins assume que o programa executado lança o programa slave.jar
- na máquina slave correta.
-
-
-
- Uma cópia de slave.jar pode ser encontrada em WEB-INF/slave.jar dentro de
- jenkins.war.
-
-
- Em um simples caso, isto poderia ser
- algo como "ssh hostname java -jar ~/bin/slave.jar".
-
- Entretanto, é uma boa idéia escrever um pequeno shell script, como o seguinte, em um slave
- tal que você possa controlar a localização do Java e/ou slave.jar, bem como configurar
- qualquer variável de ambiente específica para este nó slave, tal como PATH.
-
-
-#!/bin/sh
-exec java -jar ~/bin/slave.jar
-
-
-
- Você pode usar qualquer comando para executar um processo na máquina slave, tal como RSH,
- desde que as entrada/saída padrão (stdin/stdout) deste processo estejam eventualmente
- conectadas a "java -jar ~/bin/slave.jar".
-
-
- Em uma grande implantação, também é valioso considerar carregar slave.jar de
- uma localização comum montada via NFS, assim você não tem que atualizar este arquivo toda vez
- que você atualizar o Jenkins.
-
-
- Definir isto como "ssh -v hostname" pode ser útil para depurar questões de
- conectividade.
-
- Slave ajanı, slave bilgisayarı kontrol eder ve master bilgisayar ile iletişiminden
- sorumludur. Buraya yazılacak komut, slave ajanı çalıştıracak komuttur.
-
-
- Jenkins, burada belirtilen komutun, doğru slave üzerinde slave.jar'ı doğru şekilde
- çalıştıracağını varsayar ve bu komutu master üzerinde çalıştırır.
-
-
-
- slave.jar'ın bir kopyası, jenkins.war'ın içerisinde WEB-INF
- klasörü altında bulunabilir.
-
-
- En basit şekilde, yazılacak komut "ssh hostname java -jar ~/bin/slave.jar"
- şeklinde olmalıdır.
-
- Yinede aşağıdaki gibi bir shell script yazarsanız, Java'nın ve slave.jar'ın yerlerini
- ve bu slave'e özgü olabilecek ortam değişkenlerini (mesela PATH), kolaylıkla
- yönetebilirsiniz.
-
-
-#!/bin/sh
-exec java -jar ~/bin/slave.jar
-
-
-
- ?alıştırılacak komutun stdin/stdout metodları "java -jar ~/bin/slave.jar" ile
- ilişkili olduğu sürece, slave makinede RSH gibi komutları çalıştırabilirsiniz.
-
-
- Daha geniş bir sistemde, slave.jar dosyasını ortak bir dizinden (NFS-mounted)
- okutursanız, Husdon'ı her güncellediğinizde slave'leri ayrı ayrı güncellemek zorunda kalmazsınız.
-
-
- Bu kısımda "ssh -v hostname" şeklinde bir kullanım, bağlantıda oluşabilecek sorunları
- çözmede yardımcı olacaktır.
-
diff --git a/core/src/main/resources/hudson/slaves/CommandLauncher/help.properties b/core/src/main/resources/hudson/slaves/CommandLauncher/help.properties
index e4d34a73f1..ea17495f1d 100644
--- a/core/src/main/resources/hudson/slaves/CommandLauncher/help.properties
+++ b/core/src/main/resources/hudson/slaves/CommandLauncher/help.properties
@@ -20,5 +20,5 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
-blurb=Starts a slave by having Jenkins execute a command from the master. \
- Use this when the master is capable of remotely executing a process on a slave, such as through ssh/rsh.
+blurb=Starts an agent by having Jenkins execute a command from the master. \
+ Use this when the master is capable of remotely executing a process on another machine, e.g. via SSH or RSH.
diff --git a/core/src/main/resources/hudson/slaves/CommandLauncher/help_da.properties b/core/src/main/resources/hudson/slaves/CommandLauncher/help_da.properties
deleted file mode 100644
index 0c16c82c07..0000000000
--- a/core/src/main/resources/hudson/slaves/CommandLauncher/help_da.properties
+++ /dev/null
@@ -1,24 +0,0 @@
-# The MIT License
-#
-# Copyright (c) 2004-2010, Sun Microsystems, Inc. Kohsuke Kawaguchi. Knud Poulsen.
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-# copies of the Software, and to permit persons to whom the Software is
-# furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included in
-# all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-# THE SOFTWARE.
-
-blurb=Starter en ny slave ved at Jenkins k\u00f8rer en kommando p\u00e5 master''en. \
-Brug dette n\u00e5r master''en er i stand til at fjernafvikle en proces p\u00e5 slaven, for eksempel igennem ssh/rsh.
diff --git a/core/src/main/resources/hudson/slaves/CommandLauncher/help_de.properties b/core/src/main/resources/hudson/slaves/CommandLauncher/help_de.properties
deleted file mode 100644
index 68a036e252..0000000000
--- a/core/src/main/resources/hudson/slaves/CommandLauncher/help_de.properties
+++ /dev/null
@@ -1,26 +0,0 @@
-# The MIT License
-#
-# Copyright (c) 2004-2009, Sun Microsystems, Inc., Seiji Sogabe
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-# copies of the Software, and to permit persons to whom the Software is
-# furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included in
-# all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-# THE SOFTWARE.
-
-blurb=\
- Startet einen Slave, indem Jenkins vom Master aus einen Befehl auf dem Slave ausführt. \
- Verwenden Sie diese Option, wenn Jenkins Befehle auf entfernten Slaves ausführen \
- kann, z.B. über ssh/rsh.
diff --git a/core/src/main/resources/hudson/slaves/CommandLauncher/help_fr.properties b/core/src/main/resources/hudson/slaves/CommandLauncher/help_fr.properties
deleted file mode 100644
index 724e3797a6..0000000000
--- a/core/src/main/resources/hudson/slaves/CommandLauncher/help_fr.properties
+++ /dev/null
@@ -1,24 +0,0 @@
-# The MIT License
-#
-# Copyright (c) 2004-2009, Sun Microsystems, Inc., Seiji Sogabe, Eric Lefevre-Ardant
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-# copies of the Software, and to permit persons to whom the Software is
-# furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included in
-# all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-# THE SOFTWARE.
-
-blurb=Lance un esclave en demandant à Jenkins d''exécuter une commande à partir de la machine maître. \
- Utilisez cela quand le maître est capable d''exécuter à distance des processus sur la machine esclave, par exemple par ssh/rsh.
diff --git a/core/src/main/resources/hudson/slaves/CommandLauncher/help_ja.properties b/core/src/main/resources/hudson/slaves/CommandLauncher/help_ja.properties
deleted file mode 100644
index c1dd1e4e03..0000000000
--- a/core/src/main/resources/hudson/slaves/CommandLauncher/help_ja.properties
+++ /dev/null
@@ -1,24 +0,0 @@
-# The MIT License
-#
-# Copyright (c) 2004-2009, Sun Microsystems, Inc., Seiji Sogabe
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-# copies of the Software, and to permit persons to whom the Software is
-# furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included in
-# all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-# THE SOFTWARE.
-
-blurb=\u30DE\u30B9\u30BF\u304B\u3089\u30B3\u30DE\u30F3\u30C9\u3092\u5B9F\u884C\u3057\u3066\u30B9\u30EC\u30FC\u30D6\u3092\u8D77\u52D5\u3057\u307E\u3059\u3002\
- ssh\u3084rsh\u7D4C\u7531\u7B49\u3067\u3001\u30DE\u30B9\u30BF\u304C\u30B9\u30EC\u30FC\u30D6\u306E\u30D7\u30ED\u30BB\u30B9\u3092\u30EA\u30E2\u30FC\u30C8\u304B\u3089\u5B9F\u884C\u3067\u304D\u308B\u5834\u5408\u306B\u4F7F\u7528\u3057\u307E\u3059\u3002
diff --git a/core/src/main/resources/hudson/slaves/CommandLauncher/help_pt_BR.properties b/core/src/main/resources/hudson/slaves/CommandLauncher/help_pt_BR.properties
deleted file mode 100644
index cccf5c035e..0000000000
--- a/core/src/main/resources/hudson/slaves/CommandLauncher/help_pt_BR.properties
+++ /dev/null
@@ -1,28 +0,0 @@
-# The MIT License
-#
-# Copyright (c) 2004-2010, Sun Microsystems, Inc., Cleiber Silva, Fernando Boaglio
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-# copies of the Software, and to permit persons to whom the Software is
-# furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included in
-# all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-# THE SOFTWARE.
-
-# Starts a slave by having Jenkins execute a command from the master. \
-# Use this when the master is capable of remotely executing a process on a slave, such as through ssh/rsh.
-blurb=Iniciar um slave executando por um comando executado no master \
- Se n\u00e3o for poss\u00edvel, execute o comando via ssh/rsh
-
-
diff --git a/core/src/main/resources/hudson/slaves/CommandLauncher/help_zh_TW.properties b/core/src/main/resources/hudson/slaves/CommandLauncher/help_zh_TW.properties
deleted file mode 100644
index 7900696b3b..0000000000
--- a/core/src/main/resources/hudson/slaves/CommandLauncher/help_zh_TW.properties
+++ /dev/null
@@ -1,24 +0,0 @@
-# The MIT License
-#
-# Copyright (c) 2013, Chunghwa Telecom Co., Ltd., Pei-Tang Huang
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-# copies of the Software, and to permit persons to whom the Software is
-# furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included in
-# all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-# THE SOFTWARE.
-
-blurb=\u8b93 Jenkins \u5728 Master \u4e0a\u57f7\u884c\u6307\u4ee4\u555f\u52d5 Slave\u3002\
- \u9069\u7528\u65bc\u53ef\u4ee5\u9060\u7aef\u57f7\u884c Slave \u7a0b\u5f0f\u7684 Master\uff0c\u4f8b\u5982\u900f\u904e ssh \u6216 rsh\u3002
diff --git a/core/src/main/resources/hudson/slaves/ComputerLauncher/main.jelly b/core/src/main/resources/hudson/slaves/ComputerLauncher/main.jelly
index 698a2674ee..70b5aa9137 100644
--- a/core/src/main/resources/hudson/slaves/ComputerLauncher/main.jelly
+++ b/core/src/main/resources/hudson/slaves/ComputerLauncher/main.jelly
@@ -34,7 +34,7 @@ THE SOFTWARE.
@@ -42,7 +42,7 @@ THE SOFTWARE.
diff --git a/core/src/main/resources/hudson/slaves/ComputerLauncher/main_bg.properties b/core/src/main/resources/hudson/slaves/ComputerLauncher/main_bg.properties
deleted file mode 100644
index 6f764d513e..0000000000
--- a/core/src/main/resources/hudson/slaves/ComputerLauncher/main_bg.properties
+++ /dev/null
@@ -1,23 +0,0 @@
-# The MIT License
-#
-# Copyright (c) 2004-2010, Sun Microsystems, Inc.
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-# copies of the Software, and to permit persons to whom the Software is
-# furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included in
-# all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-# THE SOFTWARE.
-
-Launch\ slave\ agent=\u0421\u0442\u0430\u0440\u0442\u0438\u0440\u0430\u0439 \u0430\u0433\u0435\u043D\u0442\u0430 \u043D\u0430 \u043C\u0430\u0448\u0438\u043D\u0430\u0442\u0430
diff --git a/core/src/main/resources/hudson/slaves/ComputerLauncher/main_da.properties b/core/src/main/resources/hudson/slaves/ComputerLauncher/main_da.properties
index 16c2811216..51d84878fd 100644
--- a/core/src/main/resources/hudson/slaves/ComputerLauncher/main_da.properties
+++ b/core/src/main/resources/hudson/slaves/ComputerLauncher/main_da.properties
@@ -20,7 +20,5 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
-Launch\ slave\ agent=Start slave agenter
launchingDescription=Denne node er ved at starte op
See\ log\ for\ more\ details=Se loggen for flere detaljer
-Relaunch\ slave\ agent=Genstart slave agent
diff --git a/core/src/main/resources/hudson/slaves/ComputerLauncher/main_de.properties b/core/src/main/resources/hudson/slaves/ComputerLauncher/main_de.properties
index 0646fb1fb3..d9bfb36500 100644
--- a/core/src/main/resources/hudson/slaves/ComputerLauncher/main_de.properties
+++ b/core/src/main/resources/hudson/slaves/ComputerLauncher/main_de.properties
@@ -21,6 +21,3 @@
# THE SOFTWARE.
See\ log\ for\ more\ details=Mehr dazu im Systemprotokoll
-Launch\ slave\ agent=Slave-Agenten starten
-launchingDescription=Dieser Knoten ist offline, weil Jenkins den dortigen Slave-Agenten nicht starten konnte.
-Relaunch\ slave\ agent=Slave-Agenten neu starten
diff --git a/core/src/main/resources/hudson/slaves/ComputerLauncher/main_es.properties b/core/src/main/resources/hudson/slaves/ComputerLauncher/main_es.properties
index c999de630b..6d65f4a03f 100644
--- a/core/src/main/resources/hudson/slaves/ComputerLauncher/main_es.properties
+++ b/core/src/main/resources/hudson/slaves/ComputerLauncher/main_es.properties
@@ -22,5 +22,5 @@
launchingDescription=Este nodo va a ser ejecutado.
See\ log\ for\ more\ details=Echa un vistazo al log para ver mas detalles
-Launch\ slave\ agent=Lanzar agente esclavo
-Relaunch\ slave\ agent=Relanzar agente esclavo
+Launch\ agent=Lanzar agente
+Relaunch\ agent=Relanzar agente
diff --git a/core/src/main/resources/hudson/slaves/ComputerLauncher/main_fr.properties b/core/src/main/resources/hudson/slaves/ComputerLauncher/main_fr.properties
index 9607e04b05..5b28b80fdc 100644
--- a/core/src/main/resources/hudson/slaves/ComputerLauncher/main_fr.properties
+++ b/core/src/main/resources/hudson/slaves/ComputerLauncher/main_fr.properties
@@ -21,4 +21,3 @@
# THE SOFTWARE.
See\ log\ for\ more\ details=Voir les logs pour plus de détails
-Launch\ slave\ agent=Lancer l''agent esclave
diff --git a/core/src/main/resources/hudson/slaves/ComputerLauncher/main_ja.properties b/core/src/main/resources/hudson/slaves/ComputerLauncher/main_ja.properties
index 7d1cb847a6..1b6052a5e5 100644
--- a/core/src/main/resources/hudson/slaves/ComputerLauncher/main_ja.properties
+++ b/core/src/main/resources/hudson/slaves/ComputerLauncher/main_ja.properties
@@ -21,6 +21,4 @@
# THE SOFTWARE.
See\ log\ for\ more\ details=\u8A73\u7D30\u306F\u30ED\u30B0\u3092\u53C2\u7167
-Launch\ slave\ agent=\u30B9\u30EC\u30FC\u30D6\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u3092\u8D77\u52D5
-Relaunch\ slave\ agent=\u30B9\u30EC\u30FC\u30D6\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u3092\u518D\u8D77\u52D5
launchingDescription=\u3053\u306E\u30CE\u30FC\u30C9\u306F\u8D77\u52D5\u6E08\u307F\u3067\u3059\u3002
diff --git a/core/src/main/resources/hudson/slaves/ComputerLauncher/main_pt_BR.properties b/core/src/main/resources/hudson/slaves/ComputerLauncher/main_pt_BR.properties
index 58f89245df..4fc0b8c1b0 100644
--- a/core/src/main/resources/hudson/slaves/ComputerLauncher/main_pt_BR.properties
+++ b/core/src/main/resources/hudson/slaves/ComputerLauncher/main_pt_BR.properties
@@ -20,8 +20,6 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
-Relaunch\ slave\ agent=Relan\u00e7ar o agente slave
# This node is being launched.
launchingDescription=Este n\u00f3 est\u00e1 sendo lan\u00e7ado
-Launch\ slave\ agent=Lan\u00e7ar agente slave
See\ log\ for\ more\ details=Veja o log para mais detalhes
diff --git a/core/src/main/resources/hudson/slaves/ComputerLauncher/main_ru.properties b/core/src/main/resources/hudson/slaves/ComputerLauncher/main_ru.properties
deleted file mode 100644
index 90db7b8554..0000000000
--- a/core/src/main/resources/hudson/slaves/ComputerLauncher/main_ru.properties
+++ /dev/null
@@ -1,23 +0,0 @@
-# The MIT License
-#
-# Copyright (c) 2004-2010, Sun Microsystems, Inc.
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-# copies of the Software, and to permit persons to whom the Software is
-# furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included in
-# all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-# THE SOFTWARE.
-
-Launch\ slave\ agent=\u0412\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u0443\u0437\u0435\u043B
diff --git a/core/src/main/resources/hudson/slaves/ComputerLauncher/main_sv_SE.properties b/core/src/main/resources/hudson/slaves/ComputerLauncher/main_sv_SE.properties
index 42f78c2c36..61a5469b23 100644
--- a/core/src/main/resources/hudson/slaves/ComputerLauncher/main_sv_SE.properties
+++ b/core/src/main/resources/hudson/slaves/ComputerLauncher/main_sv_SE.properties
@@ -20,6 +20,5 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
-Launch\ slave\ agent=Starta agent
See\ log\ for\ more\ details=Se loggen f\u00F6r mer information
description=Denna nod \u00E4r fr\u00E5nkopplad eftersom Jenkins kunde inte starta agenten p\u00E5 noden.
diff --git a/core/src/main/resources/hudson/slaves/ComputerLauncher/main_zh_TW.properties b/core/src/main/resources/hudson/slaves/ComputerLauncher/main_zh_TW.properties
index 8505469b09..787a6ef670 100644
--- a/core/src/main/resources/hudson/slaves/ComputerLauncher/main_zh_TW.properties
+++ b/core/src/main/resources/hudson/slaves/ComputerLauncher/main_zh_TW.properties
@@ -22,5 +22,3 @@
launchingDescription=\u672C\u7BC0\u9EDE\u6B63\u5728\u555F\u52D5\u4E2D\u3002
See\ log\ for\ more\ details=\u67E5\u770B\u65E5\u8A8C\u53D6\u5F97\u8A73\u7D30\u8CC7\u6599
-Relaunch\ slave\ agent=\u91CD\u65B0\u555F\u52D5 Slave \u4EE3\u7406\u7A0B\u5F0F
-Launch\ slave\ agent=\u555F\u52D5 Slave \u4EE3\u7406\u7A0B\u5F0F
diff --git a/core/src/main/resources/hudson/slaves/DumbSlave/configure-entries_ru.properties b/core/src/main/resources/hudson/slaves/DumbSlave/configure-entries_ru.properties
index 453808d5bc..5a6688a923 100644
--- a/core/src/main/resources/hudson/slaves/DumbSlave/configure-entries_ru.properties
+++ b/core/src/main/resources/hudson/slaves/DumbSlave/configure-entries_ru.properties
@@ -20,14 +20,12 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
-Master/Slave\ Support=\u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0433\u043b\u0430\u0432\u043d\u044b\u0439/\u043f\u043e\u0434\u0447\u0438\u043d\u0435\u043d\u043d\u044b\u0439
Master=\u0413\u043b\u0430\u0432\u043d\u044b\u0439
Name=\u0418\u043c\u044f
Description=\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435
This\ Jenkins\ server=\u0421\u0435\u0440\u0432\u0435\u0440 Jenkins
\#\ of\ executors=\u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432-\u0438\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u0435\u0439
Local\ FS\ root=\u041a\u043e\u0440\u0435\u043d\u044c \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u0424\u0421
-Slaves=\u041f\u043e\u0434\u0447\u0438\u043d\u0435\u043d\u043d\u044b\u0435
Name\ is\ mandatory=\u0418\u043c\u044f \u0438\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044f \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0443\u043a\u0430\u0437\u0430\u043d\u043e
Number\ of\ executors\ is\ mandatory.=\u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0438\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u0435\u0439 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0443\u043a\u0430\u0437\u0430\u043d\u043e
Remote\ root\ directory=\u041a\u043e\u0440\u0435\u043d\u044c \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u043e\u0439 \u0424\u0421
diff --git a/core/src/main/resources/hudson/slaves/DumbSlave/newInstanceDetail.properties b/core/src/main/resources/hudson/slaves/DumbSlave/newInstanceDetail.properties
index 273ee6a2e6..70c380808f 100644
--- a/core/src/main/resources/hudson/slaves/DumbSlave/newInstanceDetail.properties
+++ b/core/src/main/resources/hudson/slaves/DumbSlave/newInstanceDetail.properties
@@ -21,7 +21,7 @@
# THE SOFTWARE.
detail=\
- Adds a plain, dumb slave to Jenkins. This is called "dumb" because Jenkins doesn\u2019t provide \
- higher level of integration with these slaves, such as dynamic provisioning. \
- Select this type if no other slave types apply — for example such as when you are adding \
+ Adds a plain, permanent agent to Jenkins. This is called "permanent" because Jenkins doesn\u2019t provide \
+ higher level of integration with these agents, such as dynamic provisioning. \
+ Select this type if no other agent types apply — for example such as when you are adding \
a physical computer, virtual machines managed outside Jenkins, etc.
diff --git a/core/src/main/resources/hudson/slaves/DumbSlave/newInstanceDetail_da.properties b/core/src/main/resources/hudson/slaves/DumbSlave/newInstanceDetail_da.properties
deleted file mode 100644
index 71e4c731a4..0000000000
--- a/core/src/main/resources/hudson/slaves/DumbSlave/newInstanceDetail_da.properties
+++ /dev/null
@@ -1,26 +0,0 @@
-# The MIT License
-#
-# Copyright (c) 2004-2010, Sun Microsystems, Inc. Kohsuke Kawaguchi. Knud Poulsen.
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-# copies of the Software, and to permit persons to whom the Software is
-# furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included in
-# all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-# THE SOFTWARE.
-
-detail=Tilf\u00f8jer en almindelig dum slave til Jenkins. Disse slaver kaldes ''dumme'' da Jenkins ikke \
-tilbyder et h\u00f8jere niveau af kontrol over disse slaver, s\u00e5som dynamisk provisionering. \
-V\u00e6lg denne type hvis ingen anden slavetype passer — for eksempel hvis du \
-tilf\u00f8jer en fysisk computer/ virtuel maskine bestyret udenfor Jenkins, mv.
diff --git a/core/src/main/resources/hudson/slaves/DumbSlave/newInstanceDetail_de.properties b/core/src/main/resources/hudson/slaves/DumbSlave/newInstanceDetail_de.properties
deleted file mode 100644
index 0941e45018..0000000000
--- a/core/src/main/resources/hudson/slaves/DumbSlave/newInstanceDetail_de.properties
+++ /dev/null
@@ -1,23 +0,0 @@
-# The MIT License
-#
-# Copyright (c) 2004-2009, Sun Microsystems, Inc., Kohsuke Kawaguchi
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-# copies of the Software, and to permit persons to whom the Software is
-# furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included in
-# all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-# THE SOFTWARE.
-
-detail=F\u00FCgt einen einfachen, simplen Slave-Knoten hinzu. Der Knotentyp hei\u00DFt "dumb" (=einfach, simpel), da er \u00FCber keine enge Integration mit Jenkins verf\u00FCgt, wie etwa dynamische Aktualisierungen. Verwenden Sie diesen Knotentyp, wenn keine anderen Knotentypen passen — zum Beispiel wenn Sie einen real existierenden Rechner hinzuf\u00FCgen oder virtuelle Maschinen erg\u00E4nzen, die ausserhalb von Jenkins verwaltet werden, usw.
diff --git a/core/src/main/resources/hudson/slaves/DumbSlave/newInstanceDetail_es.properties b/core/src/main/resources/hudson/slaves/DumbSlave/newInstanceDetail_es.properties
index fee95acacc..97159a9512 100644
--- a/core/src/main/resources/hudson/slaves/DumbSlave/newInstanceDetail_es.properties
+++ b/core/src/main/resources/hudson/slaves/DumbSlave/newInstanceDetail_es.properties
@@ -21,8 +21,8 @@
# THE SOFTWARE.
detail=\
- Añadir un esclavo pasivo a Jenkins. Es llamado ''pasivo'' porque Jenkins no provee ningun tipo de \
- integración de alto nivel con estos esclavos, como pueda ser aprovisionamiento dinámico. \
+ Añadir un agente permanente a Jenkins. Es llamado ''permanente'' porque Jenkins no provee ningun tipo de \
+ integración de alto nivel con estos agentes, como pueda ser aprovisionamiento dinámico. \
Selecciona este tipo si no hay ningún otro tipo mas adecuado. Por ejemplo cuando se añaden \
maquinas físicas o virtuales gestionadas desde fuera de Jenkins, etc.
diff --git a/core/src/main/resources/hudson/slaves/DumbSlave/newInstanceDetail_fr.properties b/core/src/main/resources/hudson/slaves/DumbSlave/newInstanceDetail_fr.properties
deleted file mode 100644
index 6aabb89a4e..0000000000
--- a/core/src/main/resources/hudson/slaves/DumbSlave/newInstanceDetail_fr.properties
+++ /dev/null
@@ -1,27 +0,0 @@
-# The MIT License
-#
-# Copyright (c) 2004-2009, Sun Microsystems, Inc., Kohsuke Kawaguchi, Eric Lefevre-Ardant
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-# copies of the Software, and to permit persons to whom the Software is
-# furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included in
-# all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-# THE SOFTWARE.
-
-detail=\
- Ajoute un esclave simple à Jenkins. Cet esclave est dit "passif" ("dumb") car Jenkins ne fournit pas \
- d''intégration d''un niveau plus élevé pour ce type d''esclave, comme le provisioning dynamique. \
- Sélectionnez ce type si aucun autre type d''esclave ne s''applique — par exemple quand vous \
- ajoutez un ordinateur physique, une machine virtuelle gérée séparément de Jenkins, etc.
diff --git a/core/src/main/resources/hudson/slaves/DumbSlave/newInstanceDetail_ja.properties b/core/src/main/resources/hudson/slaves/DumbSlave/newInstanceDetail_ja.properties
deleted file mode 100644
index 9e288307c5..0000000000
--- a/core/src/main/resources/hudson/slaves/DumbSlave/newInstanceDetail_ja.properties
+++ /dev/null
@@ -1,27 +0,0 @@
-# The MIT License
-#
-# Copyright (c) 2004-2009, Sun Microsystems, Inc., Kohsuke Kawaguchi, Seiji Sogabe
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-# copies of the Software, and to permit persons to whom the Software is
-# furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included in
-# all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-# THE SOFTWARE.
-
-detail=\
- \u30B7\u30F3\u30D7\u30EB\u3067\u57FA\u672C\u7684\u306A\u6A5F\u80FD\u3060\u3051\u3092\u6301\u3064\u30B9\u30EC\u30FC\u30D6\u3092\u8FFD\u52A0\u3057\u307E\u3059\u3002\u51E6\u7406\u91CF\u306B\u5FDC\u3058\u3066\u52D5\u7684\u306B\u30B9\u30EC\u30FC\u30D6\u3092\u8FFD\u52A0\u3059\u308B\u3088\u3046\u306A\u3001\
- \u9AD8\u30EC\u30D9\u30EB\u306E\u6A5F\u80FD\u3092\u63D0\u4F9B\u3057\u306A\u3044\u305F\u3081"\u30C0\u30E0(dumb)"\u3068\u547C\u3070\u308C\u307E\u3059\u3002\
- \u30B3\u30F3\u30D4\u30E5\u30FC\u30BF\u30FC\u3082\u3057\u304F\u306F\u3001Jenkins\u304C\u7BA1\u7406\u3057\u306A\u3044\u4EEE\u60F3\u30DE\u30B7\u30F3\u3092\u8FFD\u52A0\u3059\u308B\u3088\u3046\u306A\u3068\u304D\u306B\u3001\u4ED6\u306E\u30B9\u30EC\u30FC\u30D6\u3092\u5229\u7528\u3067\u304D\u306A\u3051\u308C\u3070\u3001\
- \u3053\u306E\u30BF\u30A4\u30D7\u3092\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044\u3002
diff --git a/core/src/main/resources/hudson/slaves/DumbSlave/newInstanceDetail_pt_BR.properties b/core/src/main/resources/hudson/slaves/DumbSlave/newInstanceDetail_pt_BR.properties
deleted file mode 100644
index 7a0e6597c5..0000000000
--- a/core/src/main/resources/hudson/slaves/DumbSlave/newInstanceDetail_pt_BR.properties
+++ /dev/null
@@ -1,28 +0,0 @@
-# The MIT License
-#
-# Copyright (c) 2004-2010, Sun Microsystems, Inc., Cleiber Silva, Fernando Boaglio
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-# copies of the Software, and to permit persons to whom the Software is
-# furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included in
-# all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-# THE SOFTWARE.
-
-# \
-# Adds a plain, dumb slave to Jenkins. This is called "dumb" because Jenkins doesn''t provide \
-# higher level of integration with these slaves, such as dynamic provisioning. \
-# Select this type if no other slave types apply — for example such as when you are adding \
-# a physical computer, virtual machines managed outside Jenkins, etc.
-detail=Adiciona um slave simples e burro ao Jenkins. \u00c9 chamado "burro" porque o Jenkins n\u00e3o prov\u00ea um maior n\u00edvel de integra\u00e7\u00e3o com estes slaves, como um provisionamento din\u00e2mico. Selecione este tipo se nenhum outro slave se aplica; por exemplo como quando voc\u00ea est\u00e1 adicionando um computador f\u00edsico, m\u00e1quinas virtuais gerenci\u00e1veis fora do Jenkins, etc.
diff --git a/core/src/main/resources/hudson/slaves/DumbSlave/newInstanceDetail_sv_SE.properties b/core/src/main/resources/hudson/slaves/DumbSlave/newInstanceDetail_sv_SE.properties
deleted file mode 100644
index 0887037441..0000000000
--- a/core/src/main/resources/hudson/slaves/DumbSlave/newInstanceDetail_sv_SE.properties
+++ /dev/null
@@ -1,3 +0,0 @@
-# This file is under the MIT License by authors
-
-detail=L\u00E4gger till en normal dum slav till Jenkins. Denna kallas "dum" eftersom Jenkins inte tillhandah\u00E5ller en h\u00F6gniv\u00E5integrering med slavarna, s\u00E5som dynamisk provisionering. V\u00E4lj denna typ om inga andra slavtyper g\u00E5r att till\u00E4mpa – som t ex n\u00E4r du l\u00E4gger till en fysisk dator, virtuella maskiner som hanteras utanf\u00F6r Jenkins, osv.
diff --git a/core/src/main/resources/hudson/slaves/DumbSlave/newInstanceDetail_zh_TW.properties b/core/src/main/resources/hudson/slaves/DumbSlave/newInstanceDetail_zh_TW.properties
deleted file mode 100644
index ea5e453e15..0000000000
--- a/core/src/main/resources/hudson/slaves/DumbSlave/newInstanceDetail_zh_TW.properties
+++ /dev/null
@@ -1,26 +0,0 @@
-# The MIT License
-#
-# Copyright (c) 2013, Chunghwa Telecom Co., Ltd., Pei-Tang Huang
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-# copies of the Software, and to permit persons to whom the Software is
-# furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included in
-# all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-# THE SOFTWARE.
-
-detail=\
- \u65b0\u589e\u967d\u6625 Slave \u5230 Jenkins \u88e1\u3002\
- \u4e4b\u6240\u4ee5\u53eb\u505a\u300c\u967d\u6625\u300d\uff0c\u662f\u56e0\u70ba Jenkins \u6c92\u6709\u63d0\u4f9b\u9019\u985e Slave \u4e00\u4e9b\u9032\u968e\u6574\u5408\u529f\u80fd\uff0c\u4f8b\u5982\u52d5\u614b\u4f48\u5efa\u3002\
- \u6c92\u6709\u5176\u4ed6\u9069\u5408\u7684 Slave \u985e\u578b\u6642\u53ef\u4ee5\u4f7f\u7528\uff0c\u4f8b\u5982\u591a\u52a0\u4e86\u4e00\u90e8\u96fb\u8166\uff0c\u6216\u662f\u4e0d\u53d7 Jenkins \u7ba1\u7406\u7684\u865b\u64ec\u6a5f\u5668...\u3002
diff --git a/core/src/main/resources/hudson/slaves/EnvironmentVariablesNodeProperty/config.jelly b/core/src/main/resources/hudson/slaves/EnvironmentVariablesNodeProperty/config.jelly
index 9cd7fbc2e6..b2becef5dc 100644
--- a/core/src/main/resources/hudson/slaves/EnvironmentVariablesNodeProperty/config.jelly
+++ b/core/src/main/resources/hudson/slaves/EnvironmentVariablesNodeProperty/config.jelly
@@ -24,13 +24,13 @@ THE SOFTWARE.
-
+
-
+
-
+
diff --git a/core/src/main/resources/hudson/slaves/EnvironmentVariablesNodeProperty/config_ca.properties b/core/src/main/resources/hudson/slaves/EnvironmentVariablesNodeProperty/config_ca.properties
index 1c81470a77..312c2fd01a 100644
--- a/core/src/main/resources/hudson/slaves/EnvironmentVariablesNodeProperty/config_ca.properties
+++ b/core/src/main/resources/hudson/slaves/EnvironmentVariablesNodeProperty/config_ca.properties
@@ -1,4 +1,4 @@
# This file is under the MIT License by authors
-name=nom
-value=valor
+Name=nom
+Value=valor
diff --git a/core/src/main/resources/hudson/slaves/EnvironmentVariablesNodeProperty/config_da.properties b/core/src/main/resources/hudson/slaves/EnvironmentVariablesNodeProperty/config_da.properties
index c433ae0a82..86e7383834 100644
--- a/core/src/main/resources/hudson/slaves/EnvironmentVariablesNodeProperty/config_da.properties
+++ b/core/src/main/resources/hudson/slaves/EnvironmentVariablesNodeProperty/config_da.properties
@@ -20,6 +20,6 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
-name=navn
-value=v\u00e6rdi
-List\ of\ key-value\ pairs=Liste af n\u00f8gle-v\u00e6rdi par
+Name=navn
+Value=v\u00e6rdi
+List\ of\ variables=Liste af n\u00f8gle-v\u00e6rdi par
diff --git a/core/src/main/resources/hudson/slaves/EnvironmentVariablesNodeProperty/config_de.properties b/core/src/main/resources/hudson/slaves/EnvironmentVariablesNodeProperty/config_de.properties
index b5a66fb491..ccbb48667e 100644
--- a/core/src/main/resources/hudson/slaves/EnvironmentVariablesNodeProperty/config_de.properties
+++ b/core/src/main/resources/hudson/slaves/EnvironmentVariablesNodeProperty/config_de.properties
@@ -20,6 +20,6 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
-List\ of\ key-value\ pairs=Liste der Schlüssel/Wert-Paare
-name=Name
-value=Wert
+List\ of\ variables=Liste der Variablen
+Name=Name
+Value=Wert
diff --git a/core/src/main/resources/hudson/slaves/EnvironmentVariablesNodeProperty/config_es.properties b/core/src/main/resources/hudson/slaves/EnvironmentVariablesNodeProperty/config_es.properties
index a490ffc34e..b0f51c8581 100644
--- a/core/src/main/resources/hudson/slaves/EnvironmentVariablesNodeProperty/config_es.properties
+++ b/core/src/main/resources/hudson/slaves/EnvironmentVariablesNodeProperty/config_es.properties
@@ -20,6 +20,6 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
-List\ of\ key-value\ pairs=Lista de nombre-valores
-name=nombre
-value=valor
+List\ of\ variables=Lista de nombre-valores
+Name=nombre
+Value=valor
diff --git a/core/src/main/resources/hudson/slaves/EnvironmentVariablesNodeProperty/config_es_AR.properties b/core/src/main/resources/hudson/slaves/EnvironmentVariablesNodeProperty/config_es_AR.properties
index c0989a3782..7ff0c10db6 100644
--- a/core/src/main/resources/hudson/slaves/EnvironmentVariablesNodeProperty/config_es_AR.properties
+++ b/core/src/main/resources/hudson/slaves/EnvironmentVariablesNodeProperty/config_es_AR.properties
@@ -1,4 +1,4 @@
# This file is under the MIT License by authors
-name=nombre
-value=valor
+Name=nombre
+Value=valor
diff --git a/core/src/main/resources/hudson/slaves/EnvironmentVariablesNodeProperty/config_fi.properties b/core/src/main/resources/hudson/slaves/EnvironmentVariablesNodeProperty/config_fi.properties
index 95f1c7a0dc..5ee81b48f5 100644
--- a/core/src/main/resources/hudson/slaves/EnvironmentVariablesNodeProperty/config_fi.properties
+++ b/core/src/main/resources/hudson/slaves/EnvironmentVariablesNodeProperty/config_fi.properties
@@ -20,6 +20,6 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
-List\ of\ key-value\ pairs=Lista avain-arvo pareja
-name=nimi
-value=arvo
+List\ of\ variables=Lista avain-arvo pareja
+Name=nimi
+Value=arvo
diff --git a/core/src/main/resources/hudson/slaves/EnvironmentVariablesNodeProperty/config_fr.properties b/core/src/main/resources/hudson/slaves/EnvironmentVariablesNodeProperty/config_fr.properties
index 1512c60d9f..5c0bd6de93 100644
--- a/core/src/main/resources/hudson/slaves/EnvironmentVariablesNodeProperty/config_fr.properties
+++ b/core/src/main/resources/hudson/slaves/EnvironmentVariablesNodeProperty/config_fr.properties
@@ -20,6 +20,6 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
-List\ of\ key-value\ pairs=Liste des paires clé-valeur
-name=nom
-value=valeur
+List\ of\ variables=Liste des paires clé-valeur
+Name=nom
+Value=valeur
diff --git a/core/src/main/resources/hudson/slaves/EnvironmentVariablesNodeProperty/config_he.properties b/core/src/main/resources/hudson/slaves/EnvironmentVariablesNodeProperty/config_he.properties
index d732df9452..fced55bf18 100644
--- a/core/src/main/resources/hudson/slaves/EnvironmentVariablesNodeProperty/config_he.properties
+++ b/core/src/main/resources/hudson/slaves/EnvironmentVariablesNodeProperty/config_he.properties
@@ -1,5 +1,5 @@
# This file is under the MIT License by authors
-List\ of\ key-value\ pairs=\u05E8\u05E9\u05D9\u05DE\u05D4 \u05E9\u05DC \u05E9\u05D3\u05D4-\u05E2\u05E8\u05DA
-name=\u05E9\u05DD
-value=\u05E2\u05E8\u05DA
+List\ of\ variables=\u05E8\u05E9\u05D9\u05DE\u05D4 \u05E9\u05DC \u05E9\u05D3\u05D4-\u05E2\u05E8\u05DA
+Name=\u05E9\u05DD
+Value=\u05E2\u05E8\u05DA
diff --git a/core/src/main/resources/hudson/slaves/EnvironmentVariablesNodeProperty/config_it.properties b/core/src/main/resources/hudson/slaves/EnvironmentVariablesNodeProperty/config_it.properties
index 155f8ee2f4..becdcdad03 100644
--- a/core/src/main/resources/hudson/slaves/EnvironmentVariablesNodeProperty/config_it.properties
+++ b/core/src/main/resources/hudson/slaves/EnvironmentVariablesNodeProperty/config_it.properties
@@ -1,5 +1,5 @@
# This file is under the MIT License by authors
-List\ of\ key-value\ pairs=Lista di coppie chiave-valore
-name=nome
-value=valore
+List\ of\ variables=Lista di coppie chiave-valore
+Name=nome
+Value=valore
diff --git a/core/src/main/resources/hudson/slaves/EnvironmentVariablesNodeProperty/config_ja.properties b/core/src/main/resources/hudson/slaves/EnvironmentVariablesNodeProperty/config_ja.properties
index c5a5bf79f8..d4ee4ce65b 100644
--- a/core/src/main/resources/hudson/slaves/EnvironmentVariablesNodeProperty/config_ja.properties
+++ b/core/src/main/resources/hudson/slaves/EnvironmentVariablesNodeProperty/config_ja.properties
@@ -20,6 +20,6 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
-List\ of\ key-value\ pairs=\u30AD\u30FC\u3068\u5024\u306E\u30EA\u30B9\u30C8
-name=\u30AD\u30FC
-value=\u5024
+List\ of\ variables=\u30AD\u30FC\u3068\u5024\u306E\u30EA\u30B9\u30C8
+Name=\u30AD\u30FC
+Value=\u5024
diff --git a/core/src/main/resources/hudson/slaves/EnvironmentVariablesNodeProperty/config_ko.properties b/core/src/main/resources/hudson/slaves/EnvironmentVariablesNodeProperty/config_ko.properties
index 328e56c2d4..3118f5607d 100644
--- a/core/src/main/resources/hudson/slaves/EnvironmentVariablesNodeProperty/config_ko.properties
+++ b/core/src/main/resources/hudson/slaves/EnvironmentVariablesNodeProperty/config_ko.properties
@@ -1,5 +1,5 @@
# This file is under the MIT License by authors
-List\ of\ key-value\ pairs=\uD0A4-\uAC12 \uBAA9\uB85D
-name=\uC774\uB984
-value=\uAC12
+List\ of\ variables=\uD0A4-\uAC12 \uBAA9\uB85D
+Name=\uC774\uB984
+Value=\uAC12
diff --git a/core/src/main/resources/hudson/slaves/EnvironmentVariablesNodeProperty/config_lt.properties b/core/src/main/resources/hudson/slaves/EnvironmentVariablesNodeProperty/config_lt.properties
index 106fcf9802..9c2b27879a 100644
--- a/core/src/main/resources/hudson/slaves/EnvironmentVariablesNodeProperty/config_lt.properties
+++ b/core/src/main/resources/hudson/slaves/EnvironmentVariablesNodeProperty/config_lt.properties
@@ -1,4 +1,4 @@
# This file is under the MIT License by authors
-name=pavadinimas
-value=reik\u0161m\u0117
+Name=pavadinimas
+Value=reik\u0161m\u0117
diff --git a/core/src/main/resources/hudson/slaves/EnvironmentVariablesNodeProperty/config_nb_NO.properties b/core/src/main/resources/hudson/slaves/EnvironmentVariablesNodeProperty/config_nb_NO.properties
index 934d2f3a66..63f92aa213 100644
--- a/core/src/main/resources/hudson/slaves/EnvironmentVariablesNodeProperty/config_nb_NO.properties
+++ b/core/src/main/resources/hudson/slaves/EnvironmentVariablesNodeProperty/config_nb_NO.properties
@@ -20,6 +20,6 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
-List\ of\ key-value\ pairs=Liste over n\u00F8kkel-verdi par
-name=N\u00F8kkel
-value=Verdi
+List\ of\ variables=Liste over n\u00F8kkel-verdi par
+Name=N\u00F8kkel
+Value=Verdi
diff --git a/core/src/main/resources/hudson/slaves/EnvironmentVariablesNodeProperty/config_nl.properties b/core/src/main/resources/hudson/slaves/EnvironmentVariablesNodeProperty/config_nl.properties
index ccdff27ce1..47de859a2b 100644
--- a/core/src/main/resources/hudson/slaves/EnvironmentVariablesNodeProperty/config_nl.properties
+++ b/core/src/main/resources/hudson/slaves/EnvironmentVariablesNodeProperty/config_nl.properties
@@ -20,6 +20,6 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
-List\ of\ key-value\ pairs=Lijst van sleutel-waarde-paren
-name=naam
-value=waarde
+List\ of\ variables=Lijst van sleutel-waarde-paren
+Name=naam
+Value=waarde
diff --git a/core/src/main/resources/hudson/slaves/EnvironmentVariablesNodeProperty/config_pl.properties b/core/src/main/resources/hudson/slaves/EnvironmentVariablesNodeProperty/config_pl.properties
index 6590886f6c..7774f0d27f 100644
--- a/core/src/main/resources/hudson/slaves/EnvironmentVariablesNodeProperty/config_pl.properties
+++ b/core/src/main/resources/hudson/slaves/EnvironmentVariablesNodeProperty/config_pl.properties
@@ -1,5 +1,5 @@
# This file is under the MIT License by authors
-List\ of\ key-value\ pairs=Lista par klucz-warto\u015B\u0107
-name=nazwa
-value=warto\u015B\u0107
+List\ of\ variables=Lista par klucz-warto\u015B\u0107
+Name=nazwa
+Value=warto\u015B\u0107
diff --git a/core/src/main/resources/hudson/slaves/EnvironmentVariablesNodeProperty/config_pt_BR.properties b/core/src/main/resources/hudson/slaves/EnvironmentVariablesNodeProperty/config_pt_BR.properties
index c1c03bf6e8..4d580ac490 100644
--- a/core/src/main/resources/hudson/slaves/EnvironmentVariablesNodeProperty/config_pt_BR.properties
+++ b/core/src/main/resources/hudson/slaves/EnvironmentVariablesNodeProperty/config_pt_BR.properties
@@ -20,6 +20,6 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
-value=valor
-name=nome
-List\ of\ key-value\ pairs=Lista de pares de chave-valor
+Value=valor
+Name=nome
+List\ of\ variables=Lista de pares de chave-valor
diff --git a/core/src/main/resources/hudson/slaves/EnvironmentVariablesNodeProperty/config_pt_PT.properties b/core/src/main/resources/hudson/slaves/EnvironmentVariablesNodeProperty/config_pt_PT.properties
index 7454a85ecc..a1bab80dd3 100644
--- a/core/src/main/resources/hudson/slaves/EnvironmentVariablesNodeProperty/config_pt_PT.properties
+++ b/core/src/main/resources/hudson/slaves/EnvironmentVariablesNodeProperty/config_pt_PT.properties
@@ -1,5 +1,5 @@
# This file is under the MIT License by authors
-List\ of\ key-value\ pairs=Lista de pares chave-valor
-name=nome
-value=valor
+List\ of\ variables=Lista de pares chave-valor
+Name=nome
+Value=valor
diff --git a/core/src/main/resources/hudson/slaves/EnvironmentVariablesNodeProperty/config_ru.properties b/core/src/main/resources/hudson/slaves/EnvironmentVariablesNodeProperty/config_ru.properties
index 369f0bf033..bdb277f7a1 100644
--- a/core/src/main/resources/hudson/slaves/EnvironmentVariablesNodeProperty/config_ru.properties
+++ b/core/src/main/resources/hudson/slaves/EnvironmentVariablesNodeProperty/config_ru.properties
@@ -20,6 +20,6 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
-List\ of\ key-value\ pairs=\u0421\u043F\u0438\u0441\u043E\u043A \u043F\u0430\u0440 "\u043A\u043B\u044E\u0447-\u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435"
-name=\u0438\u043C\u044F
-value=\u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435
+List\ of\ variables=\u0421\u043F\u0438\u0441\u043E\u043A \u043F\u0430\u0440 "\u043A\u043B\u044E\u0447-\u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435"
+Name=\u0438\u043C\u044F
+Value=\u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435
diff --git a/core/src/main/resources/hudson/slaves/EnvironmentVariablesNodeProperty/config_sk.properties b/core/src/main/resources/hudson/slaves/EnvironmentVariablesNodeProperty/config_sk.properties
index 7cbfa3b055..5d8d7592e3 100644
--- a/core/src/main/resources/hudson/slaves/EnvironmentVariablesNodeProperty/config_sk.properties
+++ b/core/src/main/resources/hudson/slaves/EnvironmentVariablesNodeProperty/config_sk.properties
@@ -1,5 +1,5 @@
# This file is under the MIT License by authors
-List\ of\ key-value\ pairs=Zoznam p\u00E1rov k\u013E\u00FA\u010D - hodnota
-name=k\u013E\u00FA\u010D
-value=hodnota
+List\ of\ variables=Zoznam p\u00E1rov k\u013E\u00FA\u010D - hodnota
+Name=k\u013E\u00FA\u010D
+Value=hodnota
diff --git a/core/src/main/resources/hudson/slaves/EnvironmentVariablesNodeProperty/config_sv_SE.properties b/core/src/main/resources/hudson/slaves/EnvironmentVariablesNodeProperty/config_sv_SE.properties
index 89f32c98c5..2c29646a5c 100644
--- a/core/src/main/resources/hudson/slaves/EnvironmentVariablesNodeProperty/config_sv_SE.properties
+++ b/core/src/main/resources/hudson/slaves/EnvironmentVariablesNodeProperty/config_sv_SE.properties
@@ -20,6 +20,6 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
-List\ of\ key-value\ pairs=Lista p\u00E5 nyckel-v\u00E4rde par
-name=namn
-value=v\u00E4rde
+List\ of\ variables=Lista p\u00E5 nyckel-v\u00E4rde par
+Name=namn
+Value=v\u00E4rde
diff --git a/core/src/main/resources/hudson/slaves/EnvironmentVariablesNodeProperty/config_zh_CN.properties b/core/src/main/resources/hudson/slaves/EnvironmentVariablesNodeProperty/config_zh_CN.properties
index 3d6d6b76d8..e70d102c3c 100644
--- a/core/src/main/resources/hudson/slaves/EnvironmentVariablesNodeProperty/config_zh_CN.properties
+++ b/core/src/main/resources/hudson/slaves/EnvironmentVariablesNodeProperty/config_zh_CN.properties
@@ -20,6 +20,6 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
-List\ of\ key-value\ pairs=\u952E\u503C\u5BF9\u5217\u8868
-name=\u952E
-value=\u503c
+List\ of\ variables=\u952E\u503C\u5BF9\u5217\u8868
+Name=\u952E
+Value=\u503c
diff --git a/core/src/main/resources/hudson/slaves/EnvironmentVariablesNodeProperty/config_zh_TW.properties b/core/src/main/resources/hudson/slaves/EnvironmentVariablesNodeProperty/config_zh_TW.properties
index 7176ec4fa6..ad09037b0f 100644
--- a/core/src/main/resources/hudson/slaves/EnvironmentVariablesNodeProperty/config_zh_TW.properties
+++ b/core/src/main/resources/hudson/slaves/EnvironmentVariablesNodeProperty/config_zh_TW.properties
@@ -21,6 +21,6 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
-List\ of\ key-value\ pairs=Key-Value \u5c0d\u61c9\u6e05\u55ae
-name=\u540d\u7a31
-value=\u503c
+List\ of\ variables=Key-Value \u5c0d\u61c9\u6e05\u55ae
+Name=\u540d\u7a31
+Value=\u503c
diff --git a/core/src/main/resources/hudson/slaves/JNLPLauncher/help-vmargs.html b/core/src/main/resources/hudson/slaves/JNLPLauncher/help-vmargs.html
index a790e8cb3c..085afd9482 100644
--- a/core/src/main/resources/hudson/slaves/JNLPLauncher/help-vmargs.html
+++ b/core/src/main/resources/hudson/slaves/JNLPLauncher/help-vmargs.html
@@ -1,5 +1,5 @@
- If the slave JVM should be launched with additional VM arguments, such as "-Xmx256m",
+ If the agent JVM should be launched with additional VM arguments, such as "-Xmx256m",
specify those here. List of all the options are available
here.
\ No newline at end of file
diff --git a/core/src/main/resources/hudson/slaves/JNLPLauncher/help-vmargs_de.html b/core/src/main/resources/hudson/slaves/JNLPLauncher/help-vmargs_de.html
deleted file mode 100644
index cba877b87d..0000000000
--- a/core/src/main/resources/hudson/slaves/JNLPLauncher/help-vmargs_de.html
+++ /dev/null
@@ -1,5 +0,0 @@
-
- Soll die Slave-JVM mit zusätzlichen VM-Argumenten gestartet werden, z.B. "-Xmx256m",
- können Sie diese hier angeben. Eine Liste aller unterstützten Optionen finden Sie
- hier.
-
\ No newline at end of file
diff --git a/core/src/main/resources/hudson/slaves/JNLPLauncher/help-vmargs_zh_TW.html b/core/src/main/resources/hudson/slaves/JNLPLauncher/help-vmargs_zh_TW.html
deleted file mode 100644
index c60736e61b..0000000000
--- a/core/src/main/resources/hudson/slaves/JNLPLauncher/help-vmargs_zh_TW.html
+++ /dev/null
@@ -1,4 +0,0 @@
-
\ No newline at end of file
diff --git a/core/src/main/resources/hudson/slaves/JNLPLauncher/help.properties b/core/src/main/resources/hudson/slaves/JNLPLauncher/help.properties
index b0c7d4df39..6d4dfb1b47 100644
--- a/core/src/main/resources/hudson/slaves/JNLPLauncher/help.properties
+++ b/core/src/main/resources/hudson/slaves/JNLPLauncher/help.properties
@@ -20,7 +20,12 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
-blurb=Starts a slave by launching an agent program through JNLP. \
- The launch in this case is initiated by the slave, \
- thus slaves need not be IP reachable from the master (e.g. behind the firewall.) \
- It is still possible to start a launch without GUI, for example as a Windows service.
\ No newline at end of file
+blurb=Allows an agent to be launched using Java Web Start. \
+ In this case, a JNLP file must be opened on the agent machine, which will \
+ establish a TCP connection to the Jenkins master. \
+ This means that the agent need not be reachable from the master; the agent \
+ just needs to be able to reach the master. If you have enabled security via \
+ the Configure Global Security page, you can customise the port on \
+ which the Jenkins master will listen for incoming JNLP agent connections. \
+ By default, the JNLP agent will launch a GUI, but it's also possible to run \
+ a JNLP agent without a GUI, e.g. as a Window service.
diff --git a/core/src/main/resources/hudson/slaves/JNLPLauncher/help_da.properties b/core/src/main/resources/hudson/slaves/JNLPLauncher/help_da.properties
deleted file mode 100644
index 9a21976acd..0000000000
--- a/core/src/main/resources/hudson/slaves/JNLPLauncher/help_da.properties
+++ /dev/null
@@ -1,26 +0,0 @@
-# The MIT License
-#
-# Copyright (c) 2004-2010, Sun Microsystems, Inc. Kohsuke Kawaguchi. Knud Poulsen.
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-# copies of the Software, and to permit persons to whom the Software is
-# furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included in
-# all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-# THE SOFTWARE.
-
-blurb=Starter en slave via et agentprogram gennem JNLP. \
-Slave opstarten bliver i dette tilf\u00e6lde initieret af slaven, \
-s\u00e5ledes beh\u00f8ver slaven i dette tilf\u00e6lde ikke at v\u00e6re IP tilg\u00e6ngelig fra master''en (f.eks. bag en firewall.) \
-Det er ogs\u00e5 her muligt at starte slaven uden GUI, for eksempel som en Windows service.
diff --git a/core/src/main/resources/hudson/slaves/JNLPLauncher/help_de.properties b/core/src/main/resources/hudson/slaves/JNLPLauncher/help_de.properties
deleted file mode 100644
index 0481b8a47c..0000000000
--- a/core/src/main/resources/hudson/slaves/JNLPLauncher/help_de.properties
+++ /dev/null
@@ -1,29 +0,0 @@
-# The MIT License
-#
-# Copyright (c) 2004-2009, Sun Microsystems, Inc., Seiji Sogabe
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-# copies of the Software, and to permit persons to whom the Software is
-# furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included in
-# all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-# THE SOFTWARE.
-
-blurb=\
- Schaltet einen Slave ein, indem ein Agent über \
- JNLP gestartet wird. \
- Da der Start in diesem Fall vom Slave aus initiiert wird, muss der Slave nicht \
- per IP-Adresse von Master aus erreichbar sein (z.B. wenn der Slave hinter einer \
- Firewall liegt). Es ist weiterhin möglich, den Slave ohne Benutzeroberfläche \
- zu starten, z.B. als Windows Dienst.
diff --git a/core/src/main/resources/hudson/slaves/JNLPLauncher/help_es.properties b/core/src/main/resources/hudson/slaves/JNLPLauncher/help_es.properties
index 76bb39241a..26aee9fd3a 100644
--- a/core/src/main/resources/hudson/slaves/JNLPLauncher/help_es.properties
+++ b/core/src/main/resources/hudson/slaves/JNLPLauncher/help_es.properties
@@ -20,7 +20,7 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
-blurb=Arranca un esclavo ejecutando un programa agente usando JNLP.\
- De modo que el esclavo inicia la ejecución, por lo que los esclavos no necesitan una IP accesible desde el master. \
+blurb=Arranca un agente haciendo uso de JNLP.\
+ De modo que el agente inicia la ejecución, por lo que los agentes no necesitan una IP accesible desde el master. \
Incluso es posible arrancar una ejecución sin GUI, como puede ser un servicio Windows.
diff --git a/core/src/main/resources/hudson/slaves/JNLPLauncher/help_fr.properties b/core/src/main/resources/hudson/slaves/JNLPLauncher/help_fr.properties
deleted file mode 100644
index 796bd6c006..0000000000
--- a/core/src/main/resources/hudson/slaves/JNLPLauncher/help_fr.properties
+++ /dev/null
@@ -1,26 +0,0 @@
-# The MIT License
-#
-# Copyright (c) 2004-2009, Sun Microsystems, Inc., Seiji Sogabe, Eric Lefevre-Ardant
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-# copies of the Software, and to permit persons to whom the Software is
-# furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included in
-# all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-# THE SOFTWARE.
-
-blurb=Lance un esclave en démarrant un agent par JNLP. \
- Le lancement dans ce cas est initié par l''esclave ; \
- ainsi, les esclaves n''ont pas besoin d''être accessibles par IP par la machine maître (par exemple s''ils sont derrière un firewall.) \
- Il reste possible de lancer un démarrage sans GUI, par exemple par un service Windows.
diff --git a/core/src/main/resources/hudson/slaves/JNLPLauncher/help_ja.properties b/core/src/main/resources/hudson/slaves/JNLPLauncher/help_ja.properties
deleted file mode 100644
index 6318fac04e..0000000000
--- a/core/src/main/resources/hudson/slaves/JNLPLauncher/help_ja.properties
+++ /dev/null
@@ -1,25 +0,0 @@
-# The MIT License
-#
-# Copyright (c) 2004-2009, Sun Microsystems, Inc., Seiji Sogabe
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-# copies of the Software, and to permit persons to whom the Software is
-# furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included in
-# all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-# THE SOFTWARE.
-
-blurb=JNLP\u7D4C\u7531\u3067\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u30D7\u30ED\u30B0\u30E9\u30E0\u3092\u5B9F\u884C\u3059\u308B\u3053\u3068\u3067\u30B9\u30EC\u30FC\u30D6\u3092\u8D77\u52D5\u3057\u307E\u3059\u3002\
- \u3053\u306E\u5834\u5408\u8D77\u52D5\u306F\u30B9\u30EC\u30FC\u30D6\u304B\u3089\u958B\u59CB\u3059\u308B\u306E\u3067\u3001\u30B9\u30EC\u30FC\u30D6\u306F\u30DE\u30B9\u30BF\u304B\u3089IP\u30EA\u30FC\u30C1\u30E3\u30D6\u30EB\u3067\u3042\u308B\u5FC5\u8981\u306F\u3042\u308A\u307E\u305B\u3093(\u4F8B \u30D5\u30A1\u30A4\u30A2\u30FC\u30A6\u30A9\u30FC\u30EB\u306E\u4E2D\u306A\u3069)\u3002\
- \u4F8B\u3048\u3070Windows\u30B5\u30FC\u30D3\u30B9\u306A\u3069\u3001GUI\u306A\u3057\u3067\u3082\u8D77\u52D5\u3059\u308B\u3053\u3068\u304C\u3067\u304D\u307E\u3059\u3002
diff --git a/core/src/main/resources/hudson/slaves/JNLPLauncher/help_pt_BR.properties b/core/src/main/resources/hudson/slaves/JNLPLauncher/help_pt_BR.properties
deleted file mode 100644
index 7aee9cf2b8..0000000000
--- a/core/src/main/resources/hudson/slaves/JNLPLauncher/help_pt_BR.properties
+++ /dev/null
@@ -1,31 +0,0 @@
-# The MIT License
-#
-# Copyright (c) 2004-2010, Sun Microsystems, Inc., Cleiber Silva, Fernando Boaglio
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-# copies of the Software, and to permit persons to whom the Software is
-# furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included in
-# all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-# THE SOFTWARE.
-
-# Starts a slave by launching an agent program through JNLP. \
-# The launch in this case is initiated by the slave, \
-# thus slaves need not be IP reachable from the master (e.g. behind the firewall.) \
-# It is still possible to start a launch without GUI, for example as a Windows service.
-blurb=Iniciar um slave pelo programa agente JNLP. \
- Nesse caso, o lan\u00e7amento \u00e9 iniciado pelo slave, \
- porem o endere\u00e7o IP do Slave precisa ser alcan\u00e7avel pelo master (ex.: firewall ou proxy),
- Tamb\u00e9m \u00e9 possivel lan\u00e7ar sem GUI, por exemplo como um servi\u00e7o do Windows.
-
diff --git a/core/src/main/resources/hudson/slaves/JNLPLauncher/help_zh_TW.properties b/core/src/main/resources/hudson/slaves/JNLPLauncher/help_zh_TW.properties
deleted file mode 100644
index 19db6e81ff..0000000000
--- a/core/src/main/resources/hudson/slaves/JNLPLauncher/help_zh_TW.properties
+++ /dev/null
@@ -1,25 +0,0 @@
-# The MIT License
-#
-# Copyright (c) 2013, Chunghwa Telecom Co., Ltd., Pei-Tang Huang
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-# copies of the Software, and to permit persons to whom the Software is
-# furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included in
-# all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-# THE SOFTWARE.
-
-blurb=\u900f\u904e JNLP \u555f\u52d5 Slave \u4ee3\u7406\u7a0b\u5f0f\u3002\
- \u7531 Slave \u4e3b\u52d5\u7684\u555f\u52d5\u65b9\u5f0f\uff0cMaster \u4e0d\u7528\u76f4\u63a5 IP \u9023\u7dda\u5230 Slave (\u4f8b\u5982\u5728\u9632\u706b\u7246\u5f8c)\u3002\
- \u9019\u7a2e\u65b9\u5f0f\u4e00\u6a23\u53ef\u4ee5\u4e0d\u900f\u904e GUI \u555f\u52d5\uff0c\u4f8b\u5982\u5b89\u88dd\u6210 Windows \u670d\u52d9\u3002
diff --git a/core/src/main/resources/hudson/slaves/JNLPLauncher/main.jelly b/core/src/main/resources/hudson/slaves/JNLPLauncher/main.jelly
index 1e99285e5c..e371a9b040 100644
--- a/core/src/main/resources/hudson/slaves/JNLPLauncher/main.jelly
+++ b/core/src/main/resources/hudson/slaves/JNLPLauncher/main.jelly
@@ -34,7 +34,7 @@ THE SOFTWARE.
- ${%Connect slave to Jenkins one of these ways:}
+ ${%Connect agent to Jenkins one of these ways:}
@@ -42,20 +42,20 @@ THE SOFTWARE.
- ${%Launch agent from browser on slave}
+ ${%Launch agent from browser}
- ${%Run from slave command line:}
+ ${%Run from agent command line:}
diff --git a/core/src/main/resources/hudson/slaves/JNLPLauncher/main.properties b/core/src/main/resources/hudson/slaves/JNLPLauncher/main.properties
index b73c1bc2b2..d4770fa4c7 100644
--- a/core/src/main/resources/hudson/slaves/JNLPLauncher/main.properties
+++ b/core/src/main/resources/hudson/slaves/JNLPLauncher/main.properties
@@ -20,5 +20,4 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
-slaveAgentPort.disabled=TCP port for JNLP slave agents is disabled.
configure.link.text=Go to security configuration screen and change it
diff --git a/core/src/main/resources/hudson/slaves/JNLPLauncher/main_da.properties b/core/src/main/resources/hudson/slaves/JNLPLauncher/main_da.properties
index af983756bd..e34b1b1c53 100644
--- a/core/src/main/resources/hudson/slaves/JNLPLauncher/main_da.properties
+++ b/core/src/main/resources/hudson/slaves/JNLPLauncher/main_da.properties
@@ -20,10 +20,5 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
-Connect\ slave\ to\ Jenkins\ one\ of\ these\ ways\:=Forbind Jenkins til slaver p\u00e5 en af f\u00f8lgende m\u00e5der:
launch\ agent=start agent
Connected\ via\ JNLP\ agent.=Forbundet via JNLP agent.
-Or\ if\ the\ slave\ is\ headless\:=Eller hvis slaven er hovedl\u00f8s:
-Run\ from\ slave\ command\ line\:=K\u00f8r fra slavens kommandolinje:
-slaveAgentPort.disabled=TCP port for JNLP slave agent er sl\u00e5et fra.
-Launch\ agent\ from\ browser\ on\ slave=Start agent fra browser p\u00e5 slaven
diff --git a/core/src/main/resources/hudson/slaves/JNLPLauncher/main_de.properties b/core/src/main/resources/hudson/slaves/JNLPLauncher/main_de.properties
index c3c9a4be4a..80908374b0 100644
--- a/core/src/main/resources/hudson/slaves/JNLPLauncher/main_de.properties
+++ b/core/src/main/resources/hudson/slaves/JNLPLauncher/main_de.properties
@@ -20,11 +20,6 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
-slaveAgentPort.disabled=TCP-Port für JNLP-Slaves ist deaktiviert.
configure.link.text=Zur globalen Sicherheitskonfiguration wechseln und ändern
-Connect\ slave\ to\ Jenkins\ one\ of\ these\ ways\:=Der Slave kann eine Verbindung zum Jenkins-Master mit einer der folgenden Möglichkeiten aufbauen:
launch\ agent=Agent starten
-Launch\ agent\ from\ browser\ on\ slave=Agent aus einem Webbrowser auf den Slave starten
-Run\ from\ slave\ command\ line\:=Agent aus der Kommandozeile heraus starten:
-Or\ if\ the\ slave\ is\ headless\:=Oder falls der Slave keine GUI anbietet ("headless"-Modus):
Connected\ via\ JNLP\ agent.=Verbunden über JNLP-Agent.
diff --git a/core/src/main/resources/hudson/slaves/JNLPLauncher/main_es.properties b/core/src/main/resources/hudson/slaves/JNLPLauncher/main_es.properties
index b47a4cb7bd..390cf03a39 100644
--- a/core/src/main/resources/hudson/slaves/JNLPLauncher/main_es.properties
+++ b/core/src/main/resources/hudson/slaves/JNLPLauncher/main_es.properties
@@ -20,11 +20,11 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
-slaveAgentPort.disabled=El puerto TCP para los agentes esclavos via JNLP está deshabilitado.
+slaveAgentPort.disabled=El puerto TCP para los agentes via JNLP está deshabilitado.
launch\ agent=Lanzar agente
-Or\ if\ the\ slave\ is\ headless\:=O si el esclavo no tiene pantalla
-Run\ from\ slave\ command\ line\:=Ejecutar desde la línea de comandos del esclavo
-Launch\ agent\ from\ browser\ on\ slave=Lanzar el agente desde el navegador en el esclavo
-Connect\ slave\ to\ Jenkins\ one\ of\ these\ ways\:=Conectar el esclavo a Jenkins usando uno de estos métodos
+Or\ if\ the\ agent\ is\ headless\:=O si el agente no tiene pantalla
+Run\ from\ agent\ command\ line\:=Ejecutar agente desde la línea de comandos del nodo
+Launch\ agent\ from\ browser=Lanzar el agente desde el navegador en el nodo
+Connect\ agent\ to\ Jenkins\ one\ of\ these\ ways\:=Conectar el agente a Jenkins usando uno de estos métodos
Connected\ via\ JNLP\ agent.=Conectado a través del agente JNLP
diff --git a/core/src/main/resources/hudson/slaves/JNLPLauncher/main_fr.properties b/core/src/main/resources/hudson/slaves/JNLPLauncher/main_fr.properties
index d8483c0298..e0bca578cf 100644
--- a/core/src/main/resources/hudson/slaves/JNLPLauncher/main_fr.properties
+++ b/core/src/main/resources/hudson/slaves/JNLPLauncher/main_fr.properties
@@ -20,9 +20,7 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
-slaveAgentPort.disabled=Le port TCP pour l''esclave JNLP est d\u00E9sactiv\u00E9.
-Launch\ agent\ from\ browser\ on\ slave=Lancer l''agent \u00E0 partir du navigateur sur l''esclave
-Run\ from\ slave\ command\ line:=Ex\u00E9cuter l''esclave \u00E0 partir de l\u2019interpr\u00E8te de commandes
+Run\ from\ agent\ command\ line:=Ex\u00E9cuter l''esclave \u00E0 partir de l\u2019interpr\u00E8te de commandes
launch\ agent=lancer l''agent
-Connect\ slave\ to\ Jenkins\ one\ of\ these\ ways:=Connecter l''esclave \u00E0 Jenkins avec l''une des mani\u00E8res suivantes:
+Connect\ agent\ to\ Jenkins\ one\ of\ these\ ways:=Connecter l''esclave \u00E0 Jenkins avec l''une des mani\u00E8res suivantes:
Connected\ via\ JNLP\ agent.=Connect\u00E9 via l\u2019agent JNLP.
diff --git a/core/src/main/resources/hudson/slaves/JNLPLauncher/main_ja.properties b/core/src/main/resources/hudson/slaves/JNLPLauncher/main_ja.properties
index 224e551095..49e9af614f 100644
--- a/core/src/main/resources/hudson/slaves/JNLPLauncher/main_ja.properties
+++ b/core/src/main/resources/hudson/slaves/JNLPLauncher/main_ja.properties
@@ -20,11 +20,6 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
-slaveAgentPort.disabled=JNLP\u30b9\u30ec\u30fc\u30d6\u30a8\u30fc\u30b8\u30a7\u30f3\u30c8\u7528\u306eTCP\u30dd\u30fc\u30c8\u306f\u4f7f\u7528\u3067\u304d\u307e\u305b\u3093\u3002
-Connect\ slave\ to\ Jenkins\ one\ of\ these\ ways\:=\u6b21\u306e\u3044\u305a\u308c\u304b\u306e\u65b9\u6cd5\u3067\u30b9\u30ec\u30fc\u30d6\u3092Jenkins\u306b\u63a5\u7d9a\u3057\u307e\u3059\u3002
launch\ agent=\u30a8\u30fc\u30b8\u30a7\u30f3\u30c8\u306e\u8d77\u52d5
-Launch\ agent\ from\ browser\ on\ slave=\u30b9\u30ec\u30fc\u30d6\u4e0a\u306e\u30d6\u30e9\u30a6\u30b6\u304b\u3089\u30a8\u30fc\u30b8\u30a7\u30f3\u30c8\u3092\u8d77\u52d5
-Run\ from\ slave\ command\ line\:=\u30b9\u30ec\u30fc\u30d6\u3067\u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u304b\u3089\u8d77\u52d5:
-Or\ if\ the\ slave\ is\ headless\:=\u3082\u3057\u304f\u306f\u3001\u30b9\u30ec\u30fc\u30d6\u3067X\u304c\u8d77\u52d5\u3057\u3066\u3044\u306a\u3044\u5834\u5408:
Connected\ via\ JNLP\ agent.=JNLP\u30a8\u30fc\u30b8\u30a7\u30f3\u30c8\u7d4c\u7531\u3067\u63a5\u7d9a
-configure.link.text=\u30b0\u30ed\u30fc\u30d0\u30eb\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u306e\u8a2d\u5b9a\u30da\u30fc\u30b8\u3067\u5909\u66f4\u3057\u3066\u304f\u3060\u3055\u3044\u3002
\ No newline at end of file
+configure.link.text=\u30b0\u30ed\u30fc\u30d0\u30eb\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u306e\u8a2d\u5b9a\u30da\u30fc\u30b8\u3067\u5909\u66f4\u3057\u3066\u304f\u3060\u3055\u3044\u3002
diff --git a/core/src/main/resources/hudson/slaves/JNLPLauncher/main_pt_BR.properties b/core/src/main/resources/hudson/slaves/JNLPLauncher/main_pt_BR.properties
index a20ddaa4b9..af9f3c2747 100644
--- a/core/src/main/resources/hudson/slaves/JNLPLauncher/main_pt_BR.properties
+++ b/core/src/main/resources/hudson/slaves/JNLPLauncher/main_pt_BR.properties
@@ -20,13 +20,9 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
-Or\ if\ the\ slave\ is\ headless\:=Ou, se o slave \u00e9 sem master
-Connect\ slave\ to\ Jenkins\ one\ of\ these\ ways\:=Conecta slave ao Jenkins por uma dessas maneiras:
-Run\ from\ slave\ command\ line\:=Executar comando de linha pelo slave
launch\ agent=Lan\u00e7ar agente
# TCP port for JNLP slave agents is disabled.
slaveAgentPort.disabled=Porta TCP para JNLP est\u00e1 desativada
-Launch\ agent\ from\ browser\ on\ slave=Lan\u00e7ar agente de um navegador do slave
Connected\ via\ JNLP\ agent.=Conectado via JNLP agente.
# Go to security configuration screen and change it
configure.link.text=V\u00e1 para a p\u00e1gina de configura\u00e7\u00e3o de seguran\u00e7a para alterar
diff --git a/core/src/main/resources/hudson/slaves/JNLPLauncher/main_ru.properties b/core/src/main/resources/hudson/slaves/JNLPLauncher/main_ru.properties
index ce15ab9cf4..0fc4329cd2 100644
--- a/core/src/main/resources/hudson/slaves/JNLPLauncher/main_ru.properties
+++ b/core/src/main/resources/hudson/slaves/JNLPLauncher/main_ru.properties
@@ -20,8 +20,6 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
-Connect\ slave\ to\ Jenkins\ one\ of\ these\ ways:=\u041F\u043E\u0434\u043A\u043B\u044E\u0447\u0438\u0442\u044C slave \u043A Jenkins \u043E\u0434\u043D\u0438\u043C \u0438\u0437 \u0441\u043F\u043E\u0441\u043E\u0431\u043E\u0432:
Connected\ via\ JNLP\ agent.=\u041F\u043E\u0434\u043A\u043B\u044E\u0447\u0435\u043D \u0447\u0435\u0440\u0435\u0437 JNLP \u0430\u0433\u0435\u043D\u0442\u0430.
-Launch\ agent\ from\ browser\ on\ slave=\u0417\u0430\u043F\u0443\u0441\u0442\u0438\u0442\u044C \u0430\u0433\u0435\u043D\u0442\u0430 \u0438\u0437 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430 \u043D\u0430 slave
-Run\ from\ slave\ command\ line:=\u0412\u044B\u043F\u043E\u043B\u043D\u0438\u0442\u044C \u0432 \u043A\u043E\u043C\u043C\u0430\u043D\u0434\u043D\u043E\u0439 \u0441\u0442\u0440\u043E\u043A\u0435 \u043F\u043E\u0434\u0447\u0438\u043D\u0435\u043D\u043D\u043E\u0433\u043E \u0443\u0437\u043B\u0430
+Run\ from\ agent\ command\ line:=\u0412\u044B\u043F\u043E\u043B\u043D\u0438\u0442\u044C \u0432 \u043A\u043E\u043C\u043C\u0430\u043D\u0434\u043D\u043E\u0439 \u0441\u0442\u0440\u043E\u043A\u0435 \u043F\u043E\u0434\u0447\u0438\u043D\u0435\u043D\u043D\u043E\u0433\u043E \u0443\u0437\u043B\u0430
launch\ agent=\u0437\u0430\u043F\u0443\u0441\u0442\u0438\u0442\u044C \u0430\u0433\u0435\u043D\u0442\u0430
diff --git a/core/src/main/resources/hudson/slaves/JNLPLauncher/main_zh_TW.properties b/core/src/main/resources/hudson/slaves/JNLPLauncher/main_zh_TW.properties
index 821a4ee9cb..7c50bf1b26 100644
--- a/core/src/main/resources/hudson/slaves/JNLPLauncher/main_zh_TW.properties
+++ b/core/src/main/resources/hudson/slaves/JNLPLauncher/main_zh_TW.properties
@@ -20,10 +20,5 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
-slaveAgentPort.disabled=JNLP Slave \u4ee3\u7406\u7a0b\u5f0f\u7684 TCP \u9023\u63a5\u57e0\u5df2\u95dc\u9589\u3002
-Connect\ slave\ to\ Jenkins\ one\ of\ these\ ways\:=\u53ef\u4ee5\u7528\u4e0b\u9762\u9019\u4e9b\u65b9\u6cd5\u5c07 Slave \u9023\u5230 Jenkins:
launch\ agent=\u555f\u52d5\u4ee3\u7406\u7a0b\u5f0f
-Launch\ agent\ from\ browser\ on\ slave=\u5728 Slave \u7684\u700f\u89bd\u5668\u4e0a\u555f\u52d5\u4ee3\u7406\u7a0b\u5f0f
-Run\ from\ slave\ command\ line\:=\u7531 Slave \u547d\u4ee4\u5217\u57f7\u884c:
-Or\ if\ the\ slave\ is\ headless\:=\u5982\u679c Slave \u6c92\u6709\u5468\u908a:
Connected\ via\ JNLP\ agent.=\u5C07\u7531 JNLP \u4EE3\u7406\u7A0B\u5F0F\u5EFA\u7ACB\u9023\u7DDA\u3002
diff --git a/core/src/main/resources/hudson/slaves/Messages.properties b/core/src/main/resources/hudson/slaves/Messages.properties
index 7f55e6ed66..c3a247c284 100644
--- a/core/src/main/resources/hudson/slaves/Messages.properties
+++ b/core/src/main/resources/hudson/slaves/Messages.properties
@@ -20,21 +20,21 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
-RetentionStrategy.Always.displayName=Keep this slave on-line as much as possible
-RetentionStrategy.Demand.displayName=Take this slave on-line when in demand and off-line when idle
+RetentionStrategy.Always.displayName=Keep this agent online as much as possible
+RetentionStrategy.Demand.displayName=Take this agent online when in demand, and offline when idle
RetentionStrategy.Demand.OfflineIdle=Offline because computer was idle; it will be relaunched when needed.
-CommandLauncher.displayName=Launch slave via execution of command on the Master
-JNLPLauncher.displayName=Launch slave agents via Java Web Start
-ComputerLauncher.unexpectedError=Unexpected error in launching a slave. This is probably a bug in Jenkins
-ComputerLauncher.abortedLaunch=Launching slave process aborted.
+CommandLauncher.displayName=Launch agent via execution of command on the master
+JNLPLauncher.displayName=Launch agent via Java Web Start
+ComputerLauncher.unexpectedError=Unexpected error in launching an agent. This is probably a bug in Jenkins
+ComputerLauncher.abortedLaunch=Launching agent process aborted.
CommandLauncher.NoLaunchCommand=No launch command specified
ConnectionActivityMonitor.OfflineCause=Repeated ping attempts failed
-DumbSlave.displayName=Dumb Slave
+DumbSlave.displayName=Permanent Agent
NodeProvisioner.EmptyString=
-OfflineCause.LaunchFailed=This node is offline because Jenkins failed to launch the slave agent on it.
+OfflineCause.LaunchFailed=This agent is offline because Jenkins failed to launch the agent process on it.
OfflineCause.connection_was_broken_=Connection was broken: {0}
SimpleScheduledRetentionStrategy.FinishedUpTime=Computer has finished its scheduled uptime
-SimpleScheduledRetentionStrategy.displayName=Take this slave on-line according to a schedule
+SimpleScheduledRetentionStrategy.displayName=Take this agent online according to a schedule
EnvironmentVariablesNodeProperty.displayName=Environment variables
SlaveComputer.DisconnectedBy=Disconnected by {0}{1}
NodeDescripter.CheckName.Mandatory=Name is mandatory
diff --git a/core/src/main/resources/hudson/slaves/Messages_bg.properties b/core/src/main/resources/hudson/slaves/Messages_bg.properties
index dccd5efbbd..bba31466f4 100644
--- a/core/src/main/resources/hudson/slaves/Messages_bg.properties
+++ b/core/src/main/resources/hudson/slaves/Messages_bg.properties
@@ -20,38 +20,17 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
-RetentionStrategy.Always.displayName=\
- \u0422\u043e\u0437\u0438 \u043f\u043e\u0434\u0447\u0438\u043d\u0435\u043d \u043a\u043e\u043c\u043f\u044e\u0442\u044a\u0440 \u0434\u0430 \u0435 \u0432\u044a\u0437\u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439-\u0434\u044a\u043b\u0433\u043e \u043d\u0430 \u043b\u0438\u043d\u0438\u044f.
-RetentionStrategy.Demand.displayName=\
- \u0422\u043e\u0437\u0438 \u043f\u043e\u0434\u0447\u0438\u043d\u0435\u043d \u043a\u043e\u043c\u043f\u044e\u0442\u044a\u0440 \u0434\u0430 \u0435 \u043d\u0430 \u043b\u0438\u043d\u0438\u044f \u043f\u0440\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442 \u0438 \u0438\u0437\u043a\u043b\u044e\u0447\u0435\u043d \u0432 \u0434\u0440\u0443\u0433\u043e\u0442\u043e\
- \u0432\u0440\u0435\u043c\u0435.
RetentionStrategy.Demand.OfflineIdle=\
\u041d\u0435 \u0435 \u043d\u0430 \u043b\u0438\u043d\u0438\u044f, \u0437\u0430\u0449\u043e\u0442\u043e \u043a\u043e\u043c\u043f\u044e\u0442\u044a\u0440\u044a\u0442 \u0431\u0435\u0437\u0434\u0435\u0439\u0441\u0442\u0432\u0430. \u0429\u0435 \u0441\u0435 \u0441\u0442\u0430\u0440\u0442\u0438\u0440\u0430 \u043f\u0440\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442.
-CommandLauncher.displayName=\
- \u0421\u0442\u0430\u0440\u0442\u0438\u0440\u0430\u043d\u0435 \u043d\u0430 \u043f\u043e\u0434\u0447\u0438\u043d\u0435\u043d\u0438\u044f \u043a\u043e\u043c\u043f\u044e\u0442\u044a\u0440 \u0447\u0440\u0435\u0437 \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u043e\u0442 \u043e\u0441\u043d\u043e\u0432\u043d\u0438\u044f.
-JNLPLauncher.displayName=\
- \u0421\u0442\u0430\u0440\u0442\u0438\u0440\u0430\u043d\u0435 \u043d\u0430 \u043f\u043e\u0434\u0447\u0438\u043d\u0435\u043d\u0438\u044f Jenkins \u0447\u0440\u0435\u0437 Java Web Start
-ComputerLauncher.unexpectedError=\
- \u041d\u0435\u043e\u0447\u0430\u043a\u0432\u0430\u043d\u0430 \u0433\u0440\u0435\u0448\u043a\u0430 \u043f\u0440\u0438 \u0441\u0442\u0430\u0440\u0442\u0438\u0440\u0430\u043d\u0435 \u043d\u0430 \u043f\u043e\u0434\u0447\u0438\u043d\u0435\u043d\u0438\u044f Jenkins. \u0422\u043e\u0432\u0430 \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e \u0435\
- \u0433\u0440\u0435\u0448\u043a\u0430 \u0432 \u0441\u0430\u043c\u0438\u044f Jenkins
-ComputerLauncher.abortedLaunch=\
- \u041f\u0440\u0435\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0435\u043d\u043e \u0441\u0442\u0430\u0440\u0442\u0438\u0440\u0430\u043d\u0435 \u043d\u0430 \u043f\u043e\u0434\u0447\u0438\u043d\u0435\u043d\u0438\u044f Jenkins.
CommandLauncher.NoLaunchCommand=\
\u041d\u0435 \u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u0437\u0430 \u0441\u0442\u0430\u0440\u0442\u0438\u0440\u0430\u043d\u0435.
ConnectionActivityMonitor.OfflineCause=\
\u041c\u043d\u043e\u0433\u043e\u043a\u0440\u0430\u0442\u043d\u0438\u0442\u0435 \u043e\u043f\u0438\u0442\u0438 \u0437\u0430 \u0432\u0440\u044a\u0437\u043a\u0430 \u0447\u0440\u0435\u0437 \u043a\u043e\u043c\u0430\u043d\u0434\u0430\u0442\u0430 \u201eping\u201c \u0441\u0430 \u043d\u0435\u0443\u0441\u043f\u0435\u0448\u043d\u0438
-DumbSlave.displayName=\
- \u0418\u0437\u0446\u044f\u043b\u043e \u043f\u043e\u0434\u0447\u0438\u043d\u0435\u043d Jenkins
NodeProvisioner.EmptyString=
-OfflineCause.LaunchFailed=\
- \u041c\u0430\u0448\u0438\u043d\u0430\u0442\u0430 \u0435 \u0434\u043e\u043a\u043b\u0430\u0434\u0432\u0430\u043d\u0430 \u043a\u0430\u0442\u043e \u0438\u0437\u043a\u043b\u044e\u0447\u0435\u043d\u0430, \u0437\u0430\u0449\u043e\u0442\u043e \u043e\u043f\u0438\u0442\u044a\u0442 \u0437\u0430 \u0441\u0442\u0430\u0440\u0442\u0438\u0440\u0430\u043d\u0435 \u043d\u0430 \u043f\u043e\u0434\u0447\u0438\u043d\u0435\u043d\
- \u043f\u0440\u043e\u0446\u0435\u0441 \u043d\u0430 Jenkins \u0431\u0435 \u043d\u0435\u0443\u0441\u043f\u0435\u0448\u0435\u043d.
OfflineCause.connection_was_broken_=\
\u0412\u0440\u044a\u0437\u043a\u0430\u0442\u0430 \u0431\u0435 \u043f\u0440\u0435\u043a\u044a\u0441\u043d\u0430\u0442\u0430: {0}
SimpleScheduledRetentionStrategy.FinishedUpTime=\
\u041a\u043e\u043c\u043f\u044e\u0442\u044a\u0440\u044a\u0442 \u043f\u0440\u0438\u0432\u044a\u0440\u0448\u0438 \u043f\u043b\u0430\u043d\u0438\u0440\u0430\u043d\u043e\u0442\u043e \u0432\u0440\u0435\u043c\u0435 \u0437\u0430 \u0440\u0430\u0431\u043e\u0442\u0430
-SimpleScheduledRetentionStrategy.displayName=\
- \u0412\u043a\u043b\u044e\u0447\u0432\u0430\u043d\u0435 \u043d\u0430 \u043f\u043e\u0434\u0447\u0438\u043d\u0435\u043d\u0438\u044f Jenkins \u043f\u043e \u043f\u043b\u0430\u043d
EnvironmentVariablesNodeProperty.displayName=\
\u041f\u0440\u043e\u043c\u0435\u043d\u043b\u0438\u0432\u0438 \u043d\u0430 \u0441\u0440\u0435\u0434\u0430\u0442\u0430
SlaveComputer.DisconnectedBy=\
diff --git a/core/src/main/resources/hudson/slaves/Messages_da.properties b/core/src/main/resources/hudson/slaves/Messages_da.properties
index dc7acae2fd..ab97271a14 100644
--- a/core/src/main/resources/hudson/slaves/Messages_da.properties
+++ b/core/src/main/resources/hudson/slaves/Messages_da.properties
@@ -20,19 +20,10 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
-SimpleScheduledRetentionStrategy.displayName=Bring denne slave online efter en tidsplan
-RetentionStrategy.Always.displayName=Hold denne slave online s\u00e5 meget som muligt
RetentionStrategy.Demand.OfflineIdle=Offline da computeren var i tomgang; vil blive genstartet n\u00e5r n\u00f8dvendigt.
SimpleScheduledRetentionStrategy.FinishedUpTime=Computeren har afsluttet sin planlagte oppetid
EnvironmentVariablesNodeProperty.displayName=Milj\u00f8variable
-DumbSlave.displayName=Dum Slave
-ComputerLauncher.abortedLaunch=Opstart af slaveproces afbrudt.
-JNLPLauncher.displayName=Start slaveagenter via JNLP
CommandLauncher.NoLaunchCommand=Ingen opstartskommando givet
ConnectionActivityMonitor.OfflineCause=Gentagne pingfors\u00f8g fejlede
-OfflineCause.LaunchFailed=Denne node er offline da Jenkins ikke kunne starte slaveagenten p\u00e5 den.
-RetentionStrategy.Demand.displayName=Bring denne slavenode online efter behov, og offline n\u00e5r i tomgang
-CommandLauncher.displayName=Start slave ved at k\u00f8re en kommando p\u00e5 master''en
SlaveComputer.DisconnectedBy=Frakoblet af {0}{1}
-ComputerLauncher.unexpectedError=Uforudset fejl under slaveopstart. Dette skyldes formentlig en fejl i Jenkins
NodeProvisioner.EmptyString=
diff --git a/core/src/main/resources/hudson/slaves/Messages_de.properties b/core/src/main/resources/hudson/slaves/Messages_de.properties
index e1a50ba293..39ae4cf2d0 100644
--- a/core/src/main/resources/hudson/slaves/Messages_de.properties
+++ b/core/src/main/resources/hudson/slaves/Messages_de.properties
@@ -21,18 +21,7 @@
# THE SOFTWARE.
ConnectionActivityMonitor.OfflineCause=Ping-Versuche scheiterten wiederholt
-RetentionStrategy.Always.displayName=Slave immer angeschaltet lassen
-RetentionStrategy.Demand.displayName=Slave nur bei Bedarf anschalten, ansonsten abschalten
-RetentionStrategy.Demand.OfflineIdle=Slave war im Leerlauf
-CommandLauncher.displayName=Starte Slave durch Ausführung eines Kommandos auf dem Master
-JNLPLauncher.displayName=Starte Slave-Agenten über JNLP
-ComputerLauncher.unexpectedError=Unerwarteter Fehler beim Starten eines Slave-Prozesses aufgetreten. Vermutlich handelt es sich um einen Fehler in Jenkins.
-ComputerLauncher.abortedLaunch=Start eines Slave-Prozesses abgebrochen.
CommandLauncher.NoLaunchCommand=Kein Startkommando angegeben.
-DumbSlave.displayName=Dumb slave
-OfflineCause.LaunchFailed=Dieser Knoten ist nicht verfügbar, weil Jenkins den Slave nicht starten konnte.
-SimpleScheduledRetentionStrategy.displayName=Slave zeitgesteuert anschalten
-SimpleScheduledRetentionStrategy.FinishedUpTime=Slave hat seine geplante Online-Zeit beendet.
EnvironmentVariablesNodeProperty.displayName=Umgebungsvariablen
NodeProvisioner.EmptyString=
SlaveComputer.DisconnectedBy=Getrennt durch Benutzer {0}{1}
diff --git a/core/src/main/resources/hudson/slaves/Messages_es.properties b/core/src/main/resources/hudson/slaves/Messages_es.properties
index 3b70c0bce8..e12811db84 100644
--- a/core/src/main/resources/hudson/slaves/Messages_es.properties
+++ b/core/src/main/resources/hudson/slaves/Messages_es.properties
@@ -20,19 +20,10 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
-RetentionStrategy.Always.displayName=Mantener este nodo en línea el máximo de tiempo posible
-RetentionStrategy.Demand.displayName=Poner este nodo en línea cuando haya demanda, y fuera de línea cuando no hayan trabajos
RetentionStrategy.Demand.OfflineIdle=Fuera de línea porque no es necesario, el servicio se volverá a iniciar cuando haya demanda
-CommandLauncher.displayName=Arrancar el nodo ejecutando un comando desde el nodo principal
-JNLPLauncher.displayName=Ejecutar el agente en el nodo secundario utilizando JNLP
-ComputerLauncher.unexpectedError=Error inesperado al lanzar un nodo secundario. Posiblemente sea un error de Jenkins (bug)
-ComputerLauncher.abortedLaunch=El inicio del agente en el nodo secundario ha sido abortado.
CommandLauncher.NoLaunchCommand=No se ha especificado ningún comando
ConnectionActivityMonitor.OfflineCause=No hubo respuesta a ''ping'' despues de varios intentos
-DumbSlave.displayName=Secundario pasivo
-OfflineCause.LaunchFailed=Este nodo está fuera de línea porque Jenkins no pudo iniciar el agente esclavo.
SimpleScheduledRetentionStrategy.FinishedUpTime=El nodo ha finalizado el tiempo programado de estar on-line
-SimpleScheduledRetentionStrategy.displayName=Programar cuándo se debe poner este nodo secundario en línea.
EnvironmentVariablesNodeProperty.displayName=Variables de entorno
SlaveComputer.DisconnectedBy=Desconectado por {0}{1}
NodeProvisioner.EmptyString=
diff --git a/core/src/main/resources/hudson/slaves/Messages_fr.properties b/core/src/main/resources/hudson/slaves/Messages_fr.properties
index bbf3373322..d044dac640 100644
--- a/core/src/main/resources/hudson/slaves/Messages_fr.properties
+++ b/core/src/main/resources/hudson/slaves/Messages_fr.properties
@@ -20,14 +20,5 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
-RetentionStrategy.Always.displayName=Garder cet esclave en ligne autant que possible
-RetentionStrategy.Demand.displayName=Mettre cet esclave en ligne \u00e0 la demande et hors-ligne si inutilis\u00e9
-CommandLauncher.displayName=Lancer l''esclave via l''ex\u00e9cution d''une commande sur le ma\u00eetre
-JNLPLauncher.displayName=Lancer les agents esclaves par JNLP
-ComputerLauncher.unexpectedError=Erreur inattendue au lancement d''un esclave. Probablement un bug dans Jenkins
-ComputerLauncher.abortedLaunch=Lancement de l''esclave annul\u00e9.
CommandLauncher.NoLaunchCommand=Aucune commande de lancement sp\u00e9cifi\u00e9e
-DumbSlave.displayName=Esclave passif
-OfflineCause.LaunchFailed=Ce noeud est d\u00e9connect\u00e9 parce que Jenkins n''a pas r\u00e9ussi \u00e0 lancer l''agent esclave dessus.
-SimpleScheduledRetentionStrategy.displayName=D\u00e9connecte cet esclave selon des horaires
EnvironmentVariablesNodeProperty.displayName=Variables d''environnement
diff --git a/core/src/main/resources/hudson/slaves/Messages_ja.properties b/core/src/main/resources/hudson/slaves/Messages_ja.properties
index c8eeb5f762..a5bf2adebc 100644
--- a/core/src/main/resources/hudson/slaves/Messages_ja.properties
+++ b/core/src/main/resources/hudson/slaves/Messages_ja.properties
@@ -20,20 +20,11 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
-RetentionStrategy.Always.displayName=\u53ef\u80fd\u306a\u9650\u308a\u30aa\u30f3\u30e9\u30a4\u30f3\u306e\u307e\u307e\u306b\u3059\u308b
-RetentionStrategy.Demand.displayName=\u8981\u6c42\u6642\u306b\u306f\u30aa\u30f3\u30e9\u30a4\u30f3\u306b\u3057\u3001\u5f85\u6a5f\u4e2d\u306b\u306f\u30aa\u30d5\u30e9\u30a4\u30f3\u306b\u3059\u308b
RetentionStrategy.Demand.OfflineIdle=\u30b3\u30f3\u30d4\u30e5\u30fc\u30bf\u304c\u5f85\u6a5f\u4e2d\u306a\u306e\u3067\u30aa\u30d5\u30e9\u30a4\u30f3\u3067\u3059\u3002\u5fc5\u8981\u306b\u306a\u3063\u305f\u3089\u518d\u3073\u8d77\u52d5\u3057\u307e\u3059\u3002
-CommandLauncher.displayName=\u30de\u30b9\u30bf\u30fc\u3067\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u3066\u30b9\u30ec\u30fc\u30d6\u3092\u8d77\u52d5
-JNLPLauncher.displayName=JNLP\u7d4c\u7531\u3067\u30b9\u30ec\u30fc\u30d6\u3092\u8d77\u52d5
-ComputerLauncher.unexpectedError=\u30b9\u30ec\u30fc\u30d6\u306e\u8d77\u52d5\u4e2d\u306b\u4e88\u671f\u3057\u306a\u3044\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002\u3053\u308c\u306f\u305f\u3076\u3093Jenkins\u306e\u30d0\u30b0\u3067\u3059\u3002
-ComputerLauncher.abortedLaunch=\u30b9\u30ec\u30fc\u30d6\u306e\u8d77\u52d5\u30d7\u30ed\u30bb\u30b9\u304c\u4e2d\u65ad\u3057\u307e\u3057\u305f\u3002
CommandLauncher.NoLaunchCommand=\u8d77\u52d5\u30b3\u30de\u30f3\u30c9\u304c\u6307\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002
ConnectionActivityMonitor.OfflineCause=\u4f55\u5ea6\u3082ping\u304c\u5931\u6557\u3057\u307e\u3057\u305f\u3002
-DumbSlave.displayName=\u30c0\u30e0\u30b9\u30ec\u30fc\u30d6
NodeProvisioner.EmptyString=
-OfflineCause.LaunchFailed=\u30b9\u30ec\u30fc\u30d6\u30a8\u30fc\u30b8\u30a7\u30f3\u30c8\u306e\u8d77\u52d5\u306b\u5931\u6557\u3057\u305f\u305f\u3081\u3001\u3053\u306e\u30ce\u30fc\u30c9\u306f\u30aa\u30d5\u30e9\u30a4\u30f3\u3067\u3059\u3002
SimpleScheduledRetentionStrategy.FinishedUpTime=\u30b3\u30f3\u30d4\u30e5\u30fc\u30bf\u306e\u52d5\u4f5c\u53ef\u80fd\u6642\u9593\u304c\u7d42\u4e86\u3057\u307e\u3057\u305f\u3002
-SimpleScheduledRetentionStrategy.displayName=\u30b9\u30b1\u30b8\u30e5\u30fc\u30eb\u306b\u5f93\u3063\u3066\u30aa\u30f3\u30e9\u30a4\u30f3\u306b\u3059\u308b
EnvironmentVariablesNodeProperty.displayName=\u74b0\u5883\u5909\u6570
SlaveComputer.DisconnectedBy={0}\u304c\u30aa\u30d5\u30e9\u30a4\u30f3\u306b\u3057\u3066\u3044\u307e\u3059\u3002{1}
NodeDescripter.CheckName.Mandatory=\u30ce\u30fc\u30c9\u540d\u306f\u5fc5\u9808\u3067\u3059\u3002
diff --git a/core/src/main/resources/hudson/slaves/Messages_pt_BR.properties b/core/src/main/resources/hudson/slaves/Messages_pt_BR.properties
index 090702e659..9cd2f871d9 100644
--- a/core/src/main/resources/hudson/slaves/Messages_pt_BR.properties
+++ b/core/src/main/resources/hudson/slaves/Messages_pt_BR.properties
@@ -20,16 +20,6 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
-RetentionStrategy.Always.displayName=Manter este slave ligado tanto quanto for poss\u00edvel
-RetentionStrategy.Demand.displayName=Deixar este slave ligado quando em demanda e desligado quando inativo
-CommandLauncher.displayName=Lan\u00e7ar o slave via execu\u00e7\u00e3o de comando no Master
-JNLPLauncher.displayName=Lan\u00e7ar os agentes slave via JNLP
-ComputerLauncher.unexpectedError=Erro ErrorUnexpected no lan\u00e7amento de um slave. Este \u00e9 provavelmente um bug no Jenkins
-ComputerLauncher.abortedLaunch=Processo de lan\u00e7amento de slave abortado.
-# Take this slave on-line according to a schedule
-SimpleScheduledRetentionStrategy.displayName=Colocar o slave online de acordo com o agendamento
-# This node is offline because Jenkins failed to launch the slave agent on it.
-OfflineCause.LaunchFailed=Esse n\u00f3 est\u00e1 offline porque Jenkins falhou ao lan\u00e7ar o agente slave
# No launch command specified
CommandLauncher.NoLaunchCommand=Sem nenhum comando de lan\u00e7amento especificado
# Offline because computer was idle; it will be relaunched when needed.
@@ -43,8 +33,6 @@ SimpleScheduledRetentionStrategy.FinishedUpTime=O computador terminou o seu temp
NodeProvisioner.EmptyString=
# Environment variables
EnvironmentVariablesNodeProperty.displayName=Vari\u00e1veis de ambiente
-# Dumb Slave
-DumbSlave.displayName=Slave burro
# Java version {0} was found but 1.6 or later is needed.
ComputerLauncher.NoJavaFound=A vers\u00e3o {0} do Java foi encontrada, mas a vers\u00e3o 1.6 ou mais nova \u00e9 necess\u00e1ria.
# Couldn\u2019t figure out the Java version of {0}
diff --git a/core/src/main/resources/hudson/slaves/Messages_tr.properties b/core/src/main/resources/hudson/slaves/Messages_tr.properties
deleted file mode 100644
index 316c3dd85c..0000000000
--- a/core/src/main/resources/hudson/slaves/Messages_tr.properties
+++ /dev/null
@@ -1,28 +0,0 @@
-# The MIT License
-#
-# Copyright (c) 2004-2009, Sun Microsystems, Inc., Kohsuke Kawaguchi, Oguz Dag
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-# copies of the Software, and to permit persons to whom the Software is
-# furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included in
-# all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-# THE SOFTWARE.
-
-RetentionStrategy.Always.displayName=Bu slave''i m\u00fcmk\u00fcn oldu\u011funca on-line konumda tut
-RetentionStrategy.Demand.displayName=Bu slave''i ihtiya\u00e7 an\u0131nda on-line, bekleme durumlar\u0131nda off-line konuma getir.
-CommandLauncher.displayName=Master''da \u00e7al\u0131\u015ft\u0131r\u0131lan bir komut ile bu slave''i harekete ge\u00e7ir
-JNLPLauncher.displayName=JNLP yard\u0131m\u0131 ile slave ajan\u0131 harekete ge\u00e7ir
-ComputerLauncher.unexpectedError=Slave harekete ge\u00e7irilirken umulmad\u0131k bir hata olu\u015ftu. Jenkins''daki bir bug''dan dolay\u0131 olabilir.
-ComputerLauncher.abortedLaunch=Slave''i harekete ge\u00e7irme i\u015flemi iptal edildi.
\ No newline at end of file
diff --git a/core/src/main/resources/hudson/slaves/Messages_zh_TW.properties b/core/src/main/resources/hudson/slaves/Messages_zh_TW.properties
index c7fb50e753..833fe20313 100644
--- a/core/src/main/resources/hudson/slaves/Messages_zh_TW.properties
+++ b/core/src/main/resources/hudson/slaves/Messages_zh_TW.properties
@@ -20,29 +20,20 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
-CommandLauncher.displayName=\u5728 Master \u4e0a\u57f7\u884c\u6307\u4ee4\u555f\u52d5 Slave
CommandLauncher.NoLaunchCommand=\u6c92\u6709\u6307\u5b9a\u555f\u52d5\u6307\u4ee4
-ComputerLauncher.abortedLaunch=Slave \u555f\u52d5\u7a0b\u5e8f\u5df2\u4e2d\u6b62\u3002
-ComputerLauncher.unexpectedError=\u555f\u52d5 Slave \u6642\u767c\u751f\u9810\u671f\u5916\u7684\u932f\u8aa4\u3002\u53ef\u80fd\u662f Jenkins \u672c\u8eab\u7684 Bug
ComputerLauncher.JavaVersionResult={0} -version \u56de\u50b3 {1}\u3002
ComputerLauncher.NoJavaFound=\u627e\u5230 Java {0} \u7248\uff0c\u4e0d\u904e\u6211\u5011\u8981\u7684\u662f 1.5 \u6216\u66f4\u65b0\u7684\u7248\u672c\u3002
ComputerLauncher.UknownJavaVersion=\u4e0d\u77e5\u9053 {0} \u7684 Java \u7248\u672c
ConnectionActivityMonitor.OfflineCause=\u91cd\u8907 Ping \u5931\u6557
-DumbSlave.displayName=\u967d\u6625 Slave
EnvironmentVariablesNodeProperty.displayName=\u74b0\u5883\u8b8a\u6578
-JNLPLauncher.displayName=\u900f\u904e Java Web Start \u555f\u52d5 Slave \u4ee3\u7406\u7a0b\u5f0f
NodeDescripter.CheckName.Mandatory=\u4e00\u5b9a\u8981\u8f38\u5165\u540d\u7a31
-OfflineCause.LaunchFailed=\u7bc0\u9ede\u96e2\u7dda\uff0c\u56e0\u70ba Jenkins \u7121\u6cd5\u555f\u52d5\u4e0a\u9762\u7684 Slave \u4ee3\u7406\u7a0b\u5f0f\u3002
-RetentionStrategy.Always.displayName=\u76e1\u53ef\u80fd\u8b93 Slave \u4e0a\u7dda
RetentionStrategy.Demand.OfflineIdle=\u96fb\u8166\u9592\u7f6e\u96e2\u7dda\uff0c\u9700\u8981\u6642\u624d\u6703\u88ab\u555f\u52d5\u3002
-RetentionStrategy.Demand.displayName=\u9700\u8981\u6642\u624d\u8b93 Slave \u4e0a\u7dda\uff0c\u9592\u7f6e\u6642\u5c31\u96e2\u7dda\u3002
-SimpleScheduledRetentionStrategy.displayName=\u4f9d\u64da\u6392\u7a0b\u8b93 Slave \u4e0a\u7dda
SimpleScheduledRetentionStrategy.FinishedUpTime=\u96fb\u8166\u5df2\u7d93\u505a\u6eff\u4e86\u6392\u5b9a\u7684\u4e0a\u7dda\u6642\u9593
SlaveComputer.DisconnectedBy=\u7531 {0} \u4e2d\u65b7\u9023\u7dda{1}
diff --git a/core/src/main/resources/hudson/slaves/SimpleScheduledRetentionStrategy/config.jelly b/core/src/main/resources/hudson/slaves/SimpleScheduledRetentionStrategy/config.jelly
index e06ed7537b..3ef03e52aa 100644
--- a/core/src/main/resources/hudson/slaves/SimpleScheduledRetentionStrategy/config.jelly
+++ b/core/src/main/resources/hudson/slaves/SimpleScheduledRetentionStrategy/config.jelly
@@ -35,7 +35,7 @@ THE SOFTWARE.
name="retentionStrategy.upTimeMins" value="${instance.upTimeMins}"
checkMessage="${%Scheduled Uptime is mandatory and must be a number.}"/>
-
+
diff --git a/core/src/main/resources/hudson/slaves/SimpleScheduledRetentionStrategy/config_da.properties b/core/src/main/resources/hudson/slaves/SimpleScheduledRetentionStrategy/config_da.properties
index e7e0e0e452..525c94f6a1 100644
--- a/core/src/main/resources/hudson/slaves/SimpleScheduledRetentionStrategy/config_da.properties
+++ b/core/src/main/resources/hudson/slaves/SimpleScheduledRetentionStrategy/config_da.properties
@@ -22,6 +22,6 @@
Scheduled\ Uptime\ is\ mandatory\ and\ must\ be\ a\ number.=Planlagt oppetid er obligatorisk og skal v\u00e6re et tal.
Scheduled\ Uptime=Planlagt oppetid
-Keep\ on-line\ while\ jobs\ are\ running=Hold on-line n\u00e5r jobs k\u00f8rer
+Keep\ online\ while\ jobs\ are\ running=Hold on-line n\u00e5r jobs k\u00f8rer
Startup\ Schedule=Opstartstidsplan
uptime.description=Antal minutter noden skal holdes oppe. Hvis dette er l\u00e6ngere end opstartstidsplanen vil noden altid v\u00e6re online.
diff --git a/core/src/main/resources/hudson/slaves/SimpleScheduledRetentionStrategy/config_de.properties b/core/src/main/resources/hudson/slaves/SimpleScheduledRetentionStrategy/config_de.properties
index 35f2482483..6ba64a98e4 100644
--- a/core/src/main/resources/hudson/slaves/SimpleScheduledRetentionStrategy/config_de.properties
+++ b/core/src/main/resources/hudson/slaves/SimpleScheduledRetentionStrategy/config_de.properties
@@ -23,6 +23,5 @@
Startup\ Schedule=Anschaltzeitplan
Scheduled\ Uptime=Verfügbare Zeit
Scheduled\ Uptime\ is\ mandatory\ and\ must\ be\ a\ number.=Verfügbare Zeit muss angegeben werden und eine Zahl sein.
-Keep\ on-line\ while\ jobs\ are\ running=Slave angeschaltet lassen, solange Jobs laufen.
uptime.description=\
Dies ist die Zeit in Minuten, die dieser Knoten verfügbar bleibt. Ist der Zeitraum länger als die Zeitabstände im Zeitplan, dann ist der Knoten dauerhaft verfügbar.
diff --git a/core/src/main/resources/hudson/slaves/SimpleScheduledRetentionStrategy/config_es.properties b/core/src/main/resources/hudson/slaves/SimpleScheduledRetentionStrategy/config_es.properties
index 54a97e1b5d..5275f2d573 100644
--- a/core/src/main/resources/hudson/slaves/SimpleScheduledRetentionStrategy/config_es.properties
+++ b/core/src/main/resources/hudson/slaves/SimpleScheduledRetentionStrategy/config_es.properties
@@ -23,5 +23,5 @@
Startup\ Schedule=Tiempo de inicio programado
Scheduled\ Uptime=Tiempo de ejecución programado
Scheduled\ Uptime\ is\ mandatory\ and\ must\ be\ a\ number.=El tiempo de ejecución programado es obligatorio y debe ser un número
-Keep\ on-line\ while\ jobs\ are\ running=Mantener en línea mientras hayan tareas en ejecución
+Keep\ online\ while\ jobs\ are\ running=Mantener en línea mientras hayan tareas en ejecución
uptime.description=El número de minutos para mantener el nodo activo. Si es mayor que el tiempo programado para arrancar, el nodo estará permanentemente en línea
diff --git a/core/src/main/resources/hudson/slaves/SimpleScheduledRetentionStrategy/config_fr.properties b/core/src/main/resources/hudson/slaves/SimpleScheduledRetentionStrategy/config_fr.properties
index 8cadc09c49..7e776863eb 100644
--- a/core/src/main/resources/hudson/slaves/SimpleScheduledRetentionStrategy/config_fr.properties
+++ b/core/src/main/resources/hudson/slaves/SimpleScheduledRetentionStrategy/config_fr.properties
@@ -24,4 +24,4 @@ Startup\ Schedule=D
Scheduled\ Uptime=Durée du mode actif
Scheduled\ Uptime\ is\ mandatory\ and\ must\ be\ a\ number.=Le Uptime pr\u00E9vu est obligatoire et doit \u00EAtre un nombre.
Scheduled\ Uptime\ is\ mandatory.=La durée est obligatoire.
-Keep\ on-line\ while\ jobs\ are\ running=Garder actif tant que des jobs sont en cours.
+Keep\ online\ while\ jobs\ are\ running=Garder actif tant que des jobs sont en cours.
diff --git a/core/src/main/resources/hudson/slaves/SimpleScheduledRetentionStrategy/config_ja.properties b/core/src/main/resources/hudson/slaves/SimpleScheduledRetentionStrategy/config_ja.properties
index 28cb24e19e..efbad4f8bd 100644
--- a/core/src/main/resources/hudson/slaves/SimpleScheduledRetentionStrategy/config_ja.properties
+++ b/core/src/main/resources/hudson/slaves/SimpleScheduledRetentionStrategy/config_ja.properties
@@ -23,6 +23,6 @@
Startup\ Schedule=\u8D77\u52D5\u30B9\u30B1\u30B8\u30E5\u30FC\u30EB
Scheduled\ Uptime=\u52D5\u4F5C\u53EF\u80FD\u6642\u9593
Scheduled\ Uptime\ is\ mandatory\ and\ must\ be\ a\ number.=\u52D5\u4F5C\u53EF\u80FD\u6642\u9593\u306F\u3001\u5FC5\u9808\u304B\u3064\u6570\u5B57\u3067\u3059\u3002
-Keep\ on-line\ while\ jobs\ are\ running=\u30B8\u30E7\u30D6\u8D77\u52D5\u4E2D\u306F\u30AA\u30F3\u30E9\u30A4\u30F3\u3092\u7DAD\u6301
+Keep\ online\ while\ jobs\ are\ running=\u30B8\u30E7\u30D6\u8D77\u52D5\u4E2D\u306F\u30AA\u30F3\u30E9\u30A4\u30F3\u3092\u7DAD\u6301
uptime.description=\
- \u30CE\u30FC\u30C9\u3092\u30AA\u30F3\u30E9\u30A4\u30F3\u306E\u307E\u307E\u7DAD\u6301\u3059\u308B\u6642\u9593(\u5206)\u3067\u3059\u3002\u3053\u306E\u5024\u304C\u8D77\u52D5\u30B9\u30B1\u30B8\u30E5\u30FC\u30EB\u306E\u9593\u9694\u3088\u308A\u9577\u3051\u308C\u3070\u3001\u30CE\u30FC\u30C9\u306F\u5E38\u306B\u30AA\u30F3\u30E9\u30A4\u30F3\u306E\u307E\u307E\u306B\u306A\u308A\u307E\u3059\u3002\u3000
\ No newline at end of file
+ \u30CE\u30FC\u30C9\u3092\u30AA\u30F3\u30E9\u30A4\u30F3\u306E\u307E\u307E\u7DAD\u6301\u3059\u308B\u6642\u9593(\u5206)\u3067\u3059\u3002\u3053\u306E\u5024\u304C\u8D77\u52D5\u30B9\u30B1\u30B8\u30E5\u30FC\u30EB\u306E\u9593\u9694\u3088\u308A\u9577\u3051\u308C\u3070\u3001\u30CE\u30FC\u30C9\u306F\u5E38\u306B\u30AA\u30F3\u30E9\u30A4\u30F3\u306E\u307E\u307E\u306B\u306A\u308A\u307E\u3059\u3002\u3000
diff --git a/core/src/main/resources/hudson/slaves/SimpleScheduledRetentionStrategy/config_pt_BR.properties b/core/src/main/resources/hudson/slaves/SimpleScheduledRetentionStrategy/config_pt_BR.properties
index 4022c77170..39bd269660 100644
--- a/core/src/main/resources/hudson/slaves/SimpleScheduledRetentionStrategy/config_pt_BR.properties
+++ b/core/src/main/resources/hudson/slaves/SimpleScheduledRetentionStrategy/config_pt_BR.properties
@@ -25,5 +25,5 @@ Startup\ Schedule=Agenda de inicializa
# \
# The number of minutes to keep the node up for. If this is longer than the startup schedule, then the node will remain constantly on-line.
uptime.description=O n\u00famero de minutos para manter o n\u00f3 no ar
-Keep\ on-line\ while\ jobs\ are\ running=Manter on-line enquanto estiverem rodando jobs
+Keep\ online\ while\ jobs\ are\ running=Manter on-line enquanto estiverem rodando jobs
Scheduled\ Uptime\ is\ mandatory\ and\ must\ be\ a\ number.=Agenda de uptime \u00e9 obrigat\u00f3ria e precisa ser um n\u00famero.
diff --git a/core/src/main/resources/hudson/slaves/SimpleScheduledRetentionStrategy/config_zh_TW.properties b/core/src/main/resources/hudson/slaves/SimpleScheduledRetentionStrategy/config_zh_TW.properties
index f29f194e2d..87e353f0c6 100644
--- a/core/src/main/resources/hudson/slaves/SimpleScheduledRetentionStrategy/config_zh_TW.properties
+++ b/core/src/main/resources/hudson/slaves/SimpleScheduledRetentionStrategy/config_zh_TW.properties
@@ -24,4 +24,4 @@ Startup\ Schedule=\u555F\u52D5\u6392\u7A0B
Scheduled\ Uptime=\u6392\u5B9A\u7684\u904B\u4F5C\u6642\u9593
uptime.description=\u7BC0\u9EDE\u4E0A\u7DDA\u7684\u5206\u9418\u6578\u3002\u5982\u679C\u8D85\u904E\u4E0B\u6B21\u555F\u52D5\u6392\u7A0B\u7684\u6642\u9593\uFF0C\u9019\u500B\u7BC0\u9EDE\u5C31\u6703\u4E00\u76F4\u5728\u7DDA\u4E0A\u3002
Scheduled\ Uptime\ is\ mandatory\ and\ must\ be\ a\ number.=\u6392\u5B9A\u7684\u904B\u4F5C\u6642\u9593\u4E00\u5B9A\u8981\u8F38\u5165\u6578\u5B57\u3002
-Keep\ on-line\ while\ jobs\ are\ running=\u9084\u6709 Job \u57F7\u884C\u6642\u4FDD\u6301\u5728\u4E0A\u7DDA\u72C0\u614B
+Keep\ online\ while\ jobs\ are\ running=\u9084\u6709 Job \u57F7\u884C\u6642\u4FDD\u6301\u5728\u4E0A\u7DDA\u72C0\u614B
diff --git a/core/src/main/resources/hudson/slaves/SlaveComputer/already-launched.jelly b/core/src/main/resources/hudson/slaves/SlaveComputer/already-launched.jelly
index 497c61514f..cd905e18ab 100644
--- a/core/src/main/resources/hudson/slaves/SlaveComputer/already-launched.jelly
+++ b/core/src/main/resources/hudson/slaves/SlaveComputer/already-launched.jelly
@@ -3,7 +3,7 @@
- The slave has been already launched.
+ The agent has been already launched.
diff --git a/core/src/main/resources/hudson/slaves/SlaveComputer/disconnect_de.properties b/core/src/main/resources/hudson/slaves/SlaveComputer/disconnect_de.properties
index 4956c0ef8e..a8ed85eac1 100644
--- a/core/src/main/resources/hudson/slaves/SlaveComputer/disconnect_de.properties
+++ b/core/src/main/resources/hudson/slaves/SlaveComputer/disconnect_de.properties
@@ -24,5 +24,4 @@ disconnect=Trennen
blurb=\
Sie können optional kurz erklären, warum Sie den Knoten abschalten. Dieser Text ist \
sichtbar für andere Benutzer:
-Are\ you\ sure\ about\ disconnecting?=Möchten Sie die Verbindung zum Slave wirklich trennen?
Yes=Ja
diff --git a/core/src/main/resources/hudson/slaves/SlaveComputer/slave-agent.jnlp.jelly b/core/src/main/resources/hudson/slaves/SlaveComputer/slave-agent.jnlp.jelly
index 9f25865224..3d15dbb245 100644
--- a/core/src/main/resources/hudson/slaves/SlaveComputer/slave-agent.jnlp.jelly
+++ b/core/src/main/resources/hudson/slaves/SlaveComputer/slave-agent.jnlp.jelly
@@ -37,7 +37,7 @@ THE SOFTWARE.
codebase="${rootURL}computer/${h.encode(it.node.nodeName)}/">
- Slave Agent for ${it.displayName}
+ Agent for ${it.displayName}Jenkins project
diff --git a/core/src/main/resources/hudson/slaves/SlaveComputer/systemInfo.jelly b/core/src/main/resources/hudson/slaves/SlaveComputer/systemInfo.jelly
index f9b93b6e8c..279fc74807 100644
--- a/core/src/main/resources/hudson/slaves/SlaveComputer/systemInfo.jelly
+++ b/core/src/main/resources/hudson/slaves/SlaveComputer/systemInfo.jelly
@@ -53,7 +53,7 @@ THE SOFTWARE.
- ${%System Information is unavailable when slave is offline.}
+ ${%System Information is unavailable when agent is offline.}
diff --git a/core/src/main/resources/hudson/slaves/SlaveComputer/systemInfo_ja.properties b/core/src/main/resources/hudson/slaves/SlaveComputer/systemInfo_ja.properties
index 68f9d62e9f..946b7ac4cb 100644
--- a/core/src/main/resources/hudson/slaves/SlaveComputer/systemInfo_ja.properties
+++ b/core/src/main/resources/hudson/slaves/SlaveComputer/systemInfo_ja.properties
@@ -21,5 +21,3 @@
# THE SOFTWARE.
System\ Information=\u30b7\u30b9\u30c6\u30e0\u60c5\u5831
-System\ Information\ is\ unavailable\ when\ slave\ is\ offline.=\
-\u30b9\u30ec\u30fc\u30d6\u304c\u30aa\u30d5\u30e9\u30a4\u30f3\u306e\u5834\u5408\u306b\u306f\u3001\u30b7\u30b9\u30c6\u30e0\u60c5\u5831\u306f\u5229\u7528\u3067\u304d\u307e\u305b\u3093\u3002
\ No newline at end of file
diff --git a/core/src/main/resources/hudson/slaves/SlaveComputer/systemInfo_pt_BR.properties b/core/src/main/resources/hudson/slaves/SlaveComputer/systemInfo_pt_BR.properties
index 7ca948edf6..54e0a66aa7 100644
--- a/core/src/main/resources/hudson/slaves/SlaveComputer/systemInfo_pt_BR.properties
+++ b/core/src/main/resources/hudson/slaves/SlaveComputer/systemInfo_pt_BR.properties
@@ -21,4 +21,3 @@
# THE SOFTWARE.
System\ Information=Informa\u00e7t\u00e3o de sistema
-System\ Information\ is\ unavailable\ when\ slave\ is\ offline.=As informa\u00e7\u00f5es do sistema n\u00e3o est\u00e3o dispon\u00edveis quando o sistema est\u00e1 offline.
diff --git a/core/src/main/resources/hudson/tools/AbstractCommandInstaller/help-command.html b/core/src/main/resources/hudson/tools/AbstractCommandInstaller/help-command.html
index a313706d70..d84dbd5713 100644
--- a/core/src/main/resources/hudson/tools/AbstractCommandInstaller/help-command.html
+++ b/core/src/main/resources/hudson/tools/AbstractCommandInstaller/help-command.html
@@ -1,4 +1,4 @@
- Command to run on the slave node to install the tool.
+ Command to run on the agent node to install the tool.
The command will always be run, so it should be a quick no-op if the tool is already installed.
- Kommando, das auf dem Slave ausgeführt wird, um das Hilfsprogramm zu installieren.
- Dieses Kommando wird bei jedem Build ausgeführt - es sollte also eine schnelle, neutrale Operation sein,
- wenn das Hilfsprogramm bereits auf dem Slave installiert ist.
-
diff --git a/core/src/main/resources/hudson/tools/InstallSourceProperty/help.html b/core/src/main/resources/hudson/tools/InstallSourceProperty/help.html
index 25ecfe6d61..bd817db61d 100644
--- a/core/src/main/resources/hudson/tools/InstallSourceProperty/help.html
+++ b/core/src/main/resources/hudson/tools/InstallSourceProperty/help.html
@@ -10,5 +10,5 @@
For a platform-independent tool (such as Ant), configuring multiple installers
for a single tool makes not much sense, but for a platform dependent tool,
multiple installer configurations allow you to run a different set up script
- depending on the slave environment.
+ depending on the agent environment.
diff --git a/core/src/main/resources/hudson/tools/InstallSourceProperty/help_de.html b/core/src/main/resources/hudson/tools/InstallSourceProperty/help_de.html
deleted file mode 100644
index 18f3f9c8fb..0000000000
--- a/core/src/main/resources/hudson/tools/InstallSourceProperty/help_de.html
+++ /dev/null
@@ -1,14 +0,0 @@
-
- Verwenden diese Option, wenn Jenkins bei Bedarf automatisch Hilfsprogramme
- am angegebenen Ort installieren soll.
-
-
- Wenn Sie diese Option anwählen, müssen Sie für jedes Hilfsprogramm eines
- oder mehrere Installationsverfahren konfigurieren.
-
-
- Für ein plattformunabhängiges Hilfsprogramm (z.B. Apache Ant) ist es wenig
- sinnvoll, mehrere Installationsverfahren anzugeben. Bei einem plattformabhängigen
- Hilfsprogramm hingegen, können Sie so gezielt das Installationsverfahren der
- jeweiligen Slave-Plattform anpassen.
-
diff --git a/core/src/main/resources/hudson/tools/Messages.properties b/core/src/main/resources/hudson/tools/Messages.properties
index e5d553866d..dabfa4c840 100644
--- a/core/src/main/resources/hudson/tools/Messages.properties
+++ b/core/src/main/resources/hudson/tools/Messages.properties
@@ -36,4 +36,4 @@ InstallSourceProperty.DescriptorImpl.displayName=Install automatically
JDKInstaller.DescriptorImpl.displayName=Install from java.sun.com
JDKInstaller.DescriptorImpl.doCheckId=Define JDK ID
JDKInstaller.DescriptorImpl.doCheckAcceptLicense=You must agree to the license to download the JDK.
-ToolDescriptor.NotADirectory={0} is not a directory on the Jenkins master (but perhaps it exists on some slaves)
+ToolDescriptor.NotADirectory={0} is not a directory on the Jenkins master (but perhaps it exists on some agents)
diff --git a/core/src/main/resources/hudson/tools/Messages_bg.properties b/core/src/main/resources/hudson/tools/Messages_bg.properties
index 478d54594f..22c006f311 100644
--- a/core/src/main/resources/hudson/tools/Messages_bg.properties
+++ b/core/src/main/resources/hudson/tools/Messages_bg.properties
@@ -56,6 +56,4 @@ JDKInstaller.DescriptorImpl.doCheckId=\
\u0423\u043a\u0430\u0437\u0432\u0430\u043d\u0435 \u043d\u0430 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u0430 \u043d\u0430 JDK (\u0440\u0430\u0437\u0432\u043e\u0439\u043d\u0438\u0442\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0438 \u0437\u0430 Java)
JDKInstaller.DescriptorImpl.doCheckAcceptLicense=\
\u0422\u0440\u044f\u0431\u0432\u0430 \u0434\u0430 \u043f\u0440\u0438\u0435\u043c\u0435\u0442\u0435 \u043b\u0438\u0446\u0435\u043d\u0437\u0430, \u0437\u0430 \u0434\u0430 \u0441\u0432\u0430\u043b\u0438\u0442\u0435 JDK (\u0440\u0430\u0437\u0432\u043e\u0439\u043d\u0438\u0442\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0438 \u0437\u0430 Java).
-ToolDescriptor.NotADirectory=\
- \u201e{0}\u201c \u043d\u0435 \u0435 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044f \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u043d\u0438\u044f \u0441\u044a\u0440\u0432\u044a\u0440 \u043d\u0430 Jenkins (\u0432\u044a\u0437\u043c\u043e\u0436\u043d\u043e \u0435 \u0434\u0430 \u0441\u044a\u0449\u0435\u0441\u0442\u0432\u0443\u0432\u0430\
- \u043d\u0430 \u043d\u044f\u043a\u043e\u0438 \u043e\u0442 \u043f\u043e\u0434\u0447\u0438\u043d\u0435\u043d\u0438\u0442\u0435 \u043c\u0430\u0448\u0438\u043d\u0438)
+
diff --git a/core/src/main/resources/hudson/tools/Messages_ja.properties b/core/src/main/resources/hudson/tools/Messages_ja.properties
index ac2fff6e07..2e82dec80a 100644
--- a/core/src/main/resources/hudson/tools/Messages_ja.properties
+++ b/core/src/main/resources/hudson/tools/Messages_ja.properties
@@ -37,4 +37,3 @@ InstallSourceProperty.DescriptorImpl.displayName=\u81ea\u52d5\u30a4\u30f3\u30b9\
JDKInstaller.DescriptorImpl.displayName=java.sun.com\u304b\u3089\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb
JDKInstaller.DescriptorImpl.doCheckId=JDK\u306eID\u3092\u5b9a\u7fa9\u3057\u3066\u304f\u3060\u3055\u3044\u3002
JDKInstaller.DescriptorImpl.doCheckAcceptLicense=JDK\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3059\u308b\u306b\u306f\u4f7f\u7528\u8a31\u8afe\u306b\u540c\u610f\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
-ToolDescriptor.NotADirectory=\u30de\u30b9\u30bf\u30fc\u4e0a\u306e{0}\u306f\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3067\u306f\u3042\u308a\u307e\u305b\u3093(\u30b9\u30ec\u30fc\u30d6\u306b\u306f\u3042\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093)\u3002
\ No newline at end of file
diff --git a/core/src/main/resources/hudson/tools/Messages_pt_BR.properties b/core/src/main/resources/hudson/tools/Messages_pt_BR.properties
index 91d0955134..b69eff530a 100644
--- a/core/src/main/resources/hudson/tools/Messages_pt_BR.properties
+++ b/core/src/main/resources/hudson/tools/Messages_pt_BR.properties
@@ -52,5 +52,4 @@ CommandInstaller.no_toolHome=\u00c9 necess\u00e1rio fornecer um diret\u00f3rio h
JDKInstaller.RequireOracleAccount=Instalar o JDK exige uma conta na Oracle. Por favor informe seu usu\u00e1ro/senha
# Run Batch Command
BatchCommandInstaller.DescriptorImpl.displayName=Executar comando em lotes
-# {0} is not a directory on the Jenkins master (but perhaps it exists on some slaves)
-ToolDescriptor.NotADirectory={0} n\u00e3o \u00e9 um diret\u00f3rio no Jenkins master (por\u00e9m pode existir em alguns slaves)
+
diff --git a/core/src/main/resources/hudson/tools/ZipExtractionInstaller/help-url.html b/core/src/main/resources/hudson/tools/ZipExtractionInstaller/help-url.html
index d6934a776f..9637265029 100644
--- a/core/src/main/resources/hudson/tools/ZipExtractionInstaller/help-url.html
+++ b/core/src/main/resources/hudson/tools/ZipExtractionInstaller/help-url.html
@@ -3,5 +3,5 @@
Should be either a ZIP or a GZip-compressed TAR file.
The timestamp on the server will be compared to the local version (if any)
so you can publish updates easily.
- The URL must be accessible from the Jenkins master but need not be accessible from slaves.
+ The URL must be accessible from the Jenkins master but need not be accessible from agents.
diff --git a/core/src/main/resources/hudson/tools/ZipExtractionInstaller/help-url_de.html b/core/src/main/resources/hudson/tools/ZipExtractionInstaller/help-url_de.html
deleted file mode 100644
index 40c7f1ed63..0000000000
--- a/core/src/main/resources/hudson/tools/ZipExtractionInstaller/help-url_de.html
+++ /dev/null
@@ -1,12 +0,0 @@
-
- URL, von der das Hilfsprogramm als binäres Archiv heruntergeladen werden kann.
- Es werden ZIP- und GZIP-komprimierte TAR-Archive unterstützt.
-
-
- Der Zeitstempel des Archivs auf dem Server wird mit der lokal installierten Version
- (soweit vorhanden) verglichen, so daß Updates einfach veröffentlicht werden können.
-
-
- Die URL muß vom Jenkins-Master aus erreichbar sein, nicht aber von jedem einzelnen
- Slave-Knoten.
-
-
diff --git a/core/src/main/resources/jenkins/diagnostics/PinningIsBlockingBundledPluginMonitor/message.properties b/core/src/main/resources/jenkins/diagnostics/PinningIsBlockingBundledPluginMonitor/message.properties
deleted file mode 100644
index c1fc741c55..0000000000
--- a/core/src/main/resources/jenkins/diagnostics/PinningIsBlockingBundledPluginMonitor/message.properties
+++ /dev/null
@@ -1,4 +0,0 @@
-blurb=This version of Jenkins comes with new versions of the following plugins that are currently \
- pinned in \
- the plugin manager. \
- It is recommended to upgrade them to at least the version bundled with Jenkins.
diff --git a/core/src/main/resources/jenkins/diagnostics/PinningIsBlockingBundledPluginMonitor/message_ja.properties b/core/src/main/resources/jenkins/diagnostics/PinningIsBlockingBundledPluginMonitor/message_ja.properties
deleted file mode 100644
index b0eb2a9b60..0000000000
--- a/core/src/main/resources/jenkins/diagnostics/PinningIsBlockingBundledPluginMonitor/message_ja.properties
+++ /dev/null
@@ -1,32 +0,0 @@
-# The MIT License
-#
-# Copyright (c) 2015, Seiji Sogabe
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-# copies of the Software, and to permit persons to whom the Software is
-# furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included in
-# all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-# THE SOFTWARE.
-
-# This version of Jenkins comes with new versions of the following plugins that are currently \
-# pinned in \
-# the plugin manager. \
-# It is recommended to upgrade them to at least the version bundled with Jenkins.
-
-
-blurb=\u3053\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u306eJenkins\u3067\u306f\u3001\u30d7\u30e9\u30b0\u30a4\u30f3\u30de\u30cd\u30fc\u30b8\u30e3\u30fc\u3067\
-\u30d4\u30f3\u304c\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u308b\u6b21\u306e\u30d7\u30e9\u30b0\u30a4\u30f3\u304c\
-\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u3066\u3044\u307e\u3059\u3002\
-\u30d4\u30f3\u304c\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u308b\u30d7\u30e9\u30b0\u30a4\u30f3\u3092\u3001\u5c11\u306a\u304f\u3068\u3082Jenkins\u306b\u30d0\u30f3\u30c9\u30eb\u3055\u308c\u3066\u3044\u308b\u30d0\u30fc\u30b8\u30e7\u30f3\u306b\u30a2\u30c3\u30d7\u30c7\u30fc\u30c8\u3059\u308b\u3053\u3068\u3092\u63a8\u5968\u3057\u307e\u3059\u3002
diff --git a/core/src/main/resources/jenkins/diagnostics/PinningIsBlockingBundledPluginMonitor/message_pt_BR.properties b/core/src/main/resources/jenkins/diagnostics/PinningIsBlockingBundledPluginMonitor/message_pt_BR.properties
deleted file mode 100644
index c2aeee6083..0000000000
--- a/core/src/main/resources/jenkins/diagnostics/PinningIsBlockingBundledPluginMonitor/message_pt_BR.properties
+++ /dev/null
@@ -1,30 +0,0 @@
-# The MIT License
-#
-# Copyright (c) 2004-, Kohsuke Kawaguchi, Sun Microsystems, Inc., and a number of other of contributers
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-# copies of the Software, and to permit persons to whom the Software is
-# furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included in
-# all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-# THE SOFTWARE.
-
-# This version of Jenkins comes with new versions of the following plugins that are currently \
-# pinned in \
-# the plugin manager. \
-# It is recommended to upgrade them to at least the version bundled with Jenkins.
-blurb=Essa vers\u00e3o do Jenkins vem com as vers\u00f5es novas dos seguintes plugins \
- pinned no \
- gerenciador de plugin. \
- \u00c9 recomendado atualizar para pelo menos a vers\u00e0o que vem junto com o Jenkins.
diff --git a/core/src/main/resources/jenkins/install/SetupWizard/authenticate-security-token.jelly b/core/src/main/resources/jenkins/install/SetupWizard/authenticate-security-token.jelly
new file mode 100644
index 0000000000..b08aa93f7d
--- /dev/null
+++ b/core/src/main/resources/jenkins/install/SetupWizard/authenticate-security-token.jelly
@@ -0,0 +1,45 @@
+
+
+
+
+
+
diff --git a/core/src/main/resources/jenkins/install/SetupWizard/authenticate-security-token.properties b/core/src/main/resources/jenkins/install/SetupWizard/authenticate-security-token.properties
new file mode 100644
index 0000000000..a6f4bc4530
--- /dev/null
+++ b/core/src/main/resources/jenkins/install/SetupWizard/authenticate-security-token.properties
@@ -0,0 +1,2 @@
+jenkins.install.findSecurityTokenMessage=To ensure Jenkins is securely set up by the administrator, \
+a password has been written to the log (not sure where to find it?) and this file on the server:
+
+
+
diff --git a/core/src/main/resources/jenkins/install/UpgradeWizard/footer.properties b/core/src/main/resources/jenkins/install/UpgradeWizard/footer.properties
new file mode 100644
index 0000000000..2d977c9e7a
--- /dev/null
+++ b/core/src/main/resources/jenkins/install/UpgradeWizard/footer.properties
@@ -0,0 +1,3 @@
+msg.before=Welcome to Jenkins 2!\u0020
+msg.link=Install new features
+msg.after=\u0020to complete the upgrade
diff --git a/core/src/main/resources/jenkins/install/pluginSetupWizard.properties b/core/src/main/resources/jenkins/install/pluginSetupWizard.properties
new file mode 100644
index 0000000000..63893f3e2d
--- /dev/null
+++ b/core/src/main/resources/jenkins/install/pluginSetupWizard.properties
@@ -0,0 +1,52 @@
+installWizard_welcomePanel_title=Getting Started
+installWizard_welcomePanel_banner=Customize Jenkins
+installWizard_welcomePanel_message=Plugins extend Jenkins with additional features to support many different needs.
+installWizard_welcomePanel_recommendedActionTitle=Install suggested plugins
+installWizard_welcomePanel_recommendedActionDetails=Install plugins the Jenkins community finds most useful.
+installWizard_welcomePanel_customizeActionTitle=Select plugins to install
+installWizard_welcomePanel_customizeActionDetails=Select and install plugins most suitable for your needs.
+installWizard_offline_title=Offline
+installWizard_offline_message=This Jenkins instance appears to be offline. \
+
\
+You may choose to continue by configuring a proxy or skipping plugin installation. \
+
+installWizard_error_header=An error occurred
+installWizard_error_message=An error occurred during installation:
+installWizard_error_connection=Unable to connect to Jenkins
+installWizard_installCustom_title=Getting Started
+installWizard_installCustom_selectAll=All
+installWizard_installCustom_selectNone=None
+installWizard_installCustom_selectRecommended=Recommended
+installWizard_installCustom_selected=Selected
+installWizard_installCustom_dependenciesPrefix=Dependencies
+installWizard_installCustom_pluginListDesc=Note that the full list of plugins is not shown here. Additional plugins can be installed in the Plugin Manager once the initial setup is complete. See the Wiki for more information.
+installWizard_goBack=Back
+installWizard_goInstall=Install
+installWizard_installing_title=Getting Started
+installWizard_installing_detailsLink=Details...
+installWizard_installComplete_title=Getting Started
+installWizard_installComplete_banner=Jenkins is ready!
+installWizard_pluginsInstalled_message=Your plugin installations are complete.
+installWizard_installComplete_message=Your Jenkins setup is complete.
+installWizard_installComplete_finishButtonLabel=Start using Jenkins
+installWizard_installComplete_restartRequiredMessage=Some plugins require Jenkins to be restarted.
+installWizard_installComplete_restartLabel=Restart
+installWizard_installIncomplete_title=Resume Installation
+installWizard_installIncomplete_banner=Resume Installation
+installWizard_installIncomplete_message=Jenkins was restarted during installation and some plugins didn't seem to get installed.
+installWizard_installIncomplete_resumeInstallationButtonLabel=Resume
+installWizard_saveFirstUser=Save and Finish
+installWizard_skipFirstUser=Continue as admin
+installWizard_firstUserSkippedMessage=
\
+You've skipped creating an admin user. To log in, use the username: 'admin' and \
+the administrator password you used to access the setup wizard.\
+
+installWizard_addFirstUser_title=Getting Started
+installWizard_configureProxy_label=Configure Proxy
+installWizard_configureProxy_save=Save and Continue
+installWizard_skipPluginInstallations=Skip Plugin Installations
+installWizard_installIncomplete_dependenciesLabel=Dependencies
+installWizard_installingConsole_dependencyIndicatorNote=** - required dependency
+installWizard_retry=Retry
diff --git a/core/src/main/resources/jenkins/install/pluginSetupWizard_de.properties b/core/src/main/resources/jenkins/install/pluginSetupWizard_de.properties
new file mode 100644
index 0000000000..0495cd6d44
--- /dev/null
+++ b/core/src/main/resources/jenkins/install/pluginSetupWizard_de.properties
@@ -0,0 +1 @@
+installWizard_welcomePanel_banner=Willkommen zu Jenkins
diff --git a/core/src/main/resources/jenkins/install/pluginSetupWizard_es.properties b/core/src/main/resources/jenkins/install/pluginSetupWizard_es.properties
new file mode 100644
index 0000000000..d856117ab4
--- /dev/null
+++ b/core/src/main/resources/jenkins/install/pluginSetupWizard_es.properties
@@ -0,0 +1 @@
+installWizard_welcomePanel_banner=Bienvenido a Jenkins
diff --git a/core/src/main/resources/jenkins/management/Messages.properties b/core/src/main/resources/jenkins/management/Messages.properties
index 6789348339..ff1761da0f 100644
--- a/core/src/main/resources/jenkins/management/Messages.properties
+++ b/core/src/main/resources/jenkins/management/Messages.properties
@@ -25,6 +25,9 @@
ConfigureLink.DisplayName=Configure System
ConfigureLink.Description=Configure global settings and paths.
+ConfigureTools.DisplayName=Global Tool Configuration
+ConfigureTools.Description=Configure tools, their locations and automatic installers.
+
ReloadLink.DisplayName=Reload Configuration from Disk
ReloadLink.Description=Discard all the loaded data in memory and reload everything from file system.\n\
Useful when you modified config files directly on disk.
diff --git a/core/src/main/resources/jenkins/model/BuildDiscarderProperty/help.html b/core/src/main/resources/jenkins/model/BuildDiscarderProperty/help.html
index 7a50890f34..15ee4f5f33 100644
--- a/core/src/main/resources/jenkins/model/BuildDiscarderProperty/help.html
+++ b/core/src/main/resources/jenkins/model/BuildDiscarderProperty/help.html
@@ -1,19 +1,51 @@
- This controls the disk consumption of Jenkins by managing how long you'd like to keep
- records of the builds (such as console output, build artifacts, and so on.)
- Jenkins offers two criteria:
-
+ This determines when, if ever, build records for this project should be
+ discarded. Build records include the console output, archived artifacts, and
+ any other metadata related to a particular build.
+
+ Keeping fewer builds means less disk space will be used in the Build Record
+ Root Directory, which is specified on the Configure System screen.
+
+
+ Jenkins offers two options for determining when builds should be discarded:
- Driven by age. You can have Jenkins delete a record if it reaches a certain age
- (for example, 7 days old.)
+ Build age: discard builds if they reach a certain age; for example, seven
+ days old.
- Driven by number. You can have Jenkins make sure that it only maintains up to
- N build records. If a new build is started, the oldest record will
- be simply removed.
+ Build count: discard the oldest build if a certain number of builds
+ already exist.
+ These two options can be active at the same time, so you can keep builds for
+ 14 days, but only up to a limit of 50 builds, for example. If either limit is
+ exceeded, then any builds beyond that limit will be discarded.
+
+ You can also ensure that important builds are kept forever, regardless of the
+ setting here — click the Keep this build forever button on the
+ build page.
+
+ The last stable and last successful build are also excluded from these rules.
- Jenkins also allows you to mark an individual build as 'Keep this log forever', to
- exclude certain important builds from being discarded automatically.
- The last stable and last successful build are always kept as well.
-
\ No newline at end of file
+
+
+ In the Advanced section, the same options can be specified, but
+ specifically for build artifacts. If enabled, build artifacts will be
+ discarded for any builds which exceed the defined limits. The builds
+ themselves will still be kept; only the associated artifacts, if any, will be
+ deleted.
+
+ For example, if a project builds some software and produces a large installer,
+ which is archived, you may wish to always keep the console log and information
+ about which source control commit was built, while for disk space reasons, you
+ may want to keep only the last three installers that were built.
+
+ This can make sense for projects where you can easily recreate the same
+ artifacts later by building the same source control commit again.
+
+
+
+ Note that Jenkins does not discard items immediately when this configuration
+ is updated, or as soon as any of the configured values are exceeded; these
+ rules are evaluated each time that a build of this project completes.
+
diff --git a/core/src/main/resources/jenkins/model/CoreEnvironmentContributor/buildEnv.properties b/core/src/main/resources/jenkins/model/CoreEnvironmentContributor/buildEnv.properties
index c8040aad7a..b1c4d4d8e1 100644
--- a/core/src/main/resources/jenkins/model/CoreEnvironmentContributor/buildEnv.properties
+++ b/core/src/main/resources/jenkins/model/CoreEnvironmentContributor/buildEnv.properties
@@ -8,7 +8,7 @@ EXECUTOR_NUMBER.blurb=\
(among executors of the same machine) that\u2019s \
carrying out this build. This is the number you see in \
the "build executor status", except that the number starts from 0, not 1.
-NODE_NAME.blurb=Name of the slave if the build is on a slave, or "master" if run on master
+NODE_NAME.blurb=Name of the agent if the build is on an agent, or "master" if run on master
NODE_LABELS.blurb=Whitespace-separated list of labels that the node is assigned.
WORKSPACE.blurb=The absolute path of the directory assigned to the build as a workspace.
JENKINS_HOME.blurb=The absolute path of the directory assigned on the master node for Jenkins to store data.
diff --git a/core/src/main/resources/jenkins/model/CoreEnvironmentContributor/buildEnv_de.properties b/core/src/main/resources/jenkins/model/CoreEnvironmentContributor/buildEnv_de.properties
index bbd98cb35a..bb29c41ad9 100644
--- a/core/src/main/resources/jenkins/model/CoreEnvironmentContributor/buildEnv_de.properties
+++ b/core/src/main/resources/jenkins/model/CoreEnvironmentContributor/buildEnv_de.properties
@@ -10,7 +10,6 @@ EXECUTOR_NUMBER.blurb=Die laufende Nummer des Build-Prozessors, der den aktuelle
Dies ist die Nummer, die Sie auch im Build-Prozessor Status sehen - \
mit der Ausnahme, da\u00DF bei der Umgebungsvariable die Z\u00E4hlung bei 0 und nicht \
bei 1 beginnt.
-NODE_NAME.blurb=Name des Build-Slaves, wenn auf einem Build-Slave gebaut wird, oder "master" wenn auf dem Master-Server gebaut wird.
NODE_LABELS.blurb=Durch Leerzeichen getrennte Liste von Labels, die dem Knoten zugeordnet sind.
WORKSPACE.blurb=Der absolute Pfad zum Arbeitsbereich.
JENKINS_HOME.blurb=Der absolute Pfad des Verzeichnisses, in dem der Master-Server seine Daten speichert.
diff --git a/core/src/main/resources/jenkins/model/CoreEnvironmentContributor/buildEnv_fr.properties b/core/src/main/resources/jenkins/model/CoreEnvironmentContributor/buildEnv_fr.properties
index 7026f87f9d..a0d15385dd 100644
--- a/core/src/main/resources/jenkins/model/CoreEnvironmentContributor/buildEnv_fr.properties
+++ b/core/src/main/resources/jenkins/model/CoreEnvironmentContributor/buildEnv_fr.properties
@@ -7,7 +7,6 @@ EXECUTOR_NUMBER.blurb=Le num\u00E9ro unique qui identifie l'ex\u00E9cuteur coura
(parmi les ex\u00E9cuteurs d'une m\u00EAme machine) qui a contruit ce build. \
Il s'agit du num\u00E9ro que vous voyez dans le "statut de l'ex\u00E9cuteur du build", \
sauf que la num\u00E9rotation commence \u00E0 0 et non \u00E0 1.
-NODE_NAME.blurb=
NODE_LABELS.blurb=
WORKSPACE.blurb=Le chemin absolu vers le r\u00E9pertoire de travail.
JENKINS_HOME.blurb=
diff --git a/core/src/main/resources/jenkins/model/CoreEnvironmentContributor/buildEnv_ja.properties b/core/src/main/resources/jenkins/model/CoreEnvironmentContributor/buildEnv_ja.properties
index d66e0424df..49d12ea405 100644
--- a/core/src/main/resources/jenkins/model/CoreEnvironmentContributor/buildEnv_ja.properties
+++ b/core/src/main/resources/jenkins/model/CoreEnvironmentContributor/buildEnv_ja.properties
@@ -5,7 +5,6 @@ BUILD_TAG.blurb=\u6587\u5B57\u5217 "jenkins-$'{'JOB_NAME}-$'{'BUILD_NU
\u7C21\u6613\u306A\u8B58\u5225\u5B50\u3068\u3057\u3066\u3001\u30EA\u30BD\u30FC\u30B9\u30D5\u30A1\u30A4\u30EB\u3084jar\u30D5\u30A1\u30A4\u30EB\u306A\u3069\u306B\u4ED8\u4E0E\u3059\u308B\u306E\u306B\u4FBF\u5229\u3067\u3059\u3002
EXECUTOR_NUMBER.blurb=\u3053\u306E\u30D3\u30EB\u30C9\u3092\u5B9F\u884C\u3057\u3066\u3044\u308B\u73FE\u5728\u306E\u30A8\u30B0\u30BC\u30AD\u30E5\u30FC\u30BF\u30FC\u3092\u8B58\u5225\u3059\u308B(\u540C\u4E00\u30DE\u30B7\u30F3\u306E\u4E2D\u3067)\u30E6\u30CB\u30FC\u30AF\u306A\u756A\u53F7\u3002\
"\u30D3\u30EB\u30C9\u5B9F\u884C\u72B6\u614B"\u306B\u8868\u793A\u3055\u308C\u3066\u3044\u308B\u6570\u5B57\u3067\u3059\u304C\u30011\u3067\u306F\u306A\u304F0\u304B\u3089\u59CB\u307E\u308B\u6570\u5B57\u3067\u3059\u3002
-NODE_NAME.blurb=\u30D3\u30EB\u30C9\u304C\u5B9F\u884C\u3055\u308C\u308B\u30B9\u30EC\u30FC\u30D6\u306E\u540D\u79F0\u3002\u30DE\u30B9\u30BF\u30FC\u3067\u5B9F\u884C\u3055\u308C\u308B\u5834\u5408\u306F"master"\u3002
NODE_LABELS.blurb=\u30CE\u30FC\u30C9\u306B\u8A2D\u5B9A\u3055\u308C\u305F\u30E9\u30D9\u30EB\u306E\u30EA\u30B9\u30C8\uFF08\u30B9\u30DA\u30FC\u30B9\u533A\u5207\u308A)\u3002
WORKSPACE.blurb=\u30EF\u30FC\u30AF\u30B9\u30DA\u30FC\u30B9\u306E\u7D76\u5BFE\u30D1\u30B9\u3002
JENKINS_HOME.blurb=
diff --git a/core/src/main/resources/jenkins/model/CoreEnvironmentContributor/buildEnv_nl.properties b/core/src/main/resources/jenkins/model/CoreEnvironmentContributor/buildEnv_nl.properties
index cd999280d1..b127be505e 100644
--- a/core/src/main/resources/jenkins/model/CoreEnvironmentContributor/buildEnv_nl.properties
+++ b/core/src/main/resources/jenkins/model/CoreEnvironmentContributor/buildEnv_nl.properties
@@ -7,7 +7,6 @@ EXECUTOR_NUMBER.blurb=Het unieke nummer, waarmee uw huidige uitvoerder ge\u00EFd
Dit is het nummer dat u terugvindt in de "Status uitvoerders"-tabel op de hoofdpagina. \
Merk wel dat in die tabel geteld wordt vanaf 1. Uitvoerder 1 in de "Status uitvoerders"-tabel \
komt dus overeen met een "EXECUTOR_NUMBER" gelijk aan 0.
-NODE_NAME.blurb=
NODE_LABELS.blurb=
WORKSPACE.blurb=Het absolute pad naar de werkplaats.
JENKINS_HOME.blurb=
diff --git a/core/src/main/resources/jenkins/model/CoreEnvironmentContributor/buildEnv_tr.properties b/core/src/main/resources/jenkins/model/CoreEnvironmentContributor/buildEnv_tr.properties
index b0a753fdc1..b3438af07b 100644
--- a/core/src/main/resources/jenkins/model/CoreEnvironmentContributor/buildEnv_tr.properties
+++ b/core/src/main/resources/jenkins/model/CoreEnvironmentContributor/buildEnv_tr.properties
@@ -3,7 +3,6 @@ BUILD_ID.blurb=
JOB_NAME.blurb=
BUILD_TAG.blurb=
EXECUTOR_NUMBER.blurb=
-NODE_NAME.blurb=
NODE_LABELS.blurb=
WORKSPACE.blurb=
JENKINS_HOME.blurb=
diff --git a/core/src/main/resources/jenkins/model/CoreEnvironmentContributor/buildEnv_zh_TW.properties b/core/src/main/resources/jenkins/model/CoreEnvironmentContributor/buildEnv_zh_TW.properties
index 3c9e7ba68a..346c969498 100644
--- a/core/src/main/resources/jenkins/model/CoreEnvironmentContributor/buildEnv_zh_TW.properties
+++ b/core/src/main/resources/jenkins/model/CoreEnvironmentContributor/buildEnv_zh_TW.properties
@@ -28,7 +28,6 @@ BUILD_TAG.blurb="jenkins-$'{'JOB_NAME}-$'{'BUILD_NUMBER}" \u5b57\u
EXECUTOR_NUMBER.blurb=\
\u57f7\u884c\u672c\u6b21\u5efa\u7f6e\u7684\u57f7\u884c\u7a0b\u5f0f\u7de8\u865f\uff0c\u53ef\u7528\u4f86\u9451\u5225\u540c\u6a5f\u5668\u4e0a\u7684\u4e0d\u540c\u57f7\u884c\u7a0b\u5f0f\u3002\
\u4e5f\u5c31\u662f\u60a8\u5728\u300c\u5efa\u7f6e\u57f7\u884c\u7a0b\u5f0f\u72c0\u614b\u300d\u88e1\u770b\u5230\u7684\u865f\u78bc\uff0c\u53ea\u662f\u9019\u88e1\u5f9e 0 \u958b\u59cb\u7b97\uff0c\u4e0d\u662f 1\u3002
-NODE_NAME.blurb=\u5982\u679c\u5efa\u7f6e\u662f\u5728 Slave \u7bc0\u9ede\u4e0a\u57f7\u884c\uff0c\u5c31\u662f\u7bc0\u9ede\u7684\u540d\u7a31; \u5982\u679c\u5728 Master \u4e0a\u8dd1\u5c31\u986f\u793a "master"
NODE_LABELS.blurb=\u4ee5\u7a7a\u767d\u5206\u9694\u7684\u7bc0\u9ede\u6a19\u7c64\u6e05\u55ae\u3002
WORKSPACE.blurb=\u5efa\u7f6e\u5de5\u4f5c\u5340\u76ee\u9304\u7684\u7d55\u5c0d\u8def\u5f91\u3002
JENKINS_HOME.blurb=Master \u7bc0\u9ede\u8cc7\u6599\u5b58\u653e\u76ee\u9304\u7684\u7d55\u5c0d\u8def\u5f91\u3002
diff --git a/core/src/main/resources/jenkins/model/GlobalQuietPeriodConfiguration/help-quietPeriod.html b/core/src/main/resources/jenkins/model/GlobalQuietPeriodConfiguration/help-quietPeriod.html
index fb8b2665a6..4beaab60a7 100644
--- a/core/src/main/resources/jenkins/model/GlobalQuietPeriodConfiguration/help-quietPeriod.html
+++ b/core/src/main/resources/jenkins/model/GlobalQuietPeriodConfiguration/help-quietPeriod.html
@@ -1,21 +1,23 @@
- If set, a newly scheduled build waits for this many seconds before actually being built.
- This is useful for:
-
-
- Collapsing multiple CVS change notification e-mails into one (some CVS changelog
- e-mail generation scripts generate multiple e-mails in quick succession when
- a commit spans across directories).
-
-
- If your coding style is such that you commit one logical change in a few cvs/svn
- operations, then setting a longer quiet period would prevent Jenkins from building
- it prematurely and reporting a failure.
-
-
- Throttling builds. If your Jenkins installation is too busy with too many builds,
- setting a longer quiet period can reduce the number of builds.
-
-
- If not explicitly set at project-level, the system-wide default value is used.
-
\ No newline at end of file
+ When this option is checked, newly triggered builds of this project will be
+ added to the queue, but Jenkins will wait for the specified period of time
+ before actually starting the build.
+
+ For example, if your builds take a long time to execute, you may want to
+ prevent multiple source control commits that are made at approximately the
+ same time from triggering multiple builds. Enabling the quiet period would
+ prevent a build from being started as soon as Jenkins discovers the first
+ commit; this would give the developer the chance to push more commits which
+ would be included in the build when it starts. This reduces the size of the
+ queue, meaning that developers would get feedback faster for their series of
+ commits, and the load on the Jenkins system would be reduced.
+
+ If a new build of this project is triggered while a build is already sitting
+ in the queue, waiting for its quiet period to end, the quiet period will not
+ be reset. The newly triggered build will not be added to the queue, unless
+ this project is parameterised and the build has different parameters to the
+ build already in the queue.
+
+ If this option is not checked, then the system-wide default value from the
+ Configure System screen will be used.
+
diff --git a/core/src/main/resources/jenkins/model/Jenkins/configureExecutors.jelly b/core/src/main/resources/jenkins/model/Jenkins/configureExecutors.jelly
index 921dc65e3e..751bea6574 100644
--- a/core/src/main/resources/jenkins/model/Jenkins/configureExecutors.jelly
+++ b/core/src/main/resources/jenkins/model/Jenkins/configureExecutors.jelly
@@ -36,12 +36,12 @@ THE SOFTWARE.
This page has moved
- Starting 1.271, slave configuration is split into individual configuration page per slave,
+ Starting 1.271, agent configuration is split into individual configuration page per agent,
accessible from here.
-
To configure existing slaves, click the above link, click their name, and then click the config link from the left
-
To add a new slave, click the above link, and click "add new slave"
+
To configure existing agents, click the above link, click their name, and then click the config link from the left
+
To add a new agent, click the above link, and click "add new agent"
- Specify where Jenkins would store records of the past builds.
- This value can include the following variables.
-
-
-
${JENKINS_HOME} — Jenkins home directory.
-
${ITEM_ROOTDIR} — Root directory of a job for which the default workspace is allocated.
-
${ITEM_FULL_NAME} — '/'-separated job name, like "foo/bar".
-
-
+ Specifies where Jenkins will store build records on the file system. This
+ includes the console output and other metadata generated by a build.
- Changing this value allows you to put build records on a bigger but slow disk,
- while keeping JENKINS_HOME on highly available backed up drive, for example.
- Default value is ${ITEM_ROOTDIR}/builds.
-
\ No newline at end of file
+ This value may include the following variables:
+
+
${JENKINS_HOME} — Absolute path of the Jenkins home
+ directory
+
${ITEM_ROOTDIR} — Absolute path of the directory
+ where Jenkins stores the configuration and related metadata for a
+ given job
+
${ITEM_FULL_NAME} — The full name of a given job,
+ which may be slash-separated, e.g. foo/bar for the job
+ bar in folder foo
+
+ The value must include ${ITEM_ROOTDIR} or
+ ${ITEM_FULL_NAME}, so that each job can store its build records
+ separately.
+
+ Changing this value allows you to store build records on a larger, but
+ slower disk, rather than on the same disk where builds are executed.
+
+ Any changes to this value will take effect as soon as this configuration
+ page is saved, but note that Jenkins will not automatically migrate any data
+ from the current build record root directory.
+
+ The default value is ${ITEM_ROOTDIR}/builds.
+
diff --git a/core/src/main/resources/jenkins/model/Jenkins/help-rawWorkspaceDir.html b/core/src/main/resources/jenkins/model/Jenkins/help-rawWorkspaceDir.html
index 7906d5c190..765f7464e0 100644
--- a/core/src/main/resources/jenkins/model/Jenkins/help-rawWorkspaceDir.html
+++ b/core/src/main/resources/jenkins/model/Jenkins/help-rawWorkspaceDir.html
@@ -1,15 +1,30 @@
- Specify where Jenkins would store job workspaces on the master node.
- (It has no effect on builds run on slaves.)
- This value can include the following variables.
-
-
-
${JENKINS_HOME} — Jenkins home directory.
-
${ITEM_ROOTDIR} — Root directory of a job for which the default workspace is allocated.
-
${ITEM_FULL_NAME} — '/'-separated job name, like "foo/bar".
-
-
+ Specifies where Jenkins will store workspaces for builds that are executed
+ on the master.
+ It has no effect on builds that are executed on agents.
- Changing this value allows you to put workspaces on SSD, SCSI, or even ram disks.
- Default value is ${ITEM_ROOTDIR}/workspace.
-
\ No newline at end of file
+ This value may include the following variables:
+
+
${JENKINS_HOME} — Absolute path of the Jenkins home
+ directory
+
${ITEM_ROOTDIR} — Absolute path of the directory
+ where Jenkins stores the configuration and related metadata for a
+ given job
+
${ITEM_FULL_NAME} — The full name of a given job,
+ which may be slash-separated, e.g. foo/bar for the job
+ bar in folder foo
+
+ The value should normally include ${ITEM_ROOTDIR} or
+ ${ITEM_FULL_NAME}, otherwise different jobs will end up sharing the
+ same workspace.
+
+ As builds tend to be disk I/O intensive, changing this value enables you to
+ put build workspaces on faster storage hardware, such as SSDs or even RAM
+ disks.
+
+ Any changes to this value will take effect as soon as this configuration
+ page is saved, but note that Jenkins will not automatically migrate any data
+ from the current workspace root directory.
+
+ The default value is ${ITEM_ROOTDIR}/workspace.
+
diff --git a/core/src/main/resources/jenkins/model/Jenkins/help-rawWorkspaceDir_zh_TW.html b/core/src/main/resources/jenkins/model/Jenkins/help-rawWorkspaceDir_zh_TW.html
deleted file mode 100644
index e849c6f5c0..0000000000
--- a/core/src/main/resources/jenkins/model/Jenkins/help-rawWorkspaceDir_zh_TW.html
+++ /dev/null
@@ -1,13 +0,0 @@
-
\ No newline at end of file
diff --git a/core/src/main/resources/jenkins/model/Jenkins/login.jelly b/core/src/main/resources/jenkins/model/Jenkins/login.jelly
index f7e02a5f50..29d9192eda 100644
--- a/core/src/main/resources/jenkins/model/Jenkins/login.jelly
+++ b/core/src/main/resources/jenkins/model/Jenkins/login.jelly
@@ -24,6 +24,11 @@ THE SOFTWARE.
+
+
+
+
+
@@ -70,4 +75,6 @@ THE SOFTWARE.
+
+
diff --git a/core/src/main/resources/jenkins/model/Jenkins/loginError.jelly b/core/src/main/resources/jenkins/model/Jenkins/loginError.jelly
index 6f7c2bfb22..d17d3eaff6 100644
--- a/core/src/main/resources/jenkins/model/Jenkins/loginError.jelly
+++ b/core/src/main/resources/jenkins/model/Jenkins/loginError.jelly
@@ -27,6 +27,10 @@ THE SOFTWARE.
+
+
+
+
+
\ No newline at end of file
diff --git a/core/src/main/resources/lib/form/checkbox.jelly b/core/src/main/resources/lib/form/checkbox.jelly
index 17a3fe6d93..240e612c0e 100644
--- a/core/src/main/resources/lib/form/checkbox.jelly
+++ b/core/src/main/resources/lib/form/checkbox.jelly
@@ -66,7 +66,7 @@ THE SOFTWARE.
name="${name}"
value="${attrs.value}"
title="${attrs.tooltip}"
- onclick="${attrs.readonly=='true' ? 'return false;' : attrs.onclick}" id="${attrs.id}" class="${attrs.negative!=null ? 'negative' : null} ${attrs.checkUrl!=null?'validated':''}"
+ onclick="${attrs.readonly=='true' ? 'return false;' : attrs.onclick}" id="${attrs.id}" class="${attrs.class} ${attrs.negative!=null ? 'negative' : null} ${attrs.checkUrl!=null?'validated':''}"
checkUrl="${attrs.checkUrl}" checkDependsOn="${attrs.checkDependsOn}" json="${attrs.json}"
checked="${value ? 'true' : null}"/>
diff --git a/core/src/main/resources/lib/form/descriptorList.jelly b/core/src/main/resources/lib/form/descriptorList.jelly
index 23db231665..ec74decd6e 100644
--- a/core/src/main/resources/lib/form/descriptorList.jelly
+++ b/core/src/main/resources/lib/form/descriptorList.jelly
@@ -67,7 +67,7 @@ THE SOFTWARE.
-
+
diff --git a/core/src/main/resources/lib/form/optionalBlock.jelly b/core/src/main/resources/lib/form/optionalBlock.jelly
index 08408527d7..8133e4c7db 100644
--- a/core/src/main/resources/lib/form/optionalBlock.jelly
+++ b/core/src/main/resources/lib/form/optionalBlock.jelly
@@ -66,9 +66,9 @@ THE SOFTWARE.
-
+
-
@@ -79,7 +79,7 @@ THE SOFTWARE.
-
+
diff --git a/core/src/main/resources/lib/form/radioBlock.jelly b/core/src/main/resources/lib/form/radioBlock.jelly
index 2a6135a917..ca60fa9554 100644
--- a/core/src/main/resources/lib/form/radioBlock.jelly
+++ b/core/src/main/resources/lib/form/radioBlock.jelly
@@ -54,11 +54,11 @@ THE SOFTWARE.
-
+
@@ -69,5 +69,5 @@ THE SOFTWARE.
-
+
diff --git a/core/src/main/resources/lib/form/repeatableDeleteButton.jelly b/core/src/main/resources/lib/form/repeatableDeleteButton.jelly
index e82b2b59b5..9e676217b2 100644
--- a/core/src/main/resources/lib/form/repeatableDeleteButton.jelly
+++ b/core/src/main/resources/lib/form/repeatableDeleteButton.jelly
@@ -32,5 +32,5 @@ THE SOFTWARE.
-
+
diff --git a/core/src/main/resources/lib/form/rowSet.jelly b/core/src/main/resources/lib/form/rowSet.jelly
index 19dd716b87..9b1746395b 100644
--- a/core/src/main/resources/lib/form/rowSet.jelly
+++ b/core/src/main/resources/lib/form/rowSet.jelly
@@ -43,9 +43,9 @@ THE SOFTWARE.
-
+
-
+
\ No newline at end of file
diff --git a/core/src/main/resources/lib/form/select/select.js b/core/src/main/resources/lib/form/select/select.js
index 0b7ce9b2c6..0f87d0bbf6 100644
--- a/core/src/main/resources/lib/form/select/select.js
+++ b/core/src/main/resources/lib/form/select/select.js
@@ -43,6 +43,9 @@ function updateListBox(listBox,url,config) {
Behaviour.specify("SELECT.select", 'select', 1000, function(e) {
function hasChanged(selectEl, originalValue) {
+ // seems like a race condition allows this to fire before the 'selectEl' is defined. If that happens, exit..
+ if(!selectEl || !selectEl.options || !selectEl.options.length > 0)
+ return false;
var firstValue = selectEl.options[0].value;
var selectedValue = selectEl.value;
if (originalValue == "" && selectedValue == firstValue) {
diff --git a/core/src/main/resources/lib/form/slave-mode.jelly b/core/src/main/resources/lib/form/slave-mode.jelly
index da161ce108..61c8edc299 100644
--- a/core/src/main/resources/lib/form/slave-mode.jelly
+++ b/core/src/main/resources/lib/form/slave-mode.jelly
@@ -26,7 +26,7 @@ THE SOFTWARE.
- listbox for choosing the slave's usage.
+ listbox for choosing the agent's usage.
Name of the <select> element.
diff --git a/core/src/main/resources/lib/hudson/ballColorTd.jelly b/core/src/main/resources/lib/hudson/ballColorTd.jelly
index 9889dbaf59..b8634c9ad7 100644
--- a/core/src/main/resources/lib/hudson/ballColorTd.jelly
+++ b/core/src/main/resources/lib/hudson/ballColorTd.jelly
@@ -71,7 +71,7 @@ THE SOFTWARE.
-
+
diff --git a/core/src/main/resources/lib/hudson/project/config-assignedLabel.jelly b/core/src/main/resources/lib/hudson/project/config-assignedLabel.jelly
index 9959f6d18d..d242e803f9 100644
--- a/core/src/main/resources/lib/hudson/project/config-assignedLabel.jelly
+++ b/core/src/main/resources/lib/hudson/project/config-assignedLabel.jelly
@@ -27,7 +27,7 @@ THE SOFTWARE.
-->
-
+
diff --git a/core/src/main/resources/lib/hudson/project/config-disableBuild.jelly b/core/src/main/resources/lib/hudson/project/config-disableBuild.jelly
index 12738ee939..024974a087 100644
--- a/core/src/main/resources/lib/hudson/project/config-disableBuild.jelly
+++ b/core/src/main/resources/lib/hudson/project/config-disableBuild.jelly
@@ -23,10 +23,10 @@ THE SOFTWARE.
-->
-
-
\ No newline at end of file
+
diff --git a/core/src/main/resources/lib/hudson/project/config-disableBuild_bg.properties b/core/src/main/resources/lib/hudson/project/config-disableBuild_bg.properties
index 8717d41f6d..3448ec1467 100644
--- a/core/src/main/resources/lib/hudson/project/config-disableBuild_bg.properties
+++ b/core/src/main/resources/lib/hudson/project/config-disableBuild_bg.properties
@@ -20,4 +20,4 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
-Disable\ Build=\u0417\u0430\u043C\u0440\u0430\u0437\u0438 \u0431\u0438\u043B\u0434\u0430
+Disable\ this\ project=\u0417\u0430\u043C\u0440\u0430\u0437\u0438 \u0431\u0438\u043B\u0434\u0430
diff --git a/core/src/main/resources/lib/hudson/project/config-disableBuild_da.properties b/core/src/main/resources/lib/hudson/project/config-disableBuild_da.properties
index a3677c10af..66d121002c 100644
--- a/core/src/main/resources/lib/hudson/project/config-disableBuild_da.properties
+++ b/core/src/main/resources/lib/hudson/project/config-disableBuild_da.properties
@@ -20,5 +20,5 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
-Disable\ Build=Sl\u00e5 Byg Fra
+Disable\ this\ project=Sl\u00e5 Byg Fra
No\ new\ builds\ will\ be\ executed\ until\ the\ project\ is\ re-enabled.=Der vil ikke blive udf\u00f8rt flere byg f\u00f8r projektet bliver sl\u00e5et til igen.
diff --git a/core/src/main/resources/lib/hudson/project/config-disableBuild_de.properties b/core/src/main/resources/lib/hudson/project/config-disableBuild_de.properties
index 37ac915fb4..2246901787 100644
--- a/core/src/main/resources/lib/hudson/project/config-disableBuild_de.properties
+++ b/core/src/main/resources/lib/hudson/project/config-disableBuild_de.properties
@@ -20,5 +20,5 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
-Disable\ Build=Projekt deaktivieren
+Disable\ this\ project=Projekt deaktivieren
No\ new\ builds\ will\ be\ executed\ until\ the\ project\ is\ re-enabled.=Es werden keine weiteren Builds ausgeführt, bis das Projekt wieder reaktiviert wird.
diff --git a/core/src/main/resources/lib/hudson/project/config-disableBuild_es.properties b/core/src/main/resources/lib/hudson/project/config-disableBuild_es.properties
index 9005dc80a7..5e658f9de1 100644
--- a/core/src/main/resources/lib/hudson/project/config-disableBuild_es.properties
+++ b/core/src/main/resources/lib/hudson/project/config-disableBuild_es.properties
@@ -20,5 +20,5 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
-Disable\ Build=Desactivar la ejecución
+Disable\ this\ project=Desactivar la ejecución
No\ new\ builds\ will\ be\ executed\ until\ the\ project\ is\ re-enabled.=No se ejecutará nuevamente hasta que el proyecto sea reactivado.
diff --git a/core/src/main/resources/lib/hudson/project/config-disableBuild_fr.properties b/core/src/main/resources/lib/hudson/project/config-disableBuild_fr.properties
index 8154a99aab..11facdcf21 100644
--- a/core/src/main/resources/lib/hudson/project/config-disableBuild_fr.properties
+++ b/core/src/main/resources/lib/hudson/project/config-disableBuild_fr.properties
@@ -20,5 +20,5 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
-Disable\ Build=D\u00e9sactiver le projet
+Disable\ this\ project=D\u00e9sactiver le projet
No\ new\ builds\ will\ be\ executed\ until\ the\ project\ is\ re-enabled.=Aucun nouveau build ne sera ex\u00e9cut\u00e9 jusqu''\u00e0 ce que le projet soit r\u00e9activ\u00e9.
diff --git a/core/src/main/resources/lib/hudson/project/config-disableBuild_he.properties b/core/src/main/resources/lib/hudson/project/config-disableBuild_he.properties
index effaf6d86e..0abc35b1bd 100644
--- a/core/src/main/resources/lib/hudson/project/config-disableBuild_he.properties
+++ b/core/src/main/resources/lib/hudson/project/config-disableBuild_he.properties
@@ -1,4 +1,4 @@
# This file is under the MIT License by authors
-Disable\ Build=\u05E9\u05EA\u05E7 \u05D1\u05E0\u05D9\u05D4
+Disable\ this\ project=\u05E9\u05EA\u05E7 \u05D1\u05E0\u05D9\u05D4
No\ new\ builds\ will\ be\ executed\ until\ the\ project\ is\ re-enabled.=\u05D1\u05E0\u05D9\u05D5\u05EA \u05D7\u05D3\u05E9\u05D5\u05EA \u05DC\u05D0 \u05D9\u05D5\u05E4\u05E2\u05DC\u05D5 \u05E2\u05D3 \u05E9\u05D1\u05E0\u05D9\u05D4 \u05D6\u05D5 \u05EA\u05D0\u05D5\u05E4\u05E9\u05E8 \u05D1\u05E9\u05E0\u05D9\u05EA
diff --git a/core/src/main/resources/lib/hudson/project/config-disableBuild_hu.properties b/core/src/main/resources/lib/hudson/project/config-disableBuild_hu.properties
index d2fb9342e7..57047b4d70 100644
--- a/core/src/main/resources/lib/hudson/project/config-disableBuild_hu.properties
+++ b/core/src/main/resources/lib/hudson/project/config-disableBuild_hu.properties
@@ -1,4 +1,4 @@
# This file is under the MIT License by authors
-Disable\ Build=\u00C9p\u00EDt\u00E9s tilt\u00E1sa
+Disable\ this\ project=\u00C9p\u00EDt\u00E9s tilt\u00E1sa
No\ new\ builds\ will\ be\ executed\ until\ the\ project\ is\ re-enabled.=A projekt \u00FAjraenged\u00E9lyez\u00E9s\u00E9ig nem lesz \u00FAj ford\u00EDt\u00E1s elind\u00EDtva.
diff --git a/core/src/main/resources/lib/hudson/project/config-disableBuild_it.properties b/core/src/main/resources/lib/hudson/project/config-disableBuild_it.properties
index 43b7b20a6e..d03554a8cf 100644
--- a/core/src/main/resources/lib/hudson/project/config-disableBuild_it.properties
+++ b/core/src/main/resources/lib/hudson/project/config-disableBuild_it.properties
@@ -20,5 +20,5 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
-Disable\ Build=Disabilita Build
+Disable\ this\ project=Disabilita Build
No\ new\ builds\ will\ be\ executed\ until\ the\ project\ is\ re-enabled.=Non saranno effettuate nuove build finch\u00E8 questo progetto non sar\u00E0 riattivato.
diff --git a/core/src/main/resources/lib/hudson/project/config-disableBuild_ja.properties b/core/src/main/resources/lib/hudson/project/config-disableBuild_ja.properties
index 7828ac92ce..c04759fdc0 100644
--- a/core/src/main/resources/lib/hudson/project/config-disableBuild_ja.properties
+++ b/core/src/main/resources/lib/hudson/project/config-disableBuild_ja.properties
@@ -20,5 +20,5 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
-Disable\ Build=\u30d3\u30eb\u30c9\u7121\u52b9\u5316
+Disable\ this\ project=\u30d3\u30eb\u30c9\u7121\u52b9\u5316
No\ new\ builds\ will\ be\ executed\ until\ the\ project\ is\ re-enabled.=\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u304c\u518d\u3073\u6709\u52b9\u5316\u3055\u308c\u308b\u307e\u3067\u65b0\u3057\u3044\u30d3\u30eb\u30c9\u306f\u884c\u308f\u308c\u306a\u304f\u306a\u308a\u307e\u3059
diff --git a/core/src/main/resources/lib/hudson/project/config-disableBuild_ko.properties b/core/src/main/resources/lib/hudson/project/config-disableBuild_ko.properties
index 5f0373ef61..355ef2daea 100644
--- a/core/src/main/resources/lib/hudson/project/config-disableBuild_ko.properties
+++ b/core/src/main/resources/lib/hudson/project/config-disableBuild_ko.properties
@@ -20,5 +20,5 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
-Disable\ Build=\uBE4C\uB4DC \uC548\uD568
+Disable\ this\ project=\uBE4C\uB4DC \uC548\uD568
No\ new\ builds\ will\ be\ executed\ until\ the\ project\ is\ re-enabled.=\uD504\uB85C\uC81D\uD2B8\uAC00 \uB2E4\uC2DC \uBE4C\uB4DC\uB97C \uD560 \uB54C\uAE4C\uC9C0 \uC0C8\uB85C\uC6B4 \uBE4C\uB4DC\uAC00 \uC2E4\uD589\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
diff --git a/core/src/main/resources/lib/hudson/project/config-disableBuild_lt.properties b/core/src/main/resources/lib/hudson/project/config-disableBuild_lt.properties
index 87f83496b0..c7153ef88a 100644
--- a/core/src/main/resources/lib/hudson/project/config-disableBuild_lt.properties
+++ b/core/src/main/resources/lib/hudson/project/config-disableBuild_lt.properties
@@ -1,3 +1,3 @@
# This file is under the MIT License by authors
-Disable\ Build=I\u0161jungti darb\u0105
+Disable\ this\ project=I\u0161jungti darb\u0105
diff --git a/core/src/main/resources/lib/hudson/project/config-disableBuild_nb_NO.properties b/core/src/main/resources/lib/hudson/project/config-disableBuild_nb_NO.properties
index a46d1293e1..05e1045842 100644
--- a/core/src/main/resources/lib/hudson/project/config-disableBuild_nb_NO.properties
+++ b/core/src/main/resources/lib/hudson/project/config-disableBuild_nb_NO.properties
@@ -20,5 +20,5 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
-Disable\ Build=Deaktiver bygg
+Disable\ this\ project=Deaktiver bygg
No\ new\ builds\ will\ be\ executed\ until\ the\ project\ is\ re-enabled.=Ingen nye builds blir utf\u00F8rt f\u00F8r prosjektet er reaktivert.
diff --git a/core/src/main/resources/lib/hudson/project/config-disableBuild_nl.properties b/core/src/main/resources/lib/hudson/project/config-disableBuild_nl.properties
index 7364856e7c..8c6de81a11 100644
--- a/core/src/main/resources/lib/hudson/project/config-disableBuild_nl.properties
+++ b/core/src/main/resources/lib/hudson/project/config-disableBuild_nl.properties
@@ -20,5 +20,5 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
-Disable\ Build=Bouwen deactiveren
+Disable\ this\ project=Bouwen deactiveren
No\ new\ builds\ will\ be\ executed\ until\ the\ project\ is\ re-enabled.=Er zullen geen nieuwe bouwpogingen uitgevoerd worden tot het project opnieuw geactiveerd wordt.
diff --git a/core/src/main/resources/lib/hudson/project/config-disableBuild_pl.properties b/core/src/main/resources/lib/hudson/project/config-disableBuild_pl.properties
index 333abf8bd9..dbf0f019a5 100644
--- a/core/src/main/resources/lib/hudson/project/config-disableBuild_pl.properties
+++ b/core/src/main/resources/lib/hudson/project/config-disableBuild_pl.properties
@@ -1,4 +1,4 @@
# This file is under the MIT License by authors
-Disable\ Build=Zablokuj zadania
+Disable\ this\ project=Zablokuj zadania
No\ new\ builds\ will\ be\ executed\ until\ the\ project\ is\ re-enabled.=Nowe zadania nie b\u0119d\u0105 wykonywane dop\u00F3ki projekt nie b\u0119dzie odblokowany
diff --git a/core/src/main/resources/lib/hudson/project/config-disableBuild_pt_BR.properties b/core/src/main/resources/lib/hudson/project/config-disableBuild_pt_BR.properties
index 9a7714e945..dc0d7e5c8b 100644
--- a/core/src/main/resources/lib/hudson/project/config-disableBuild_pt_BR.properties
+++ b/core/src/main/resources/lib/hudson/project/config-disableBuild_pt_BR.properties
@@ -20,5 +20,5 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
-Disable\ Build=Desabilitar builds
+Disable\ this\ project=Desabilitar builds
No\ new\ builds\ will\ be\ executed\ until\ the\ project\ is\ re-enabled.=Nenhum novo build ser\u00e1 executado at\u00e9 que este projeto seja habilitado novamente.
diff --git a/core/src/main/resources/lib/hudson/project/config-disableBuild_ro.properties b/core/src/main/resources/lib/hudson/project/config-disableBuild_ro.properties
index 580183571c..1b9a9a3661 100644
--- a/core/src/main/resources/lib/hudson/project/config-disableBuild_ro.properties
+++ b/core/src/main/resources/lib/hudson/project/config-disableBuild_ro.properties
@@ -1,4 +1,4 @@
# This file is under the MIT License by authors
-Disable\ Build=Dezactiveaza Build
+Disable\ this\ project=Dezactiveaza Build
No\ new\ builds\ will\ be\ executed\ until\ the\ project\ is\ re-enabled.=Nici un build nou nu va fi executat pana cand proiectul nu va fi re-activat.
diff --git a/core/src/main/resources/lib/hudson/project/config-disableBuild_ru.properties b/core/src/main/resources/lib/hudson/project/config-disableBuild_ru.properties
index b05d70af55..0ec634790b 100644
--- a/core/src/main/resources/lib/hudson/project/config-disableBuild_ru.properties
+++ b/core/src/main/resources/lib/hudson/project/config-disableBuild_ru.properties
@@ -20,5 +20,5 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
-Disable\ Build=\u041f\u0440\u0438\u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0441\u0431\u043e\u0440\u043a\u0438
+Disable\ this\ project=\u041f\u0440\u0438\u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0441\u0431\u043e\u0440\u043a\u0438
No\ new\ builds\ will\ be\ executed\ until\ the\ project\ is\ re-enabled.=\u041d\u043e\u0432\u044b\u0435 \u0441\u0431\u043e\u0440\u043a\u0438 \u043d\u0435 \u0431\u0443\u0434\u0443\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c\u0441\u044f \u043f\u043e\u043a\u0430 \u043e\u043f\u0446\u0438\u044f \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0430
diff --git a/core/src/main/resources/lib/hudson/project/config-disableBuild_sk.properties b/core/src/main/resources/lib/hudson/project/config-disableBuild_sk.properties
index 1898b3d0da..315b7a2623 100644
--- a/core/src/main/resources/lib/hudson/project/config-disableBuild_sk.properties
+++ b/core/src/main/resources/lib/hudson/project/config-disableBuild_sk.properties
@@ -1,4 +1,4 @@
# This file is under the MIT License by authors
-Disable\ Build=Zak\u00E1\u017E zostavenie
+Disable\ this\ project=Zak\u00E1\u017E zostavenie
No\ new\ builds\ will\ be\ executed\ until\ the\ project\ is\ re-enabled.=Nebud\u00FA sa da\u0165 sp\u00FA\u0161\u0165a\u0165 nov\u00E9 zostavenia, k\u00FDm sa projekt znova nepovol\u00ED.
diff --git a/core/src/main/resources/lib/hudson/project/config-disableBuild_sv_SE.properties b/core/src/main/resources/lib/hudson/project/config-disableBuild_sv_SE.properties
index 9036e3e948..dbe3eaddaf 100644
--- a/core/src/main/resources/lib/hudson/project/config-disableBuild_sv_SE.properties
+++ b/core/src/main/resources/lib/hudson/project/config-disableBuild_sv_SE.properties
@@ -20,5 +20,5 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
-Disable\ Build=Inaktivera bygge
+Disable\ this\ project=Inaktivera bygge
No\ new\ builds\ will\ be\ executed\ until\ the\ project\ is\ re-enabled.=Inga nya byggen utf\u00F6rs f\u00F6rr\u00E4n projektet aktiveras igen.
diff --git a/core/src/main/resources/lib/hudson/project/config-disableBuild_tr.properties b/core/src/main/resources/lib/hudson/project/config-disableBuild_tr.properties
index d4d53140f7..15a58e51c6 100644
--- a/core/src/main/resources/lib/hudson/project/config-disableBuild_tr.properties
+++ b/core/src/main/resources/lib/hudson/project/config-disableBuild_tr.properties
@@ -20,5 +20,5 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
-Disable\ Build=Yap\u0131land\u0131rmay\u0131 devre d\u0131\u015f\u0131 b\u0131rak
+Disable\ this\ project=Yap\u0131land\u0131rmay\u0131 devre d\u0131\u015f\u0131 b\u0131rak
No\ new\ builds\ will\ be\ executed\ until\ the\ project\ is\ re-enabled.=Proje yeniden devreye al\u0131nana kadar yeni yap\u0131land\u0131rma \u00e7al\u0131\u015ft\u0131r\u0131lmayacakt\u0131r.
diff --git a/core/src/main/resources/lib/hudson/project/config-disableBuild_uk.properties b/core/src/main/resources/lib/hudson/project/config-disableBuild_uk.properties
index f115b9e5f6..7e01441537 100644
--- a/core/src/main/resources/lib/hudson/project/config-disableBuild_uk.properties
+++ b/core/src/main/resources/lib/hudson/project/config-disableBuild_uk.properties
@@ -1,4 +1,4 @@
# This file is under the MIT License by authors
-Disable\ Build=\u0414\u0435\u0430\u043A\u0442\u0438\u0432\u0443\u0432\u0430\u0442\u0438 \u0431\u0456\u043B\u0434
+Disable\ this\ project=\u0414\u0435\u0430\u043A\u0442\u0438\u0432\u0443\u0432\u0430\u0442\u0438 \u0431\u0456\u043B\u0434
No\ new\ builds\ will\ be\ executed\ until\ the\ project\ is\ re-enabled.=\u041D\u0435 \u0431\u0443\u0434\u0443\u0432\u0430\u0442\u0438 \u0434\u043E\u043A\u0438 \u043F\u0440\u043E\u0435\u043A\u0442 \u043D\u0435 \u0434\u043E\u0437\u0432\u043E\u043B\u044F\u0442\u044C
diff --git a/core/src/main/resources/lib/hudson/project/config-disableBuild_zh_CN.properties b/core/src/main/resources/lib/hudson/project/config-disableBuild_zh_CN.properties
index 2628879777..a7293c119b 100644
--- a/core/src/main/resources/lib/hudson/project/config-disableBuild_zh_CN.properties
+++ b/core/src/main/resources/lib/hudson/project/config-disableBuild_zh_CN.properties
@@ -20,5 +20,5 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
-Disable\ Build=\u5173\u95ED\u6784\u5EFA
+Disable\ this\ project=\u5173\u95ED\u6784\u5EFA
No\ new\ builds\ will\ be\ executed\ until\ the\ project\ is\ re-enabled.=\u91CD\u65B0\u5F00\u542F\u6784\u5EFA\u524D\u4E0D\u5141\u8BB8\u8FDB\u884C\u65B0\u7684\u6784\u5EFA
diff --git a/core/src/main/resources/lib/hudson/project/config-disableBuild_zh_TW.properties b/core/src/main/resources/lib/hudson/project/config-disableBuild_zh_TW.properties
index f5715d1826..e929ce787a 100644
--- a/core/src/main/resources/lib/hudson/project/config-disableBuild_zh_TW.properties
+++ b/core/src/main/resources/lib/hudson/project/config-disableBuild_zh_TW.properties
@@ -21,5 +21,5 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
-Disable\ Build=\u505C\u7528Build
+Disable\ this\ project=\u505C\u7528Build
No\ new\ builds\ will\ be\ executed\ until\ the\ project\ is\ re-enabled.=\u5728\u5C08\u6848\u88AB\u91CD\u65B0\u555F\u7528\u524D\u5C07\u4E0D\u518D\u57F7\u884C\u65B0\u7684\u5EFA\u69CB
diff --git a/core/src/main/resources/lib/hudson/project/configurable.jelly b/core/src/main/resources/lib/hudson/project/configurable.jelly
index c58263ce8c..435a804ab6 100644
--- a/core/src/main/resources/lib/hudson/project/configurable.jelly
+++ b/core/src/main/resources/lib/hudson/project/configurable.jelly
@@ -39,10 +39,10 @@ THE SOFTWARE.
-
+
-
+
diff --git a/core/src/main/resources/lib/hudson/scriptConsole.jelly b/core/src/main/resources/lib/hudson/scriptConsole.jelly
index bf2195db5b..6c10838ae3 100644
--- a/core/src/main/resources/lib/hudson/scriptConsole.jelly
+++ b/core/src/main/resources/lib/hudson/scriptConsole.jelly
@@ -58,7 +58,7 @@ THE SOFTWARE.
- ${%It is not possible to run scripts when slave is offline.}
+ ${%It is not possible to run scripts when agent is offline.}
diff --git a/core/src/main/resources/lib/layout/css.jelly b/core/src/main/resources/lib/layout/css.jelly
new file mode 100644
index 0000000000..a15d383023
--- /dev/null
+++ b/core/src/main/resources/lib/layout/css.jelly
@@ -0,0 +1,37 @@
+
+
+
+
+
+ Client-side CSS loading tag. Similar to adjunct, but driven from the client. See page-init.js.
+
+ @since 2.0
+
+ CSS source path (relative to Jenkins).
+
+
+
+
+
\ No newline at end of file
diff --git a/core/src/main/resources/lib/layout/html.jelly b/core/src/main/resources/lib/layout/html.jelly
new file mode 100644
index 0000000000..661e7b3c6d
--- /dev/null
+++ b/core/src/main/resources/lib/layout/html.jelly
@@ -0,0 +1,176 @@
+
+
+
+
+ Outer-most tag for a normal (non-AJAX) HTML rendering.
+ This is used with nested <header>, <side-panel>, and <main-panel>
+ to form Jenkins's basic HTML layout.
+
+
+ Title of the HTML page. Rendered into <title> tag.
+
+
+ If non-null and not "false", auto refresh is disabled on this page.
+ This is necessary for pages that include forms.
+
+
+ specify path that starts from "/" for loading additional CSS stylesheet.
+ path is interprted as relative to the context root. e.g.,
+
+ {noformat}<l:layout css="/plugin/mysuperplugin/css/myneatstyle.css">{noformat}
+
+ This was originally added to allow plugins to load their stylesheets, but
+ *the use of thie attribute is discouraged now.*
+ plugins should now do so by inserting <style> elements and/or <script> elements
+ in <l:header/> tag.
+
+
+ If given, this page is only made available to users that has the specified permission.
+ (The permission will be checked against the "it" object.)
+
+
+
+
+
+
+
+
+${h.initPageVariables(context)}
+
+
+
+
+
+
+ ${h.advertiseHeaders(response)}
+
+
+
+
+
+
+
+
+
+ ${h.checkPermission(it,permission)}
+
+
+
+
+
+ ${h.appendIfNotNull(title, ' [Jenkins]', 'Jenkins')}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/core/src/main/resources/lib/layout/js.jelly b/core/src/main/resources/lib/layout/js.jelly
new file mode 100644
index 0000000000..88edf8dafd
--- /dev/null
+++ b/core/src/main/resources/lib/layout/js.jelly
@@ -0,0 +1,37 @@
+
+
+
+
+
+ Client-side JavaScript loading tag. Similar to adjunct, but driven from the client. See page-init.js.
+
+ @since 2.0
+
+ JavaScript source path (relative to Jenkins).
+
+
+
+
+
\ No newline at end of file
diff --git a/core/src/main/resources/lib/layout/layout.jelly b/core/src/main/resources/lib/layout/layout.jelly
index 9746a6a173..2fde584a06 100644
--- a/core/src/main/resources/lib/layout/layout.jelly
+++ b/core/src/main/resources/lib/layout/layout.jelly
@@ -37,6 +37,9 @@ THE SOFTWARE.
If non-null and not "false", auto refresh is disabled on this page.
This is necessary for pages that include forms.
+
+ A css class name to include in the body element.
+
specify path that starts from "/" for loading additional CSS stylesheet.
path is interprted as relative to the context root. e.g.,
@@ -80,7 +83,7 @@ ${h.initPageVariables(context)}
-
+
${h.checkPermission(it,permission)}
@@ -159,8 +162,10 @@ ${h.initPageVariables(context)}
+
+
-
+
Skip to content
diff --git a/core/src/test/java/hudson/ClassicPluginStrategyTest.java b/core/src/test/java/hudson/ClassicPluginStrategyTest.java
new file mode 100644
index 0000000000..bb19c5f81b
--- /dev/null
+++ b/core/src/test/java/hudson/ClassicPluginStrategyTest.java
@@ -0,0 +1,69 @@
+/*
+ * The MIT License
+ *
+ * Copyright (c) 2015, CloudBees, Inc.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+package hudson;
+
+import hudson.util.VersionNumber;
+import org.junit.Assert;
+import org.junit.Test;
+
+import java.util.List;
+
+import static hudson.ClassicPluginStrategy.DetachedPlugin;
+
+/**
+ * @author tom.fennelly@gmail.com
+ */
+public class ClassicPluginStrategyTest {
+
+ @Test
+ public void test_getDetachedPlugins() {
+ List list = ClassicPluginStrategy.getDetachedPlugins(new VersionNumber("1.296"));
+
+ Assert.assertTrue(list.size() >= 14); // There were 14 at the time of writing this test
+ Assert.assertNotNull(findPlugin("maven-plugin", list));
+ Assert.assertNotNull(findPlugin("subversion", list));
+
+ // Narrow the list to since "1.310" (the subversion detach version).
+ list = ClassicPluginStrategy.getDetachedPlugins(new VersionNumber("1.310"));
+ // Maven should no longer be in the list, but subversion should.
+ Assert.assertNull(findPlugin("maven-plugin", list));
+ Assert.assertNotNull(findPlugin("subversion", list));
+
+ // Narrow the list to since "1.311" (after the subversion detach version).
+ list = ClassicPluginStrategy.getDetachedPlugins(new VersionNumber("1.311"));
+ // Neither Maven or subversion should be in the list.
+ Assert.assertNull(findPlugin("maven-plugin", list));
+ Assert.assertNull(findPlugin("subversion", list));
+ }
+
+ private DetachedPlugin findPlugin(String shortName, List list) {
+ for (DetachedPlugin detachedPlugin : list) {
+ if (detachedPlugin.getShortName().equals(shortName)) {
+ return detachedPlugin;
+ }
+ }
+
+ return null;
+ }
+}
diff --git a/core/src/test/java/hudson/util/JSONObjectResponseTest.java b/core/src/test/java/hudson/util/JSONObjectResponseTest.java
new file mode 100644
index 0000000000..f84b574bfb
--- /dev/null
+++ b/core/src/test/java/hudson/util/JSONObjectResponseTest.java
@@ -0,0 +1,56 @@
+/*
+ * The MIT License
+ *
+ * Copyright (c) 2015, CloudBees, Inc.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+package hudson.util;
+
+import net.sf.json.JSONObject;
+import org.junit.Assert;
+import org.junit.Test;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * @author tom.fennelly@gmail.com
+ */
+public class JSONObjectResponseTest {
+
+ @Test
+ public void test() {
+ Map data = new HashMap<>();
+
+ data.put("val_1", "1");
+
+ HttpResponses.JSONObjectResponse response = new HttpResponses.JSONObjectResponse(data);
+ JSONObject payload = response.getJsonObject();
+
+ Assert.assertEquals("ok", payload.getString("status"));
+ JSONObject payloadData = payload.getJSONObject("data");
+ Assert.assertEquals("1", payloadData.getString("val_1"));
+
+ // change it to an error
+ response.error("a message");
+ Assert.assertEquals("error", payload.getString("status"));
+ Assert.assertEquals("a message", payload.getString("message"));
+ }
+}
diff --git a/core/src/test/java/jenkins/util/ResourceBundleUtilTest.java b/core/src/test/java/jenkins/util/ResourceBundleUtilTest.java
new file mode 100644
index 0000000000..1e8c24b569
--- /dev/null
+++ b/core/src/test/java/jenkins/util/ResourceBundleUtilTest.java
@@ -0,0 +1,69 @@
+/*
+ * The MIT License
+ *
+ * Copyright (c) 2015, CloudBees, Inc.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+package jenkins.util;
+
+import net.sf.json.JSONObject;
+import org.junit.Assert;
+import org.junit.Test;
+
+import java.util.Locale;
+import java.util.MissingResourceException;
+
+/**
+ * @author tom.fennelly@gmail.com
+ */
+public class ResourceBundleUtilTest {
+
+ /**
+ * Test resource bundle loading for a defined locale.
+ */
+ @Test
+ public void test_known_locale() {
+ JSONObject bundle = ResourceBundleUtil.getBundle("hudson.logging.Messages", Locale.GERMAN);
+ Assert.assertEquals("Initialisiere Log-Rekorder", bundle.getString("LogRecorderManager.init"));
+ bundle = ResourceBundleUtil.getBundle("hudson.logging.Messages", new Locale("pt"));
+ Assert.assertEquals("Inicializando registros de log", bundle.getString("LogRecorderManager.init"));
+
+ // Test caching - should get the same bundle instance back...
+ Assert.assertTrue(ResourceBundleUtil.getBundle("hudson.logging.Messages", new Locale("pt")) == bundle);
+ }
+
+ /**
+ * Test that we get the "default" bundle for an unknown locale.
+ */
+ @Test
+ public void test_unknown_locale() {
+ JSONObject bundle = ResourceBundleUtil.getBundle("hudson.logging.Messages", new Locale("kok")); // konkani
+ Assert.assertEquals("Initialing log recorders", bundle.getString("LogRecorderManager.init"));
+
+ }
+
+ /**
+ * Test unknown bundle.
+ */
+ @Test(expected = MissingResourceException.class)
+ public void test_unknown_bundle() {
+ ResourceBundleUtil.getBundle("hudson.blah.Whatever");
+ }
+}
diff --git a/core/src/test/java/jenkins/xml/XMLUtilsTest.java b/core/src/test/java/jenkins/xml/XMLUtilsTest.java
index b71700ba0d..0211653cf3 100644
--- a/core/src/test/java/jenkins/xml/XMLUtilsTest.java
+++ b/core/src/test/java/jenkins/xml/XMLUtilsTest.java
@@ -26,17 +26,24 @@ package jenkins.xml;
import jenkins.util.xml.XMLUtils;
+import org.junit.Assert;
import org.junit.Test;
+import java.io.File;
+import java.io.IOException;
import java.io.StringReader;
import java.io.StringWriter;
+import java.net.URL;
import javax.xml.transform.TransformerException;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;
+import javax.xml.xpath.XPathExpressionException;
import static org.hamcrest.core.StringContains.containsString;
import static org.junit.Assert.assertThat;
import org.jvnet.hudson.test.Issue;
+import org.w3c.dom.Document;
+import org.xml.sax.SAXException;
public class XMLUtilsTest {
@@ -97,4 +104,30 @@ public class XMLUtilsTest {
assertThat(stringWriter.toString(), containsString("&"));
}
+ /**
+ * Tests getValue() directly. Tests the parse methods too (indirectly - yeah, a purest would have
+ * tests for each).
+ */
+ @Test
+ public void testGetValue() throws XPathExpressionException, SAXException, IOException {
+ URL configUrl = getClass().getResource("/jenkins/xml/config.xml");
+ File configFile = new File(configUrl.getFile());
+
+ Assert.assertEquals("1.480.1", XMLUtils.getValue("/hudson/version", configFile));
+ Assert.assertEquals("", XMLUtils.getValue("/hudson/unknown-element", configFile));
+ }
+
+ @Test
+ public void testParse_with_XXE() throws IOException, XPathExpressionException {
+ try {
+ Document doc = XMLUtils.parse(new StringReader("\n" +
+ "\n" +
+ " ]> " +
+ "&xxe;"));
+ Assert.fail("Expecting SAXException for XXE.");
+ } catch (SAXException e) {
+ assertThat(e.getMessage(), containsString("DOCTYPE is disallowed"));
+ }
+ }
}
diff --git a/core/src/test/resources/jenkins/xml/config.xml b/core/src/test/resources/jenkins/xml/config.xml
new file mode 100644
index 0000000000..c3a76a6eef
--- /dev/null
+++ b/core/src/test/resources/jenkins/xml/config.xml
@@ -0,0 +1,8 @@
+
+
+
+ 1.480.1
+ 2
+ NORMAL
+
+
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index dad4a14c2d..ce48a86bde 100644
--- a/pom.xml
+++ b/pom.xml
@@ -33,7 +33,7 @@ THE SOFTWARE.
org.jenkins-ci.mainpom
- 1.657-SNAPSHOT
+ 2.0-rc-2-SNAPSHOTpomJenkins main module
@@ -322,7 +322,17 @@ THE SOFTWARE.
servlet-api2.4
+
+ org.codehaus.gmaven.runtime
+ gmaven-runtime-2.0
+ 1.5-jenkins-3
+
+
+
+ 2.0
+ org.apache.maven.plugins
@@ -499,7 +509,7 @@ THE SOFTWARE.
org.jenkins-ci.toolsmaven-jenkins-dev-plugin
- 8.1.4.v20120524-jenkins-1
+ 9.2.15.v20160210-jenkins-1org.jvnet.updatecenter2
@@ -509,7 +519,7 @@ THE SOFTWARE.
org.jenkins-ci.toolsmaven-hpi-plugin
- 1.114
+ 1.116org.apache.maven.plugins
@@ -723,18 +733,6 @@ THE SOFTWARE.
-
-
- 1.7
-
-
-
- org.codehaus.gmaven.runtime
- gmaven-runtime-1.7
- 1.3
-
-
diff --git a/test/pom.xml b/test/pom.xml
index bc4067029b..5529dfa523 100644
--- a/test/pom.xml
+++ b/test/pom.xml
@@ -28,7 +28,7 @@ THE SOFTWARE.
org.jenkins-ci.mainpom
- 1.657-SNAPSHOT
+ 2.0-rc-2-SNAPSHOTtest
@@ -201,7 +201,7 @@ THE SOFTWARE.
maven-surefire-plugin
- ${jacocoSurefireArgs} -Dfile.encoding=UTF-8 -Xmx256m -XX:MaxPermSize=128m
+ ${jacocoSurefireArgs} -Dfile.encoding=UTF-8 -Xmx1g -XX:MaxPermSize=128mtrue
@@ -238,15 +238,7 @@ THE SOFTWARE.
ant-launcher1.8.0
-
- org.codehaus.gmaven.runtime
- gmaven-runtime-2.0
- 1.5-jenkins-1
-
-
- 2.0
-
diff --git a/test/src/test/groovy/hudson/model/SlaveTest.groovy b/test/src/test/groovy/hudson/model/SlaveTest.groovy
index 83620674f4..35299a7e4f 100644
--- a/test/src/test/groovy/hudson/model/SlaveTest.groovy
+++ b/test/src/test/groovy/hudson/model/SlaveTest.groovy
@@ -28,6 +28,7 @@ import static hudson.util.FormValidation.Kind.WARNING
import static org.junit.Assert.assertNotNull
import static org.junit.Assert.assertEquals
+import hudson.security.csrf.CrumbIssuer
import hudson.slaves.DumbSlave
import hudson.slaves.JNLPLauncher
import hudson.util.FormValidation
@@ -84,7 +85,7 @@ class SlaveTest {
HttpURLConnection con = new URL(j.getURL(),url).openConnection();
con.requestMethod = "POST"
con.setRequestProperty("Content-Type","application/xml;charset=UTF-8")
- con.setRequestProperty(".crumb","test")
+ con.setRequestProperty(CrumbIssuer.DEFAULT_CRUMB_NAME,"test")
con.doOutput = true;
con.outputStream.write(xml.getBytes("UTF-8"))
con.outputStream.close();
diff --git a/test/src/test/java/hudson/ClassicPluginStrategyTest.java b/test/src/test/java/hudson/ClassicPluginStrategyTest.java
index a0cfe146de..24a3a3e788 100644
--- a/test/src/test/java/hudson/ClassicPluginStrategyTest.java
+++ b/test/src/test/java/hudson/ClassicPluginStrategyTest.java
@@ -24,12 +24,18 @@
*/
package hudson;
+import hudson.model.Hudson;
import org.jvnet.hudson.test.Issue;
import org.jvnet.hudson.test.HudsonTestCase;
import org.jvnet.hudson.test.recipes.LocalData;
+import org.jvnet.hudson.test.recipes.Recipe;
+import java.io.File;
import java.net.URL;
+import java.util.Collection;
import java.util.Enumeration;
+import java.util.LinkedHashSet;
+import java.util.Set;
/**
* @author Alan Harder
@@ -42,6 +48,26 @@ public class ClassicPluginStrategyTest extends HudsonTestCase {
super.setUp();
}
+ @Override
+ protected Hudson newHudson() throws Exception {
+ File home = homeLoader.allocate();
+
+ for (Recipe.Runner r : recipes) {
+ r.decorateHome(this,home);
+ }
+ LocalPluginManager pluginManager = new LocalPluginManager(home) {
+ @Override
+ protected Collection loadBundledPlugins() {
+ // Overriding so we can force loading of the detached plugins for testing
+ Set names = new LinkedHashSet<>();
+ names.addAll(loadPluginsFromWar("/WEB-INF/plugins"));
+ names.addAll(loadPluginsFromWar("/WEB-INF/detached-plugins"));
+ return names;
+ }
+ };
+ return new Hudson(home, createWebServer(), pluginManager);
+ }
+
/**
* Test finding resources via DependencyClassLoader.
*/
diff --git a/test/src/test/java/hudson/PluginManagerInstalledGUITest.java b/test/src/test/java/hudson/PluginManagerInstalledGUITest.java
index b4a23ad6bc..ae95099f8a 100644
--- a/test/src/test/java/hudson/PluginManagerInstalledGUITest.java
+++ b/test/src/test/java/hudson/PluginManagerInstalledGUITest.java
@@ -33,12 +33,13 @@ import org.junit.Assert;
import org.junit.Rule;
import org.junit.Test;
import org.jvnet.hudson.test.JenkinsRule;
-import org.jvnet.hudson.test.recipes.WithPlugin;
+import org.jvnet.hudson.test.TestPluginManager;
import org.xml.sax.SAXException;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
+import java.util.Collection;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
@@ -49,10 +50,28 @@ import java.util.Set;
public class PluginManagerInstalledGUITest {
@Rule
- public JenkinsRule jenkinsRule = new JenkinsRule();
+ public JenkinsRule jenkinsRule = new JenkinsRule() {
+ @Override
+ public PluginManager getPluginManager() {
+ try {
+ return new TestPluginManager() {
+ @Override
+ protected Collection loadBundledPlugins() throws Exception {
+ try {
+ return super.loadBundledPlugins();
+ } finally {
+ installResourcePlugin("tasks.jpi");
+ }
+ }
+ };
+ } catch (IOException e) {
+ Assert.fail(e.getMessage());
+ return null;
+ }
+ }
+ };
@Test
- @WithPlugin("tasks.jpi")
public void test_enable_disable_uninstall() throws IOException, SAXException {
InstalledPlugins installedPlugins = new InstalledPlugins();
diff --git a/test/src/test/java/hudson/PluginManagerTest.java b/test/src/test/java/hudson/PluginManagerTest.java
index 02e3e21bd2..913e3f4a15 100644
--- a/test/src/test/java/hudson/PluginManagerTest.java
+++ b/test/src/test/java/hudson/PluginManagerTest.java
@@ -42,10 +42,11 @@ import java.util.Collections;
import java.util.List;
import java.util.concurrent.Future;
import jenkins.RestartRequiredException;
+import net.sf.json.JSONArray;
+import net.sf.json.JSONObject;
import org.apache.commons.io.FileUtils;
import org.apache.tools.ant.filters.StringInputStream;
import static org.junit.Assert.*;
-
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.TemporaryFolder;
@@ -338,75 +339,6 @@ public class PluginManagerTest {
assertTrue(r.jenkins.getExtensionList("org.jenkinsci.plugins.dependencytest.dependee.DependeeExtensionPoint").isEmpty());
}
- @Issue("JENKINS-21486")
- @Test public void installPluginWithObsoleteDependencyFails() throws Exception {
- // Load dependee 0.0.1.
- {
- dynamicLoad("dependee.hpi");
- }
-
- // Load mandatory-depender 0.0.2, depending on dependee 0.0.2
- try {
- dynamicLoad("mandatory-depender-0.0.2.hpi");
- fail("Should not have worked");
- } catch (IOException e) {
- // Expected
- }
- }
-
- @Issue("JENKINS-21486")
- @Test public void installPluginWithDisabledOptionalDependencySucceeds() throws Exception {
- // Load dependee 0.0.2.
- {
- dynamicLoadAndDisable("dependee-0.0.2.hpi");
- }
-
- // Load depender 0.0.2, depending optionally on dependee 0.0.2
- {
- dynamicLoad("depender-0.0.2.hpi");
- }
-
- // dependee is not loaded so we cannot list any extension for it.
- try {
- r.jenkins.getExtensionList("org.jenkinsci.plugins.dependencytest.dependee.DependeeExtensionPoint");
- fail();
- } catch( ClassNotFoundException _ ){
- }
- }
-
- @Issue("JENKINS-21486")
- @Test public void installPluginWithDisabledDependencyFails() throws Exception {
- // Load dependee 0.0.2.
- {
- dynamicLoadAndDisable("dependee-0.0.2.hpi");
- }
-
- // Load mandatory-depender 0.0.2, depending on dependee 0.0.2
- try {
- dynamicLoad("mandatory-depender-0.0.2.hpi");
- fail("Should not have worked");
- } catch (IOException e) {
- // Expected
- }
- }
-
-
- @Issue("JENKINS-21486")
- @Test public void installPluginWithObsoleteOptionalDependencyFails() throws Exception {
- // Load dependee 0.0.1.
- {
- dynamicLoad("dependee.hpi");
- }
-
- // Load depender 0.0.2, depending optionally on dependee 0.0.2
- try {
- dynamicLoad("depender-0.0.2.hpi");
- fail("Should not have worked");
- } catch (IOException e) {
- // Expected
- }
- }
-
@Issue("JENKINS-12753")
@WithPlugin("tasks.jpi")
@Test public void dynamicLoadRestartRequiredException() throws Exception {
@@ -425,11 +357,24 @@ public class PluginManagerTest {
assertEquals("should not have tried to delete & unpack", lastMod, timestamp.lastModified());
}
+ @WithPlugin("tasks.jpi")
+ @Test public void pluginListJSONApi() throws IOException {
+ JSONObject response = r.getJSON("pluginManager/plugins").getJSONObject();
+
+ // Check that the basic API endpoint invocation works.
+ assertEquals("ok", response.getString("status"));
+ JSONArray data = response.getJSONArray("data");
+ assertTrue(data.size() > 0);
+
+ // Check that there was some data in the response and that the first entry
+ // at least had some of the expected fields.
+ JSONObject pluginInfo = data.getJSONObject(0);
+ assertTrue(pluginInfo.getString("name") != null);
+ assertTrue(pluginInfo.getString("title") != null);
+ assertTrue(pluginInfo.getString("dependencies") != null);
+ }
+
private void dynamicLoad(String plugin) throws IOException, InterruptedException, RestartRequiredException {
PluginManagerUtil.dynamicLoad(plugin, r.jenkins);
}
-
- private void dynamicLoadAndDisable(String plugin) throws IOException, InterruptedException, RestartRequiredException {
- PluginManagerUtil.dynamicLoad(plugin, r.jenkins, true);
- }
}
diff --git a/test/src/test/java/hudson/PluginManagerTest2.java b/test/src/test/java/hudson/PluginManagerTest2.java
index e51e4484db..f889130cb4 100644
--- a/test/src/test/java/hudson/PluginManagerTest2.java
+++ b/test/src/test/java/hudson/PluginManagerTest2.java
@@ -7,7 +7,6 @@ import java.net.URL;
import javax.servlet.ServletContext;
import org.jvnet.hudson.test.HudsonTestCase;
-import org.jvnet.hudson.test.recipes.WithPlugin;
import org.xml.sax.SAXException;
import com.gargoylesoftware.htmlunit.html.HtmlForm;
@@ -29,21 +28,6 @@ public class PluginManagerTest2 extends HudsonTestCase {
return servletContext;
}
- @WithPlugin("tasks.jpi")
- public void testPinned() throws Exception {
- PluginWrapper tasks = jenkins.getPluginManager().getPlugin("tasks");
- assertFalse("tasks shouldn't be bundled",tasks.isBundled());
- assertFalse("tasks shouldn't be pinned before update",tasks.isPinned());
- uploadPlugin("tasks.jpi", false);
- assertFalse("tasks shouldn't be pinned after update",tasks.isPinned());
-
- PluginWrapper cvs = jenkins.getPluginManager().getPlugin("cvs");
- assertTrue("cvs should be bundled",cvs.isBundled());
- assertFalse("cvs shouldn't be pinned before update",cvs.isPinned());
- uploadPlugin("cvs.hpi", true);
- assertTrue("cvs should be pinned after update",cvs.isPinned());
- }
-
private void uploadPlugin(String pluginName, boolean useServerRoot) throws IOException, SAXException, Exception {
HtmlPage page = new WebClient().goTo("pluginManager/advanced");
HtmlForm f = page.getFormByName("uploadPlugin");
diff --git a/test/src/test/java/hudson/PluginManagerUtil.java b/test/src/test/java/hudson/PluginManagerUtil.java
index 2263622b4c..e67b9b31f9 100644
--- a/test/src/test/java/hudson/PluginManagerUtil.java
+++ b/test/src/test/java/hudson/PluginManagerUtil.java
@@ -48,16 +48,9 @@ public class PluginManagerUtil {
}
public static void dynamicLoad(String plugin, Jenkins jenkins) throws IOException, InterruptedException, RestartRequiredException {
- dynamicLoad(plugin, jenkins, false);
- }
-
- public static void dynamicLoad(String plugin, Jenkins jenkins, boolean disable) throws IOException, InterruptedException, RestartRequiredException {
URL src = PluginManagerTest.class.getClassLoader().getResource("plugins/" + plugin);
File dest = new File(jenkins.getRootDir(), "plugins/" + plugin);
FileUtils.copyURLToFile(src, dest);
- if (disable) {
- new File(dest.getPath() + ".disabled").createNewFile();
- }
jenkins.pluginManager.dynamicLoad(dest);
}
}
diff --git a/test/src/test/java/hudson/PluginWrapperTest.java b/test/src/test/java/hudson/PluginWrapperTest.java
deleted file mode 100644
index 7529c53194..0000000000
--- a/test/src/test/java/hudson/PluginWrapperTest.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package hudson;
-
-import org.junit.Test;
-
-import static org.junit.Assert.assertEquals;
-
-public class PluginWrapperTest {
-
- @Test
- public void dependencyTest() {
- String version = "plugin:0.0.2";
- PluginWrapper.Dependency dependency = new PluginWrapper.Dependency(version);
- assertEquals("plugin", dependency.shortName);
- assertEquals("0.0.2", dependency.version);
- assertEquals(false, dependency.optional);
- }
-
- @Test
- public void optionalDependencyTest() {
- String version = "plugin:0.0.2;resolution:=optional";
- PluginWrapper.Dependency dependency = new PluginWrapper.Dependency(version);
- assertEquals("plugin", dependency.shortName);
- assertEquals("0.0.2", dependency.version);
- assertEquals(true, dependency.optional);
- }
-}
diff --git a/test/src/test/java/hudson/cli/CreateNodeCommandTest.java b/test/src/test/java/hudson/cli/CreateNodeCommandTest.java
index 0cb5dfc6fc..329e2d4b91 100644
--- a/test/src/test/java/hudson/cli/CreateNodeCommandTest.java
+++ b/test/src/test/java/hudson/cli/CreateNodeCommandTest.java
@@ -60,7 +60,7 @@ public class CreateNodeCommandTest {
.invoke()
;
- assertThat(result.stderr(), containsString("ERROR: user is missing the Slave/Create permission"));
+ assertThat(result.stderr(), containsString("ERROR: user is missing the Agent/Create permission"));
assertThat(result, hasNoStandardOutput());
assertThat(result, failedWith(6));
}
diff --git a/test/src/test/java/hudson/cli/DeleteNodeCommandTest.java b/test/src/test/java/hudson/cli/DeleteNodeCommandTest.java
index 9db0e60419..07ddcdca2a 100644
--- a/test/src/test/java/hudson/cli/DeleteNodeCommandTest.java
+++ b/test/src/test/java/hudson/cli/DeleteNodeCommandTest.java
@@ -62,7 +62,7 @@ public class DeleteNodeCommandTest {
assertThat(result, failedWith(6));
assertThat(result, hasNoStandardOutput());
- assertThat(result.stderr(), containsString("ERROR: user is missing the Slave/Delete permission"));
+ assertThat(result.stderr(), containsString("ERROR: user is missing the Agent/Delete permission"));
}
@Test public void deleteNodeShouldSucceed() throws Exception {
diff --git a/test/src/test/java/hudson/cli/GetNodeCommandTest.java b/test/src/test/java/hudson/cli/GetNodeCommandTest.java
index eb20a1162c..b6f7c575da 100644
--- a/test/src/test/java/hudson/cli/GetNodeCommandTest.java
+++ b/test/src/test/java/hudson/cli/GetNodeCommandTest.java
@@ -59,7 +59,7 @@ public class GetNodeCommandTest {
.invokeWithArgs("MySlave")
;
- assertThat(result.stderr(), containsString("ERROR: user is missing the Slave/ExtendedRead permission"));
+ assertThat(result.stderr(), containsString("ERROR: user is missing the Agent/ExtendedRead permission"));
assertThat(result, failedWith(6));
assertThat(result, hasNoStandardOutput());
}
diff --git a/test/src/test/java/hudson/cli/GroovyshCommandTest.java b/test/src/test/java/hudson/cli/GroovyshCommandTest.java
index 8c7d1a4066..eb61043593 100644
--- a/test/src/test/java/hudson/cli/GroovyshCommandTest.java
+++ b/test/src/test/java/hudson/cli/GroovyshCommandTest.java
@@ -42,7 +42,7 @@ public class GroovyshCommandTest {
@Test public void authentication() throws Exception {
CLICommandInvoker.Result result = new CLICommandInvoker(r, new GroovyshCommand())
.authorizedTo(Jenkins.READ, Jenkins.RUN_SCRIPTS)
- .withStdin(new StringInputStream("println(jenkins.model.Jenkins.instance.getClass().name)\nquit\n"))
+ .withStdin(new StringInputStream("println(jenkins.model.Jenkins.instance.getClass().name)\n:quit\n"))
.invoke();
assertThat(result, succeeded());
assertThat(result, hasNoErrorOutput());
diff --git a/test/src/test/java/hudson/cli/HelpCommandTest.java b/test/src/test/java/hudson/cli/HelpCommandTest.java
index 566ea169e4..26c2da6ccd 100644
--- a/test/src/test/java/hudson/cli/HelpCommandTest.java
+++ b/test/src/test/java/hudson/cli/HelpCommandTest.java
@@ -101,7 +101,7 @@ public class HelpCommandTest {
private void assertContainsUsageOfMethodCommand(String text) {
assertThat(text, containsString("offline-node NAME [-m VAL]"));
- assertThat(text, containsStrings("NAME", "Slave name, or empty string for master"));
+ assertThat(text, containsStrings("NAME", "Agent name, or empty string for master"));
assertThat(text, containsStrings("-m VAL", "Record the note about why you are disconnecting this node"));
}
diff --git a/test/src/test/java/hudson/cli/OnlineNodeCommandTest.java b/test/src/test/java/hudson/cli/OnlineNodeCommandTest.java
index 686cb2d64d..620429120c 100644
--- a/test/src/test/java/hudson/cli/OnlineNodeCommandTest.java
+++ b/test/src/test/java/hudson/cli/OnlineNodeCommandTest.java
@@ -65,7 +65,7 @@ public class OnlineNodeCommandTest {
assertThat(result, failedWith(6));
assertThat(result, hasNoStandardOutput());
- assertThat(result.stderr(), containsString("ERROR: user is missing the Slave/Connect permission"));
+ assertThat(result.stderr(), containsString("ERROR: user is missing the Agent/Connect permission"));
}
@Test public void onlineNodeShouldFailIfNodeDoesNotExist() throws Exception {
@@ -74,7 +74,7 @@ public class OnlineNodeCommandTest {
.invokeWithArgs("never_created");
assertThat(result, failedWith(3));
assertThat(result, hasNoStandardOutput());
- assertThat(result.stderr(), containsString("ERROR: No such slave \"never_created\" exists."));
+ assertThat(result.stderr(), containsString("ERROR: No such agent \"never_created\" exists."));
}
diff --git a/test/src/test/java/hudson/cli/UpdateNodeCommandTest.java b/test/src/test/java/hudson/cli/UpdateNodeCommandTest.java
index cac9dda8ab..f03b7d2a5f 100644
--- a/test/src/test/java/hudson/cli/UpdateNodeCommandTest.java
+++ b/test/src/test/java/hudson/cli/UpdateNodeCommandTest.java
@@ -60,7 +60,7 @@ public class UpdateNodeCommandTest {
.invokeWithArgs("MySlave")
;
- assertThat(result.stderr(), containsString("ERROR: user is missing the Slave/Configure permission"));
+ assertThat(result.stderr(), containsString("ERROR: user is missing the Agent/Configure permission"));
assertThat(result, failedWith(6));
assertThat(result, hasNoStandardOutput());
}
diff --git a/test/src/test/java/hudson/jobs/CreateItemTest.java b/test/src/test/java/hudson/jobs/CreateItemTest.java
index ec0eef98d4..1e374bda55 100644
--- a/test/src/test/java/hudson/jobs/CreateItemTest.java
+++ b/test/src/test/java/hudson/jobs/CreateItemTest.java
@@ -23,7 +23,7 @@
*/
package hudson.jobs;
-import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.*;
import java.net.URL;
import java.text.MessageFormat;
@@ -37,6 +37,8 @@ import org.jvnet.hudson.test.JenkinsRule;
import com.gargoylesoftware.htmlunit.FailingHttpStatusCodeException;
import com.gargoylesoftware.htmlunit.HttpMethod;
import com.gargoylesoftware.htmlunit.WebRequest;
+import hudson.model.FreeStyleProject;
+import org.jvnet.hudson.test.MockFolder;
/**
* Tests the /createItem REST API.
@@ -82,4 +84,16 @@ public class CreateItemTest {
private void deleteContentTypeHeader(WebRequest request) {
request.setEncodingType(null);
}
+
+ @Test
+ public void createWithFolderPaths() throws Exception {
+ rule.jenkins.setCrumbIssuer(null);
+ rule.createFolder("d1").createProject(FreeStyleProject.class, "p");
+ MockFolder d2 = rule.createFolder("d2");
+ rule.createWebClient().getPage(new WebRequest(new URL(d2.getAbsoluteUrl() + "createItem?mode=copy&name=p2&from=../d1/p"), HttpMethod.POST));
+ assertNotNull(d2.getItem("p2"));
+ rule.createWebClient().getPage(new WebRequest(new URL(d2.getAbsoluteUrl() + "createItem?mode=copy&name=p3&from=/d1/p"), HttpMethod.POST));
+ assertNotNull(d2.getItem("p3"));
+ }
+
}
diff --git a/test/src/test/java/hudson/model/ComputerTest.java b/test/src/test/java/hudson/model/ComputerTest.java
index 8b6efad413..abc6c333cb 100644
--- a/test/src/test/java/hudson/model/ComputerTest.java
+++ b/test/src/test/java/hudson/model/ComputerTest.java
@@ -84,7 +84,7 @@ public class ComputerTest {
} catch (FailingHttpStatusCodeException e) {
assertThat(NOTE, e.getStatusCode(), equalTo(400));
assertThat(NOTE, e.getResponse().getContentAsString(),
- containsString("Slave called ‘nodeA’ already exists"));
+ containsString("Agent called ‘nodeA’ already exists"));
}
}
}
diff --git a/test/src/test/java/hudson/model/ExecutorTest.java b/test/src/test/java/hudson/model/ExecutorTest.java
index 25da5ebaea..5d5b034fcc 100644
--- a/test/src/test/java/hudson/model/ExecutorTest.java
+++ b/test/src/test/java/hudson/model/ExecutorTest.java
@@ -140,7 +140,7 @@ public class ExecutorTest {
assertEquals(b.getResult(), Result.FAILURE);
assertThat(log, containsString("Finished: FAILURE"));
assertThat(log, containsString("Build step 'BlockingBuilder' marked build as failure"));
- assertThat(log, containsString("Slave went offline during the build"));
+ assertThat(log, containsString("Agent went offline during the build"));
assertThat(log, containsString("Disconnected by Johnny : Taking offline to break your buil"));
}
diff --git a/test/src/test/java/hudson/model/HelpLinkTest.java b/test/src/test/java/hudson/model/HelpLinkTest.java
index 9fbc06a31a..65b35fc3af 100644
--- a/test/src/test/java/hudson/model/HelpLinkTest.java
+++ b/test/src/test/java/hudson/model/HelpLinkTest.java
@@ -7,6 +7,7 @@ import com.gargoylesoftware.htmlunit.html.DomNodeUtil;
import com.gargoylesoftware.htmlunit.html.HtmlElementUtil;
import hudson.tasks.BuildStepMonitor;
import org.junit.Assert;
+import org.junit.Ignore;
import org.junit.Rule;
import org.junit.Test;
import com.gargoylesoftware.htmlunit.html.HtmlPage;
@@ -26,6 +27,45 @@ import org.jvnet.hudson.test.JenkinsRule;
*
* @author Kohsuke Kawaguchi
*/
+@Ignore
+/*
+ Excluding test to be able to ship 2.0 beta 1
+ Jenkins confirms that this test is now taking 45mins to complete.
+
+ The problem appears to be the following. When a help link is clicked, the execution hangs at the following point:
+
+ "Executing negative(hudson.model.HelpLinkTest)@1" prio=5 tid=0x1 nid=NA waiting
+ java.lang.Thread.State: WAITING
+ at java.lang.Object.wait(Object.java:-1)
+ at com.gargoylesoftware.htmlunit.javascript.background.JavaScriptJobManagerImpl.waitForJobs(JavaScriptJobManagerImpl.java:200)
+ at com.gargoylesoftware.htmlunit.WebClient.waitForBackgroundJavaScript(WebClient.java:1843)
+ at com.gargoylesoftware.htmlunit.WebClientUtil.waitForJSExec(WebClientUtil.java:57)
+ at com.gargoylesoftware.htmlunit.WebClientUtil.waitForJSExec(WebClientUtil.java:46)
+ at com.gargoylesoftware.htmlunit.html.HtmlElementUtil.click(HtmlElementUtil.java:61)
+ at hudson.model.HelpLinkTest.clickAllHelpLinks(HelpLinkTest.java:70)
+ at hudson.model.HelpLinkTest.clickAllHelpLinks(HelpLinkTest.java:61)
+ at hudson.model.HelpLinkTest.negative(HelpLinkTest.java:106)
+
+ In debugger, I can see that JavaScriptJobManagerImpl.waitForJobs is looping through yet each time getJobCount()>0
+ because there's always some window.setTimeout activities that appear to be scheduled. Common ones are:
+
+ window.setTimeout( function () {
+ thisConfig.trackSectionVisibility();
+ }, 500)
+
+ window.setTimeout( function () {
+ return __method.apply(__method, args);
+ }, 10)
+
+ window.setTimeout( function () {
+ oSelf._printBuffer();
+ }, 100)
+
+ getJobCount() never appears to return 0, so the method blocks until the time out of 10 secs is reached.
+ Multiply that by 50 or so help links to click and now you see why each test takes 10mins.
+
+ Maybe this is related to the scrollspy changes?
+ */
public class HelpLinkTest {
@Rule
diff --git a/test/src/test/java/hudson/model/HudsonTest.java b/test/src/test/java/hudson/model/HudsonTest.java
index 97e3576b14..0d2f037f30 100644
--- a/test/src/test/java/hudson/model/HudsonTest.java
+++ b/test/src/test/java/hudson/model/HudsonTest.java
@@ -89,6 +89,10 @@ public class HudsonTest {
HtmlPage configPage = j.createWebClient().goTo("configure");
HtmlForm form = configPage.getFormByName("config");
j.submit(form);
+ // Load tools page and resubmit too
+ HtmlPage toolsConfigPage = j.createWebClient().goTo("configureTools");
+ HtmlForm toolsForm = toolsConfigPage.getFormByName("config");
+ j.submit(toolsForm);
// make sure all the pieces are intact
assertEquals(2, j.jenkins.getNumExecutors());
diff --git a/test/src/test/java/hudson/model/UpdateCenterConnectionStatusTest.java b/test/src/test/java/hudson/model/UpdateCenterConnectionStatusTest.java
new file mode 100644
index 0000000000..0a1113e9d9
--- /dev/null
+++ b/test/src/test/java/hudson/model/UpdateCenterConnectionStatusTest.java
@@ -0,0 +1,161 @@
+/*
+ * The MIT License
+ *
+ * Copyright (c) 2015, CloudBees, Inc.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+package hudson.model;
+
+import net.sf.json.JSONObject;
+import org.junit.Assert;
+import org.junit.Rule;
+import org.junit.Test;
+import org.jvnet.hudson.test.JenkinsRule;
+import org.xml.sax.SAXException;
+
+import java.io.IOException;
+import java.net.UnknownHostException;
+
+import static hudson.model.UpdateCenter.ConnectionStatus;
+
+/**
+ * @author tom.fennelly@gmail.com
+ */
+public class UpdateCenterConnectionStatusTest {
+
+ @Rule
+ public JenkinsRule jenkinsRule = new JenkinsRule();
+
+
+ @Test
+ public void doConnectionStatus_default_site() throws IOException, SAXException {
+ JSONObject response = jenkinsRule.getJSON("updateCenter/connectionStatus").getJSONObject();
+
+ Assert.assertEquals("ok", response.getString("status"));
+ JSONObject statusObj = response.getJSONObject("data");
+ Assert.assertTrue(statusObj.has("updatesite"));
+ Assert.assertTrue(statusObj.has("internet"));
+
+ // The following is equivalent to the above
+ response = jenkinsRule.getJSON("updateCenter/connectionStatus?siteId=default").getJSONObject();
+
+ Assert.assertEquals("ok", response.getString("status"));
+ statusObj = response.getJSONObject("data");
+ Assert.assertTrue(statusObj.has("updatesite"));
+ Assert.assertTrue(statusObj.has("internet"));
+ }
+
+ @Test
+ public void doConnectionStatus_unknown_site() throws IOException, SAXException {
+ JSONObject response = jenkinsRule.getJSON("updateCenter/connectionStatus?siteId=blahblah").getJSONObject();
+
+ Assert.assertEquals("error", response.getString("status"));
+ Assert.assertEquals("Unknown site 'blahblah'.", response.getString("message"));
+ }
+
+ private UpdateSite updateSite = new UpdateSite(UpdateCenter.ID_DEFAULT, "http://xyz") {
+ @Override
+ public String getConnectionCheckUrl() {
+ return "http://xyz./";
+ }
+ };
+
+ @Test
+ public void test_states_allok() {
+ UpdateCenter updateCenter = new UpdateCenter(new TestConfig());
+ UpdateCenter.ConnectionCheckJob job = updateCenter.newConnectionCheckJob(updateSite);
+
+ Assert.assertEquals(ConnectionStatus.PRECHECK, job.connectionStates.get(ConnectionStatus.INTERNET));
+ Assert.assertEquals(ConnectionStatus.PRECHECK, job.connectionStates.get(ConnectionStatus.UPDATE_SITE));
+
+ job.run();
+
+ Assert.assertEquals(ConnectionStatus.OK, job.connectionStates.get(ConnectionStatus.INTERNET));
+ Assert.assertEquals(ConnectionStatus.OK, job.connectionStates.get(ConnectionStatus.UPDATE_SITE));
+ }
+
+ @Test
+ public void test_states_internet_failed() {
+ UpdateCenter updateCenter = new UpdateCenter(new TestConfig().failInternet());
+ UpdateCenter.ConnectionCheckJob job = updateCenter.newConnectionCheckJob(updateSite);
+
+ job.run();
+
+ Assert.assertEquals(ConnectionStatus.FAILED, job.connectionStates.get(ConnectionStatus.INTERNET));
+ Assert.assertEquals(ConnectionStatus.OK, job.connectionStates.get(ConnectionStatus.UPDATE_SITE));
+ }
+
+ @Test
+ public void test_states_uc_failed_timeout() {
+ UpdateCenter updateCenter = new UpdateCenter(new TestConfig().failUCConnect());
+ UpdateCenter.ConnectionCheckJob job = updateCenter.newConnectionCheckJob(updateSite);
+
+ job.run();
+
+ Assert.assertEquals(ConnectionStatus.OK, job.connectionStates.get(ConnectionStatus.INTERNET));
+ Assert.assertEquals(ConnectionStatus.FAILED, job.connectionStates.get(ConnectionStatus.UPDATE_SITE));
+ }
+
+ @Test
+ public void test_states_uc_failed_UnknownHost() {
+ UpdateCenter updateCenter = new UpdateCenter(new TestConfig().failUCResolve());
+ UpdateCenter.ConnectionCheckJob job = updateCenter.newConnectionCheckJob(updateSite);
+
+ job.run();
+
+ Assert.assertEquals(ConnectionStatus.OK, job.connectionStates.get(ConnectionStatus.INTERNET));
+ Assert.assertEquals(ConnectionStatus.FAILED, job.connectionStates.get(ConnectionStatus.UPDATE_SITE));
+ }
+
+ private class TestConfig extends UpdateCenter.UpdateCenterConfiguration {
+
+ private IOException checkConnectionException;
+ private IOException checkUpdateCenterException;
+
+ private TestConfig failInternet() {
+ checkConnectionException = new IOException("Connection timed out");
+ return this;
+ }
+
+ private TestConfig failUCResolve() {
+ checkUpdateCenterException = new UnknownHostException("Unable to resolve UpdateCenter host address.");
+ return this;
+ }
+
+ private TestConfig failUCConnect() {
+ checkUpdateCenterException = new IOException("Connection timed out");
+ return this;
+ }
+
+ @Override
+ public void checkConnection(UpdateCenter.ConnectionCheckJob job, String connectionCheckUrl) throws IOException {
+ if (checkConnectionException != null) {
+ throw checkConnectionException;
+ }
+ }
+
+ @Override
+ public void checkUpdateCenter(UpdateCenter.ConnectionCheckJob job, String updateCenterUrl) throws IOException {
+ if (checkUpdateCenterException != null) {
+ throw checkUpdateCenterException;
+ }
+ }
+ }
+}
diff --git a/test/src/test/java/hudson/model/UpdateCenterPluginInstallTest.java b/test/src/test/java/hudson/model/UpdateCenterPluginInstallTest.java
new file mode 100644
index 0000000000..fe651a8263
--- /dev/null
+++ b/test/src/test/java/hudson/model/UpdateCenterPluginInstallTest.java
@@ -0,0 +1,94 @@
+/*
+ * The MIT License
+ *
+ * Copyright (c) 2015, CloudBees, Inc.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+package hudson.model;
+
+import net.sf.json.JSONArray;
+import net.sf.json.JSONObject;
+import org.junit.Assert;
+import org.junit.Assume;
+import org.junit.Rule;
+import org.junit.Test;
+import org.jvnet.hudson.test.JenkinsRule;
+import org.xml.sax.SAXException;
+
+import java.io.IOException;
+import java.net.InetSocketAddress;
+import java.util.Arrays;
+
+/**
+ * @author tom.fennelly@gmail.com
+ */
+public class UpdateCenterPluginInstallTest {
+
+ @Rule
+ public JenkinsRule jenkinsRule = new JenkinsRule();
+
+ public void setup() throws IOException {
+ jenkinsRule.jenkins.getUpdateCenter().getSite(UpdateCenter.ID_DEFAULT).updateDirectlyNow(false);
+ InetSocketAddress address = new InetSocketAddress("updates.jenkins-ci.org", 80);
+ Assume.assumeFalse("Unable to resolve updates.jenkins-ci.org. Skip test.", address.isUnresolved());
+ }
+
+ @Test
+ public void test_installUnknownPlugin() throws IOException, SAXException {
+ setup();
+ JenkinsRule.JSONWebResponse response = jenkinsRule.postJSON("pluginManager/installPlugins", buildInstallPayload("unknown_plugin_xyz"));
+ JSONObject json = response.getJSONObject();
+
+ Assert.assertEquals("error", json.get("status"));
+ Assert.assertEquals("No such plugin: unknown_plugin_xyz", json.get("message"));
+ Assert.assertEquals("error", json.get("status"));
+ Assert.assertEquals("No such plugin: unknown_plugin_xyz", json.get("message"));
+ }
+
+ @Test
+ public void test_installKnownPlugins() throws IOException, SAXException {
+ setup();
+ JenkinsRule.JSONWebResponse installResponse = jenkinsRule.postJSON("pluginManager/installPlugins", buildInstallPayload("changelog-history", "git"));
+ JSONObject json = installResponse.getJSONObject();
+
+ Assert.assertEquals("ok", json.get("status"));
+ JSONObject data = json.getJSONObject("data");
+ Assert.assertTrue(data.has("correlationId"));
+
+ String correlationId = data.getString("correlationId");
+ JSONObject installStatus = jenkinsRule.getJSON("updateCenter/installStatus?correlationId=" + correlationId).getJSONObject();
+ Assert.assertEquals("ok", json.get("status"));
+ JSONObject status = installStatus.getJSONObject("data");
+ JSONArray states = status.getJSONArray("jobs");
+ Assert.assertEquals(2, states.size());
+
+ JSONObject pluginInstallState = states.getJSONObject(0);
+ Assert.assertEquals("changelog-history", pluginInstallState.get("name"));
+ pluginInstallState = states.getJSONObject(1);
+ Assert.assertEquals("git", pluginInstallState.get("name"));
+ }
+
+ private JSONObject buildInstallPayload(String... plugins) {
+ JSONObject payload = new JSONObject();
+ payload.put("dynamicLoad", true);
+ payload.put("plugins", JSONArray.fromObject(Arrays.asList(plugins)));
+ return payload;
+ }
+}
diff --git a/test/src/test/java/hudson/model/ViewDescriptorTest.java b/test/src/test/java/hudson/model/ViewDescriptorTest.java
new file mode 100644
index 0000000000..02be6a5f4b
--- /dev/null
+++ b/test/src/test/java/hudson/model/ViewDescriptorTest.java
@@ -0,0 +1,78 @@
+/*
+ * The MIT License
+ *
+ * Copyright 2016 CloudBees, Inc.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+
+package hudson.model;
+
+import java.util.Arrays;
+import java.util.TreeSet;
+import jenkins.model.DirectlyModifiableTopLevelItemGroup;
+import static org.junit.Assert.*;
+import org.junit.Rule;
+import org.junit.Test;
+import org.jvnet.hudson.test.JenkinsRule;
+import org.jvnet.hudson.test.MockFolder;
+import org.jvnet.hudson.test.TestExtension;
+
+public class ViewDescriptorTest {
+
+ @Rule
+ public JenkinsRule r = new JenkinsRule();
+
+ /** Checks that {@link ViewDescriptor#doAutoCompleteCopyNewItemFrom} honors {@link DirectlyModifiableTopLevelItemGroup#canAdd}. */
+ @Test
+ public void canAdd() throws Exception {
+ MockFolder d1 = r.createFolder("d1");
+ d1.createProject(MockFolder.class, "sub");
+ d1.createProject(FreeStyleProject.class, "prj");
+ MockFolder d2 = r.jenkins.createProject(RestrictiveFolder.class, "d2");
+ assertContains(r.jenkins.getDescriptorByType(AllView.DescriptorImpl.class).doAutoCompleteCopyNewItemFrom("../d1/", d2), "../d1/prj");
+ }
+
+ @SuppressWarnings({"unchecked", "rawtypes"}) // the usual API mistakes
+ public static class RestrictiveFolder extends MockFolder {
+
+ public RestrictiveFolder(ItemGroup parent, String name) {
+ super(parent, name);
+ }
+
+ @Override
+ public boolean canAdd(TopLevelItem item) {
+ return item instanceof FreeStyleProject;
+ }
+
+ @TestExtension("canAdd") public static class DescriptorImpl extends TopLevelItemDescriptor {
+
+ @Override public TopLevelItem newInstance(ItemGroup parent, String name) {
+ return new RestrictiveFolder(parent, name);
+ }
+
+ }
+
+ }
+
+ private void assertContains(AutoCompletionCandidates c, String... values) {
+ assertEquals(new TreeSet<>(Arrays.asList(values)), new TreeSet<>(c.getValues()));
+ }
+
+}
diff --git a/test/src/test/java/hudson/model/ViewTest.java b/test/src/test/java/hudson/model/ViewTest.java
index 67e1c2a019..36841da295 100644
--- a/test/src/test/java/hudson/model/ViewTest.java
+++ b/test/src/test/java/hudson/model/ViewTest.java
@@ -45,17 +45,24 @@ import org.jvnet.hudson.test.Email;
import org.w3c.dom.Text;
import static hudson.model.Messages.Hudson_ViewName;
+import hudson.security.ACL;
+import hudson.security.AccessDeniedException2;
import hudson.slaves.DumbSlave;
+import hudson.util.FormValidation;
import hudson.util.HudsonIsLoading;
import java.io.File;
import java.io.IOException;
import java.util.Arrays;
+import jenkins.model.ProjectNamingStrategy;
+import jenkins.security.NotReallyRoleSensitiveCallable;
import static org.junit.Assert.*;
import org.junit.Ignore;
import org.junit.Rule;
import org.junit.Test;
import org.jvnet.hudson.test.JenkinsRule;
import org.jvnet.hudson.test.JenkinsRule.WebClient;
+import org.jvnet.hudson.test.MockAuthorizationStrategy;
+import org.jvnet.hudson.test.MockFolder;
import org.jvnet.hudson.test.TestExtension;
import org.kohsuke.stapler.DataBoundConstructor;
@@ -428,4 +435,75 @@ public class ViewTest {
}
}
}
+
+ @Issue("JENKINS-20509")
+ @Test public void checkJobName() throws Exception {
+ j.createFreeStyleProject("topprj");
+ final MockFolder d1 = j.createFolder("d1");
+ d1.createProject(FreeStyleProject.class, "subprj");
+ final MockFolder d2 = j.createFolder("d2");
+ j.jenkins.setSecurityRealm(j.createDummySecurityRealm());
+ j.jenkins.setAuthorizationStrategy(new MockAuthorizationStrategy().
+ grant(Jenkins.ADMINISTER).everywhere().to("admin").
+ grant(Jenkins.READ).everywhere().toEveryone().
+ grant(Job.READ).everywhere().toEveryone().
+ grant(Item.CREATE).onFolders(d1).to("dev")); // not on root or d2
+ ACL.impersonate(Jenkins.ANONYMOUS, new NotReallyRoleSensitiveCallable() {
+ @Override
+ public Void call() throws Exception {
+ try {
+ assertCheckJobName(j.jenkins, "whatever", FormValidation.Kind.OK);
+ fail("should not have been allowed");
+ } catch (AccessDeniedException2 x) {
+ // OK
+ }
+ return null;
+ }
+ });
+ ACL.impersonate(User.get("dev").impersonate(), new NotReallyRoleSensitiveCallable() {
+ @Override
+ public Void call() throws Exception {
+ try {
+ assertCheckJobName(j.jenkins, "whatever", FormValidation.Kind.OK);
+ fail("should not have been allowed");
+ } catch (AccessDeniedException2 x) {
+ // OK
+ }
+ try {
+ assertCheckJobName(d2, "whatever", FormValidation.Kind.OK);
+ fail("should not have been allowed");
+ } catch (AccessDeniedException2 x) {
+ // OK
+ }
+ assertCheckJobName(d1, "whatever", FormValidation.Kind.OK);
+ return null;
+ }
+ });
+ ACL.impersonate(User.get("admin").impersonate(), new NotReallyRoleSensitiveCallable() {
+ @Override
+ public Void call() throws Exception {
+ assertCheckJobName(j.jenkins, "whatever", FormValidation.Kind.OK);
+ assertCheckJobName(d1, "whatever", FormValidation.Kind.OK);
+ assertCheckJobName(d2, "whatever", FormValidation.Kind.OK);
+ assertCheckJobName(j.jenkins, "d1", FormValidation.Kind.ERROR);
+ assertCheckJobName(j.jenkins, "topprj", FormValidation.Kind.ERROR);
+ assertCheckJobName(d1, "subprj", FormValidation.Kind.ERROR);
+ assertCheckJobName(j.jenkins, "", FormValidation.Kind.OK);
+ assertCheckJobName(j.jenkins, "foo/bie", FormValidation.Kind.ERROR);
+ assertCheckJobName(d2, "New", FormValidation.Kind.OK);
+ j.jenkins.setProjectNamingStrategy(new ProjectNamingStrategy.PatternProjectNamingStrategy("[a-z]+", "", true));
+ assertCheckJobName(d2, "New", FormValidation.Kind.ERROR);
+ assertCheckJobName(d2, "new", FormValidation.Kind.OK);
+ return null;
+ }
+ });
+ JenkinsRule.WebClient wc = j.createWebClient().login("admin");
+ assertEquals("original ${rootURL}/checkJobName still supported", "", wc.goTo("checkJobName?value=stuff").getWebResponse().getContentAsString());
+ assertEquals("but now possible on a view in a folder", "", wc.goTo("job/d1/view/All/checkJobName?value=stuff").getWebResponse().getContentAsString());
+ }
+
+ private void assertCheckJobName(ViewGroup context, String name, FormValidation.Kind expected) {
+ assertEquals(expected, context.getPrimaryView().doCheckJobName(name).kind);
+ }
+
}
diff --git a/test/src/test/java/hudson/tasks/MavenTest.java b/test/src/test/java/hudson/tasks/MavenTest.java
index a95a2285de..5d50ec0c60 100644
--- a/test/src/test/java/hudson/tasks/MavenTest.java
+++ b/test/src/test/java/hudson/tasks/MavenTest.java
@@ -159,7 +159,7 @@ public class MavenTest {
* Simulates the addition of the new Maven via UI and makes sure it works.
*/
@Test public void globalConfigAjax() throws Exception {
- HtmlPage p = j.createWebClient().goTo("configure");
+ HtmlPage p = j.createWebClient().goTo("configureTools");
HtmlForm f = p.getFormByName("config");
HtmlButton b = j.getButtonByCaption(f, "Add Maven");
b.click();
diff --git a/test/src/test/java/hudson/tools/JDKInstallerTest.java b/test/src/test/java/hudson/tools/JDKInstallerTest.java
index c91f1cc112..e9ced11efe 100644
--- a/test/src/test/java/hudson/tools/JDKInstallerTest.java
+++ b/test/src/test/java/hudson/tools/JDKInstallerTest.java
@@ -94,7 +94,7 @@ public class JDKInstallerTest {
j.jenkins.getJDKs().add(new JDK("test",tmp.getRoot().getAbsolutePath(), Arrays.asList(
new InstallSourceProperty(Arrays.asList(installer)))));
- j.submit(j.createWebClient().goTo("configure").getFormByName("config"));
+ j.submit(j.createWebClient().goTo("configureTools").getFormByName("config"));
JDK jdk = j.jenkins.getJDK("test");
InstallSourceProperty isp = jdk.getProperties().get(InstallSourceProperty.class);
diff --git a/test/src/test/java/jenkins/I18nTest.java b/test/src/test/java/jenkins/I18nTest.java
new file mode 100644
index 0000000000..a934422532
--- /dev/null
+++ b/test/src/test/java/jenkins/I18nTest.java
@@ -0,0 +1,64 @@
+/*
+ * The MIT License
+ *
+ * Copyright (c) 2015, CloudBees, Inc.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+package jenkins;
+
+import net.sf.json.JSONObject;
+import org.junit.Assert;
+import org.junit.Rule;
+import org.junit.Test;
+import org.jvnet.hudson.test.JenkinsRule;
+import org.xml.sax.SAXException;
+
+import java.io.IOException;
+
+/**
+ * @author tom.fennelly@gmail.com
+ */
+public class I18nTest {
+
+ @Rule
+ public JenkinsRule jenkinsRule = new JenkinsRule();
+
+ @Test
+ public void test_baseName_unspecified() throws IOException, SAXException {
+ JSONObject response = jenkinsRule.getJSON("i18n/resourceBundle").getJSONObject();
+ Assert.assertEquals("error", response.getString("status"));
+ Assert.assertEquals("Mandatory parameter 'baseName' not specified.", response.getString("message"));
+ }
+
+ @Test
+ public void test_baseName_unknown() throws IOException, SAXException {
+ JSONObject response = jenkinsRule.getJSON("i18n/resourceBundle?baseName=com.acme.XyzWhatever").getJSONObject();
+ Assert.assertEquals("error", response.getString("status"));
+ Assert.assertTrue(response.getString("message").contains("com.acme.XyzWhatever"));
+ }
+
+ @Test
+ public void test_valid() throws IOException, SAXException {
+ JSONObject response = jenkinsRule.getJSON("i18n/resourceBundle?baseName=hudson.logging.Messages&language=de").getJSONObject();
+ Assert.assertEquals("ok", response.getString("status"));
+ JSONObject data = response.getJSONObject("data");
+ Assert.assertEquals("Initialisiere Log-Rekorder", data.getString("LogRecorderManager.init"));
+ }
+}
diff --git a/test/src/test/java/jenkins/install/InstallUtilTest.java b/test/src/test/java/jenkins/install/InstallUtilTest.java
new file mode 100644
index 0000000000..e890054931
--- /dev/null
+++ b/test/src/test/java/jenkins/install/InstallUtilTest.java
@@ -0,0 +1,201 @@
+/*
+ * The MIT License
+ *
+ * Copyright (c) 2015, CloudBees, Inc.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+package jenkins.install;
+
+import java.lang.reflect.Field;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.UUID;
+
+import org.junit.After;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.TemporaryFolder;
+import org.jvnet.hudson.test.JenkinsRule;
+import org.mockito.Mockito;
+
+import hudson.Main;
+import hudson.model.UpdateCenter;
+import hudson.model.UpdateCenter.DownloadJob.Failure;
+import hudson.model.UpdateCenter.DownloadJob.InstallationStatus;
+import hudson.model.UpdateCenter.DownloadJob.Installing;
+import hudson.model.UpdateCenter.DownloadJob.Pending;
+import hudson.model.UpdateCenter.DownloadJob.Success;
+import hudson.model.UpdateCenter.UpdateCenterJob;
+import hudson.model.UpdateSite;
+import jenkins.model.Jenkins;
+import net.sf.json.JSONArray;
+import net.sf.json.JSONObject;
+
+/**
+ * Test
+ * @author tom.fennelly@gmail.com
+ */
+public class InstallUtilTest {
+
+ @Rule
+ public JenkinsRule jenkinsRule = new JenkinsRule();
+
+ @Before
+ public void setup() {
+ // JenkinsRule will have created the last exec file (indirectly),
+ // so remove it so we can fake the tests.
+ InstallUtil.getLastExecVersionFile().delete();
+ // Disable the unit test flag.
+ Main.isUnitTest = false;
+ }
+
+ @After
+ public void tearDown() {
+ // Reset the unit test flag back to its default.
+ Main.isUnitTest = true;
+ }
+
+ /**
+ * Test jenkins startup sequences and the changes to the startup type..
+ */
+ @Test
+ public void test_typeTransitions() {
+ // A new test instance
+ Assert.assertEquals(InstallState.NEW, InstallUtil.getInstallState());
+
+ // Save the last exec version. This will only be done by Jenkins after one of:
+ // 1. A successful run of the install wizard.
+ // 2. A success upgrade.
+ // 3. A successful restart.
+ InstallUtil.saveLastExecVersion();
+
+ // Fudge things a little now, pretending there's a restart...
+
+ // Now if we ask what is the InstallState, we should be told it's a RESTART because
+ // the install wizard is complete and the version matches the currently executing
+ // Jenkins version.
+ Assert.assertEquals(InstallState.RESTART, InstallUtil.getInstallState());
+
+ // Fudge things again, changing the stored version to something old, faking an upgrade...
+ InstallUtil.saveLastExecVersion("1.584");
+ Assert.assertEquals(InstallState.UPGRADE, InstallUtil.getInstallState());
+
+ // Fudge things yet again, changing the stored version to something very very new, faking a downgrade...
+ InstallUtil.saveLastExecVersion("1000.0");
+ Assert.assertEquals(InstallState.DOWNGRADE, InstallUtil.getInstallState());
+ }
+
+
+ /**
+ * Test jenkins startup sequences and the changes to the startup type..
+ */
+ @Test
+ public void test_getLastExecVersion() throws Exception {
+ // Delete the config file, forcing getLastExecVersion to return
+ // the default/unset version value.
+ InstallUtil.getConfigFile().delete();
+ Assert.assertEquals("1.0", InstallUtil.getLastExecVersion());
+
+ // Set the version to some stupid value and check again. This time,
+ // getLastExecVersion should read it from the file.
+ setStoredVersion("9.123");
+ Assert.assertEquals("9.123", InstallUtil.getLastExecVersion());
+ }
+
+ private void setStoredVersion(String version) throws Exception {
+ Field versionField = Jenkins.class.getDeclaredField("version");
+ versionField.setAccessible(true);
+ versionField.set(jenkinsRule.jenkins, version);
+ Assert.assertEquals(version, Jenkins.getStoredVersion().toString());
+ // Force a save of the config.xml
+ jenkinsRule.jenkins.save();
+ }
+
+ /**
+ * Validate proper statuses are persisted and install status is cleared when invoking appropriate methods on {@link InstallUtil}
+ */
+ @Test
+ public void testSaveAndRestoreInstallingPlugins() throws Exception {
+ final List updates = new ArrayList<>();
+
+ final Map nameMap = new HashMap<>();
+
+ new UpdateCenter() { // inner classes...
+ {
+ new UpdateSite("foo", "http://omg.org") {
+ {
+ for(String name : Arrays.asList("pending-plug:Pending", "installing-plug:Installing", "failure-plug:Failure", "success-plug:Success")) {
+ String statusType = name.split(":")[1];
+ name = name.split(":")[0];
+
+ InstallationStatus status;
+ if("Success".equals(statusType)) {
+ status = Mockito.mock(Success.class);
+ }
+ else if("Failure".equals(statusType)) {
+ status = Mockito.mock(Failure.class);
+ }
+ else if("Installing".equals(statusType)) {
+ status = Mockito.mock(Installing.class);
+ }
+ else {
+ status = Mockito.mock(Pending.class);
+ }
+
+ nameMap.put(statusType, status.getClass().getSimpleName());
+
+ JSONObject json = new JSONObject();
+ json.put("name", name);
+ json.put("version", "1.1");
+ json.put("url", "http://google.com");
+ json.put("dependencies", new JSONArray());
+ Plugin p = new Plugin(getId(), json);
+
+ InstallationJob job = new InstallationJob(p, null, null, false);
+ job.status = status;
+ job.setCorrelationId(UUID.randomUUID()); // this indicates the plugin was 'directly selected'
+ updates.add(job);
+ }
+ }
+ };
+ }
+ };
+
+ InstallUtil.persistInstallStatus(updates);
+
+ Map persisted = InstallUtil.getPersistedInstallStatus();
+
+ Assert.assertEquals(nameMap.get("Pending"), persisted.get("pending-plug"));
+ Assert.assertEquals("Pending", persisted.get("installing-plug")); // only marked as success/fail after successful install
+ Assert.assertEquals(nameMap.get("Failure"), persisted.get("failure-plug"));
+ Assert.assertEquals(nameMap.get("Success"), persisted.get("success-plug"));
+
+ InstallUtil.clearInstallStatus();
+
+ persisted = InstallUtil.getPersistedInstallStatus();
+
+ Assert.assertNull(persisted); // should be deleted
+ }
+}
diff --git a/test/src/test/java/jenkins/install/UpgradeWizardTest.java b/test/src/test/java/jenkins/install/UpgradeWizardTest.java
new file mode 100644
index 0000000000..9e98574e43
--- /dev/null
+++ b/test/src/test/java/jenkins/install/UpgradeWizardTest.java
@@ -0,0 +1,108 @@
+package jenkins.install;
+
+import hudson.util.VersionNumber;
+import org.apache.commons.io.FileUtils;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.jvnet.hudson.test.JenkinsRule;
+
+import javax.inject.Inject;
+
+import java.io.IOException;
+import java.util.concurrent.Callable;
+
+import static org.junit.Assert.*;
+
+/**
+ * @author Kohsuke Kawaguchi
+ */
+public class UpgradeWizardTest {
+ @Rule
+ public final JenkinsRule j = new JenkinsRule();
+
+ @Inject
+ UpgradeWizard uw;
+
+ @Before
+ public void setup() {
+ j.jenkins.getInjector().injectMembers(this);
+ }
+
+ @Test
+ public void snooze() throws Exception {
+ j.executeOnServer(new Callable() {
+ @Override
+ public Void call() throws Exception {
+ assertTrue(uw.isDue());
+ uw.doSnooze();
+ assertFalse(uw.isDue());
+
+ return null;
+ }
+ });
+ }
+
+ /**
+ * If not upgraded, the upgrade should cause some side effect.
+ */
+ @Test
+ public void upgrade() throws Exception {
+ j.executeOnServer(new Callable() {
+ @Override
+ public Void call() throws Exception {
+ assertTrue(j.jenkins.getUpdateCenter().getJobs().size() == 0);
+ assertTrue(newInstance().isDue());
+ assertNotSame(UpgradeWizard.NOOP, uw.doUpgrade());
+
+ // can't really test this because UC metadata is empty
+ // assertTrue(j.jenkins.getUpdateCenter().getJobs().size() > 0);
+
+ return null;
+ }
+ });
+ }
+
+ /**
+ * If already upgraded, don't show anything
+ */
+ @Test
+ public void fullyUpgraded() throws Exception {
+ FileUtils.writeStringToFile(uw.getStateFile(), "2.0");
+ assertFalse(newInstance().isDue());
+ assertSame(UpgradeWizard.NOOP, uw.doUpgrade());
+ }
+
+ /**
+ * If downgraded from future version, don't prompt upgrade wizard.
+ */
+ @Test
+ public void downgradeFromFuture() throws Exception {
+ FileUtils.writeStringToFile(uw.getStateFile(), "3.0");
+ assertFalse(newInstance().isDue());
+ assertSame(UpgradeWizard.NOOP, uw.doUpgrade());
+ }
+
+ @Test
+ public void freshInstallation() throws Exception {
+ j.executeOnServer(new Callable() {
+ @Override
+ public Void call() throws Exception {
+ assertTrue(uw.isDue());
+ uw.setCurrentLevel(new VersionNumber("2.0"));
+ assertFalse(uw.isDue());
+
+ return null;
+ }
+ });
+ }
+
+ /**
+ * Fresh instance of {@link UpgradeWizard} to test its behavior.
+ */
+ private UpgradeWizard newInstance() throws IOException {
+ UpgradeWizard uw2 = new UpgradeWizard();
+ j.jenkins.getInjector().injectMembers(uw2);
+ return uw2;
+ }
+}
diff --git a/test/src/test/java/lib/form/RowSetTest.java b/test/src/test/java/lib/form/RowSetTest.java
index 8a8fdb0aa9..05d34658a5 100644
--- a/test/src/test/java/lib/form/RowSetTest.java
+++ b/test/src/test/java/lib/form/RowSetTest.java
@@ -2,6 +2,7 @@ package lib.form;
import com.gargoylesoftware.htmlunit.html.HtmlPage;
import hudson.model.RootAction;
+import hudson.security.csrf.CrumbIssuer;
import junit.framework.Assert;
import net.sf.json.JSONObject;
import org.junit.Rule;
@@ -27,12 +28,12 @@ public class RowSetTest {
public static class Subject implements RootAction {
public void doSubmitTest1(StaplerRequest req) throws Exception {
JSONObject json = req.getSubmittedForm();
- json.remove("crumb");
+ json.remove(CrumbIssuer.DEFAULT_CRUMB_NAME);
System.out.println(json);
JSONObject expected = JSONObject.fromObject(
"{'a':'aaa','b':'bbb','c':{'c1':'ccc1','c2':'ccc2'},'d':{'d1':'d1','d2':'d2'}}");
- Assert.assertEquals(json,expected);
+ Assert.assertEquals(expected, json);
}
@Override
diff --git a/test/src/test/resources/plugins/dependee-0.0.2.hpi b/test/src/test/resources/plugins/dependee-0.0.2.hpi
deleted file mode 100644
index 79525b0846..0000000000
Binary files a/test/src/test/resources/plugins/dependee-0.0.2.hpi and /dev/null differ
diff --git a/test/src/test/resources/plugins/depender-0.0.2.hpi b/test/src/test/resources/plugins/depender-0.0.2.hpi
deleted file mode 100644
index 34826d3f77..0000000000
Binary files a/test/src/test/resources/plugins/depender-0.0.2.hpi and /dev/null differ
diff --git a/test/src/test/resources/plugins/mandatory-depender-0.0.2.hpi b/test/src/test/resources/plugins/mandatory-depender-0.0.2.hpi
deleted file mode 100644
index dedc65a62f..0000000000
Binary files a/test/src/test/resources/plugins/mandatory-depender-0.0.2.hpi and /dev/null differ
diff --git a/war/.gitignore b/war/.gitignore
index e500657ff9..7ea4dd8431 100644
--- a/war/.gitignore
+++ b/war/.gitignore
@@ -1,2 +1,10 @@
-work
+work
/rebel.xml
+
+# Node
+node/
+node_modules/
+npm-debug.log
+
+# Generated JavaScript Bundles
+jsbundles
diff --git a/war/Gruntfile.js b/war/Gruntfile.js
deleted file mode 100644
index 63507e430c..0000000000
--- a/war/Gruntfile.js
+++ /dev/null
@@ -1,10 +0,0 @@
-module.exports = function (grunt) {
- grunt.initConfig({
-
- });
-
- grunt.registerTask('build', [
- ]);
-
- grunt.registerTask('default', ['build']);
-};
diff --git a/war/gulpfile.js b/war/gulpfile.js
new file mode 100644
index 0000000000..7e1697b031
--- /dev/null
+++ b/war/gulpfile.js
@@ -0,0 +1,46 @@
+//
+// See https://github.com/tfennelly/jenkins-js-builder
+//
+var builder = require('jenkins-js-builder');
+
+//
+// Bundle the page init script.
+// See https://github.com/jenkinsci/js-builder#bundling
+//
+builder.bundle('src/main/js/page-init.js')
+ .withExternalModuleMapping('jquery-detached', 'core-assets/jquery-detached:jquery2')
+ .inDir('src/main/webapp/jsbundles');
+
+//
+// Bundle the Install Wizard.
+// See https://github.com/jenkinsci/js-builder#bundling
+//
+builder.bundle('src/main/js/pluginSetupWizard.js')
+ .withExternalModuleMapping('jquery-detached', 'core-assets/jquery-detached:jquery2')
+ .withExternalModuleMapping('bootstrap', 'core-assets/bootstrap:bootstrap3', {addDefaultCSS: true})
+ .withExternalModuleMapping('handlebars', 'core-assets/handlebars:handlebars3')
+ .less('src/main/less/pluginSetupWizard.less')
+ .inDir('src/main/webapp/jsbundles');
+
+//
+// Bundle the Config Tab Bar.
+// See https://github.com/jenkinsci/js-builder#bundling
+//
+builder.bundle('src/main/js/config-tabbar.js')
+ .withExternalModuleMapping('jquery-detached', 'core-assets/jquery-detached:jquery2')
+ .less('src/main/js/config-tabbar.less')
+ .inDir('src/main/webapp/jsbundles');
+
+//
+// Bundle the Config Scrollspy.
+// See https://github.com/jenkinsci/js-builder#bundling
+//
+builder.bundle('src/main/js/config-scrollspy.js')
+ .withExternalModuleMapping('jquery-detached', 'core-assets/jquery-detached:jquery2')
+ .less('src/main/js/config-scrollspy.less')
+ .inDir('src/main/webapp/jsbundles');
+
+builder.bundle('src/main/js/add-item.js')
+ .withExternalModuleMapping('jquery-detached', 'core-assets/jquery-detached:jquery2')
+ .less('src/main/js/add-item.less')
+ .inDir('src/main/webapp/jsbundles');
diff --git a/war/package.json b/war/package.json
index c35e61d1f8..12e842df90 100644
--- a/war/package.json
+++ b/war/package.json
@@ -1,11 +1,20 @@
{
- "name": "jenkins",
- "version": "0.0.0",
- "dependencies": {},
- "devDependencies": {
- "grunt": "~0.4.1"
- },
- "engines": {
- "node": ">=0.8.0"
- }
-}
\ No newline at end of file
+ "name": "jenkins-ui",
+ "version": "1.0.0",
+ "description": "Jenkins User Interface",
+ "license": "MIT",
+ "devDependencies": {
+ "gulp": "^3.9.0",
+ "handlebars": "^3.0.3",
+ "hbsfy": "^2.4.1",
+ "jenkins-handlebars-rt": "^1.0.1",
+ "jenkins-js-builder": "0.0.40",
+ "jenkins-js-test": "^1.0.0"
+ },
+ "dependencies": {
+ "bootstrap-detached": "^3.3.5-v1",
+ "jenkins-js-modules": "^1.5.0",
+ "jquery-detached": "^2.1.4-v2",
+ "window-handle": "^1.0.0"
+ }
+}
diff --git a/war/pom.xml b/war/pom.xml
index b0b6011330..aa449dc050 100644
--- a/war/pom.xml
+++ b/war/pom.xml
@@ -28,7 +28,7 @@ THE SOFTWARE.
org.jenkins-ci.mainpom
- 1.657-SNAPSHOT
+ 2.0-rc-2-SNAPSHOTjenkins-war
@@ -41,13 +41,15 @@ THE SOFTWARE.
${basedir}/work/jenkins8080
+ 4.0.0
+ 2.13.1org.jenkins-ciexecutable-war
- 1.32
+ 1.33provided
@@ -77,7 +79,7 @@ THE SOFTWARE.
${project.groupId}remoting
-
+
${project.groupId}cli
@@ -91,7 +93,7 @@ THE SOFTWARE.
-->
org.jenkins-ciwinstone
- 2.9
+ 3.1test
@@ -134,6 +136,24 @@ THE SOFTWARE.
sshd1.6
+
+ org.jenkins-ci.ui
+ jquery-detached
+ 1.2.1
+ core-assets
+
+
+ org.jenkins-ci.ui
+ bootstrap
+ 1.3.2
+ core-assets
+
+
+ org.jenkins-ci.ui
+ handlebars
+ 1.1.1
+ core-assets
+
+
+ ${project.build.directory}/${project.build.finalName}/WEB-INF/plugins
+ true
+ true
+ false
+ true
+
+
+
+ detached-plugins
+ generate-resources
+
+ copy
+
+
+
+
${project.groupId}maven-plugin
@@ -368,7 +406,7 @@ THE SOFTWARE.
hpi
- ${project.build.directory}/${project.build.finalName}/WEB-INF/plugins
+ ${project.build.directory}/${project.build.finalName}/WEB-INF/detached-pluginstruetruefalse
@@ -437,7 +475,7 @@ THE SOFTWARE.
../core/src/main/resources
-
+
@@ -532,36 +571,92 @@ THE SOFTWARE.
+
+
+
+
+
-
- grunt
+ node-classifier-linux
+ Linuxamd64
+
+ node-v${node.version}-linux-x64.tar.gz
+
+
+
+
+ node-classifier-mac
+ mac
+
+ node-v${node.version}-darwin-x64.tar.gz
+
+
+
+
+ node-classifier-windows
+ windowsx64
+
+ win-x64/node.exe
+ /x64
+
+
+
+ node-classifier-windows-amd64
+ windowsamd64
+
+ win-x64/node.exe
+ /x64
+
+
+
+ node-classifier-windows-x86
+ windowsx86
+
+ win-x86/node.exe
+
+
+
+
+ node-download
+ package.json
- org.codehaus.mojo
- exec-maven-plugin
+ com.googlecode.maven-download-plugin
+ download-maven-plugin
+ 1.2.1
- install
- validate
+ get-node
+ initialize
- exec
+ wget
- npm
-
- install
-
+ https://nodejs.org/dist/v${node.version}/${node.download.file}
+ false
+ ${project.build.directory}/frontend/v${node.version}${node.download.classifier}
- grunt
- prepare-package
+ get-npm
+ initialize
- exec
+ wget
- grunt
+ http://registry.npmjs.org/npm/-/npm-${npm.version}.tgz
+ false
+ ${project.build.directory}/frontend/
+ npm-${npm.version}.tgz
@@ -569,5 +664,127 @@ THE SOFTWARE.
-
+
+ gulp-execution
+
+
+ gulpfile.js
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-enforcer-plugin
+ 1.3.1
+
+
+ enforce-versions
+
+ enforce
+
+
+
+
+ 3.1.0
+
+
+
+
+
+
+
+ com.github.eirslett
+ frontend-maven-plugin
+ 0.0.23
+
+
+
+
+ initialize
+ install node and npm
+
+ install-node-and-npm
+
+
+ v${node.version}
+ ${npm.version}
+
+ ${project.baseUri}target/frontend/
+
+
+
+
+ initialize
+ npm install
+
+ npm
+
+
+
+ install
+
+
+
+
+ generate-sources
+ gulp bundle
+
+ gulp
+
+
+ bundle
+
+
+
+
+ test
+ gulp test
+
+ gulp
+
+
+ bundle test
+ ${skipTests}
+
+
+
+
+
+
+
+
+
+
+ clean-node
+
+
+ package.json
+
+
+ cleanNode
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-clean-plugin
+
+
+
+ node
+ false
+
+
+ node_modules
+ false
+
+
+
+
+
+
+
+
diff --git a/war/src/main/js/add-item.js b/war/src/main/js/add-item.js
new file mode 100644
index 0000000000..a15af8eacc
--- /dev/null
+++ b/war/src/main/js/add-item.js
@@ -0,0 +1,209 @@
+// Initialize all modules by requiring them. Also makes sure they get bundled (see gulpfile.js).
+var $ = require('jquery-detached').getJQuery();
+
+var getItems = function(){
+ var d = $.Deferred();
+ $.get('itemCategories?depth=3').done(
+ function(data){
+ d.resolve(data);
+ }
+ );
+ return d.promise();
+};
+
+var jRoot = $('head').attr('data-rooturl');
+
+$.when(getItems()).done(function(data){
+ $(function() {
+
+ //////////////////////////
+ // helper functions...
+
+ function parseResponseFromCheckJobName(data) {
+ var html = $.parseHTML(data);
+ var element = html[0];
+ if (element !== undefined) {
+ return $(element).text();
+ }
+ return undefined;
+ }
+
+ function cleanClassName(className){
+ return className.replace(/\./g,'_');
+ }
+
+ function checkForLink(desc) {
+ if (desc.indexOf('<a href="') === -1) {
+ return desc;
+ }
+ var newDesc = desc.replace(/\</g,'<').replace(/\>/g,'>');
+ return newDesc;
+ }
+
+ function getItemTypeSelected() {
+ var item = $('input[type="radio"][name="mode"]:checked', '#createItem').val();
+ if (item === "copy") {
+ return undefined;
+ }
+ return item;
+ }
+
+ function getItemCopyFromSelected() {
+ return $('input[type="radio"][name="mode"][value="copy"]:checked', '#createItem').val();
+ }
+
+ function getCopyFromValue() {
+ return $('input[type="text"][name="from"]', '#createItem').val();
+ }
+
+ function isItemNameEmpty() {
+ var itemName = $('input[name="name"]', '#createItem').val();
+ return (itemName === '') ? true : false;
+ }
+
+ function activateValidationMessage(messageId, context, message) {
+ if (message !== undefined && message !== '') {
+ $(messageId, context).html('» ' + message);
+ }
+ cleanValidationMessages(context);
+ hideInputHelp(context);
+ $(messageId).removeClass('input-message-disabled');
+ }
+
+ function cleanValidationMessages(context) {
+ $(context).find('.input-validation-message').addClass('input-message-disabled');
+ }
+
+ function hideInputHelp(context) {
+ $('.input-help', context).addClass('input-message-disabled');
+ }
+
+ function showInputHelp(context) {
+ $('.input-help', context).removeClass('input-message-disabled');
+ }
+
+ //////////////////////////////////
+ // Draw functions
+
+ function drawCategory(category) {
+ var $category = $('').addClass('category').attr('id', 'j-add-item-type-' + cleanClassName(category.id));
+ var $items = $('
').addClass('j-item-options');
+ var $catHeader = $('');
+ var title = '
+
diff --git a/war/src/main/js/templates/pluginSetupWizard.hbs b/war/src/main/js/templates/pluginSetupWizard.hbs
new file mode 100644
index 0000000000..0eca05b4e3
--- /dev/null
+++ b/war/src/main/js/templates/pluginSetupWizard.hbs
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/war/src/main/js/templates/progressPanel.hbs b/war/src/main/js/templates/progressPanel.hbs
new file mode 100644
index 0000000000..49df7f81ae
--- /dev/null
+++ b/war/src/main/js/templates/progressPanel.hbs
@@ -0,0 +1,26 @@
+
+ * This allows us to take a top level section (by id) and push it down
+ * into another section e.g. pushing the "Advanced" section into the
+ * "General" section.
+ * @param sectionId The id of the top-level section to be adopted.
+ */
+ConfigSection.prototype.adoptSection = function(sectionId) {
+ if (!this.isTopLevelSection()) {
+ // Only top-level sections can adopt.
+ return;
+ }
+
+ var child = this.parentCMD.getSection(sectionId);
+ if (child && this.parentCMD.removeSection(child.id)) {
+ this.subSections.push(child);
+ }
+};
+
+/*
+ * Get the section rows.
+ */
+ConfigSection.prototype.getRows = function() {
+ var curTr = this.headerRow.next();
+ var rows = [];
+ var numNewRows = 0;
+
+ rows.push(curTr);
+ while(curTr.size() === 1 && !curTr.hasClass('section-header-row')) {
+ rows.push(curTr);
+ if (!curTr.hasClass(this.id)) {
+ numNewRows++;
+ curTr.addClass(this.id);
+ }
+ curTr = curTr.next();
+ }
+
+ if (numNewRows > 0) {
+ // We have new rows in the section ... reset cached info.
+ if (this.rowGroups !== undefined) {
+ this.gatherRowGroups(rows);
+ }
+ }
+
+ return rows;
+};
+
+/*
+ * Set the element (jquery) that activates the section (on click).
+ */
+ConfigSection.prototype.setActivator = function(activator) {
+ this.activator = activator;
+
+ var section = this;
+ section.activator.click(function() {
+ section.parentCMD.showSection(section);
+ });
+};
+
+ConfigSection.prototype.activate = function() {
+ if (this.activator) {
+ this.activator.click();
+ } else {
+ console.warn('No activator attached to config section object.');
+ }
+};
+
+ConfigSection.prototype.markAsActive = function() {
+ this.parentCMD.hideSection();
+ this.activator.addClass('active');
+ this.markRowsAsActive();
+};
+
+ConfigSection.prototype.markRowsAsActive = function() {
+ var rows = this.getRows();
+ for (var i = 0; i < rows.length; i++) {
+ rows[i].addClass('active');
+ }
+ for (var ii = 0; ii < this.subSections.length; ii++) {
+ this.subSections[ii].markRowsAsActive();
+ }
+ this.updateRowGroupVisibility();
+};
+
+ConfigSection.prototype.hasText = function(text) {
+ var $ = jQD.getJQuery();
+ var selector = ":containsci('" + text + "')";
+ var sectionRows = this.getRows();
+
+ for (var i1 = 0; i1 < sectionRows.length; i1++) {
+ var row = sectionRows[i1];
+ var elementsWithText = $(selector, row);
+
+ if (elementsWithText.size() > 0) {
+ return true;
+ }
+ }
+
+ for (var i2 = 0; i2 < this.subSections.length; i2++) {
+ if (this.subSections[i2].hasText(text)) {
+ return true;
+ }
+ }
+
+ return false;
+};
+
+ConfigSection.prototype.activeRowCount = function() {
+ var activeRowCount = 0;
+ var rows = this.getRows();
+ for (var i = 0; i < rows.length; i++) {
+ if (rows[i].hasClass('active')) {
+ activeRowCount++;
+ }
+ }
+ return activeRowCount;
+};
+
+ConfigSection.prototype.updateRowGroupVisibility = function() {
+ if (this.rowGroups === undefined) {
+ // Lazily gather row grouping information.
+ this.gatherRowGroups();
+ }
+ for (var i = 0; i < this.rowGroups.length; i++) {
+ var rowGroup = this.rowGroups[i];
+ rowGroup.updateVisibility();
+ }
+ for (var ii = 0; ii < this.subSections.length; ii++) {
+ this.subSections[ii].updateRowGroupVisibility();
+ }
+};
+
+ConfigSection.prototype.gatherRowGroups = function(rows) {
+ this.rowGroups = [];
+
+ // Only tracking row-sets that are bounded by 'row-set-start' and 'row-set-end' (for now).
+ // Also, only capturing the rows after the 'block-control' input (checkbox, radio etc)
+ // and before the 'row-set-end'.
+ // TODO: Find out how these actually work. It seems like they can be nested into a hierarchy :(
+ // Also seems like you can have these "optional-block" thingies which are not wrapped
+ // in 'row-set-start' etc. Grrrrrr :(
+
+ if (rows === undefined) {
+ rows = this.getRows();
+ }
+ if (rows.length > 0) {
+ // Create a top level "fake" ConfigRowGrouping just to capture
+ // the top level groupings. We copy the rowGroups info out
+ // of this and use it in the top "this" ConfigSection instance.
+ var rowGroupContainer = new ConfigRowGrouping(rows[0], undefined);
+
+ this.rowGroups = rowGroupContainer.rowGroups;
+
+ for (var i = 0; i < rows.length; i++) {
+ var row = rows[i];
+
+ if (row.hasClass('row-group-start')) {
+ var newRowGroup = new ConfigRowGrouping(row, rowGroupContainer);
+ if (rowGroupContainer) {
+ rowGroupContainer.rowGroups.push(newRowGroup);
+ }
+ rowGroupContainer = newRowGroup;
+ newRowGroup.findToggleWidget(row);
+ } else if (rowGroupContainer) {
+ if (row.hasClass('row-group-end')) {
+ rowGroupContainer.endRow = row;
+ rowGroupContainer = rowGroupContainer.parentRowGroupContainer; // pop back off the "stack"
+ } else if (rowGroupContainer.toggleWidget === undefined) {
+ rowGroupContainer.findToggleWidget(row);
+ } else {
+ // we have the toggleWidget, which means that this row is
+ // one of the rows after that row and is one of the rows that's
+ // subject to being made visible/hidden when the input is
+ // checked or unchecked.
+ rowGroupContainer.rows.push(row);
+ }
+ }
+ }
+ }
+};
+
+ConfigSection.prototype.getRowGroupLabels = function() {
+ var labels = [];
+ for (var i = 0; i < this.rowGroups.length; i++) {
+ var rowGroup = this.rowGroups[i];
+ labels.push(rowGroup.getLabels());
+ }
+ return labels;
+};
+
+ConfigSection.prototype.highlightText = function(text) {
+ var $ = jQD.getJQuery();
+ var selector = ":containsci('" + text + "')";
+ var rows = this.getRows();
+
+ for (var i1 = 0; i1 < rows.length; i1++) {
+ var row = rows[i1];
+
+ page.removeTextHighlighting(row);
+
+ if (text !== '') {
+ var regex = new RegExp('(' + text + ')',"gi");
+
+ /*jshint loopfunc: true */
+ $(selector, row).find(':not(:input)').each(function() {
+ var $this = $(this);
+ $this.contents().each(function () {
+ // We specifically only mess with text nodes
+ if (this.nodeType === 3) {
+ var $textNode = $(this);
+ var highlightedMarkup = $textNode.text().replace(regex, '$1');
+ $textNode.replaceWith('' + highlightedMarkup + '');
+ }
+ });
+ });
+ }
+ }
+
+ for (var i2 = 0; i2 < this.subSections.length; i2++) {
+ this.subSections[i2].highlightText(text);
+ }
+};
diff --git a/war/src/main/js/widgets/config/model/ConfigTableMetaData.js b/war/src/main/js/widgets/config/model/ConfigTableMetaData.js
new file mode 100644
index 0000000000..c77425b2f0
--- /dev/null
+++ b/war/src/main/js/widgets/config/model/ConfigTableMetaData.js
@@ -0,0 +1,386 @@
+/*
+ * Internal support module for config tables.
+ */
+
+var jQD = require('../../../util/jquery-ext.js');
+var ConfigSection = require('./ConfigSection.js');
+var page = require('../../../util/page.js');
+var util = require('./util.js');
+
+exports.markConfigTableParentForm = function(configTable) {
+ var form = configTable.closest('form');
+ form.addClass('jenkins-config');
+ return form;
+};
+
+exports.findConfigTables = function() {
+ var $ = jQD.getJQuery();
+ // The config tables are the immediate child