diff --git a/core/src/filter/resources/hudson/model/UpdateCenter/CoreUpdateMonitor/message_pl.properties b/core/src/filter/resources/hudson/model/UpdateCenter/CoreUpdateMonitor/message_pl.properties
index 0ec4e8637b..6f5ff479b3 100644
--- a/core/src/filter/resources/hudson/model/UpdateCenter/CoreUpdateMonitor/message_pl.properties
+++ b/core/src/filter/resources/hudson/model/UpdateCenter/CoreUpdateMonitor/message_pl.properties
@@ -1,5 +1,6 @@
# This file is under the MIT License by authors
-NewVersionAvailable=Nowa wersja Jenkinsa ({0}) jest dost\u0119pna do pobrania (changelog ).
+NewVersionAvailable=Nowa wersja Jenkinsa ({0}) jest dost\u0119pna do pobrania (historia zmian ).
Or\ Upgrade\ Automatically=Albo uaktualnij automatycznie
+UpgradeCompleteRestartNotSupported=Aktualizacja Jenkinsa do wersji {0} zako\u0144czy\u0142a si\u0119 pomy\u015Blnie, oczekiwanie na ponowne uruchomienie.
UpgradeProgress=Aktualizacja Jenkinsa do wersji {0} trwa lub nie powiod\u0142a si\u0119 .
diff --git a/core/src/main/java/hudson/ClassicPluginStrategy.java b/core/src/main/java/hudson/ClassicPluginStrategy.java
index a3b6a07e98..3b0f907288 100644
--- a/core/src/main/java/hudson/ClassicPluginStrategy.java
+++ b/core/src/main/java/hudson/ClassicPluginStrategy.java
@@ -167,7 +167,8 @@ public class ClassicPluginStrategy implements PluginStrategy {
if (archive.isDirectory()) {// already expanded
expandDir = archive;
} else {
- expandDir = new File(archive.getParentFile(), getBaseName(archive.getName()));
+ File f = pluginManager.getWorkDir();
+ expandDir = new File(f == null ? archive.getParentFile() : f, getBaseName(archive.getName()));
explode(archive, expandDir);
}
diff --git a/core/src/main/java/hudson/EnvVars.java b/core/src/main/java/hudson/EnvVars.java
index c0047b5578..5cdc672bf4 100644
--- a/core/src/main/java/hudson/EnvVars.java
+++ b/core/src/main/java/hudson/EnvVars.java
@@ -63,7 +63,7 @@ import java.util.logging.Logger;
*
*
* In Jenkins, often we need to build up "environment variable overrides"
- * on master, then to execute the process on slaves. This causes a problem
+ * on master, then to execute the process on agents. This causes a problem
* when working with variables like PATH . So to make this work,
* we introduce a special convention PATH+FOO — all entries
* that starts with PATH+ are merged and prepended to the inherited
@@ -134,7 +134,7 @@ public class EnvVars extends TreeMap {
String v = get(realKey);
if(v==null) v=value;
else {
- // we might be handling environment variables for a slave that can have different path separator
+ // we might be handling environment variables for a agent that can have different path separator
// than the master, so the following is an attempt to get it right.
// it's still more error prone that I'd like.
char ch = platform==null ? File.pathSeparatorChar : platform.pathSeparator;
@@ -421,8 +421,8 @@ public class EnvVars extends TreeMap {
* variables only when you access this from the master.
*
*
- * If you access this field from slaves, then this is the environment
- * variable of the slave agent.
+ * If you access this field from agents, then this is the environment
+ * variable of the agent agent.
*/
public static final Map masterEnvVars = initMaster();
diff --git a/core/src/main/java/hudson/ExtensionFinder.java b/core/src/main/java/hudson/ExtensionFinder.java
index 1a61b4d64a..a2af086102 100644
--- a/core/src/main/java/hudson/ExtensionFinder.java
+++ b/core/src/main/java/hudson/ExtensionFinder.java
@@ -175,7 +175,7 @@ public abstract class ExtensionFinder implements ExtensionPoint {
* from here.
*
*
- * See http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6459208 for how to force a class initialization.
+ * See https://bugs.openjdk.java.net/browse/JDK-4993813 for how to force a class initialization.
* Also see http://kohsuke.org/2010/09/01/deadlock-that-you-cant-avoid/ for how class initialization
* can results in a dead lock.
*/
@@ -668,8 +668,7 @@ public abstract class ExtensionFinder implements ExtensionPoint {
extType = ((Method)e).getReturnType();
} else
throw new AssertionError();
- // according to http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6459208
- // this appears to be the only way to force a class initialization
+ // according to JDK-4993813 this is the only way to force class initialization
Class.forName(extType.getName(),true,extType.getClassLoader());
} catch (Exception | LinkageError e) {
LOGGER.log(logLevel(item), "Failed to scout "+item.className(), e);
diff --git a/core/src/main/java/hudson/FilePath.java b/core/src/main/java/hudson/FilePath.java
index 9690c39cd0..adb28461f8 100644
--- a/core/src/main/java/hudson/FilePath.java
+++ b/core/src/main/java/hudson/FilePath.java
@@ -127,7 +127,7 @@ import org.jenkinsci.remoting.RoleSensitive;
*
*
* Unlike {@link File}, which always implies a file path on the current computer,
- * {@link FilePath} represents a file path on a specific slave or the master.
+ * {@link FilePath} represents a file path on a specific agent or the master.
*
* Despite that, {@link FilePath} can be used much like {@link File}. It exposes
* a bunch of operations (and we should add more operations as long as they are
@@ -191,19 +191,19 @@ public final class FilePath implements Serializable {
/**
* When this {@link FilePath} represents the remote path,
* this field is always non-null on master (the field represents
- * the channel to the remote slave.) When transferred to a slave via remoting,
+ * the channel to the remote agent.) When transferred to a agent via remoting,
* this field reverts back to null, since it's transient.
*
* When this {@link FilePath} represents a path on the master,
- * this field is null on master. When transferred to a slave via remoting,
+ * this field is null on master. When transferred to a agent via remoting,
* this field becomes non-null, representing the {@link Channel}
* back to the master.
*
- * This is used to determine whether we are running on the master or the slave.
+ * This is used to determine whether we are running on the master or the agent.
*/
private transient VirtualChannel channel;
- // since the platform of the slave might be different, can't use java.io.File
+ // since the platform of the agent might be different, can't use java.io.File
private final String remote;
/**
@@ -259,7 +259,7 @@ public final class FilePath implements Serializable {
return base.remote+'/'+rel.replace('\\','/');
} else {
// need this replace, see Slave.getWorkspaceFor and AbstractItem.getFullName, nested jobs on Windows
- // slaves will always have a rel containing at least one '/' character. JENKINS-13649
+ // agents will always have a rel containing at least one '/' character. JENKINS-13649
return base.remote+'\\'+rel.replace('/','\\');
}
}
@@ -802,14 +802,14 @@ public final class FilePath implements Serializable {
listener.getLogger().println(message);
if (isRemote()) {
- // First try to download from the slave machine.
+ // First try to download from the agent machine.
try {
act(new Unpack(archive));
timestamp.touch(sourceTimestamp);
return true;
} catch (IOException x) {
if (listener != null) {
- x.printStackTrace(listener.error("Failed to download " + archive + " from slave; will retry from master"));
+ x.printStackTrace(listener.error("Failed to download " + archive + " from agent; will retry from master"));
}
}
}
diff --git a/core/src/main/java/hudson/FileSystemProvisioner.java b/core/src/main/java/hudson/FileSystemProvisioner.java
index bbb98f5e9d..cd8a568869 100644
--- a/core/src/main/java/hudson/FileSystemProvisioner.java
+++ b/core/src/main/java/hudson/FileSystemProvisioner.java
@@ -51,7 +51,7 @@ import java.io.OutputStream;
* STILL A WORK IN PROGRESS. SUBJECT TO CHANGE! DO NOT EXTEND.
*
* TODO: is this per {@link Computer}? Per {@link Job}?
- * -> probably per slave.
+ * -> probably per agent.
*
*
Design Problems
*
@@ -71,7 +71,7 @@ import java.io.OutputStream;
* one more configuration option. It's especially tricky because
* during the configuration we don't know the OS type.
*
- * OTOH special slave type like the ones for network.com grid can
+ * OTOH special agent type like the ones for network.com grid can
* hide this.
*
*
@@ -80,8 +80,8 @@ import java.io.OutputStream;
*
* To recap,
*
- * - when a slave connects, we auto-detect the file system provisioner.
- * (for example, ZFS FSP would check the slave root user prop
+ * - when an agent connects, we auto-detect the file system provisioner.
+ * (for example, ZFS FSP would check the agent root user prop
* and/or attempt to "pfexec zfs create" and take over.)
*
* - the user may configure jobs for snapshot collection, along with
diff --git a/core/src/main/java/hudson/FileSystemProvisionerDescriptor.java b/core/src/main/java/hudson/FileSystemProvisionerDescriptor.java
index 4827366d36..ce0371ceec 100644
--- a/core/src/main/java/hudson/FileSystemProvisionerDescriptor.java
+++ b/core/src/main/java/hudson/FileSystemProvisionerDescriptor.java
@@ -38,9 +38,9 @@ public abstract class FileSystemProvisionerDescriptor extends Descriptor
- * Because users may modify the file system behind Hudson, and slaves may come and go when
+ * Because users may modify the file system behind Hudson, and agents may come and go when
* configuration changes happen, in general case Hudson is unable to keep track of which jobs
- * have workspaces in which slaves.
+ * have workspaces in which agents.
*
*
* So instead we rey on a garbage collection mechanism, to look at workspaces left in the file system
diff --git a/core/src/main/java/hudson/Functions.java b/core/src/main/java/hudson/Functions.java
index cef9739510..375c542341 100644
--- a/core/src/main/java/hudson/Functions.java
+++ b/core/src/main/java/hudson/Functions.java
@@ -1577,7 +1577,7 @@ public class Functions {
* Obtains the host name of the Hudson server that clients can use to talk back to.
*
* This is primarily used in slave-agent.jnlp.jelly to specify the destination
- * that the slaves talk to.
+ * that the agents talk to.
*/
public String getServerName() {
// Try to infer this from the configured root URL.
diff --git a/core/src/main/java/hudson/Launcher.java b/core/src/main/java/hudson/Launcher.java
index 5be9397699..fbdb0609c7 100644
--- a/core/src/main/java/hudson/Launcher.java
+++ b/core/src/main/java/hudson/Launcher.java
@@ -297,7 +297,7 @@ public abstract class Launcher {
*
*
* In adition to what the current process
- * is inherited (if this is going to be launched from a slave agent, that
+ * is inherited (if this is going to be launched from a agent agent, that
* becomes the "current" process), these variables will be also set.
*/
public ProcStarter envs(Map overrides) {
@@ -611,7 +611,7 @@ public abstract class Launcher {
* from the current process
* @param envVars
* Environment variable overrides. In addition to what the current process
- * is inherited (if this is going to be launched from a slave agent, that
+ * is inherited (if this is going to be launched from an agent, that
* becomes the "current" process), these variables will be also set.
*/
public abstract Channel launchChannel(String[] cmd, OutputStream out, FilePath workDir, Map envVars) throws IOException, InterruptedException;
diff --git a/core/src/main/java/hudson/PluginManager.java b/core/src/main/java/hudson/PluginManager.java
index 4e9e7f773f..798a51f9ab 100644
--- a/core/src/main/java/hudson/PluginManager.java
+++ b/core/src/main/java/hudson/PluginManager.java
@@ -159,6 +159,13 @@ public abstract class PluginManager extends AbstractModelObject implements OnMas
*/
public final File rootDir;
+ /**
+ * If non-null, the base directory for all exploded .hpi/.jpi plugins. Controlled by the system property / servlet
+ * context parameter {@literal hudson.PluginManager.workDir}.
+ */
+ @CheckForNull
+ private final File workDir;
+
/**
* @deprecated as of 1.355
* {@link PluginManager} can now live longer than {@link jenkins.model.Jenkins} instance, so
@@ -204,6 +211,11 @@ public abstract class PluginManager extends AbstractModelObject implements OnMas
this.rootDir = rootDir;
if(!rootDir.exists())
rootDir.mkdirs();
+ String workDir = System.getProperty(PluginManager.class.getName()+".workDir");
+ if (workDir == null && context != null) {
+ workDir = context.getInitParameter(PluginManager.class.getName() + ".workDir");
+ }
+ this.workDir = workDir == null ? null : new File(workDir);
strategy = createPluginStrategy();
@@ -223,6 +235,15 @@ public abstract class PluginManager extends AbstractModelObject implements OnMas
return new Api(this);
}
+ /**
+ * If non-null, the base directory for all exploded .hpi/.jpi plugins.
+ * @return the base directory for all exploded .hpi/.jpi plugins or {@code null} to leave this up to the strategy.
+ */
+ @CheckForNull
+ public File getWorkDir() {
+ return workDir;
+ }
+
/**
* Find all registered overrides (intended to allow overriding/adding views)
* @return List of extensions
diff --git a/core/src/main/java/hudson/ProxyConfiguration.java b/core/src/main/java/hudson/ProxyConfiguration.java
index 9b51990925..ee64737f95 100644
--- a/core/src/main/java/hudson/ProxyConfiguration.java
+++ b/core/src/main/java/hudson/ProxyConfiguration.java
@@ -215,7 +215,7 @@ public final class ProxyConfiguration extends AbstractDescribableImpl
* Aside from the HTTP endpoint, Jenkins runs {@link TcpSlaveAgentListener} that listens on a TCP socket.
- * Historically this was used for inbound connection from slave agents (hence the name), but over time
+ * Historically this was used for inbound connection from agents (hence the name), but over time
* it was extended and made generic, so that multiple protocols of different purposes can co-exist on the
* same socket.
*
@@ -66,7 +66,7 @@ public final class TcpSlaveAgentListener extends Thread {
* Use 0 to choose a random port.
*/
public TcpSlaveAgentListener(int port) throws IOException {
- super("TCP slave agent listener port="+port);
+ super("TCP agent listener port="+port);
try {
serverSocket = ServerSocketChannel.open();
serverSocket.socket().bind(new InetSocketAddress(port));
@@ -75,7 +75,7 @@ public final class TcpSlaveAgentListener extends Thread {
}
this.configuredPort = port;
- LOGGER.log(Level.FINE, "JNLP slave agent listener started on TCP port {0}", getPort());
+ LOGGER.log(Level.FINE, "JNLP agent listener started on TCP port {0}", getPort());
start();
}
@@ -105,7 +105,7 @@ public final class TcpSlaveAgentListener extends Thread {
}
} catch (IOException e) {
if(!shuttingDown) {
- LOGGER.log(Level.SEVERE,"Failed to accept JNLP slave agent connections",e);
+ LOGGER.log(Level.SEVERE,"Failed to accept JNLP agent connections",e);
}
}
}
@@ -134,7 +134,7 @@ public final class TcpSlaveAgentListener extends Thread {
synchronized(getClass()) {
id = iotaGen++;
}
- setName("TCP slave agent connection handler #"+id+" with "+s.getRemoteSocketAddress());
+ setName("TCP agent connection handler #"+id+" with "+s.getRemoteSocketAddress());
}
@Override
diff --git a/core/src/main/java/hudson/WebAppMain.java b/core/src/main/java/hudson/WebAppMain.java
index d3375be646..fae5864c0c 100644
--- a/core/src/main/java/hudson/WebAppMain.java
+++ b/core/src/main/java/hudson/WebAppMain.java
@@ -117,8 +117,6 @@ public class WebAppMain implements ServletContextListener {
installLogger();
- markCookieAsHttpOnly(context);
-
final FileAndDescription describedHomeDir = getHomeDir(event);
home = describedHomeDir.file.getAbsoluteFile();
home.mkdirs();
@@ -254,31 +252,6 @@ public class WebAppMain implements ServletContextListener {
}
}
- /**
- * Set the session cookie as HTTP only.
- *
- * @see discussion of this topic in OWASP
- */
- private void markCookieAsHttpOnly(ServletContext context) {
- try {
- Method m;
- try {
- m = context.getClass().getMethod("getSessionCookieConfig");
- } catch (NoSuchMethodException x) { // 3.0+
- LOGGER.log(Level.FINE, "Failed to set secure cookie flag", x);
- return;
- }
- Object sessionCookieConfig = m.invoke(context);
-
- // not exposing session cookie to JavaScript to mitigate damage caused by XSS
- Class scc = Class.forName("javax.servlet.SessionCookieConfig");
- Method setHttpOnly = scc.getMethod("setHttpOnly",boolean.class);
- setHttpOnly.invoke(sessionCookieConfig,true);
- } catch (Exception e) {
- LOGGER.log(Level.WARNING, "Failed to set HTTP-only cookie flag", e);
- }
- }
-
public void joinInit() throws InterruptedException {
initThread.join();
}
diff --git a/core/src/main/java/hudson/cli/AddJobToViewCommand.java b/core/src/main/java/hudson/cli/AddJobToViewCommand.java
index cea483785a..792ff4feaa 100644
--- a/core/src/main/java/hudson/cli/AddJobToViewCommand.java
+++ b/core/src/main/java/hudson/cli/AddJobToViewCommand.java
@@ -31,7 +31,6 @@ import hudson.model.DirectlyModifiableView;
import hudson.model.View;
import org.kohsuke.args4j.Argument;
-import org.kohsuke.args4j.CmdLineException;
/**
* @author ogondza
@@ -55,9 +54,8 @@ public class AddJobToViewCommand extends CLICommand {
protected int run() throws Exception {
view.checkPermission(View.CONFIGURE);
- if (!(view instanceof DirectlyModifiableView)) throw new CmdLineException(
- null, "'" + view.getDisplayName() + "' view can not be modified directly"
- );
+ if (!(view instanceof DirectlyModifiableView)) throw new IllegalStateException(
+ "'" + view.getDisplayName() + "' view can not be modified directly");
for (TopLevelItem job: jobs) {
((DirectlyModifiableView) view).add(job);
diff --git a/core/src/main/java/hudson/cli/BuildCommand.java b/core/src/main/java/hudson/cli/BuildCommand.java
index 5a018aeeb7..1c8a071d4e 100644
--- a/core/src/main/java/hudson/cli/BuildCommand.java
+++ b/core/src/main/java/hudson/cli/BuildCommand.java
@@ -42,6 +42,7 @@ import hudson.scm.PollingResult.Change;
import hudson.util.EditDistance;
import hudson.util.StreamTaskListener;
import org.kohsuke.args4j.Argument;
+import org.kohsuke.args4j.CmdLineException;
import org.kohsuke.args4j.Option;
import java.util.Map;
@@ -90,7 +91,7 @@ public class BuildCommand extends CLICommand {
@Option(name="-r") @Deprecated
public int retryCnt = 10;
- protected static final String BUILD_SCHEDULING_REFUSED = "Build scheduling Refused by an extension, hence not in Queue";
+ protected static final String BUILD_SCHEDULING_REFUSED = "Build scheduling Refused by an extension, hence not in Queue.";
protected int run() throws Exception {
job.checkPermission(Item.BUILD);
@@ -99,7 +100,7 @@ public class BuildCommand extends CLICommand {
if (!parameters.isEmpty()) {
ParametersDefinitionProperty pdp = job.getProperty(ParametersDefinitionProperty.class);
if (pdp==null)
- throw new AbortException(job.getFullDisplayName()+" is not parameterized but the -p option was specified");
+ throw new IllegalStateException(job.getFullDisplayName()+" is not parameterized but the -p option was specified.");
//TODO: switch to type annotations after the migration to Java 1.8
List values = new ArrayList();
@@ -108,12 +109,14 @@ public class BuildCommand extends CLICommand {
String name = e.getKey();
ParameterDefinition pd = pdp.getParameterDefinition(name);
if (pd==null) {
- throw new AbortException(String.format("\'%s\' is not a valid parameter. Did you mean %s?",
- name, EditDistance.findNearest(name, pdp.getParameterDefinitionNames())));
+ String nearest = EditDistance.findNearest(name, pdp.getParameterDefinitionNames());
+ throw new CmdLineException(null, nearest == null ?
+ String.format("'%s' is not a valid parameter.", name) :
+ String.format("'%s' is not a valid parameter. Did you mean %s?", name, nearest));
}
ParameterValue val = pd.createValue(this, Util.fixNull(e.getValue()));
if (val == null) {
- throw new AbortException(String.format("Cannot resolve the value for the parameter \'%s\'.",name));
+ throw new CmdLineException(null, String.format("Cannot resolve the value for the parameter '%s'.",name));
}
values.add(val);
}
@@ -126,7 +129,7 @@ public class BuildCommand extends CLICommand {
// not passed in use default
ParameterValue defaultValue = pd.getDefaultParameterValue();
if (defaultValue == null) {
- throw new AbortException(String.format("No default value for the parameter \'%s\'.",pd.getName()));
+ throw new CmdLineException(null, String.format("No default value for the parameter '%s'.",pd.getName()));
}
values.add(defaultValue);
}
@@ -147,16 +150,14 @@ public class BuildCommand extends CLICommand {
} else if (job.isHoldOffBuildUntilSave()){
msg = Messages.BuildCommand_CLICause_CannotBuildConfigNotSaved(job.getFullDisplayName());
}
- stderr.println(msg);
- return -1;
+ throw new IllegalStateException(msg);
}
QueueTaskFuture extends AbstractBuild> f = job.scheduleBuild2(0, new CLICause(Jenkins.getAuthentication().getName()), a);
if (wait || sync || follow) {
if (f == null) {
- stderr.println(BUILD_SCHEDULING_REFUSED);
- return -1;
+ throw new IllegalStateException(BUILD_SCHEDULING_REFUSED);
}
AbstractBuild b = f.waitForStart(); // wait for the start
stdout.println("Started "+b.getFullDisplayName());
@@ -177,7 +178,9 @@ public class BuildCommand extends CLICommand {
}
catch (FileNotFoundException e) {
if ( i == retryCnt ) {
- throw e;
+ Exception myException = new AbortException();
+ myException.initCause(e);
+ throw myException;
}
i++;
Thread.sleep(retryInterval);
@@ -193,7 +196,9 @@ public class BuildCommand extends CLICommand {
} else {
// if the CLI is aborted, try to abort the build as well
f.cancel(true);
- throw e;
+ Exception myException = new AbortException();
+ myException.initCause(e);
+ throw myException;
}
}
}
@@ -214,9 +219,9 @@ public class BuildCommand extends CLICommand {
"With the -f option, this command changes the exit code based on\n" +
"the outcome of the build (exit code 0 indicates a success)\n" +
"however, unlike -s, interrupting the command will not interrupt\n" +
- "the job (exit code 125 indicates the command was interrupted)\n" +
+ "the job (exit code 125 indicates the command was interrupted).\n" +
"With the -c option, a build will only run if there has been\n" +
- "an SCM change"
+ "an SCM change."
);
}
diff --git a/core/src/main/java/hudson/cli/CLIAction.java b/core/src/main/java/hudson/cli/CLIAction.java
index 3253fc2840..70a458a653 100644
--- a/core/src/main/java/hudson/cli/CLIAction.java
+++ b/core/src/main/java/hudson/cli/CLIAction.java
@@ -71,14 +71,14 @@ public class CLIAction implements UnprotectedRootAction, StaplerProxy {
}
public void doCommand(StaplerRequest req, StaplerResponse rsp) throws ServletException, IOException {
- final Jenkins jenkins = Jenkins.getInstance();
+ final Jenkins jenkins = Jenkins.getActiveInstance();
jenkins.checkPermission(Jenkins.READ);
// Strip trailing slash
final String commandName = req.getRestOfPath().substring(1);
CLICommand command = CLICommand.clone(commandName);
if (command == null) {
- rsp.sendError(HttpServletResponse.SC_NOT_FOUND, "No such command " + commandName);
+ rsp.sendError(HttpServletResponse.SC_NOT_FOUND, "No such command");
return;
}
@@ -112,7 +112,7 @@ public class CLIAction implements UnprotectedRootAction, StaplerProxy {
FullDuplexHttpChannel server;
if(req.getHeader("Side").equals("download")) {
- duplexChannels.put(uuid,server=new FullDuplexHttpChannel(uuid, !Jenkins.getInstance().hasPermission(Jenkins.ADMINISTER)) {
+ duplexChannels.put(uuid,server=new FullDuplexHttpChannel(uuid, !Jenkins.getActiveInstance().hasPermission(Jenkins.ADMINISTER)) {
@Override
protected void main(Channel channel) throws IOException, InterruptedException {
// capture the identity given by the transport, since this can be useful for SecurityRealm.createCliAuthenticator()
diff --git a/core/src/main/java/hudson/cli/CLICommand.java b/core/src/main/java/hudson/cli/CLICommand.java
index a40a8b5bac..2272ef64bd 100644
--- a/core/src/main/java/hudson/cli/CLICommand.java
+++ b/core/src/main/java/hudson/cli/CLICommand.java
@@ -195,7 +195,7 @@ public abstract class CLICommand implements ExtensionPoint, Cloneable {
* to an empty method.
* You would however then have to consider {@link CliAuthenticator} and {@link #getTransportAuthentication},
* so this is not really recommended.
- *
+ *
* @param args
* Arguments to the sub command. For example, if the CLI is invoked like "java -jar cli.jar foo bar zot",
* then "foo" is the sub-command and the argument list is ["bar","zot"].
@@ -209,7 +209,23 @@ public abstract class CLICommand implements ExtensionPoint, Cloneable {
* @param stderr
* Connected to the stderr of the CLI client.
* @return
- * Exit code from the command.
+ * Exit code from the CLI command execution
+ *
+ *
+ * Jenkins standard exit codes from CLI:
+ * 0 means everything went well.
+ * 1 means further unspecified exception is thrown while performing the command.
+ * 2 means CmdLineException is thrown while performing the command.
+ * 3 means IllegalArgumentException is thrown while performing the command.
+ * 4 mean IllegalStateException is thrown while performing the command.
+ * 5 means AbortException is thrown while performing the command.
+ * 6 means AccessDeniedException is thrown while performing the command.
+ * 7 means BadCredentialsException is thrown while performing the command.
+ * 8-15 are reserved for future usage
+ * 16+ mean a custom CLI exit error code (meaning defined by the CLI command itself)
+ *
+ *
+ * Note: For details - see JENKINS-32273
*/
public int main(List args, Locale locale, InputStream stdin, PrintStream stdout, PrintStream stderr) {
this.stdin = new BufferedInputStream(stdin);
@@ -220,49 +236,65 @@ public abstract class CLICommand implements ExtensionPoint, Cloneable {
CmdLineParser p = getCmdLineParser();
// add options from the authenticator
- SecurityContext sc = SecurityContextHolder.getContext();
- Authentication old = sc.getAuthentication();
-
- CliAuthenticator authenticator = Jenkins.getInstance().getSecurityRealm().createCliAuthenticator(this);
- sc.setAuthentication(getTransportAuthentication());
- new ClassParser().parse(authenticator,p);
-
+ SecurityContext sc = null;
+ Authentication old = null;
try {
+ sc = SecurityContextHolder.getContext();
+ old = sc.getAuthentication();
+
+ CliAuthenticator authenticator = Jenkins.getActiveInstance().getSecurityRealm().createCliAuthenticator(this);
+ sc.setAuthentication(getTransportAuthentication());
+ new ClassParser().parse(authenticator,p);
+
p.parseArgument(args.toArray(new String[args.size()]));
Authentication auth = authenticator.authenticate();
if (auth==Jenkins.ANONYMOUS)
auth = loadStoredAuthentication();
sc.setAuthentication(auth); // run the CLI with the right credential
if (!(this instanceof LoginCommand || this instanceof HelpCommand))
- Jenkins.getInstance().checkPermission(Jenkins.READ);
+ Jenkins.getActiveInstance().checkPermission(Jenkins.READ);
return run();
} catch (CmdLineException e) {
- stderr.println(e.getMessage());
+ stderr.println("");
+ stderr.println("ERROR: " + e.getMessage());
printUsage(stderr, p);
- return -1;
- } catch (AccessDeniedException e) {
- stderr.println(e.getMessage());
- return -1;
+ return 2;
+ } catch (IllegalStateException e) {
+ stderr.println("");
+ stderr.println("ERROR: " + e.getMessage());
+ return 4;
+ } catch (IllegalArgumentException e) {
+ stderr.println("");
+ stderr.println("ERROR: " + e.getMessage());
+ return 3;
} catch (AbortException e) {
// signals an error without stack trace
- stderr.println(e.getMessage());
- return -1;
+ stderr.println("");
+ stderr.println("ERROR: " + e.getMessage());
+ return 5;
+ } catch (AccessDeniedException e) {
+ stderr.println("");
+ stderr.println("ERROR: " + e.getMessage());
+ return 6;
} catch (BadCredentialsException e) {
// to the caller, we can't reveal whether the user didn't exist or the password didn't match.
// do that to the server log instead
String id = UUID.randomUUID().toString();
- LOGGER.log(Level.INFO, "CLI login attempt failed: "+id, e);
- stderr.println("Bad Credentials. Search the server log for "+id+" for more details.");
- return -1;
- } catch (Exception e) {
- final String errorMsg = String.format("Unexpected exception occurred while performing %s command!",
+ LOGGER.log(Level.INFO, "CLI login attempt failed: " + id, e);
+ stderr.println("");
+ stderr.println("ERROR: Bad Credentials. Search the server log for " + id + " for more details.");
+ return 7;
+ } catch (Throwable e) {
+ final String errorMsg = String.format("Unexpected exception occurred while performing %s command.",
getName());
- stderr.println(errorMsg);
+ stderr.println("");
+ stderr.println("ERROR: " + errorMsg);
LOGGER.log(Level.WARNING, errorMsg, e);
e.printStackTrace(stderr);
- return -1;
+ return 1;
} finally {
- sc.setAuthentication(old); // restore
+ if(sc != null)
+ sc.setAuthentication(old); // restore
}
}
@@ -351,13 +383,22 @@ public abstract class CLICommand implements ExtensionPoint, Cloneable {
* To execute CLI method from outside, use {@link #main(List, Locale, InputStream, PrintStream, PrintStream)}
*
* @return
- * 0 to indicate a success, otherwise an error code.
- * @throws AbortException
- * If the processing should be aborted. Hudson will report the error message
- * without stack trace, and then exits this command.
+ * 0 to indicate a success, otherwise a custom error code.
+ * Error codes 1-15 shouldn;t be used in {@link #run()} as a custom error code.
* @throws Exception
- * All the other exceptions cause the stack trace to be dumped, and then
- * the command exits with an error code.
+ * If a further unspecified exception is thrown; means: Unknown and/or unexpected issue occurred
+ * @throws CmdLineException
+ * If a wrong parameter specified, input value can't be decoded etc.
+ * @throws IllegalArgumentException
+ * If the execution can't continue due to wrong input parameter (job doesn't exist etc.)
+ * @throws IllegalStateException
+ * If the execution can't continue due to an incorect state of Jenkins, job, build etc.
+ * @throws AbortException
+ * If the execution can't continue due to an other (rare, but foreseeable) issue
+ * @throws AccessDeniedException
+ * If the caller doesn't have sufficent rights for requested action
+ * @throws BadCredentialsException
+ * If bad credentials were provided to CLI
*/
protected abstract int run() throws Exception;
@@ -494,7 +535,7 @@ public abstract class CLICommand implements ExtensionPoint, Cloneable {
*/
protected void registerOptionHandlers() {
try {
- for (Class c : Index.list(OptionHandlerExtension.class, Jenkins.getInstance().pluginManager.uberClassLoader,Class.class)) {
+ for (Class c : Index.list(OptionHandlerExtension.class, Jenkins.getActiveInstance().pluginManager.uberClassLoader,Class.class)) {
Type t = Types.getBaseClass(c, OptionHandler.class);
CmdLineParser.registerHandler(Types.erasure(Types.getTypeArgument(t,0)), c);
}
@@ -546,7 +587,7 @@ public abstract class CLICommand implements ExtensionPoint, Cloneable {
static {
// register option handlers that are defined
ClassLoaders cls = new ClassLoaders();
- Jenkins j = Jenkins.getInstance();
+ Jenkins j = Jenkins.getActiveInstance();
if (j!=null) {// only when running on the master
cls.put(j.getPluginManager().uberClassLoader);
diff --git a/core/src/main/java/hudson/cli/CliProtocol.java b/core/src/main/java/hudson/cli/CliProtocol.java
index eecb4c5faf..99cdd172d1 100644
--- a/core/src/main/java/hudson/cli/CliProtocol.java
+++ b/core/src/main/java/hudson/cli/CliProtocol.java
@@ -77,7 +77,7 @@ public class CliProtocol extends AgentProtocol {
Channel channel = cb
.withMode(Mode.BINARY)
.withRestricted(true)
- .withBaseLoader(Jenkins.getInstance().pluginManager.uberClassLoader)
+ .withBaseLoader(Jenkins.getActiveInstance().pluginManager.uberClassLoader)
.build(new BufferedInputStream(c.in), new BufferedOutputStream(c.out));
channel.setProperty(CliEntryPoint.class.getName(),new CliManagerImpl(channel));
diff --git a/core/src/main/java/hudson/cli/CliProtocol2.java b/core/src/main/java/hudson/cli/CliProtocol2.java
index 0f2757df78..1be9fff35b 100644
--- a/core/src/main/java/hudson/cli/CliProtocol2.java
+++ b/core/src/main/java/hudson/cli/CliProtocol2.java
@@ -60,7 +60,7 @@ public class CliProtocol2 extends CliProtocol {
try {
// HACK: TODO: move the transport support into modules
- Class> cls = Jenkins.getInstance().pluginManager.uberClassLoader.loadClass("org.jenkinsci.main.modules.instance_identity.InstanceIdentity");
+ Class> cls = Jenkins.getActiveInstance().pluginManager.uberClassLoader.loadClass("org.jenkinsci.main.modules.instance_identity.InstanceIdentity");
Object iid = cls.getDeclaredMethod("get").invoke(null);
PrivateKey instanceId = (PrivateKey)cls.getDeclaredMethod("getPrivate").invoke(iid);
diff --git a/core/src/main/java/hudson/cli/ClientAuthenticationCache.java b/core/src/main/java/hudson/cli/ClientAuthenticationCache.java
index b00b816d37..1f33b83376 100644
--- a/core/src/main/java/hudson/cli/ClientAuthenticationCache.java
+++ b/core/src/main/java/hudson/cli/ClientAuthenticationCache.java
@@ -66,7 +66,7 @@ public class ClientAuthenticationCache implements Serializable {
* @return {@link jenkins.model.Jenkins#ANONYMOUS} if no such credential is found, or if the stored credential is invalid.
*/
public Authentication get() {
- Jenkins h = Jenkins.getInstance();
+ Jenkins h = Jenkins.getActiveInstance();
Secret userName = Secret.decrypt(props.getProperty(getPropertyKey()));
if (userName==null) return Jenkins.ANONYMOUS; // failed to decrypt
try {
@@ -83,7 +83,7 @@ public class ClientAuthenticationCache implements Serializable {
* Computes the key that identifies this Hudson among other Hudsons that the user has a credential for.
*/
private String getPropertyKey() {
- String url = Jenkins.getInstance().getRootUrl();
+ String url = Jenkins.getActiveInstance().getRootUrl();
if (url!=null) return url;
return Secret.fromString("key").toString();
}
@@ -92,7 +92,7 @@ public class ClientAuthenticationCache implements Serializable {
* Persists the specified authentication.
*/
public void set(Authentication a) throws IOException, InterruptedException {
- Jenkins h = Jenkins.getInstance();
+ Jenkins h = Jenkins.getActiveInstance();
// make sure that this security realm is capable of retrieving the authentication by name,
// as it's not required.
diff --git a/core/src/main/java/hudson/cli/CommandDuringBuild.java b/core/src/main/java/hudson/cli/CommandDuringBuild.java
index 3834238a41..59f5329faa 100644
--- a/core/src/main/java/hudson/cli/CommandDuringBuild.java
+++ b/core/src/main/java/hudson/cli/CommandDuringBuild.java
@@ -45,7 +45,7 @@ public abstract class CommandDuringBuild extends CLICommand {
protected Run getCurrentlyBuilding() throws CmdLineException {
Run r = optCurrentlyBuilding();
if (r==null)
- throw new CmdLineException("This CLI command works only when invoked from inside a build");
+ throw new IllegalStateException("This CLI command works only when invoked from inside a build");
return r;
}
@@ -55,29 +55,32 @@ public abstract class CommandDuringBuild extends CLICommand {
protected Run optCurrentlyBuilding() throws CmdLineException {
try {
CLICommand c = CLICommand.getCurrent();
- if (c==null) throw new IllegalStateException("Not executing a CLI command");
+ if (c==null)
+ throw new IllegalStateException("Not executing a CLI command");
String[] envs = c.checkChannel().call(new GetCharacteristicEnvironmentVariables());
if (envs[0]==null || envs[1]==null)
return null;
- Job j = Jenkins.getInstance().getItemByFullName(envs[0],Job.class);
- if (j==null) throw new CmdLineException("No such job: "+envs[0]);
+ Job j = Jenkins.getActiveInstance().getItemByFullName(envs[0],Job.class);
+ if (j==null)
+ throw new IllegalArgumentException("No such job: "+envs[0]);
try {
Run r = j.getBuildByNumber(Integer.parseInt(envs[1]));
- if (r==null) throw new CmdLineException("No such build #"+envs[1]+" in "+envs[0]);
+ if (r==null)
+ throw new IllegalArgumentException("No such build #"+envs[1]+" in "+envs[0]);
if (!r.isBuilding()) {
- throw new CmdLineException(r + " is not currently being built");
+ throw new IllegalStateException(r + " is not currently being built");
}
return r;
} catch (NumberFormatException e) {
- throw new CmdLineException("Invalid build number: "+envs[1]);
+ throw new IllegalArgumentException("Invalid build number: "+envs[1]);
}
} catch (IOException e) {
- throw new CmdLineException("Failed to identify the build being executed",e);
+ throw new IllegalArgumentException("Failed to identify the build being executed",e);
} catch (InterruptedException e) {
- throw new CmdLineException("Failed to identify the build being executed",e);
+ throw new IllegalArgumentException("Failed to identify the build being executed",e);
}
}
diff --git a/core/src/main/java/hudson/cli/ConsoleCommand.java b/core/src/main/java/hudson/cli/ConsoleCommand.java
index 5da97b0947..92fd0e74c6 100644
--- a/core/src/main/java/hudson/cli/ConsoleCommand.java
+++ b/core/src/main/java/hudson/cli/ConsoleCommand.java
@@ -50,17 +50,20 @@ public class ConsoleCommand extends CLICommand {
int n = Integer.parseInt(build);
run = job.getBuildByNumber(n);
if (run==null)
- throw new CmdLineException("No such build #"+n);
+ throw new IllegalArgumentException("No such build #"+n);
} catch (NumberFormatException e) {
// maybe a permalink?
Permalink p = job.getPermalinks().get(build);
if (p!=null) {
run = (AbstractBuild)p.resolve(job);
if (run==null)
- throw new CmdLineException("Permalink "+build+" produced no build");
+ throw new IllegalStateException("Permalink "+build+" produced no build");
} else {
Permalink nearest = job.getPermalinks().findNearest(build);
- throw new CmdLineException(String.format("Not sure what you meant by \"%s\". Did you mean \"%s\"?", build, nearest.getId()));
+ throw new IllegalArgumentException(nearest == null ?
+ String.format("Not sure what you meant by \"%s\".", build) :
+ String.format("Not sure what you meant by \"%s\". Did you mean \"%s\"?",
+ build, nearest.getId()));
}
}
diff --git a/core/src/main/java/hudson/cli/CopyJobCommand.java b/core/src/main/java/hudson/cli/CopyJobCommand.java
index 7d83fa99a0..3eb8049c1f 100644
--- a/core/src/main/java/hudson/cli/CopyJobCommand.java
+++ b/core/src/main/java/hudson/cli/CopyJobCommand.java
@@ -50,11 +50,10 @@ public class CopyJobCommand extends CLICommand {
public String dst;
protected int run() throws Exception {
- Jenkins jenkins = Jenkins.getInstance();
+ Jenkins jenkins = Jenkins.getActiveInstance();
if (jenkins.getItemByFullName(dst)!=null) {
- stderr.println("Job '"+dst+"' already exists");
- return -1;
+ throw new IllegalStateException("Job '"+dst+"' already exists");
}
ModifiableTopLevelItemGroup ig = jenkins;
@@ -69,7 +68,7 @@ public class CopyJobCommand extends CLICommand {
if (item instanceof ModifiableTopLevelItemGroup) {
ig = (ModifiableTopLevelItemGroup) item;
} else {
- throw new IllegalArgumentException("Can't create job from CLI in " + group);
+ throw new IllegalStateException("Can't create job from CLI in " + group);
}
dst = dst.substring(i + 1);
}
diff --git a/core/src/main/java/hudson/cli/CreateJobCommand.java b/core/src/main/java/hudson/cli/CreateJobCommand.java
index 1e1b807c5e..0f0108c361 100644
--- a/core/src/main/java/hudson/cli/CreateJobCommand.java
+++ b/core/src/main/java/hudson/cli/CreateJobCommand.java
@@ -45,11 +45,10 @@ public class CreateJobCommand extends CLICommand {
public String name;
protected int run() throws Exception {
- Jenkins h = Jenkins.getInstance();
+ Jenkins h = Jenkins.getActiveInstance();
if (h.getItemByFullName(name)!=null) {
- stderr.println("Job '"+name+"' already exists");
- return -1;
+ throw new IllegalStateException("Job '"+name+"' already exists");
}
ModifiableTopLevelItemGroup ig = h;
@@ -64,7 +63,7 @@ public class CreateJobCommand extends CLICommand {
if (item instanceof ModifiableTopLevelItemGroup) {
ig = (ModifiableTopLevelItemGroup) item;
} else {
- throw new IllegalArgumentException("Can't create job from CLI in " + group);
+ throw new IllegalStateException("Can't create job from CLI in " + group);
}
name = name.substring(i + 1);
}
diff --git a/core/src/main/java/hudson/cli/CreateNodeCommand.java b/core/src/main/java/hudson/cli/CreateNodeCommand.java
index b7ccac632f..6a7f6dee76 100644
--- a/core/src/main/java/hudson/cli/CreateNodeCommand.java
+++ b/core/src/main/java/hudson/cli/CreateNodeCommand.java
@@ -53,7 +53,7 @@ public class CreateNodeCommand extends CLICommand {
@Override
protected int run() throws Exception {
- final Jenkins jenkins = Jenkins.getInstance();
+ final Jenkins jenkins = Jenkins.getActiveInstance();
jenkins.checkPermission(Computer.CREATE);
final Node newNode = (Node) Jenkins.XSTREAM2.fromXML(stdin);
@@ -70,10 +70,7 @@ public class CreateNodeCommand extends CLICommand {
}
if (jenkins.getNode(newNode.getNodeName()) != null) {
-
- throw new CmdLineException(
- null, "Node '" + newNode.getNodeName() + "' already exists"
- );
+ throw new IllegalStateException("Node '" + newNode.getNodeName() + "' already exists");
}
jenkins.addNode(newNode);
diff --git a/core/src/main/java/hudson/cli/CreateViewCommand.java b/core/src/main/java/hudson/cli/CreateViewCommand.java
index 73fd374b85..d22a0b424f 100644
--- a/core/src/main/java/hudson/cli/CreateViewCommand.java
+++ b/core/src/main/java/hudson/cli/CreateViewCommand.java
@@ -49,7 +49,7 @@ public class CreateViewCommand extends CLICommand {
@Override
protected int run() throws Exception {
- final Jenkins jenkins = Jenkins.getInstance();
+ final Jenkins jenkins = Jenkins.getActiveInstance();
jenkins.checkPermission(View.CREATE);
View newView;
@@ -57,16 +57,12 @@ public class CreateViewCommand extends CLICommand {
newView = View.createViewFromXML(viewName, stdin);
} catch (Failure ex) {
-
- stderr.format("Invalid view name: %s\n", ex.getMessage());
- return -1;
+ throw new IllegalArgumentException("Invalid view name: " + ex.getMessage());
}
final String newName = newView.getViewName();
if (jenkins.getView(newName) != null) {
-
- stderr.format("View '%s' already exists\n", newName);
- return -1;
+ throw new IllegalStateException("View '" + newName + "' already exists");
}
jenkins.addView(newView);
diff --git a/core/src/main/java/hudson/cli/DeleteJobCommand.java b/core/src/main/java/hudson/cli/DeleteJobCommand.java
index 361d889bcc..127ec43f6c 100644
--- a/core/src/main/java/hudson/cli/DeleteJobCommand.java
+++ b/core/src/main/java/hudson/cli/DeleteJobCommand.java
@@ -23,6 +23,7 @@
*/
package hudson.cli;
+import hudson.AbortException;
import hudson.Extension;
import hudson.model.AbstractItem;
import jenkins.model.Jenkins;
@@ -42,8 +43,6 @@ public class DeleteJobCommand extends CLICommand {
@Argument(usage="Name of the job(s) to delete", required=true, multiValued=true)
private List jobs;
- private static final Logger LOGGER = Logger.getLogger(DeleteJobCommand.class.getName());
-
@Override
public String getShortDescription() {
@@ -54,12 +53,7 @@ public class DeleteJobCommand extends CLICommand {
protected int run() throws Exception {
boolean errorOccurred = false;
- final Jenkins jenkins = Jenkins.getInstance();
-
- if (jenkins == null) {
- stderr.println("The Jenkins instance has not been started, or was already shut down!");
- return -1;
- }
+ final Jenkins jenkins = Jenkins.getActiveInstance();
final HashSet hs = new HashSet();
hs.addAll(jobs);
@@ -71,31 +65,26 @@ public class DeleteJobCommand extends CLICommand {
job = (AbstractItem) jenkins.getItemByFullName(job_s);
if(job == null) {
- stderr.format("No such job '%s'\n", job_s);
- errorOccurred = true;
- continue;
- }
-
- try {
- job.checkPermission(AbstractItem.DELETE);
- } catch (Exception e) {
- stderr.println(e.getMessage());
- errorOccurred = true;
- continue;
+ throw new IllegalArgumentException("No such job '" + job_s + "'");
}
+ job.checkPermission(AbstractItem.DELETE);
job.delete();
} catch (Exception e) {
- final String errorMsg = String.format("Unexpected exception occurred during deletion of job '%s': %s",
- job == null ? "(null)" : job.getFullName(),
- e.getMessage());
+ if(hs.size() == 1) {
+ throw e;
+ }
+
+ final String errorMsg = String.format(job_s + ": " + e.getMessage());
stderr.println(errorMsg);
- LOGGER.warning(errorMsg);
errorOccurred = true;
- //noinspection UnnecessaryContinue
continue;
}
}
- return errorOccurred ? -1 : 0;
+
+ if (errorOccurred) {
+ throw new AbortException("Error occured while performing this command, see previous stderr output.");
+ }
+ return 0;
}
}
diff --git a/core/src/main/java/hudson/cli/DeleteNodeCommand.java b/core/src/main/java/hudson/cli/DeleteNodeCommand.java
index 4d48e2b78f..5fc70fc764 100644
--- a/core/src/main/java/hudson/cli/DeleteNodeCommand.java
+++ b/core/src/main/java/hudson/cli/DeleteNodeCommand.java
@@ -23,9 +23,9 @@
*/
package hudson.cli;
+import hudson.AbortException;
import hudson.Extension;
import hudson.model.Node;
-import org.acegisecurity.AccessDeniedException;
import jenkins.model.Jenkins;
import org.kohsuke.args4j.Argument;
@@ -43,8 +43,6 @@ public class DeleteNodeCommand extends CLICommand {
@Argument(usage="Nodes name to delete", required=true, multiValued=true)
private List nodes;
- private static final Logger LOGGER = Logger.getLogger(DeleteNodeCommand.class.getName());
-
@Override
public String getShortDescription() {
@@ -55,12 +53,7 @@ public class DeleteNodeCommand extends CLICommand {
protected int run() throws Exception {
boolean errorOccurred = false;
- final Jenkins jenkins = Jenkins.getInstance();
-
- if (jenkins == null) {
- stderr.println("The Jenkins instance has not been started, or was already shut down!");
- return -1;
- }
+ final Jenkins jenkins = Jenkins.getActiveInstance();
final HashSet hs = new HashSet();
hs.addAll(nodes);
@@ -71,29 +64,26 @@ public class DeleteNodeCommand extends CLICommand {
try {
node = jenkins.getNode(node_s);
- if(node == null) {
- stderr.format("No such node '%s'\n", node_s);
- errorOccurred = true;
- continue;
+ if (node == null) {
+ throw new IllegalArgumentException("No such node '" + node_s + "'");
}
node.toComputer().doDoDelete();
- } catch (AccessDeniedException e) {
- stderr.println(e.getMessage());
- errorOccurred = true;
- //noinspection UnnecessaryContinue
- continue;
} catch (Exception e) {
- final String errorMsg = String.format("Unexpected exception occurred during deletion of node '%s': %s",
- node == null ? "(null)" : node.toComputer().getName(),
- e.getMessage());
+ if(hs.size() == 1) {
+ throw e;
+ }
+
+ final String errorMsg = String.format(node_s + ": " + e.getMessage());
stderr.println(errorMsg);
- LOGGER.warning(errorMsg);
errorOccurred = true;
- //noinspection UnnecessaryContinue
continue;
}
}
- return errorOccurred ? -1 : 0;
+
+ if (errorOccurred) {
+ throw new AbortException("Error occured while performing this command, see previous stderr output.");
+ }
+ return 0;
}
}
diff --git a/core/src/main/java/hudson/cli/DeleteViewCommand.java b/core/src/main/java/hudson/cli/DeleteViewCommand.java
index 4c86edeb70..900e9cdc91 100644
--- a/core/src/main/java/hudson/cli/DeleteViewCommand.java
+++ b/core/src/main/java/hudson/cli/DeleteViewCommand.java
@@ -23,6 +23,7 @@
*/
package hudson.cli;
+import hudson.AbortException;
import hudson.Extension;
import hudson.cli.handlers.ViewOptionHandler;
import hudson.model.ViewGroup;
@@ -44,8 +45,6 @@ public class DeleteViewCommand extends CLICommand {
@Argument(usage="View names to delete", required=true, multiValued=true)
private List views;
- private static final Logger LOGGER = Logger.getLogger(DeleteViewCommand.class.getName());
-
@Override
public String getShortDescription() {
@@ -67,42 +66,37 @@ public class DeleteViewCommand extends CLICommand {
View view = null;
try {
- try {
- view = voh.getView(view_s);
- if (view == null) {
- stderr.println("user is missing the View/Read permission");
- errorOccurred = true;
- continue;
- }
- view.checkPermission(View.DELETE);
- } catch (Exception e) {
- stderr.println(e.getMessage());
- errorOccurred = true;
- continue;
+ view = voh.getView(view_s);
+
+ if (view == null) {
+ throw new IllegalArgumentException("View name is empty");
}
+ view.checkPermission(View.DELETE);
+
ViewGroup group = view.getOwner();
if (!group.canDelete(view)) {
- stderr.format("%s does not allow to delete '%s' view\n",
+ throw new IllegalStateException(String.format("%s does not allow to delete '%s' view",
group.getDisplayName(),
- view.getViewName()
- );
- errorOccurred = true;
- continue;
+ view.getViewName()));
}
group.deleteView(view);
} catch (Exception e) {
- final String errorMsg = String.format("Unexpected exception occurred during deletion of view '%s': %s",
- view == null ? "(null)" : view.getViewName(),
- e.getMessage());
+ if(hs.size() == 1) {
+ throw e;
+ }
+
+ final String errorMsg = String.format(view_s + ": " + e.getMessage());
stderr.println(errorMsg);
- LOGGER.warning(errorMsg);
errorOccurred = true;
- //noinspection UnnecessaryContinue
continue;
}
}
- return errorOccurred ? -1 : 0;
+
+ if (errorOccurred) {
+ throw new AbortException("Error occured while performing this command, see previous stderr output.");
+ }
+ return 0;
}
}
diff --git a/core/src/main/java/hudson/cli/GroovyCommand.java b/core/src/main/java/hudson/cli/GroovyCommand.java
index a77f41fd92..144c2dfe0c 100644
--- a/core/src/main/java/hudson/cli/GroovyCommand.java
+++ b/core/src/main/java/hudson/cli/GroovyCommand.java
@@ -63,7 +63,7 @@ public class GroovyCommand extends CLICommand {
protected int run() throws Exception {
// this allows the caller to manipulate the JVM state, so require the execute script privilege.
- Jenkins.getInstance().checkPermission(Jenkins.RUN_SCRIPTS);
+ Jenkins.getActiveInstance().checkPermission(Jenkins.RUN_SCRIPTS);
Binding binding = new Binding();
binding.setProperty("out",new PrintWriter(stdout,true));
@@ -73,7 +73,7 @@ public class GroovyCommand extends CLICommand {
binding.setProperty("channel",channel);
String j = getClientEnvironmentVariable("JOB_NAME");
if (j!=null) {
- Item job = Jenkins.getInstance().getItemByFullName(j);
+ Item job = Jenkins.getActiveInstance().getItemByFullName(j);
binding.setProperty("currentJob", job);
String b = getClientEnvironmentVariable("BUILD_NUMBER");
if (b!=null && job instanceof AbstractProject) {
@@ -82,7 +82,7 @@ public class GroovyCommand extends CLICommand {
}
}
- GroovyShell groovy = new GroovyShell(Jenkins.getInstance().getPluginManager().uberClassLoader, binding);
+ GroovyShell groovy = new GroovyShell(Jenkins.getActiveInstance().getPluginManager().uberClassLoader, binding);
groovy.run(loadScript(),"RemoteClass",remaining.toArray(new String[remaining.size()]));
return 0;
}
diff --git a/core/src/main/java/hudson/cli/GroovyshCommand.java b/core/src/main/java/hudson/cli/GroovyshCommand.java
index 48babcb90d..6299c60576 100644
--- a/core/src/main/java/hudson/cli/GroovyshCommand.java
+++ b/core/src/main/java/hudson/cli/GroovyshCommand.java
@@ -61,7 +61,7 @@ public class GroovyshCommand extends CLICommand {
@Override
protected int run() {
// this allows the caller to manipulate the JVM state, so require the admin privilege.
- Jenkins.getInstance().checkPermission(Jenkins.RUN_SCRIPTS);
+ Jenkins.getActiveInstance().checkPermission(Jenkins.RUN_SCRIPTS);
// this being remote means no jline capability is available
System.setProperty("jline.terminal", UnsupportedTerminal.class.getName());
@@ -78,12 +78,12 @@ public class GroovyshCommand extends CLICommand {
Binding binding = new Binding();
// redirect "println" to the CLI
binding.setProperty("out", new PrintWriter(stdout,true));
- binding.setProperty("hudson", Jenkins.getInstance()); // backward compatibility
- binding.setProperty("jenkins", Jenkins.getInstance());
+ binding.setProperty("hudson", Jenkins.getActiveInstance()); // backward compatibility
+ binding.setProperty("jenkins", Jenkins.getActiveInstance());
IO io = new IO(new BufferedInputStream(stdin),stdout,stderr);
- final ClassLoader cl = Jenkins.getInstance().pluginManager.uberClassLoader;
+ final ClassLoader cl = Jenkins.getActiveInstance().pluginManager.uberClassLoader;
Closure registrar = new Closure(null, null) {
private static final long serialVersionUID = 1L;
diff --git a/core/src/main/java/hudson/cli/HelpCommand.java b/core/src/main/java/hudson/cli/HelpCommand.java
index bebb39dfcd..295e6e0e8e 100644
--- a/core/src/main/java/hudson/cli/HelpCommand.java
+++ b/core/src/main/java/hudson/cli/HelpCommand.java
@@ -23,12 +23,14 @@
*/
package hudson.cli;
+import hudson.AbortException;
import hudson.Extension;
import jenkins.model.Jenkins;
import java.util.Map;
import java.util.TreeMap;
+import org.acegisecurity.AccessDeniedException;
import org.kohsuke.args4j.Argument;
/**
@@ -48,11 +50,10 @@ public class HelpCommand extends CLICommand {
}
@Override
- protected int run() {
- if (!Jenkins.getInstance().hasPermission(Jenkins.READ)) {
- stderr.println("You must authenticate to access this Jenkins.\n"
+ protected int run() throws Exception {
+ if (!Jenkins.getActiveInstance().hasPermission(Jenkins.READ)) {
+ throw new AccessDeniedException("You must authenticate to access this Jenkins.\n"
+ "Use --username/--password/--password-file parameters or login command.");
- return -1;
}
if (command != null)
@@ -76,12 +77,11 @@ public class HelpCommand extends CLICommand {
return 0;
}
- private int showCommandDetails() {
+ private int showCommandDetails() throws Exception {
CLICommand command = CLICommand.clone(this.command);
if (command == null) {
- stderr.format("No such command %s. Awailable commands are: ", this.command);
showAllCommands();
- return -1;
+ throw new AbortException(String.format("No such command %s. Available commands are above. ", this.command));
}
command.printUsage(stderr, command.getCmdLineParser());
diff --git a/core/src/main/java/hudson/cli/InstallPluginCommand.java b/core/src/main/java/hudson/cli/InstallPluginCommand.java
index 1fd23d81ac..21484e05bf 100644
--- a/core/src/main/java/hudson/cli/InstallPluginCommand.java
+++ b/core/src/main/java/hudson/cli/InstallPluginCommand.java
@@ -23,6 +23,7 @@
*/
package hudson.cli;
+import hudson.AbortException;
import hudson.Extension;
import hudson.FilePath;
import hudson.PluginManager;
@@ -57,20 +58,20 @@ public class InstallPluginCommand extends CLICommand {
@Argument(metaVar="SOURCE",required=true,usage="If this points to a local file, that file will be installed. " +
"If this is an URL, Jenkins downloads the URL and installs that as a plugin." +
"Otherwise the name is assumed to be the short name of the plugin in the existing update center (like \"findbugs\")," +
- "and the plugin will be installed from the update center")
+ "and the plugin will be installed from the update center.")
public List sources = new ArrayList();
- @Option(name="-name",usage="If specified, the plugin will be installed as this short name (whereas normally the name is inferred from the source name automatically.)")
+ @Option(name="-name",usage="If specified, the plugin will be installed as this short name (whereas normally the name is inferred from the source name automatically).")
public String name;
- @Option(name="-restart",usage="Restart Jenkins upon successful installation")
+ @Option(name="-restart",usage="Restart Jenkins upon successful installation.")
public boolean restart;
@Option(name="-deploy",usage="Deploy plugins right away without postponing them until the reboot.")
public boolean dynamicLoad;
protected int run() throws Exception {
- Jenkins h = Jenkins.getInstance();
+ Jenkins h = Jenkins.getActiveInstance();
h.checkPermission(PluginManager.UPLOAD_PLUGINS);
PluginManager pm = h.getPluginManager();
@@ -113,8 +114,11 @@ public class InstallPluginCommand extends CLICommand {
if (p!=null) {
stdout.println(Messages.InstallPluginCommand_InstallingFromUpdateCenter(source));
Throwable e = p.deploy(dynamicLoad).get().getError();
- if (e!=null)
- throw new IOException("Failed to install plugin "+source,e);
+ if (e!=null) {
+ AbortException myException = new AbortException("Failed to install plugin " + source);
+ myException.initCause(e);
+ throw myException;
+ }
continue;
}
@@ -137,7 +141,7 @@ public class InstallPluginCommand extends CLICommand {
}
}
- return 1;
+ throw new AbortException("Error occurred, see previous output.");
}
if (restart)
@@ -150,6 +154,6 @@ public class InstallPluginCommand extends CLICommand {
}
private File getTargetFile() {
- return new File(Jenkins.getInstance().getPluginManager().rootDir,name+".jpi");
+ return new File(Jenkins.getActiveInstance().getPluginManager().rootDir,name+".jpi");
}
}
diff --git a/core/src/main/java/hudson/cli/InstallToolCommand.java b/core/src/main/java/hudson/cli/InstallToolCommand.java
index 7e0c37ac28..c387241f5a 100644
--- a/core/src/main/java/hudson/cli/InstallToolCommand.java
+++ b/core/src/main/java/hudson/cli/InstallToolCommand.java
@@ -62,18 +62,18 @@ public class InstallToolCommand extends CLICommand {
}
protected int run() throws Exception {
- Jenkins h = Jenkins.getInstance();
+ Jenkins h = Jenkins.getActiveInstance();
h.checkPermission(Jenkins.READ);
// where is this build running?
BuildIDs id = checkChannel().call(new BuildIDs());
if (!id.isComplete())
- throw new AbortException("This command can be only invoked from a build executing inside Hudson");
+ throw new IllegalStateException("This command can be only invoked from a build executing inside Hudson");
- AbstractProject p = Jenkins.getInstance().getItemByFullName(id.job, AbstractProject.class);
+ AbstractProject p = h.getItemByFullName(id.job, AbstractProject.class);
if (p==null)
- throw new AbortException("No such job found: "+id.job);
+ throw new IllegalStateException("No such job found: "+id.job);
p.checkPermission(Item.CONFIGURE);
List toolTypes = new ArrayList();
@@ -101,9 +101,9 @@ public class InstallToolCommand extends CLICommand {
private int error(List candidates, String given, String noun) throws AbortException {
if (given ==null)
- throw new AbortException("No tool "+ noun +" was specified. Valid values are "+candidates.toString());
+ throw new IllegalArgumentException("No tool "+ noun +" was specified. Valid values are "+candidates.toString());
else
- throw new AbortException("Unrecognized tool "+noun+". Perhaps you meant '"+ EditDistance.findNearest(given,candidates)+"'?");
+ throw new IllegalArgumentException("Unrecognized tool "+noun+". Perhaps you meant '"+ EditDistance.findNearest(given,candidates)+"'?");
}
/**
@@ -113,15 +113,15 @@ public class InstallToolCommand extends CLICommand {
Run b = p.getBuildByNumber(Integer.parseInt(id.number));
if (b==null)
- throw new AbortException("No such build: "+id.number);
+ throw new IllegalStateException("No such build: "+id.number);
Executor exec = b.getExecutor();
if (exec==null)
- throw new AbortException(b.getFullDisplayName()+" is not building");
+ throw new IllegalStateException(b.getFullDisplayName()+" is not building");
Node node = exec.getOwner().getNode();
if (node == null) {
- throw new AbortException("The node " + exec.getOwner().getDisplayName() + " has been deleted");
+ throw new IllegalStateException("The node " + exec.getOwner().getDisplayName() + " has been deleted");
}
t = t.translate(node, EnvVars.getRemote(checkChannel()), new StreamTaskListener(stderr));
diff --git a/core/src/main/java/hudson/cli/ListJobsCommand.java b/core/src/main/java/hudson/cli/ListJobsCommand.java
index 97ea8d2967..45b9661e28 100644
--- a/core/src/main/java/hudson/cli/ListJobsCommand.java
+++ b/core/src/main/java/hudson/cli/ListJobsCommand.java
@@ -50,7 +50,7 @@ public class ListJobsCommand extends CLICommand {
public String name;
protected int run() throws Exception {
- Jenkins h = Jenkins.getInstance();
+ Jenkins h = Jenkins.getActiveInstance();
final Collection jobs;
// If name is given retrieve jobs for the given view.
@@ -70,8 +70,7 @@ public class ListJobsCommand extends CLICommand {
}
// No view and no item group with the given name found.
else {
- stderr.println("No view or item group with the given name found");
- return -1;
+ throw new IllegalArgumentException("No view or item group with the given name '" + name + "' found.");
}
}
}
diff --git a/core/src/main/java/hudson/cli/ListPluginsCommand.java b/core/src/main/java/hudson/cli/ListPluginsCommand.java
index f21ea7e701..99c926cdaf 100644
--- a/core/src/main/java/hudson/cli/ListPluginsCommand.java
+++ b/core/src/main/java/hudson/cli/ListPluginsCommand.java
@@ -47,7 +47,7 @@ public class ListPluginsCommand extends CLICommand {
public String name;
protected int run() {
- Jenkins h = Jenkins.getInstance();
+ Jenkins h = Jenkins.getActiveInstance();
PluginManager pluginManager = h.getPluginManager();
if (this.name != null) {
@@ -57,7 +57,7 @@ public class ListPluginsCommand extends CLICommand {
printPlugin(plugin, plugin.getShortName().length(), plugin.getDisplayName().length());
}
else {
- stderr.println(String.format("No plugin with the name '%s' found", this.name));
+ throw new IllegalArgumentException("No plugin with the name '" + name + "' found");
}
}
else {
diff --git a/core/src/main/java/hudson/cli/OnlineNodeCommand.java b/core/src/main/java/hudson/cli/OnlineNodeCommand.java
index 2ed90c7461..5dff2e7939 100644
--- a/core/src/main/java/hudson/cli/OnlineNodeCommand.java
+++ b/core/src/main/java/hudson/cli/OnlineNodeCommand.java
@@ -40,11 +40,9 @@ import java.util.logging.Logger;
@Extension
public class OnlineNodeCommand extends CLICommand {
- @Argument(metaVar="NAME", usage="Slave name, or empty string for master")
+ @Argument(metaVar="NAME", usage="Agent name, or empty string for master")
public String computerName;
- private static final Logger LOGGER = Logger.getLogger(OnlineNodeCommand.class.getName());
-
@Override
public String getShortDescription() {
@@ -54,32 +52,17 @@ public class OnlineNodeCommand extends CLICommand {
@Override
protected int run() throws Exception {
- boolean errorOccurred = false;
-
- final Jenkins jenkins = Jenkins.getInstance();
+ final Jenkins jenkins = Jenkins.getActiveInstance();
Computer computer = jenkins.getComputer(computerName);
if (computer == null) {
- stderr.println(hudson.model.Messages.Computer_NoSuchSlaveExists(computerName, null));
- errorOccurred = true;
+ throw new IllegalArgumentException(hudson.model.Messages.Computer_NoSuchSlaveExists(computerName, null));
} else {
- try {
- computer.cliOnline();
- } catch (AccessDeniedException e) {
- stderr.println(e.getMessage());
- errorOccurred = true;
- } catch (Exception e) {
- final String errorMsg = String.format("Unexpected exception occurred during performing online operation on node '%s': %s",
- computer == null ? "(null)" : computer.getName(),
- e.getMessage());
- stderr.println(errorMsg);
- LOGGER.warning(errorMsg);
- errorOccurred = true;
- }
+ computer.cliOnline();
}
- return errorOccurred ? 1 : 0;
+ return 0;
}
}
diff --git a/core/src/main/java/hudson/cli/ReloadJobCommand.java b/core/src/main/java/hudson/cli/ReloadJobCommand.java
index a8905b79e0..800161b29b 100644
--- a/core/src/main/java/hudson/cli/ReloadJobCommand.java
+++ b/core/src/main/java/hudson/cli/ReloadJobCommand.java
@@ -23,6 +23,7 @@
*/
package hudson.cli;
+import hudson.AbortException;
import hudson.Extension;
import hudson.model.AbstractItem;
import hudson.model.AbstractProject;
@@ -58,12 +59,7 @@ public class ReloadJobCommand extends CLICommand {
protected int run() throws Exception {
boolean errorOccurred = false;
- final Jenkins jenkins = Jenkins.getInstance();
-
- if (jenkins == null) {
- stderr.println("The Jenkins instance has not been started, or was already shut down!");
- return -1;
- }
+ final Jenkins jenkins = Jenkins.getActiveInstance();
final HashSet hs = new HashSet();
hs.addAll(jobs);
@@ -83,35 +79,29 @@ public class ReloadJobCommand extends CLICommand {
if(job == null) {
// TODO: JENKINS-30785
AbstractProject project = AbstractProject.findNearest(job_s);
- if(project == null) {
- stderr.format("No such job \u2018%s\u2019 exists.\n", job_s);
- } else {
- stderr.format("No such job \u2018%s\u2019 exists. Perhaps you meant \u2018%s\u2019?", job_s, project.getFullName());
- }
- errorOccurred = true;
- continue;
- }
-
- try {
- job.checkPermission(AbstractItem.CONFIGURE);
- } catch (Exception e) {
- stderr.println(e.getMessage());
- errorOccurred = true;
- continue;
+ throw new IllegalArgumentException(project == null ?
+ "No such job \u2018" + job_s + "\u2019 exists." :
+ String.format("No such job \u2018%s\u2019 exists. Perhaps you meant \u2018%s\u2019?",
+ job_s, project.getFullName()));
}
+ job.checkPermission(AbstractItem.CONFIGURE);
job.doReload();
} catch (Exception e) {
- final String errorMsg = String.format("Unexpected exception occurred during reloading of job '%s': %s",
- job == null ? "(null)" : job.getFullName(),
- e.getMessage());
+ if(hs.size() == 1) {
+ throw e;
+ }
+
+ final String errorMsg = String.format(job_s + ": " + e.getMessage());
stderr.println(errorMsg);
- LOGGER.warning(errorMsg);
errorOccurred = true;
- //noinspection UnnecessaryContinue
continue;
}
}
- return errorOccurred ? 1 : 0;
+
+ if (errorOccurred) {
+ throw new AbortException("Error occured while performing this command, see previous stderr output.");
+ }
+ return 0;
}
}
diff --git a/core/src/main/java/hudson/cli/RemoveJobFromViewCommand.java b/core/src/main/java/hudson/cli/RemoveJobFromViewCommand.java
index 8c317d908f..786f33d21e 100644
--- a/core/src/main/java/hudson/cli/RemoveJobFromViewCommand.java
+++ b/core/src/main/java/hudson/cli/RemoveJobFromViewCommand.java
@@ -55,9 +55,8 @@ public class RemoveJobFromViewCommand extends CLICommand {
protected int run() throws Exception {
view.checkPermission(View.CONFIGURE);
- if (!(view instanceof DirectlyModifiableView)) throw new CmdLineException(
- null, "'" + view.getDisplayName() + "' view can not be modified directly"
- );
+ if (!(view instanceof DirectlyModifiableView))
+ throw new IllegalStateException("'" + view.getDisplayName() + "' view can not be modified directly");
for (TopLevelItem job: jobs) {
((DirectlyModifiableView) view).remove(job);
diff --git a/core/src/main/java/hudson/cli/SetBuildDisplayNameCommand.java b/core/src/main/java/hudson/cli/SetBuildDisplayNameCommand.java
index 08b08b7d71..f52dc58a57 100644
--- a/core/src/main/java/hudson/cli/SetBuildDisplayNameCommand.java
+++ b/core/src/main/java/hudson/cli/SetBuildDisplayNameCommand.java
@@ -30,8 +30,7 @@ public class SetBuildDisplayNameCommand extends CLICommand implements Serializab
protected int run() throws Exception {
Run, ?> run = job.getBuildByNumber(number);
if (run == null) {
- stderr.format("Build #%d does not exist\n", number);
- return -1;
+ throw new IllegalArgumentException("Build #" + number + " does not exist");
}
run.checkPermission(Run.UPDATE);
diff --git a/core/src/main/java/hudson/cli/declarative/CLIRegisterer.java b/core/src/main/java/hudson/cli/declarative/CLIRegisterer.java
index a96daf60f9..e063bb08cd 100644
--- a/core/src/main/java/hudson/cli/declarative/CLIRegisterer.java
+++ b/core/src/main/java/hudson/cli/declarative/CLIRegisterer.java
@@ -23,6 +23,7 @@
*/
package hudson.cli.declarative;
+import hudson.AbortException;
import hudson.Extension;
import hudson.ExtensionComponent;
import hudson.ExtensionFinder;
@@ -34,7 +35,9 @@ import jenkins.ExtensionComponentSet;
import jenkins.ExtensionRefreshException;
import jenkins.model.Jenkins;
import hudson.security.CliAuthenticator;
+import org.acegisecurity.AccessDeniedException;
import org.acegisecurity.Authentication;
+import org.acegisecurity.BadCredentialsException;
import org.acegisecurity.context.SecurityContext;
import org.acegisecurity.context.SecurityContextHolder;
import org.jvnet.hudson.annotation_indexer.Index;
@@ -56,6 +59,9 @@ import java.util.List;
import java.util.Locale;
import java.util.Stack;
import static java.util.logging.Level.SEVERE;
+
+import java.util.UUID;
+import java.util.logging.Level;
import java.util.logging.Logger;
/**
@@ -151,6 +157,40 @@ public class CLIRegisterer extends ExtensionFinder {
return parser;
}
+ /**
+ * Envelope an annotated CLI command
+ *
+ * @param args
+ * Arguments to the sub command. For example, if the CLI is invoked like "java -jar cli.jar foo bar zot",
+ * then "foo" is the sub-command and the argument list is ["bar","zot"].
+ * @param locale
+ * Locale of the client (which can be different from that of the server.) Good behaving command implementation
+ * would use this locale for formatting messages.
+ * @param stdin
+ * Connected to the stdin of the CLI client.
+ * @param stdout
+ * Connected to the stdout of the CLI client.
+ * @param stderr
+ * Connected to the stderr of the CLI client.
+ * @return
+ * Exit code from the CLI command execution
+ *
+ *
+ * Jenkins standard exit codes from CLI:
+ * 0 means everything went well.
+ * 1 means further unspecified exception is thrown while performing the command.
+ * 2 means CmdLineException is thrown while performing the command.
+ * 3 means IllegalArgumentException is thrown while performing the command.
+ * 4 mean IllegalStateException is thrown while performing the command.
+ * 5 means AbortException is thrown while performing the command.
+ * 6 means AccessDeniedException is thrown while performing the command.
+ * 7 means BadCredentialsException is thrown while performing the command.
+ * 8-15 are reserved for future usage
+ * 16+ mean a custom CLI exit error code (meaning defined by the CLI command itself)
+ *
+ *
+ * Note: For details - see JENKINS-32273
+ */
@Override
public int main(List args, Locale locale, InputStream stdin, PrintStream stdout, PrintStream stderr) {
this.stdout = stdout;
@@ -166,13 +206,13 @@ public class CLIRegisterer extends ExtensionFinder {
try {
// authentication
CliAuthenticator authenticator = Jenkins.getInstance().getSecurityRealm().createCliAuthenticator(this);
- new ClassParser().parse(authenticator,parser);
+ new ClassParser().parse(authenticator, parser);
// fill up all the binders
parser.parseArgument(args);
Authentication auth = authenticator.authenticate();
- if (auth== Jenkins.ANONYMOUS)
+ if (auth == Jenkins.ANONYMOUS)
auth = loadStoredAuthentication();
sc.setAuthentication(auth); // run the CLI with the right credential
hudson.checkPermission(Jenkins.READ);
@@ -195,10 +235,40 @@ public class CLIRegisterer extends ExtensionFinder {
sc.setAuthentication(old); // restore
}
} catch (CmdLineException e) {
- stderr.println(e.getMessage());
- printUsage(stderr,parser);
- return 1;
- } catch (Exception e) {
+ stderr.println("");
+ stderr.println("ERROR: " + e.getMessage());
+ printUsage(stderr, parser);
+ return 2;
+ } catch (IllegalStateException e) {
+ stderr.println("");
+ stderr.println("ERROR: " + e.getMessage());
+ return 4;
+ } catch (IllegalArgumentException e) {
+ stderr.println("");
+ stderr.println("ERROR: " + e.getMessage());
+ return 3;
+ } catch (AbortException e) {
+ stderr.println("");
+ stderr.println("ERROR: " + e.getMessage());
+ return 5;
+ } catch (AccessDeniedException e) {
+ stderr.println("");
+ stderr.println("ERROR: " + e.getMessage());
+ return 6;
+ } catch (BadCredentialsException e) {
+ // to the caller, we can't reveal whether the user didn't exist or the password didn't match.
+ // do that to the server log instead
+ String id = UUID.randomUUID().toString();
+ LOGGER.log(Level.INFO, "CLI login attempt failed: " + id, e);
+ stderr.println("");
+ stderr.println("ERROR: Bad Credentials. Search the server log for " + id + " for more details.");
+ return 7;
+ } catch (Throwable e) {
+ final String errorMsg = String.format("Unexpected exception occurred while performing %s command.",
+ getName());
+ stderr.println("");
+ stderr.println("ERROR: " + errorMsg);
+ LOGGER.log(Level.WARNING, errorMsg, e);
e.printStackTrace(stderr);
return 1;
}
@@ -213,7 +283,7 @@ public class CLIRegisterer extends ExtensionFinder {
}
}
} catch (IOException e) {
- LOGGER.log(SEVERE, "Failed to discvoer @CLIMethod",e);
+ LOGGER.log(SEVERE, "Failed to discover @CLIMethod",e);
}
return r;
diff --git a/core/src/main/java/hudson/cli/handlers/GenericItemOptionHandler.java b/core/src/main/java/hudson/cli/handlers/GenericItemOptionHandler.java
index e27bb32dc8..cd6b6b9377 100644
--- a/core/src/main/java/hudson/cli/handlers/GenericItemOptionHandler.java
+++ b/core/src/main/java/hudson/cli/handlers/GenericItemOptionHandler.java
@@ -73,9 +73,9 @@ public abstract class GenericItemOptionHandler extends OptionHan
});
T nearest = Items.findNearest(type(), src, j);
if (nearest != null) {
- throw new CmdLineException(owner, "No such job '" + src + "'; perhaps you meant '" + nearest.getFullName() + "'?");
+ throw new IllegalArgumentException("No such job '" + src + "'; perhaps you meant '" + nearest.getFullName() + "'?");
} else {
- throw new CmdLineException(owner, "No such job '" + src + "'");
+ throw new IllegalArgumentException("No such job '" + src + "'");
}
}
setter.addValue(s);
diff --git a/core/src/main/java/hudson/cli/handlers/NodeOptionHandler.java b/core/src/main/java/hudson/cli/handlers/NodeOptionHandler.java
index 516f1e6ed4..90905d5348 100644
--- a/core/src/main/java/hudson/cli/handlers/NodeOptionHandler.java
+++ b/core/src/main/java/hudson/cli/handlers/NodeOptionHandler.java
@@ -54,7 +54,7 @@ public class NodeOptionHandler extends OptionHandler {
String nodeName = params.getParameter(0);
final Node node = Jenkins.getInstance().getNode(nodeName);
- if (node == null) throw new CmdLineException(owner, "No such node '" + nodeName + "'");
+ if (node == null) throw new IllegalArgumentException("No such node '" + nodeName + "'");
setter.addValue(node);
return 1;
diff --git a/core/src/main/java/hudson/cli/handlers/ViewOptionHandler.java b/core/src/main/java/hudson/cli/handlers/ViewOptionHandler.java
index 77d086a1d1..784aef7a70 100644
--- a/core/src/main/java/hudson/cli/handlers/ViewOptionHandler.java
+++ b/core/src/main/java/hudson/cli/handlers/ViewOptionHandler.java
@@ -30,6 +30,7 @@ import java.util.StringTokenizer;
import jenkins.model.Jenkins;
+import org.acegisecurity.AccessDeniedException;
import org.kohsuke.MetaInfServices;
import org.kohsuke.args4j.CmdLineException;
import org.kohsuke.args4j.CmdLineParser;
@@ -81,22 +82,21 @@ public class ViewOptionHandler extends OptionHandler {
* Note: Personal user's views aren't supported now.
*
* @param name A view name
- * @return The {@link View} instance. Null if {@link Jenkins#getInstance()} returns null
- * sor user doesn't have a READ permission.
- * @throws CmdLineException
- * If view isn't found or an un-expected error occurred
+ * @return The {@link View} instance. Null if name is empty string
+ * @throws IllegalArgumentException
+ * If the view isn't found
+ * @throws IllegalStateException
+ * If cannot get active Jenkins instance or view can't contain a views
+ * @throws AccessDeniedException
+ * If user doens't have a READ permission for the view
* @since TODO
*/
@CheckForNull
- public View getView(final String name) throws CmdLineException {
+ public View getView(final String name) {
- ViewGroup group = Jenkins.getInstance();
+ ViewGroup group = Jenkins.getActiveInstance();
View view = null;
- if (group == null)
- throw new CmdLineException(owner,
- "The Jenkins instance has not been started, or was already shut down!");
-
final StringTokenizer tok = new StringTokenizer(name, "/");
while(tok.hasMoreTokens()) {
@@ -104,23 +104,16 @@ public class ViewOptionHandler extends OptionHandler {
view = group.getView(viewName);
if (view == null)
- throw new CmdLineException(owner, String.format(
+ throw new IllegalArgumentException(String.format(
"No view named %s inside view %s",
viewName, group.getDisplayName()
));
- try {
- view.checkPermission(View.READ);
- } catch (Exception e) {
- throw new CmdLineException(owner, e.getMessage());
- }
-
+ view.checkPermission(View.READ);
if (view instanceof ViewGroup) {
group = (ViewGroup) view;
} else if (tok.hasMoreTokens()) {
- throw new CmdLineException(
- owner, view.getViewName() + " view can not contain views"
- );
+ throw new IllegalStateException(view.getViewName() + " view can not contain views");
}
}
diff --git a/core/src/main/java/hudson/console/ConsoleLogFilter.java b/core/src/main/java/hudson/console/ConsoleLogFilter.java
index 49116ab982..ec1b0c0592 100644
--- a/core/src/main/java/hudson/console/ConsoleLogFilter.java
+++ b/core/src/main/java/hudson/console/ConsoleLogFilter.java
@@ -88,10 +88,10 @@ public abstract class ConsoleLogFilter implements ExtensionPoint {
}
/**
- * Called to decorate logger for master/slave communication.
+ * Called to decorate logger for master/agent communication.
*
* @param computer
- * Slave computer for which the logger is getting decorated. Useful to do
+ * Agent computer for which the logger is getting decorated. Useful to do
* contextual decoration.
* @since 1.632
*/
diff --git a/core/src/main/java/hudson/logging/LogRecorder.java b/core/src/main/java/hudson/logging/LogRecorder.java
index 17ec36ee16..af6fb378ce 100644
--- a/core/src/main/java/hudson/logging/LogRecorder.java
+++ b/core/src/main/java/hudson/logging/LogRecorder.java
@@ -208,7 +208,7 @@ public class LogRecorder extends AbstractModelObject implements Saveable {
}
private static final class SetLevel extends MasterToSlaveCallable {
- /** known loggers (kept per slave), to avoid GC */
+ /** known loggers (kept per agent), to avoid GC */
@SuppressWarnings("MismatchedQueryAndUpdateOfCollection") private static final Set loggers = new HashSet();
private final String name;
private final Level level;
@@ -363,7 +363,7 @@ public class LogRecorder extends AbstractModelObject implements Saveable {
}
/**
- * Gets a view of log records per slave matching this recorder.
+ * Gets a view of log records per agent matching this recorder.
* @return a map (sorted by display name) from computer to (nonempty) list of log records
* @since 1.519
*/
diff --git a/core/src/main/java/hudson/model/AbstractBuild.java b/core/src/main/java/hudson/model/AbstractBuild.java
index e9c4626706..582f883945 100644
--- a/core/src/main/java/hudson/model/AbstractBuild.java
+++ b/core/src/main/java/hudson/model/AbstractBuild.java
@@ -109,7 +109,7 @@ public abstract class AbstractBuild,R extends Abs
private static final boolean upstreamCulprits = Boolean.getBoolean("hudson.upstreamCulprits");
/**
- * Name of the slave this project was built on.
+ * Name of the agent this project was built on.
* Null or "" if built by the master. (null happens when we read old record that didn't have this information.)
*/
private String builtOn;
@@ -205,7 +205,7 @@ public abstract class AbstractBuild
,R extends Abs
* Returns a {@link Slave} on which this build was done.
*
* @return
- * null, for example if the slave that this build run no longer exists.
+ * null, for example if the agent that this build run no longer exists.
*/
public @CheckForNull Node getBuiltOn() {
if (builtOn==null || builtOn.equals(""))
@@ -215,7 +215,7 @@ public abstract class AbstractBuild
,R extends Abs
}
/**
- * Returns the name of the slave it was built on; null or "" if built by the master.
+ * Returns the name of the agent it was built on; null or "" if built by the master.
* (null happens when we read old record that didn't have this information.)
*/
@Exported(name="builtOn")
@@ -276,7 +276,7 @@ public abstract class AbstractBuild
,R extends Abs
* {@link AbstractBuildExecution#decideWorkspace(Node,WorkspaceList)}.
*
* @return
- * null if the workspace is on a slave that's not connected. Note that once the build is completed,
+ * null if the workspace is on an agent that's not connected. Note that once the build is completed,
* the workspace may be used to build something else, so the value returned from this method may
* no longer show a workspace as it was used for this build.
* @since 1.319
@@ -808,7 +808,7 @@ public abstract class AbstractBuild
,R extends Abs
private void reportBrokenChannel(BuildListener listener) throws IOException {
final Node node = getCurrentNode();
- listener.hyperlink("/" + node.toComputer().getUrl() + "log", "Slave went offline during the build");
+ listener.hyperlink("/" + node.toComputer().getUrl() + "log", "Agent went offline during the build");
listener.getLogger().println();
final OfflineCause offlineCause = node.toComputer().getOfflineCause();
if (offlineCause != null) {
diff --git a/core/src/main/java/hudson/model/AbstractProject.java b/core/src/main/java/hudson/model/AbstractProject.java
index 458d1b8f64..f1d4a15d68 100644
--- a/core/src/main/java/hudson/model/AbstractProject.java
+++ b/core/src/main/java/hudson/model/AbstractProject.java
@@ -55,7 +55,6 @@ import hudson.model.queue.CauseOfBlockage;
import hudson.model.queue.QueueTaskFuture;
import hudson.model.queue.SubTask;
import hudson.model.queue.SubTaskContributor;
-import hudson.node_monitors.DiskSpaceMonitor;
import hudson.scm.ChangeLogSet;
import hudson.scm.ChangeLogSet.Entry;
import hudson.scm.NullSCM;
@@ -270,7 +269,7 @@ public abstract class AbstractProject
,R extends A
final Jenkins j = Jenkins.getInstance();
final List nodes = j != null ? j.getNodes() : null;
if(nodes!=null && !nodes.isEmpty()) {
- // if a new job is configured with Hudson that already has slave nodes
+ // if a new job is configured with Hudson that already has agent nodes
// make it roamable by default
canRoam = true;
}
@@ -409,7 +408,7 @@ public abstract class AbstractProject,R extends A
/**
* Set of labels relevant to this job.
*
- * This method is used to determine what slaves are relevant to jobs, for example by {@link View}s.
+ * This method is used to determine what agents are relevant to jobs, for example by {@link View}s.
* It does not affect the scheduling. This information is informational and the best-effort basis.
*
* @since 1.456
@@ -502,7 +501,7 @@ public abstract class AbstractProject
,R extends A
* Gets the directory where the module is checked out.
*
* @return
- * null if the workspace is on a slave that's not connected.
+ * null if the workspace is on an agent that's not connected.
* @deprecated as of 1.319
* To support concurrent builds of the same project, this method is moved to {@link AbstractBuild}.
* For backward compatibility, this method returns the right {@link AbstractBuild#getWorkspace()} if called
@@ -1265,13 +1264,7 @@ public abstract class AbstractProject
,R extends A
return true; // no SCM
FilePath workspace = build.getWorkspace();
- try {
- workspace.mkdirs();
- } catch (IOException e) {
- // Can't create workspace dir - Is slave disk full ?
- new DiskSpaceMonitor().markNodeOfflineIfDiskspaceIsTooLow(build.getBuiltOn().toComputer());
- throw e;
- }
+ workspace.mkdirs();
boolean r = scm.checkout(build, launcher, workspace, listener, changelogFile);
if (r) {
@@ -1402,7 +1395,7 @@ public abstract class AbstractProject
,R extends A
// At this point we start thinking about triggering a build just to get a workspace,
// because otherwise there's no way we can detect changes.
// However, first there are some conditions in which we do not want to do so.
- // give time for slaves to come online if we are right after reconnection (JENKINS-8408)
+ // give time for agents to come online if we are right after reconnection (JENKINS-8408)
long running = Jenkins.getInstance().getInjector().getInstance(Uptime.class).getUptime();
long remaining = TimeUnit2.MINUTES.toMillis(10)-running;
if (remaining>0 && /* this logic breaks tests of polling */!Functions.getIsUnitTest()) {
@@ -1411,7 +1404,7 @@ public abstract class AbstractProject
,R extends A
return NO_CHANGES;
}
- // Do not trigger build, if no suitable slave is online
+ // Do not trigger build, if no suitable agent is online
if (workspaceOfflineReason.equals(WorkspaceOfflineReason.all_suitable_nodes_are_offline)) {
// No suitable executor is online
listener.getLogger().print(Messages.AbstractProject_AwaitingWorkspaceToComeOnline(running/1000));
@@ -1422,7 +1415,7 @@ public abstract class AbstractProject
,R extends A
Label label = getAssignedLabel();
if (label != null && label.isSelfLabel()) {
// if the build is fixed on a node, then attempting a build will do us
- // no good. We should just wait for the slave to come back.
+ // no good. We should just wait for the agent to come back.
listener.getLogger().print(Messages.AbstractProject_NoWorkspace());
listener.getLogger().println( " (" + workspaceOfflineReason.name() + ")");
return NO_CHANGES;
diff --git a/core/src/main/java/hudson/model/AsyncAperiodicWork.java b/core/src/main/java/hudson/model/AsyncAperiodicWork.java
index 9111e5fd47..8587f925c3 100644
--- a/core/src/main/java/hudson/model/AsyncAperiodicWork.java
+++ b/core/src/main/java/hudson/model/AsyncAperiodicWork.java
@@ -25,11 +25,11 @@ package hudson.model;
import hudson.security.ACL;
import hudson.util.StreamTaskListener;
-
import java.io.File;
import java.io.IOException;
+import java.util.Date;
+import java.util.concurrent.TimeUnit;
import java.util.logging.Level;
-
import jenkins.model.Jenkins;
/**
@@ -40,8 +40,48 @@ import jenkins.model.Jenkins;
* @since 1.410
*/
public abstract class AsyncAperiodicWork extends AperiodicWork {
-
- /**
+ /**
+ * The default number of minutes after which to try and rotate the log file used by {@link #createListener()}.
+ * This value is controlled by the system property {@code hudson.model.AsyncAperiodicWork.logRotateMinutes}.
+ * Each individual AsyncAperiodicWork can also have a per-extension override using the system property
+ * based on their fully qualified class name with {@code .logRotateMinutes} appended.
+ *
+ * @since 1.651
+ */
+ private static final long LOG_ROTATE_MINUTES = Long.getLong(AsyncAperiodicWork.class.getName() +
+ ".logRotateMinutes", TimeUnit.DAYS.toMinutes(1));
+ /**
+ * The default file size after which to try and rotate the log file used by {@link #createListener()}.
+ * A value of {@code -1L} disables rotation based on file size.
+ * This value is controlled by the system property {@code hudson.model.AsyncAperiodicWork.logRotateSize}.
+ * Each individual AsyncAperiodicWork can also have a per-extension override using the system property
+ * based on their fully qualified class name with {@code .logRotateSize} appended.
+ *
+ * @since 1.651
+ */
+ private static final long LOG_ROTATE_SIZE = Long.getLong(AsyncAperiodicWork.class.getName() + ".logRotateSize",
+ -1L);
+ /**
+ * The number of milliseconds (since startup or previous rotation) after which to try and rotate the log file.
+ *
+ * @since 1.651
+ */
+ private final long logRotateMillis;
+ /**
+ * {@code -1L} disabled file size based log rotation, otherwise when starting an {@link #execute(TaskListener)},
+ * if the log file size is above this number of bytes then the log file will be rotated beforehand.
+ *
+ * @since 1.651
+ */
+ private final long logRotateSize;
+ /**
+ * The last time the log files were rotated. On start-up this will be {@link Long#MIN_VALUE} to ensure that the
+ * logs are always rotated every time Jenkins starts up to make it easier to correlate events with the main log.
+ *
+ * @since 1.651
+ */
+ private long lastRotateMillis = Long.MIN_VALUE;
+ /**
* Name of the work.
*/
public final String name;
@@ -50,6 +90,9 @@ public abstract class AsyncAperiodicWork extends AperiodicWork {
protected AsyncAperiodicWork(String name) {
this.name = name;
+ this.logRotateMillis = TimeUnit.MINUTES.toMillis(
+ Long.getLong(getClass().getName()+".logRotateMinutes", LOG_ROTATE_MINUTES));
+ this.logRotateSize = Long.getLong(getClass().getName() +".logRotateSize", LOG_ROTATE_SIZE);
}
/**
@@ -59,16 +102,18 @@ public abstract class AsyncAperiodicWork extends AperiodicWork {
public final void doAperiodicRun() {
try {
if(thread!=null && thread.isAlive()) {
- logger.log(Level.INFO, name+" thread is still running. Execution aborted.");
+ logger.log(getSlowLoggingLevel(), "{0} thread is still running. Execution aborted.", name);
return;
}
thread = new Thread(new Runnable() {
public void run() {
- logger.log(Level.INFO, "Started "+name);
+ logger.log(getNormalLoggingLevel(), "Started {0}", name);
long startTime = System.currentTimeMillis();
+ long stopTime;
StreamTaskListener l = createListener();
try {
+ l.getLogger().printf("Started at %tc%n", new Date(startTime));
ACL.impersonate(ACL.SYSTEM);
execute(l);
@@ -77,11 +122,16 @@ public abstract class AsyncAperiodicWork extends AperiodicWork {
} catch (InterruptedException e) {
e.printStackTrace(l.fatalError("aborted"));
} finally {
- l.closeQuietly();
+ stopTime = System.currentTimeMillis();
+ try {
+ l.getLogger().printf("Finished at %tc. %dms%n", new Date(stopTime), stopTime - startTime);
+ } finally {
+ l.closeQuietly();
+ }
}
- logger.log(Level.INFO, "Finished "+name+". "+
- (System.currentTimeMillis()-startTime)+" ms");
+ logger.log(getNormalLoggingLevel(), "Finished {0}. {1,number} ms",
+ new Object[]{name, stopTime - startTime});
}
},name+" thread");
thread.start();
@@ -91,8 +141,54 @@ public abstract class AsyncAperiodicWork extends AperiodicWork {
}
protected StreamTaskListener createListener() {
+ File f = getLogFile();
+ if (!f.getParentFile().isDirectory()) {
+ if (!f.getParentFile().mkdirs()) {
+ logger.log(getErrorLoggingLevel(), "Could not create directory {0}", f.getParentFile());
+ }
+ }
+ if (f.isFile()) {
+ if ((lastRotateMillis + logRotateMillis < System.currentTimeMillis())
+ || (logRotateSize > 0 && f.length() > logRotateSize)) {
+ lastRotateMillis = System.currentTimeMillis();
+ File prev = null;
+ for (int i = 5; i >= 0; i--) {
+ File curr = i == 0 ? f : new File(f.getParentFile(), f.getName() + "." + i);
+ if (curr.isFile()) {
+ if (prev != null && !prev.exists()) {
+ if (!curr.renameTo(prev)) {
+ logger.log(getErrorLoggingLevel(), "Could not rotate log files {0} to {1}",
+ new Object[]{curr, prev});
+ }
+ } else {
+ if (!curr.delete()) {
+ logger.log(getErrorLoggingLevel(), "Could not delete log file {0} to enable rotation",
+ curr);
+ }
+ }
+ }
+ prev = curr;
+ }
+ }
+ } else {
+ lastRotateMillis = System.currentTimeMillis();
+ // migrate old log files the first time we start-up
+ File oldFile = new File(Jenkins.getActiveInstance().getRootDir(), f.getName());
+ if (oldFile.isFile()) {
+ File newFile = new File(f.getParentFile(), f.getName() + ".1");
+ if (!newFile.isFile()) {
+ // if there has never been rotation then this is the first time
+ if (oldFile.renameTo(newFile)) {
+ logger.log(getNormalLoggingLevel(), "Moved {0} to {1}", new Object[]{oldFile, newFile});
+ } else {
+ logger.log(getErrorLoggingLevel(), "Could not move {0} to {1}",
+ new Object[]{oldFile, newFile});
+ }
+ }
+ }
+ }
try {
- return new StreamTaskListener(getLogFile());
+ return new StreamTaskListener(f, true, null);
} catch (IOException e) {
throw new Error(e);
}
@@ -102,7 +198,37 @@ public abstract class AsyncAperiodicWork extends AperiodicWork {
* Determines the log file that records the result of this task.
*/
protected File getLogFile() {
- return new File(Jenkins.getInstance().getRootDir(),name+".log");
+ return new File(Jenkins.getActiveInstance().getRootDir(),"logs/tasks/"+name+".log");
+ }
+
+ /**
+ * Returns the logging level at which normal messages are displayed.
+ *
+ * @return The logging level.
+ * @since 1.651
+ */
+ protected Level getNormalLoggingLevel() {
+ return Level.INFO;
+ }
+
+ /**
+ * Returns the logging level at which previous task still executing messages is displayed.
+ *
+ * @return The logging level.
+ * @since 1.651
+ */
+ protected Level getSlowLoggingLevel() {
+ return getNormalLoggingLevel();
+ }
+
+ /**
+ * Returns the logging level at which error messages are displayed.
+ *
+ * @return The logging level.
+ * @since 1.651
+ */
+ protected Level getErrorLoggingLevel() {
+ return Level.SEVERE;
}
/**
diff --git a/core/src/main/java/hudson/model/AsyncPeriodicWork.java b/core/src/main/java/hudson/model/AsyncPeriodicWork.java
index 9444887b5b..392f90abcb 100644
--- a/core/src/main/java/hudson/model/AsyncPeriodicWork.java
+++ b/core/src/main/java/hudson/model/AsyncPeriodicWork.java
@@ -2,12 +2,13 @@ package hudson.model;
import hudson.security.ACL;
import hudson.util.StreamTaskListener;
-import jenkins.model.Jenkins;
-
import java.io.File;
import java.io.IOException;
+import java.util.Date;
+import java.util.concurrent.TimeUnit;
import java.util.logging.Level;
import java.util.logging.LogRecord;
+import jenkins.model.Jenkins;
/**
* {@link PeriodicWork} that takes a long time to run.
@@ -20,6 +21,46 @@ import java.util.logging.LogRecord;
* @author Kohsuke Kawaguchi
*/
public abstract class AsyncPeriodicWork extends PeriodicWork {
+ /**
+ * The default number of minutes after which to try and rotate the log file used by {@link #createListener()}.
+ * This value is controlled by the system property {@code hudson.model.AsyncPeriodicWork.logRotateMinutes}.
+ * Each individual AsyncPeriodicWork can also have a per-extension override using the system property
+ * based on their fully qualified class name with {@code .logRotateMinutes} appended.
+ *
+ * @since 1.651
+ */
+ private static final long LOG_ROTATE_MINUTES = Long.getLong(AsyncPeriodicWork.class.getName() + ".logRotateMinutes",
+ TimeUnit.DAYS.toMinutes(1));
+ /**
+ * The default file size after which to try and rotate the log file used by {@link #createListener()}.
+ * A value of {@code -1L} disables rotation based on file size.
+ * This value is controlled by the system property {@code hudson.model.AsyncPeriodicWork.logRotateSize}.
+ * Each individual AsyncPeriodicWork can also have a per-extension override using the system property
+ * based on their fully qualified class name with {@code .logRotateSize} appended.
+ *
+ * @since 1.651
+ */
+ private static final long LOG_ROTATE_SIZE = Long.getLong(AsyncPeriodicWork.class.getName() + ".logRotateSize", -1L);
+ /**
+ * The number of milliseconds (since startup or previous rotation) after which to try and rotate the log file.
+ *
+ * @since 1.651
+ */
+ private final long logRotateMillis;
+ /**
+ * {@code -1L} disabled file size based log rotation, otherwise when starting an {@link #execute(TaskListener)},
+ * if the log file size is above this number of bytes then the log file will be rotated beforehand.
+ *
+ * @since 1.651
+ */
+ private final long logRotateSize;
+ /**
+ * The last time the log files were rotated. On start-up this will be {@link Long#MIN_VALUE} to ensure that the
+ * logs are always rotated every time Jenkins starts up to make it easier to correlate events with the main log.
+ *
+ * @since 1.651
+ */
+ private long lastRotateMillis = Long.MIN_VALUE;
/**
* Human readable name of the work.
*/
@@ -29,6 +70,9 @@ public abstract class AsyncPeriodicWork extends PeriodicWork {
protected AsyncPeriodicWork(String name) {
this.name = name;
+ this.logRotateMillis = TimeUnit.MINUTES.toMillis(
+ Long.getLong(getClass().getName() + ".logRotateMinutes", LOG_ROTATE_MINUTES));
+ this.logRotateSize = Long.getLong(getClass().getName() + ".logRotateSize", LOG_ROTATE_SIZE);
}
/**
@@ -45,9 +89,11 @@ public abstract class AsyncPeriodicWork extends PeriodicWork {
public void run() {
logger.log(getNormalLoggingLevel(), "Started {0}", name);
long startTime = System.currentTimeMillis();
+ long stopTime;
StreamTaskListener l = createListener();
try {
+ l.getLogger().printf("Started at %tc%n", new Date(startTime));
ACL.impersonate(ACL.SYSTEM);
execute(l);
@@ -56,11 +102,16 @@ public abstract class AsyncPeriodicWork extends PeriodicWork {
} catch (InterruptedException e) {
e.printStackTrace(l.fatalError("aborted"));
} finally {
- l.closeQuietly();
+ stopTime = System.currentTimeMillis();
+ try {
+ l.getLogger().printf("Finished at %tc. %dms%n", new Date(stopTime), stopTime - startTime);
+ } finally {
+ l.closeQuietly();
+ }
}
logger.log(getNormalLoggingLevel(), "Finished {0}. {1,number} ms",
- new Object[]{name, (System.currentTimeMillis()-startTime)});
+ new Object[]{name, stopTime - startTime});
}
},name+" thread");
thread.start();
@@ -73,8 +124,54 @@ public abstract class AsyncPeriodicWork extends PeriodicWork {
}
protected StreamTaskListener createListener() {
+ File f = getLogFile();
+ if (!f.getParentFile().isDirectory()) {
+ if (!f.getParentFile().mkdirs()) {
+ logger.log(getErrorLoggingLevel(), "Could not create directory {0}", f.getParentFile());
+ }
+ }
+ if (f.isFile()) {
+ if ((lastRotateMillis + logRotateMillis < System.currentTimeMillis())
+ || (logRotateSize > 0 && f.length() > logRotateSize)) {
+ lastRotateMillis = System.currentTimeMillis();
+ File prev = null;
+ for (int i = 5; i >= 0; i--) {
+ File curr = i == 0 ? f : new File(f.getParentFile(), f.getName() + "." + i);
+ if (curr.isFile()) {
+ if (prev != null && !prev.exists()) {
+ if (!curr.renameTo(prev)) {
+ logger.log(getErrorLoggingLevel(), "Could not rotate log files {0} to {1}",
+ new Object[]{curr, prev});
+ }
+ } else {
+ if (!curr.delete()) {
+ logger.log(getErrorLoggingLevel(), "Could not delete log file {0} to enable rotation",
+ curr);
+ }
+ }
+ }
+ prev = curr;
+ }
+ }
+ } else {
+ lastRotateMillis = System.currentTimeMillis();
+ // migrate old log files the first time we start-up
+ File oldFile = new File(Jenkins.getActiveInstance().getRootDir(), f.getName());
+ if (oldFile.isFile()) {
+ File newFile = new File(f.getParentFile(), f.getName() + ".1");
+ if (!newFile.isFile()) {
+ // if there has never been rotation then this is the first time
+ if (oldFile.renameTo(newFile)) {
+ logger.log(getNormalLoggingLevel(), "Moved {0} to {1}", new Object[]{oldFile, newFile});
+ } else {
+ logger.log(getErrorLoggingLevel(), "Could not move {0} to {1}",
+ new Object[]{oldFile, newFile});
+ }
+ }
+ }
+ }
try {
- return new StreamTaskListener(getLogFile());
+ return new StreamTaskListener(f, true, null);
} catch (IOException e) {
throw new Error(e);
}
@@ -84,7 +181,7 @@ public abstract class AsyncPeriodicWork extends PeriodicWork {
* Determines the log file that records the result of this task.
*/
protected File getLogFile() {
- return new File(Jenkins.getInstance().getRootDir(),name+".log");
+ return new File(Jenkins.getActiveInstance().getRootDir(),"logs/tasks/"+name+".log");
}
/**
diff --git a/core/src/main/java/hudson/model/Computer.java b/core/src/main/java/hudson/model/Computer.java
index 4ce4a3b7a3..3eedf30bd3 100644
--- a/core/src/main/java/hudson/model/Computer.java
+++ b/core/src/main/java/hudson/model/Computer.java
@@ -284,7 +284,7 @@ public /*transient*/ abstract class Computer extends Actionable implements Acces
}
/**
- * Directory where rotated slave logs are stored.
+ * Directory where rotated agent logs are stored.
*
* The method also creates a log directory if required.
*
@@ -293,7 +293,7 @@ public /*transient*/ abstract class Computer extends Actionable implements Acces
protected @Nonnull File getLogDir() {
File dir = new File(Jenkins.getInstance().getRootDir(),"logs/slaves/"+nodeName);
if (!dir.exists() && !dir.mkdirs()) {
- LOGGER.severe("Failed to create slave log directory " + dir.getAbsolutePath());
+ LOGGER.severe("Failed to create agent log directory " + dir.getAbsolutePath());
}
return dir;
}
@@ -306,7 +306,7 @@ public /*transient*/ abstract class Computer extends Actionable implements Acces
}
/**
- * Gets the string representation of the slave log.
+ * Gets the string representation of the agent log.
*/
public String getLog() throws IOException {
return Util.loadFile(getLogFile());
@@ -383,12 +383,12 @@ public /*transient*/ abstract class Computer extends Actionable implements Acces
public abstract Charset getDefaultCharset();
/**
- * Gets the logs recorded by this slave.
+ * Gets the logs recorded by this agent.
*/
public abstract List getLogRecords() throws IOException, InterruptedException;
/**
- * If {@link #getChannel()}==null, attempts to relaunch the slave agent.
+ * If {@link #getChannel()}==null, attempts to relaunch the agent.
*/
public abstract void doLaunchSlaveAgent( StaplerRequest req, StaplerResponse rsp ) throws IOException, ServletException;
@@ -618,8 +618,8 @@ public /*transient*/ abstract class Computer extends Actionable implements Acces
}
/**
- * This method is called to determine whether manual launching of the slave is allowed at this point in time.
- * @return {@code true} if 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.
+ * @return {@code true} if manual launching of the agent is allowed at this point in time.
*/
@Exported
public boolean isManualLaunchAllowed() {
@@ -647,8 +647,8 @@ public /*transient*/ abstract class Computer extends Actionable implements Acces
* Returns true if this computer can be launched by Hudson proactively and automatically.
*
*
- * For example, JNLP slaves return {@code false} from this, because the launch process
- * needs to be initiated from the slave side.
+ * For example, JNLP agents return {@code false} from this, because the launch process
+ * needs to be initiated from the agent side.
*/
@Exported
public boolean isLaunchSupported() {
@@ -661,7 +661,7 @@ public /*transient*/ abstract class Computer extends Actionable implements Acces
*
* In contrast, {@link #isOffline()} represents the actual online/offline
* state. For example, this method may return false while {@link #isOffline()}
- * returns true if the slave agent failed to launch.
+ * returns true if the agent failed to launch.
*
* @deprecated
* You should almost always want {@link #isOffline()}.
@@ -1142,7 +1142,7 @@ public /*transient*/ abstract class Computer extends Actionable implements Acces
}
/**
- * Gets the thread dump of the slave JVM.
+ * Gets the thread dump of the agent JVM.
* @return
* key is the thread name, and the value is the pre-formatted dump.
*/
@@ -1161,14 +1161,14 @@ public /*transient*/ abstract class Computer extends Actionable implements Acces
* This method tries to compute the name of the host that's reachable by all the other nodes.
*
*
- * Since it's possible that the slave is not reachable from the master (it may be behind a firewall,
+ * Since it's possible that the agent is not reachable from the master (it may be behind a firewall,
* connecting to master via JNLP), this method may return null.
*
* It's surprisingly tricky for a machine to know a name that other systems can get to,
* especially between things like DNS search suffix, the hosts file, and YP.
*
*
- * So the technique here is to compute possible interfaces and names on the slave,
+ * So the technique here is to compute possible interfaces and names on the agent,
* then try to ping them from the master, and pick the one that worked.
*
*
@@ -1177,7 +1177,7 @@ public /*transient*/ abstract class Computer extends Actionable implements Acces
* @since 1.300
* @return
* null if the host name cannot be computed (for example because this computer is offline,
- * because the slave is behind the firewall, etc.)
+ * because the agent is behind the firewall, etc.)
*/
public String getHostName() throws IOException, InterruptedException {
if(hostNameCached)
@@ -1339,7 +1339,7 @@ public /*transient*/ abstract class Computer extends Actionable implements Acces
if (vc instanceof Channel) {
w.println("Master to slave");
((Channel)vc).dumpExportTable(w);
- w.flush(); // flush here once so that even if the dump from the slave fails, the client gets some useful info
+ w.flush(); // flush here once so that even if the dump from the agent fails, the client gets some useful info
w.println("\n\n\nSlave to master");
w.print(vc.call(new DumpExportTableTask()));
@@ -1401,7 +1401,7 @@ public /*transient*/ abstract class Computer extends Actionable implements Acces
Node result = node.reconfigure(req, req.getSubmittedForm());
replaceBy(result);
- // take the user back to the slave top page.
+ // take the user back to the agent top page.
rsp.sendRedirect2("../" + result.getNodeName() + '/');
}
@@ -1446,7 +1446,7 @@ public /*transient*/ abstract class Computer extends Actionable implements Acces
Node node = getNode();
int i = (node != null) ? nodes.indexOf(node) : -1;
if(i<0) {
- throw new IOException("This slave appears to be removed while you were editing the configuration");
+ throw new IOException("This agent appears to be removed while you were editing the configuration");
}
nodes.set(i, newNode);
app.setNodes(nodes);
@@ -1467,7 +1467,7 @@ public /*transient*/ abstract class Computer extends Actionable implements Acces
}
/**
- * Really deletes the slave.
+ * Really deletes the agent.
*/
@RequirePOST
public HttpResponse doDoDelete() throws IOException {
@@ -1520,7 +1520,7 @@ public /*transient*/ abstract class Computer extends Actionable implements Acces
}
/**
- * Returns {@code true} if the computer is accepting tasks. Needed to allow slaves programmatic suspension of task
+ * Returns {@code true} if the computer is accepting tasks. Needed to allow agents programmatic suspension of task
* scheduling that does not overlap with being offline.
*
* @return {@code true} if the computer is accepting tasks
@@ -1538,7 +1538,7 @@ public /*transient*/ abstract class Computer extends Actionable implements Acces
*/
@CLIResolver
public static Computer resolveForCLI(
- @Argument(required=true,metaVar="NAME",usage="Slave name, or empty string for master") String name) throws CmdLineException {
+ @Argument(required=true,metaVar="NAME",usage="Agent name, or empty string for master") String name) throws CmdLineException {
Jenkins h = Jenkins.getInstance();
Computer item = h.getComputer(name);
if (item==null) {
diff --git a/core/src/main/java/hudson/model/ComputerSet.java b/core/src/main/java/hudson/model/ComputerSet.java
index f887167058..c5992c828f 100644
--- a/core/src/main/java/hudson/model/ComputerSet.java
+++ b/core/src/main/java/hudson/model/ComputerSet.java
@@ -137,7 +137,7 @@ public final class ComputerSet extends AbstractModelObject implements Describabl
}
/**
- * Gets all the slave names.
+ * Gets all the agent names.
*/
public List get_slaveNames() {
return new AbstractList() {
@@ -229,7 +229,7 @@ public final class ComputerSet extends AbstractModelObject implements Describabl
}
/**
- * First check point in creating a new slave.
+ * First check point in creating a new agent.
*/
public synchronized void doCreateItem( StaplerRequest req, StaplerResponse rsp,
@QueryParameter String name, @QueryParameter String mode,
@@ -278,7 +278,7 @@ public final class ComputerSet extends AbstractModelObject implements Describabl
}
/**
- * Really creates a new slave.
+ * Really creates a new agent.
*/
public synchronized void doDoCreateItem( StaplerRequest req, StaplerResponse rsp,
@QueryParameter String name,
@@ -295,12 +295,12 @@ public final class ComputerSet extends AbstractModelObject implements Describabl
Node result = NodeDescriptor.all().find(type).newInstance(req, formData);
app.addNode(result);
- // take the user back to the slave list top page
+ // take the user back to the agent list top page
rsp.sendRedirect2(".");
}
/**
- * Makes sure that the given name is good as a slave name.
+ * Makes sure that the given name is good as an agent name.
* @return trimmed name if valid; throws ParseException if not
*/
public String checkName(String name) throws Failure {
@@ -318,7 +318,7 @@ public final class ComputerSet extends AbstractModelObject implements Describabl
}
/**
- * Makes sure that the given name is good as a slave name.
+ * Makes sure that the given name is good as an agent name.
*/
public FormValidation doCheckName(@QueryParameter String value) throws IOException, ServletException {
Jenkins.getInstance().checkPermission(Computer.CREATE);
diff --git a/core/src/main/java/hudson/model/Fingerprint.java b/core/src/main/java/hudson/model/Fingerprint.java
index 6411cf08aa..8cb6347168 100644
--- a/core/src/main/java/hudson/model/Fingerprint.java
+++ b/core/src/main/java/hudson/model/Fingerprint.java
@@ -694,16 +694,24 @@ public class Fingerprint implements ModelObject, Saveable {
try {
if(s.contains("-")) {
String[] tokens = Util.tokenize(s,"-");
- rs.ranges.add(new Range(Integer.parseInt(tokens[0]),Integer.parseInt(tokens[1])+1));
+ if (tokens.length == 2) {
+ rs.ranges.add(new Range(Integer.parseInt(tokens[0]), Integer.parseInt(tokens[1]) + 1));
+ } else {
+ if (!skipError) {
+ throw new IllegalArgumentException(
+ String.format("Unable to parse %s, expected string with a range M-N", list));
+ }
+ // ignore malformed text like "1-10-50"
+ }
} else {
int n = Integer.parseInt(s);
rs.ranges.add(new Range(n,n+1));
}
} catch (NumberFormatException e) {
if (!skipError)
- throw new IllegalArgumentException("Unable to parse "+list);
+ throw new IllegalArgumentException(
+ String.format("Unable to parse %s, expected number", list));
// ignore malformed text
-
}
}
return rs;
diff --git a/core/src/main/java/hudson/model/Hudson.java b/core/src/main/java/hudson/model/Hudson.java
index 9792d38e1c..4234697923 100644
--- a/core/src/main/java/hudson/model/Hudson.java
+++ b/core/src/main/java/hudson/model/Hudson.java
@@ -106,7 +106,7 @@ public class Hudson extends Jenkins {
}
/**
- * Gets the slave node of the give name, hooked under this Hudson.
+ * Gets the agent of the give name, hooked under this Hudson.
*
* @deprecated
* Use {@link #getNode(String)}. Since 1.252.
@@ -129,7 +129,7 @@ public class Hudson extends Jenkins {
}
/**
- * Updates the slave list.
+ * Updates the agent list.
*
* @deprecated
* Use {@link #setNodes(List)}. Since 1.252.
diff --git a/core/src/main/java/hudson/model/Label.java b/core/src/main/java/hudson/model/Label.java
index ff32c1f940..74a9fa6901 100644
--- a/core/src/main/java/hudson/model/Label.java
+++ b/core/src/main/java/hudson/model/Label.java
@@ -237,8 +237,8 @@ public abstract class Label extends Actionable implements Comparable, Mod
*
* The answer is yes if there is a reasonable basis to believe that Hudson can have
* an executor under this label, given the current configuration. This includes
- * situations such as (1) there are offline slaves that have this label (2) clouds exist
- * that can provision slaves that have this label.
+ * situations such as (1) there are offline agents that have this label (2) clouds exist
+ * that can provision agents that have this label.
*/
public boolean isAssignable() {
for (Node n : getNodes())
diff --git a/core/src/main/java/hudson/model/LoadStatistics.java b/core/src/main/java/hudson/model/LoadStatistics.java
index cd72f87b7a..f185715654 100644
--- a/core/src/main/java/hudson/model/LoadStatistics.java
+++ b/core/src/main/java/hudson/model/LoadStatistics.java
@@ -390,7 +390,7 @@ public abstract class LoadStatistics {
Jenkins j = Jenkins.getInstance();
List bis = j.getQueue().getBuildableItems();
- // update statistics on slaves
+ // update statistics on agents
for( Label l : j.getLabels() ) {
l.loadStatistics.updateCounts(l.loadStatistics.computeSnapshot(bis));
}
@@ -421,7 +421,7 @@ public abstract class LoadStatistics {
private static final long serialVersionUID = 1L;
/**
- * The total number of executors that Jenkins currently knows, this includes all off-line slaves.
+ * The total number of executors that Jenkins currently knows, this includes all off-line agents.
*/
private final int definedExecutors;
/**
@@ -467,7 +467,7 @@ public abstract class LoadStatistics {
}
/**
- * The total number of executors that Jenkins currently knows, this includes all off-line slaves.
+ * The total number of executors that Jenkins currently knows, this includes all off-line agents.
*/
@Exported
public int getDefinedExecutors() {
diff --git a/core/src/main/java/hudson/model/Node.java b/core/src/main/java/hudson/model/Node.java
index 424369eb19..df2ef871fc 100644
--- a/core/src/main/java/hudson/model/Node.java
+++ b/core/src/main/java/hudson/model/Node.java
@@ -72,7 +72,7 @@ import org.kohsuke.stapler.export.Exported;
import org.kohsuke.stapler.export.ExportedBean;
/**
- * Base type of Jenkins slaves (although in practice, you probably extend {@link Slave} to define a new slave type).
+ * Base type of Jenkins agents (although in practice, you probably extend {@link Slave} to define a new agent type).
*
*
* As a special case, {@link Jenkins} extends from here.
@@ -83,7 +83,7 @@ import org.kohsuke.stapler.export.ExportedBean;
*
*
* There is no URL binding for {@link Node}. {@link Computer} and {@link TransientComputerActionFactory} must
- * be used to associate new {@link Action}s to slaves.
+ * be used to associate new {@link Action}s to agents.
*
* @author Kohsuke Kawaguchi
* @see NodeDescriptor
@@ -95,7 +95,7 @@ public abstract class Node extends AbstractModelObject implements Reconfigurable
private static final Logger LOGGER = Logger.getLogger(Node.class.getName());
/**
- * Newly copied slaves get this flag set, so that Jenkins doesn't try to start/remove this node until its configuration
+ * Newly copied agents get this flag set, so that Jenkins doesn't try to start/remove this node until its configuration
* is saved once.
*/
protected volatile transient boolean holdOffLaunchUntilSave;
@@ -216,7 +216,7 @@ public abstract class Node extends AbstractModelObject implements Reconfigurable
protected abstract Computer createComputer();
/**
- * Returns {@code true} if the node is accepting tasks. Needed to allow slaves programmatic suspension of task
+ * Returns {@code true} if the node is accepting tasks. Needed to allow agents programmatic suspension of task
* scheduling that does not overlap with being offline. Called by {@link Computer#isAcceptingTasks()}.
* This method is distinct from {@link Computer#isAcceptingTasks()} as sometimes the {@link Node} concrete
* class may not have control over the {@link hudson.model.Computer} concrete class associated with it.
@@ -281,7 +281,7 @@ public abstract class Node extends AbstractModelObject implements Reconfigurable
* {@link LabelFinder} extension point.
*
* This method has a side effect of updating the hudson-wide set of labels
- * and should be called after events that will change that - e.g. a slave
+ * and should be called after events that will change that - e.g. a agent
* connecting.
*/
@Exported
@@ -499,7 +499,7 @@ public abstract class Node extends AbstractModelObject implements Reconfigurable
public abstract NodeDescriptor getDescriptor();
/**
- * Estimates the clock difference with this slave.
+ * Estimates the clock difference with this agent.
*
* @return
* always non-null.
@@ -524,7 +524,7 @@ public abstract class Node extends AbstractModelObject implements Reconfigurable
public abstract Callable getClockDifferenceCallable();
/**
- * Constants that control how Hudson allocates jobs to slaves.
+ * Constants that control how Hudson allocates jobs to agents.
*/
public enum Mode {
NORMAL(Messages._Node_Mode_NORMAL()),
diff --git a/core/src/main/java/hudson/model/OverallLoadStatistics.java b/core/src/main/java/hudson/model/OverallLoadStatistics.java
index 0f10e12ae8..e95174d0ca 100644
--- a/core/src/main/java/hudson/model/OverallLoadStatistics.java
+++ b/core/src/main/java/hudson/model/OverallLoadStatistics.java
@@ -32,7 +32,7 @@ import org.kohsuke.accmod.restrictions.NoExternalUse;
import org.kohsuke.stapler.export.Exported;
/**
- * {@link LoadStatistics} for the entire system (the master and all the slaves combined),
+ * {@link LoadStatistics} for the entire system (the master and all the agents combined),
* and all the jobs that are running on it.
*
* @author Kohsuke Kawaguchi
diff --git a/core/src/main/java/hudson/model/Queue.java b/core/src/main/java/hudson/model/Queue.java
index 3976b8c69a..b92a05f855 100644
--- a/core/src/main/java/hudson/model/Queue.java
+++ b/core/src/main/java/hudson/model/Queue.java
@@ -171,13 +171,6 @@ import org.kohsuke.stapler.interceptor.RequirePOST;
@ExportedBean
public class Queue extends ResourceController implements Saveable {
- /**
- * Defines the refresh period for of the internal cache ({@link #itemsView}).
- * Data should be defined in milliseconds, default value - 1000;
- * @since 1.577
- */
- private static int CACHE_REFRESH_PERIOD = Integer.getInteger(Queue.class.getName() + ".cacheRefreshPeriod", 1000);
-
/**
* Items that are waiting for its quiet period to pass.
*
@@ -218,41 +211,6 @@ public class Queue extends ResourceController implements Saveable {
*/
private final Cache leftItems = CacheBuilder.newBuilder().expireAfterWrite(5*60, TimeUnit.SECONDS).build();
- private final CachedItemList itemsView = new CachedItemList();
-
- /**
- * Maintains a copy of {@link Queue#getItems()}
- *
- * @see Queue#getApproximateItemsQuickly()
- */
- private class CachedItemList {
- /**
- * The current cached value.
- */
- @CopyOnWrite
- private volatile List- itemsView = Collections.emptyList();
- /**
- * When does the cache info expire?
- */
- private final AtomicLong expires = new AtomicLong();
-
- List
- get() {
- long t = System.currentTimeMillis();
- long d = expires.get();
- if (t>d) {// need to refresh the cache
- long next = t+CACHE_REFRESH_PERIOD;
- if (expires.compareAndSet(d,next)) {
- // avoid concurrent cache update via CAS.
- // if the getItems() lock is contended,
- // some threads will end up serving stale data,
- // but that's OK.
- itemsView = ImmutableList.copyOf(getItems());
- }
- }
- return itemsView;
- }
- }
-
/**
* Data structure created for each idle {@link Executor}.
* This is a job offer from the queue to an executor.
@@ -864,9 +822,11 @@ public class Queue extends ResourceController implements Saveable {
* This method is primarily added to make UI threads run faster.
*
* @since 1.483
+ * @deprecated Use {@link #getItems()} directly. As of 1.607 the approximation is no longer needed.
*/
+ @Deprecated
public List
- getApproximateItemsQuickly() {
- return itemsView.get();
+ return Arrays.asList(getItems());
}
public Item getItem(long id) {
@@ -2518,7 +2478,7 @@ public class Queue extends ResourceController implements Saveable {
Label label = getAssignedLabel();
List
allNodes = jenkins.getNodes();
if (allNodes.isEmpty())
- label = null; // no master/slave. pointless to talk about nodes
+ label = null; // no master/agent. pointless to talk about nodes
if (label != null) {
Set nodes = label.getNodes();
diff --git a/core/src/main/java/hudson/model/Result.java b/core/src/main/java/hudson/model/Result.java
index 02e71f3ff3..8b1d05fc4b 100644
--- a/core/src/main/java/hudson/model/Result.java
+++ b/core/src/main/java/hudson/model/Result.java
@@ -161,7 +161,7 @@ public final class Result implements Serializable, CustomExportedBean {
return l;
}
- // Maintain each Result as a singleton deserialized (like build result from a slave node)
+ // Maintain each Result as a singleton deserialized (like build result from an agent node)
private Object readResolve() {
for (Result r : all)
if (ordinal==r.ordinal)
diff --git a/core/src/main/java/hudson/model/Run.java b/core/src/main/java/hudson/model/Run.java
index c4f64ccade..229fb82806 100644
--- a/core/src/main/java/hudson/model/Run.java
+++ b/core/src/main/java/hudson/model/Run.java
@@ -624,7 +624,7 @@ public abstract class Run ,RunT extends Run
* Ideally this would have been in the hudson.slaves package,
@@ -81,12 +81,17 @@ import org.kohsuke.stapler.StaplerResponse;
*
*
* TODO: move out more stuff to {@link DumbSlave}.
+ *
+ * On Febrary, 2016 a general renaming was done internally: the "slave" term was replaced by
+ * "Agent". This change was applied in: UI labels/HTML pages, javadocs and log messages.
+ * Java classes, fields, methods, etc were not renamed to avoid compatibility issues.
+ * See JENKINS-27268 .
*
* @author Kohsuke Kawaguchi
*/
public abstract class Slave extends Node implements Serializable {
/**
- * Name of this slave node.
+ * Name of this agent node.
*/
protected String name;
@@ -116,12 +121,12 @@ public abstract class Slave extends Node implements Serializable {
private Mode mode;
/**
- * Slave availablility strategy.
+ * Agent availablility strategy.
*/
private RetentionStrategy retentionStrategy;
/**
- * The starter that will startup this slave.
+ * The starter that will startup this agent.
*/
private ComputerLauncher launcher;
@@ -139,7 +144,7 @@ public abstract class Slave extends Node implements Serializable {
private transient volatile Set labels;
/**
- * Id of user which creates this slave {@link User}.
+ * Id of user which creates this agent {@link User}.
*/
private String userId;
@@ -173,7 +178,7 @@ public abstract class Slave extends Node implements Serializable {
Slave node = (Slave) Jenkins.getInstance().getNode(name);
if(node!=null){
- this.userId= node.getUserId(); //slave has already existed
+ this.userId= node.getUserId(); //agent has already existed
}
else{
User user = User.current();
@@ -190,7 +195,7 @@ public abstract class Slave extends Node implements Serializable {
}
/**
- * Return id of user which created this slave
+ * Return id of user which created this agent
*
* @return id of user
*/
@@ -300,7 +305,7 @@ public abstract class Slave extends Node implements Serializable {
}
/**
- * Root directory on this slave where all the job workspaces are laid out.
+ * Root directory on this agent where all the job workspaces are laid out.
* @return
* null if not connected.
*/
@@ -372,7 +377,7 @@ public abstract class Slave extends Node implements Serializable {
}
/**
- * Creates a launcher for the slave.
+ * Creates a launcher for the agent.
*
* @return
* If there is no computer it will return a {@link hudson.Launcher.DummyLauncher}, otherwise it
@@ -381,7 +386,7 @@ public abstract class Slave extends Node implements Serializable {
public Launcher createLauncher(TaskListener listener) {
SlaveComputer c = getComputer();
if (c == null) {
- listener.error("Issue with creating launcher for slave " + name + ".");
+ listener.error("Issue with creating launcher for agent " + name + ".");
return new Launcher.DummyLauncher(listener);
} else {
return new RemoteLauncher(listener, c.getChannel(), c.isUnix()).decorateFor(this);
@@ -438,7 +443,7 @@ public abstract class Slave extends Node implements Serializable {
}
/**
- * Performs syntactical check on the remote FS for slaves.
+ * Performs syntactical check on the remote FS for agents.
*/
public FormValidation doCheckRemoteFS(@QueryParameter String value) throws IOException, ServletException {
if(Util.fixEmptyAndTrim(value)==null)
diff --git a/core/src/main/java/hudson/model/TaskListener.java b/core/src/main/java/hudson/model/TaskListener.java
index 3ff26c0fff..957e3367d8 100644
--- a/core/src/main/java/hudson/model/TaskListener.java
+++ b/core/src/main/java/hudson/model/TaskListener.java
@@ -37,7 +37,7 @@ import java.io.Serializable;
/**
* Receives events that happen during some lengthy operation
* that has some chance of failures, such as a build, SCM change polling,
- * slave launch, and so on.
+ * agent launch, and so on.
*
*
* This interface is implemented by Hudson core and passed to extension points so that
diff --git a/core/src/main/java/hudson/model/View.java b/core/src/main/java/hudson/model/View.java
index 561d178d73..0cfa562922 100644
--- a/core/src/main/java/hudson/model/View.java
+++ b/core/src/main/java/hudson/model/View.java
@@ -480,6 +480,11 @@ public abstract class View extends AbstractModelObject implements AccessControll
return filterQueue(Arrays.asList(Jenkins.getInstance().getQueue().getItems()));
}
+ /**
+ * @deprecated Use {@link #getQueueItems()}. As of 1.607 the approximation is no longer needed.
+ * @return The items in the queue.
+ */
+ @Deprecated
public List getApproximateQueueItemsQuickly() {
return filterQueue(Jenkins.getInstance().getQueue().getApproximateItemsQuickly());
}
diff --git a/core/src/main/java/hudson/model/WorkspaceBrowser.java b/core/src/main/java/hudson/model/WorkspaceBrowser.java
index 35d6280ded..037420d53d 100644
--- a/core/src/main/java/hudson/model/WorkspaceBrowser.java
+++ b/core/src/main/java/hudson/model/WorkspaceBrowser.java
@@ -33,8 +33,8 @@ import javax.annotation.CheckForNull;
/**
* Allows to access a workspace as an alternative to online build node.
*
- * Primary use case is {@link hudson.slaves.Cloud} implementations that don't keep the slave
- * node online to browse workspace, but maintain a copy of node workspace on master.
+ * Primary use case is {@link hudson.slaves.Cloud} implementations that don't keep the agent
+ * online to browse workspace, but maintain a copy of node workspace on master.
*
* @author Nicolas De Loof
* @since 1.502
diff --git a/core/src/main/java/hudson/model/WorkspaceCleanupThread.java b/core/src/main/java/hudson/model/WorkspaceCleanupThread.java
index 9e83e143e5..14a9bfedcb 100644
--- a/core/src/main/java/hudson/model/WorkspaceCleanupThread.java
+++ b/core/src/main/java/hudson/model/WorkspaceCleanupThread.java
@@ -38,7 +38,7 @@ import jenkins.model.Jenkins;
import jenkins.model.ModifiableTopLevelItemGroup;
/**
- * Clean up old left-over workspaces from slaves.
+ * Clean up old left-over workspaces from agents.
*
* @author Kohsuke Kawaguchi
*/
diff --git a/core/src/main/java/hudson/node_monitors/AbstractAsyncNodeMonitorDescriptor.java b/core/src/main/java/hudson/node_monitors/AbstractAsyncNodeMonitorDescriptor.java
index 054c6e08d7..a825594798 100644
--- a/core/src/main/java/hudson/node_monitors/AbstractAsyncNodeMonitorDescriptor.java
+++ b/core/src/main/java/hudson/node_monitors/AbstractAsyncNodeMonitorDescriptor.java
@@ -20,7 +20,7 @@ import static java.util.logging.Level.WARNING;
/**
* Sophisticated version of {@link AbstractNodeMonitorDescriptor} that
- * performs monitoring on all slaves concurrently and asynchronously.
+ * performs monitoring on all agents concurrently and asynchronously.
*
* @param
* represents the the result of the monitoring.
diff --git a/core/src/main/java/hudson/node_monitors/ArchitectureMonitor.java b/core/src/main/java/hudson/node_monitors/ArchitectureMonitor.java
index ec0618f807..650c24cc04 100644
--- a/core/src/main/java/hudson/node_monitors/ArchitectureMonitor.java
+++ b/core/src/main/java/hudson/node_monitors/ArchitectureMonitor.java
@@ -33,7 +33,7 @@ import org.kohsuke.stapler.StaplerRequest;
import java.io.IOException;
/**
- * Discovers the architecture of the system to display in the slave list page.
+ * Discovers the architecture of the system to display in the agent list page.
*
* @author Kohsuke Kawaguchi
*/
diff --git a/core/src/main/java/hudson/node_monitors/NodeMonitor.java b/core/src/main/java/hudson/node_monitors/NodeMonitor.java
index 9429af2c1b..17ddf7343e 100644
--- a/core/src/main/java/hudson/node_monitors/NodeMonitor.java
+++ b/core/src/main/java/hudson/node_monitors/NodeMonitor.java
@@ -114,11 +114,11 @@ public abstract class NodeMonitor implements ExtensionPoint, Describable
* Many {@link NodeMonitor}s implement a logic that if the value goes above/below
- * a threshold, the slave will be marked offline as a preventive measure.
+ * a threshold, the agent will be marked offline as a preventive measure.
* This flag controls that.
*
*
diff --git a/core/src/main/java/hudson/node_monitors/NodeMonitorUpdater.java b/core/src/main/java/hudson/node_monitors/NodeMonitorUpdater.java
index 9f3b5f19ff..c23b069f8f 100644
--- a/core/src/main/java/hudson/node_monitors/NodeMonitorUpdater.java
+++ b/core/src/main/java/hudson/node_monitors/NodeMonitorUpdater.java
@@ -14,7 +14,7 @@ import java.util.concurrent.TimeUnit;
import jenkins.util.Timer;
/**
- * When a slave is connected, redo the node monitoring.
+ * When an agent is connected, redo the node monitoring.
*
* @author Kohsuke Kawaguchi
*/
@@ -34,7 +34,7 @@ public class NodeMonitorUpdater extends ComputerListener {
/**
* Triggers the update with 5 seconds quiet period, to avoid triggering data check too often
- * when multiple slaves become online at about the same time.
+ * when multiple agents become online at about the same time.
*/
@Override
public void onOnline(Computer c, TaskListener listener) throws IOException, InterruptedException {
diff --git a/core/src/main/java/hudson/node_monitors/ResponseTimeMonitor.java b/core/src/main/java/hudson/node_monitors/ResponseTimeMonitor.java
index af1c3a79e4..652b2217fb 100644
--- a/core/src/main/java/hudson/node_monitors/ResponseTimeMonitor.java
+++ b/core/src/main/java/hudson/node_monitors/ResponseTimeMonitor.java
@@ -40,7 +40,7 @@ import org.kohsuke.stapler.export.Exported;
import org.kohsuke.stapler.export.ExportedBean;
/**
- * Monitors the round-trip response time to this slave.
+ * Monitors the round-trip response time to this agent.
*
* @author Kohsuke Kawaguchi
*/
@@ -64,9 +64,9 @@ public class ResponseTimeMonitor extends NodeMonitor {
}
if(d.hasTooManyTimeouts() && !isIgnored()) {
- // unlike other monitors whose failure still allow us to communicate with the slave,
+ // unlike other monitors whose failure still allow us to communicate with the agent,
// the failure in this monitor indicates that we are just unable to make any requests
- // to this slave. So we should severe the connection, as opposed to marking it temporarily
+ // to this agent. So we should severe the connection, as opposed to marking it temporarily
// off line, which still keeps the underlying channel open.
c.disconnect(d);
LOGGER.warning(Messages.ResponseTimeMonitor_MarkedOffline(c.getName()));
diff --git a/core/src/main/java/hudson/node_monitors/package.html b/core/src/main/java/hudson/node_monitors/package.html
index e7c11a0742..e178fe411c 100644
--- a/core/src/main/java/hudson/node_monitors/package.html
+++ b/core/src/main/java/hudson/node_monitors/package.html
@@ -23,5 +23,5 @@ THE SOFTWARE.
-->
-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/csrf/DefaultCrumbIssuer.java b/core/src/main/java/hudson/security/csrf/DefaultCrumbIssuer.java
index b801866fa6..35447865e8 100644
--- a/core/src/main/java/hudson/security/csrf/DefaultCrumbIssuer.java
+++ b/core/src/main/java/hudson/security/csrf/DefaultCrumbIssuer.java
@@ -5,6 +5,7 @@
*/
package hudson.security.csrf;
+import java.nio.charset.Charset;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.logging.Level;
@@ -95,7 +96,9 @@ public class DefaultCrumbIssuer extends CrumbIssuer {
if (request instanceof HttpServletRequest) {
String newCrumb = issueCrumb(request, salt);
if ((newCrumb != null) && (crumb != null)) {
- return newCrumb.equals(crumb);
+ // String.equals() is not constant-time, but this is
+ return MessageDigest.isEqual(newCrumb.getBytes(Charset.forName("US-ASCII")),
+ crumb.getBytes(Charset.forName("US-ASCII")));
}
}
return false;
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 b51ea86df2..23d4a6e872 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.getInstance()!=null)
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/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/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/StreamTaskListener.java b/core/src/main/java/hudson/util/StreamTaskListener.java
index 4d6aea568d..5e4a294fb0 100644
--- a/core/src/main/java/hudson/util/StreamTaskListener.java
+++ b/core/src/main/java/hudson/util/StreamTaskListener.java
@@ -28,8 +28,6 @@ import hudson.console.ConsoleNote;
import hudson.console.HudsonExceptionNote;
import hudson.model.TaskListener;
import hudson.remoting.RemoteOutputStream;
-import org.kohsuke.stapler.framework.io.WriterOutputStream;
-
import java.io.Closeable;
import java.io.File;
import java.io.FileOutputStream;
@@ -46,6 +44,7 @@ import java.io.Writer;
import java.nio.charset.Charset;
import java.util.logging.Level;
import java.util.logging.Logger;
+import org.kohsuke.stapler.framework.io.WriterOutputStream;
/**
* {@link TaskListener} that generates output into a single stream.
@@ -98,6 +97,22 @@ public class StreamTaskListener extends AbstractTaskListener implements Serializ
this(new FileOutputStream(out),charset);
}
+ /**
+ * Constructs a {@link StreamTaskListener} that sends the output to a specified file.
+ *
+ * @param out the file.
+ * @param append if {@code true}, then output will be written to the end of the file rather than the beginning.
+ * @param charset if non-{@code null} then the charset to use when writing.
+ * @throws IOException if the file could not be opened.
+ * @since 1.651
+ */
+ public StreamTaskListener(File out, boolean append, Charset charset) throws IOException {
+ // don't do buffering so that what's written to the listener
+ // gets reflected to the file immediately, which can then be
+ // served to the browser immediately
+ this(new FileOutputStream(out, append),charset);
+ }
+
public StreamTaskListener(Writer w) throws IOException {
this(new WriterOutputStream(w));
}
diff --git a/core/src/main/java/hudson/util/XStream2.java b/core/src/main/java/hudson/util/XStream2.java
index 325f4a8556..bfe924e70a 100644
--- a/core/src/main/java/hudson/util/XStream2.java
+++ b/core/src/main/java/hudson/util/XStream2.java
@@ -47,6 +47,7 @@ import edu.umd.cs.findbugs.annotations.SuppressWarnings;
import hudson.PluginManager;
import hudson.PluginWrapper;
import hudson.diagnosis.OldDataMonitor;
+import hudson.remoting.ClassFilter;
import hudson.util.xstream.ImmutableSetConverter;
import hudson.util.xstream.ImmutableSortedSetConverter;
import jenkins.model.Jenkins;
@@ -159,6 +160,8 @@ public class XStream2 extends XStream {
// but before reflection-based one kicks in.
registerConverter(new AssociatedConverterImpl(this), -10);
+ registerConverter(new BlacklistedTypesConverter(), PRIORITY_VERY_HIGH); // SECURITY-247 defense
+
registerConverter(new DynamicProxyConverter(getMapper()) { // SECURITY-105 defense
@Override public boolean canConvert(Class type) {
return /* this precedes NullConverter */ type != null && super.canConvert(type);
@@ -434,4 +437,30 @@ public class XStream2 extends XStream {
}
+ private static class BlacklistedTypesConverter implements Converter {
+ @Override
+ public void marshal(Object source, HierarchicalStreamWriter writer, MarshallingContext context) {
+ throw new UnsupportedOperationException("Refusing to marshal " + source.getClass().getName() + " for security reasons");
+ }
+
+ @Override
+ public Object unmarshal(HierarchicalStreamReader reader, UnmarshallingContext context) {
+ throw new ConversionException("Refusing to unmarshal " + reader.getNodeName() + " for security reasons");
+ }
+
+ @Override
+ public boolean canConvert(Class type) {
+ if (type == null) {
+ return false;
+ }
+ try {
+ ClassFilter.DEFAULT.check(type);
+ ClassFilter.DEFAULT.check(type.getName());
+ } catch (SecurityException se) {
+ // claim we can convert all the scary stuff so we can throw exceptions when attempting to do so
+ return true;
+ }
+ return false;
+ }
+ }
}
diff --git a/core/src/main/java/hudson/util/jna/InitializationErrorInvocationHandler.java b/core/src/main/java/hudson/util/jna/InitializationErrorInvocationHandler.java
index 5e6ad17a7f..c23343c15c 100644
--- a/core/src/main/java/hudson/util/jna/InitializationErrorInvocationHandler.java
+++ b/core/src/main/java/hudson/util/jna/InitializationErrorInvocationHandler.java
@@ -12,7 +12,6 @@ import java.lang.reflect.Proxy;
*
* @author Kohsuke Kawaguchi
* @since 1.487
- * @see Related bug report against JDK
*/
public class InitializationErrorInvocationHandler implements InvocationHandler {
private final Throwable cause;
diff --git a/core/src/main/java/hudson/widgets/BuildHistoryWidget.java b/core/src/main/java/hudson/widgets/BuildHistoryWidget.java
index c55da23e57..4b963d7d67 100644
--- a/core/src/main/java/hudson/widgets/BuildHistoryWidget.java
+++ b/core/src/main/java/hudson/widgets/BuildHistoryWidget.java
@@ -63,7 +63,7 @@ public class BuildHistoryWidget extends HistoryWidget {
*/
public List- getQueuedItems() {
LinkedList
- list = new LinkedList
- ();
- for (Item item : Jenkins.getInstance().getQueue().getApproximateItemsQuickly()) {
+ for (Item item : Jenkins.getInstance().getQueue().getItems()) {
if (item.task == owner) {
list.addFirst(item);
}
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/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/Jenkins.java b/core/src/main/java/jenkins/model/Jenkins.java
index 081b9e4b24..60154b64fe 100644
--- a/core/src/main/java/jenkins/model/Jenkins.java
+++ b/core/src/main/java/jenkins/model/Jenkins.java
@@ -570,7 +570,7 @@ public class Jenkins extends AbstractCIBase implements DirectlyModifiableTopLeve
private transient final CopyOnWriteList 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);
@@ -600,7 +600,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.
*
@@ -620,7 +620,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
@@ -775,7 +775,7 @@ public class Jenkins extends AbstractCIBase implements DirectlyModifiableTopLeve
}
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}";
}
@@ -1026,8 +1026,8 @@ public class Jenkins extends AbstractCIBase implements DirectlyModifiableTopLeve
}
} catch (BindException e) {
new AdministrativeError(administrativeMonitorId,
- "Failed to listen to incoming slave connection",
- "Failed to listen to incoming slave connection. Change the port number to solve the problem.", e);
+ "Failed to listen to incoming agent connection",
+ "Failed to listen to incoming agent connection. Change the port number to solve the problem.", e);
}
}
}
@@ -1747,7 +1747,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);
@@ -2784,7 +2784,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();
}
@@ -3095,10 +3095,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);
@@ -3279,7 +3279,7 @@ public class Jenkins extends AbstractCIBase implements DirectlyModifiableTopLeve
}
/**
- * Serves jar files for JNLP slave agents.
+ * Serves jar files for JNLP agents.
*/
public Slave.JnlpJar getJnlpJars(String fileName) {
return new Slave.JnlpJar(fileName);
@@ -4335,7 +4335,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;
@@ -4394,7 +4394,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/security/ApiTokenProperty.java b/core/src/main/java/jenkins/security/ApiTokenProperty.java
index 8aef388cbd..82d3d9616e 100644
--- a/core/src/main/java/jenkins/security/ApiTokenProperty.java
+++ b/core/src/main/java/jenkins/security/ApiTokenProperty.java
@@ -41,6 +41,8 @@ import org.kohsuke.stapler.StaplerRequest;
import org.kohsuke.stapler.StaplerResponse;
import java.io.IOException;
+import java.nio.charset.Charset;
+import java.security.MessageDigest;
import java.security.SecureRandom;
import javax.annotation.Nonnull;
import org.apache.commons.lang.StringUtils;
@@ -109,7 +111,10 @@ public class ApiTokenProperty extends UserProperty {
}
public boolean matchesPassword(String password) {
- return getApiTokenInsecure().equals(password);
+ String token = getApiTokenInsecure();
+ // String.equals isn't constant time, but this is
+ return MessageDigest.isEqual(password.getBytes(Charset.forName("US-ASCII")),
+ token.getBytes(Charset.forName("US-ASCII")));
}
private boolean hasPermissionToSeeToken() {
diff --git a/core/src/main/java/jenkins/security/ChannelConfigurator.java b/core/src/main/java/jenkins/security/ChannelConfigurator.java
index a371ae5401..fd7c26e229 100644
--- a/core/src/main/java/jenkins/security/ChannelConfigurator.java
+++ b/core/src/main/java/jenkins/security/ChannelConfigurator.java
@@ -30,7 +30,7 @@ public abstract class ChannelConfigurator implements ExtensionPoint {
*
*
* {@link SlaveComputer}
- * When a channel is being established to talk to a slave.
+ * When a channel is being established to talk to a agent.
*
*/
public void onChannelBuilding(ChannelBuilder builder, @Nullable Object context) {}
diff --git a/core/src/main/java/jenkins/security/MasterToSlaveCallable.java b/core/src/main/java/jenkins/security/MasterToSlaveCallable.java
index 29837e973a..e348ec1e49 100644
--- a/core/src/main/java/jenkins/security/MasterToSlaveCallable.java
+++ b/core/src/main/java/jenkins/security/MasterToSlaveCallable.java
@@ -5,7 +5,7 @@ import org.jenkinsci.remoting.RoleChecker;
/**
- * Convenient {@link Callable} meant to be run on slave.
+ * Convenient {@link Callable} meant to be run on agent.
*
* @author Kohsuke Kawaguchi
* @since 1.THU
diff --git a/core/src/main/java/jenkins/security/Roles.java b/core/src/main/java/jenkins/security/Roles.java
index cca26873a5..ada2ca96c0 100644
--- a/core/src/main/java/jenkins/security/Roles.java
+++ b/core/src/main/java/jenkins/security/Roles.java
@@ -7,7 +7,7 @@ import org.jenkinsci.remoting.Role;
*
*
* In Jenkins, there is really only one interesting role, which is the Jenkins master.
- * Slaves, CLI, and Maven processes are all going to load classes from the master,
+ * Agents, CLI, and Maven processes are all going to load classes from the master,
* which means it accepts anything that the master asks for, and thus they need
* not have any role.
*
@@ -16,14 +16,14 @@ import org.jenkinsci.remoting.Role;
*/
public class Roles {
/**
- * Indicates that a callable runs on masters, requested by slaves/CLI/maven/whatever.
+ * Indicates that a callable runs on masters, requested by agents/CLI/maven/whatever.
*/
public static final Role MASTER = new Role("master");
/**
- * Indicates that a callable is meant to run on slaves.
+ * Indicates that a callable is meant to run on agents.
*
- * This isn't used to reject callables to run on the slave, but rather to allow
+ * This isn't used to reject callables to run on the agent, but rather to allow
* the master to promptly reject callables that are really not meant to be run on
* the master (as opposed to ones that do not have that information, which gets
* {@link Role#UNKNOWN})
diff --git a/core/src/main/java/jenkins/security/SlaveToMasterCallable.java b/core/src/main/java/jenkins/security/SlaveToMasterCallable.java
index 2a3a35a42b..34b227c5bf 100644
--- a/core/src/main/java/jenkins/security/SlaveToMasterCallable.java
+++ b/core/src/main/java/jenkins/security/SlaveToMasterCallable.java
@@ -5,7 +5,7 @@ import org.jenkinsci.remoting.RoleChecker;
/**
- * Convenient {@link Callable} that are meant to run on the master (sent by slave/CLI/etc).
+ * Convenient {@link Callable} that are meant to run on the master (sent by agent/CLI/etc).
*
* @author Kohsuke Kawaguchi
* @since 1.THU
diff --git a/core/src/main/java/jenkins/security/s2m/AdminCallableMonitor.java b/core/src/main/java/jenkins/security/s2m/AdminCallableMonitor.java
index d6a483af76..c93a8d0055 100644
--- a/core/src/main/java/jenkins/security/s2m/AdminCallableMonitor.java
+++ b/core/src/main/java/jenkins/security/s2m/AdminCallableMonitor.java
@@ -38,7 +38,7 @@ public class AdminCallableMonitor extends AdministrativeMonitor {
@Override
public String getDisplayName() {
- return "Slave \u2192 Master Access Control";
+ return "Agent \u2192 Master Access Control";
}
// bind this to URL
diff --git a/core/src/main/java/jenkins/security/s2m/CallableDirectionChecker.java b/core/src/main/java/jenkins/security/s2m/CallableDirectionChecker.java
index 706d17c0be..9042f19c3c 100644
--- a/core/src/main/java/jenkins/security/s2m/CallableDirectionChecker.java
+++ b/core/src/main/java/jenkins/security/s2m/CallableDirectionChecker.java
@@ -55,11 +55,11 @@ public class CallableDirectionChecker extends RoleChecker {
if (isWhitelisted(subject,expected)) {
// this subject is dubious, but we are letting it through as per whitelisting
- LOGGER.log(Level.FINE, "Explicitly allowing {0} to be sent from slave to master", name);
+ LOGGER.log(Level.FINE, "Explicitly allowing {0} to be sent from agent to master", name);
return;
}
- throw new SecurityException("Sending " + name + " from slave to master is prohibited.\nSee http://jenkins-ci.org/security-144 for more details");
+ throw new SecurityException("Sending " + name + " from agent to master is prohibited.\nSee http://jenkins-ci.org/security-144 for more details");
}
/**
diff --git a/core/src/main/java/jenkins/security/s2m/DefaultFilePathFilter.java b/core/src/main/java/jenkins/security/s2m/DefaultFilePathFilter.java
index 563d19269e..1cc0944737 100644
--- a/core/src/main/java/jenkins/security/s2m/DefaultFilePathFilter.java
+++ b/core/src/main/java/jenkins/security/s2m/DefaultFilePathFilter.java
@@ -36,7 +36,7 @@ import java.util.logging.Level;
import java.util.logging.Logger;
/**
- * Blocks slaves from writing to files on the master by default (and also provide the kill switch.)
+ * Blocks agents from writing to files on the master by default (and also provide the kill switch.)
*/
@Restricted(DoNotUse.class) // impl
@Extension public class DefaultFilePathFilter extends ChannelConfigurator {
@@ -53,7 +53,7 @@ import java.util.logging.Logger;
new ReflectiveFilePathFilter() {
protected boolean op(String op, File f) throws SecurityException {
if (BYPASS) {
- LOGGER.log(Level.FINE, "slave allowed to {0} {1}", new Object[] {op, f});
+ LOGGER.log(Level.FINE, "agent allowed to {0} {1}", new Object[] {op, f});
return true;
} else {
return false;
diff --git a/core/src/main/java/jenkins/security/s2m/package-info.java b/core/src/main/java/jenkins/security/s2m/package-info.java
index 84875777f6..b0650138bc 100644
--- a/core/src/main/java/jenkins/security/s2m/package-info.java
+++ b/core/src/main/java/jenkins/security/s2m/package-info.java
@@ -1,4 +1,4 @@
/**
- * Slave -> master security.
+ * Agent -> master security.
*/
package jenkins.security.s2m;
diff --git a/core/src/main/java/jenkins/slaves/DefaultJnlpSlaveReceiver.java b/core/src/main/java/jenkins/slaves/DefaultJnlpSlaveReceiver.java
index db08fa3c92..7733f27c02 100644
--- a/core/src/main/java/jenkins/slaves/DefaultJnlpSlaveReceiver.java
+++ b/core/src/main/java/jenkins/slaves/DefaultJnlpSlaveReceiver.java
@@ -18,7 +18,7 @@ import java.util.logging.Level;
import java.util.logging.Logger;
/**
- * Match the name against the slave name and route the incoming JNLP agent as {@link Slave}.
+ * Match the name against the agent name and route the incoming JNLP agent as {@link Slave}.
*
* @author Kohsuke Kawaguchi
* @since 1.561
@@ -55,7 +55,7 @@ public class DefaultJnlpSlaveReceiver extends JnlpAgentReceiver {
}
if (!matchesSecret(nodeName,handshake)) {
- handshake.error(nodeName + " can't be connected since the slave's secret does not match the handshake secret.");
+ handshake.error(nodeName + " can't be connected since the agent's secret does not match the handshake secret.");
return true;
}
@@ -75,7 +75,7 @@ public class DefaultJnlpSlaveReceiver extends JnlpAgentReceiver {
}
/**
- * Called after the client has connected to check if the slave secret matches the handshake secret
+ * Called after the client has connected to check if the agent secret matches the handshake secret
*
* @param nodeName
* Name of the incoming JNLP agent. All {@link JnlpAgentReceiver} shares a single namespace
@@ -85,12 +85,12 @@ public class DefaultJnlpSlaveReceiver extends JnlpAgentReceiver {
* Encapsulation of the interaction with the incoming JNLP agent.
*
* @return
- * true if the slave secret matches the handshake secret, false otherwise.
+ * true if the agent secret matches the handshake secret, false otherwise.
*/
private boolean matchesSecret(String nodeName, JnlpSlaveHandshake handshake){
SlaveComputer computer = (SlaveComputer) Jenkins.getInstance().getComputer(nodeName);
String handshakeSecret = handshake.getRequestProperty("Secret-Key");
- // Verify that the slave secret matches the handshake secret.
+ // Verify that the agent secret matches the handshake secret.
if (!computer.getJnlpMac().equals(handshakeSecret)) {
LOGGER.log(Level.WARNING, "An attempt was made to connect as {0} from {1} with an incorrect secret", new Object[]{nodeName, handshake.getSocket()!=null?handshake.getSocket().getRemoteSocketAddress():null});
return false;
diff --git a/core/src/main/java/jenkins/slaves/EncryptedSlaveAgentJnlpFile.java b/core/src/main/java/jenkins/slaves/EncryptedSlaveAgentJnlpFile.java
index dfdd5de750..feb11427a8 100644
--- a/core/src/main/java/jenkins/slaves/EncryptedSlaveAgentJnlpFile.java
+++ b/core/src/main/java/jenkins/slaves/EncryptedSlaveAgentJnlpFile.java
@@ -44,7 +44,7 @@ public class EncryptedSlaveAgentJnlpFile implements HttpResponse {
*/
private final String viewName;
/**
- * Name of the slave, which is used to determine secret HMAC code.
+ * Name of the agent, which is used to determine secret HMAC code.
*/
private final String slaveName;
/**
diff --git a/core/src/main/java/jenkins/slaves/JnlpAgentReceiver.java b/core/src/main/java/jenkins/slaves/JnlpAgentReceiver.java
index b9ab82e4a3..3526c4a73c 100644
--- a/core/src/main/java/jenkins/slaves/JnlpAgentReceiver.java
+++ b/core/src/main/java/jenkins/slaves/JnlpAgentReceiver.java
@@ -8,7 +8,7 @@ import java.io.IOException;
import java.util.Properties;
/**
- * Receives incoming slaves connecting through {@link JnlpSlaveAgentProtocol2}.
+ * Receives incoming agents connecting through {@link JnlpSlaveAgentProtocol2}.
*
*
* This is useful to establish the communication with other JVMs and use them
diff --git a/core/src/main/java/jenkins/slaves/JnlpSlaveAgentProtocol.java b/core/src/main/java/jenkins/slaves/JnlpSlaveAgentProtocol.java
index b82826fd57..e972209772 100644
--- a/core/src/main/java/jenkins/slaves/JnlpSlaveAgentProtocol.java
+++ b/core/src/main/java/jenkins/slaves/JnlpSlaveAgentProtocol.java
@@ -25,26 +25,26 @@ import java.util.logging.Level;
import java.util.logging.Logger;
/**
- * {@link AgentProtocol} that accepts connection from slave agents.
+ * {@link AgentProtocol} that accepts connection from agents.
*
*
Security
*
- * Once connected, remote slave agents can send in commands to be
+ * Once connected, remote agents can send in commands to be
* executed on the master, so in a way this is like an rsh service.
* Therefore, it is important that we reject connections from
- * unauthorized remote slaves.
+ * unauthorized remote agents.
*
*
- * We do this by computing HMAC of the slave name.
- * This code is sent to the slave inside the .jnlp file
+ * We do this by computing HMAC of the agent name.
+ * This code is sent to the agent inside the .jnlp file
* (this file itself is protected by HTTP form-based authentication that
- * we use everywhere else in Jenkins), and the slave sends this
+ * we use everywhere else in Jenkins), and the agent sends this
* token back when it connects to the master.
- * Unauthorized slaves can't access the protected .jnlp file,
- * so it can't impersonate a valid slave.
+ * Unauthorized agents can't access the protected .jnlp file,
+ * so it can't impersonate a valid agent.
*
*
- * We don't want to force the JNLP slave agents to be restarted
+ * We don't want to force the JNLP agents to be restarted
* whenever the server restarts, so right now this secret master key
* is generated once and used forever, which makes this whole scheme
* less secure.
@@ -96,7 +96,7 @@ public class JnlpSlaveAgentProtocol extends AgentProtocol {
SlaveComputer computer = (SlaveComputer) Jenkins.getInstance().getComputer(nodeName);
if(computer==null) {
- error("No such slave: "+nodeName);
+ error("No such agent: "+nodeName);
return;
}
@@ -139,10 +139,10 @@ public class JnlpSlaveAgentProtocol extends AgentProtocol {
return computer.getChannel();
} catch (AbortException e) {
logw.println(e.getMessage());
- logw.println("Failed to establish the connection with the slave");
+ logw.println("Failed to establish the connection with the agent");
throw e;
} catch (IOException e) {
- logw.println("Failed to establish the connection with the slave " + nodeName);
+ logw.println("Failed to establish the connection with the agent " + nodeName);
e.printStackTrace(logw);
throw e;
}
@@ -152,7 +152,7 @@ public class JnlpSlaveAgentProtocol extends AgentProtocol {
private static final Logger LOGGER = Logger.getLogger(JnlpSlaveAgentProtocol.class.getName());
/**
- * This secret value is used as a seed for slaves.
+ * This secret value is used as a seed for agents.
*/
public static final HMACConfidentialKey SLAVE_SECRET = new HMACConfidentialKey(JnlpSlaveAgentProtocol.class,"secret");
}
diff --git a/core/src/main/java/jenkins/slaves/JnlpSlaveAgentProtocol2.java b/core/src/main/java/jenkins/slaves/JnlpSlaveAgentProtocol2.java
index 658cfedf0b..94bdad7091 100644
--- a/core/src/main/java/jenkins/slaves/JnlpSlaveAgentProtocol2.java
+++ b/core/src/main/java/jenkins/slaves/JnlpSlaveAgentProtocol2.java
@@ -12,7 +12,7 @@ import java.net.Socket;
*
*
* This protocol extends the version 1 protocol by adding a per-client cookie,
- * so that we can detect a reconnection from the slave and take appropriate action,
+ * so that we can detect a reconnection from the agent and take appropriate action,
* when the connection disappeared without the master noticing.
*
* @author Kohsuke Kawaguchi
@@ -45,7 +45,7 @@ public class JnlpSlaveAgentProtocol2 extends JnlpSlaveAgentProtocol {
}
/**
- * Handles JNLP slave agent connection request (v2 protocol)
+ * Handles JNLP agent connection request (v2 protocol)
*/
@Override
protected void run() throws IOException, InterruptedException {
diff --git a/core/src/main/java/jenkins/slaves/JnlpSlaveHandshake.java b/core/src/main/java/jenkins/slaves/JnlpSlaveHandshake.java
index b7c01a239e..341d8c0881 100644
--- a/core/src/main/java/jenkins/slaves/JnlpSlaveHandshake.java
+++ b/core/src/main/java/jenkins/slaves/JnlpSlaveHandshake.java
@@ -17,7 +17,7 @@ import java.util.logging.Level;
import java.util.logging.Logger;
/**
- * Palette of objects to talk to the incoming JNLP slave connection.
+ * Palette of objects to talk to the incoming JNLP agent connection.
*
* @author Kohsuke Kawaguchi
* @since 1.561
@@ -29,7 +29,7 @@ public class JnlpSlaveHandshake {
/*package*/ final NioChannelHub hub;
/**
- * Socket connection to the slave.
+ * Socket connection to the agent.
*/
/*package*/ final Socket socket;
diff --git a/core/src/main/java/jenkins/slaves/WorkspaceLocator.java b/core/src/main/java/jenkins/slaves/WorkspaceLocator.java
index 7c7cb38258..7a99dce1c5 100644
--- a/core/src/main/java/jenkins/slaves/WorkspaceLocator.java
+++ b/core/src/main/java/jenkins/slaves/WorkspaceLocator.java
@@ -8,7 +8,7 @@ import hudson.model.TopLevelItem;
/**
* Allow extensions to override workspace locations
- * on given slaves or projects.
+ * on given agents or projects.
*
* @author ryan.campbell@gmail.com
* @since 1.501
@@ -17,11 +17,11 @@ public abstract class WorkspaceLocator implements ExtensionPoint {
/**
* Allows extensions to customize the workspace path. The first non-null response
- * will determine the path to the workspace on that slave.
+ * will determine the path to the workspace on that agent.
*
* @param item The toplevel item
- * @param node The slave node
- * @return The absolute FilePath to the workspace on the slave.
+ * @param node The agent node
+ * @return The absolute FilePath to the workspace on the agent.
* Will be created if it doesn't exist.
*
*/
diff --git a/core/src/main/java/jenkins/slaves/restarter/JnlpSlaveRestarterInstaller.java b/core/src/main/java/jenkins/slaves/restarter/JnlpSlaveRestarterInstaller.java
index 61e21c4b18..d30d6d2281 100644
--- a/core/src/main/java/jenkins/slaves/restarter/JnlpSlaveRestarterInstaller.java
+++ b/core/src/main/java/jenkins/slaves/restarter/JnlpSlaveRestarterInstaller.java
@@ -21,11 +21,11 @@ import static java.util.logging.Level.*;
import jenkins.security.MasterToSlaveCallable;
/**
- * Actual slave restart logic.
+ * Actual agent restart logic.
*
*
* Use {@link ComputerListener} to install {@link EngineListener}, which in turn gets executed when
- * the slave gets disconnected.
+ * the agent gets disconnected.
*
* @author Kohsuke Kawaguchi
*/
@@ -73,15 +73,15 @@ public class JnlpSlaveRestarterInstaller extends ComputerListener implements Ser
try {
for (SlaveRestarter r : restarters) {
try {
- LOGGER.info("Restarting slave via "+r);
+ LOGGER.info("Restarting agent via "+r);
r.restart();
} catch (Exception x) {
- LOGGER.log(SEVERE, "Failed to restart slave with "+r, x);
+ LOGGER.log(SEVERE, "Failed to restart agent with "+r, x);
}
}
} finally {
// if we move on to the reconnection without restart,
- // don't let the current implementations kick in when the slave loses connection again
+ // don't let the current implementations kick in when the agent loses connection again
restarters.clear();
}
}
diff --git a/core/src/main/java/jenkins/slaves/restarter/SlaveRestarter.java b/core/src/main/java/jenkins/slaves/restarter/SlaveRestarter.java
index 84e88202c9..3484774e8e 100644
--- a/core/src/main/java/jenkins/slaves/restarter/SlaveRestarter.java
+++ b/core/src/main/java/jenkins/slaves/restarter/SlaveRestarter.java
@@ -7,22 +7,22 @@ import java.io.Serializable;
import java.util.logging.Logger;
/**
- * Extension point to control how to restart JNLP slave when it loses the connection with the master.
+ * Extension point to control how to restart JNLP agent when it loses the connection with the master.
*
*
- * Objects are instantiated on the master, then transferred to a slave via serialization.
+ * Objects are instantiated on the master, then transferred to an agent via serialization.
*
* @author Kohsuke Kawaguchi
*/
public abstract class SlaveRestarter implements ExtensionPoint, Serializable {
/**
- * Called on the slave to see if this restarter can work on this slave.
+ * Called on the agent to see if this restarter can work on this agent.
*/
public abstract boolean canWork();
/**
* If {@link #canWork()} method returns true, this method is called later when
- * the connection is lost to restart the slave.
+ * the connection is lost to restart the agent.
*
*
* Note that by the time this method is called, classloader is no longer capable of
@@ -32,8 +32,8 @@ public abstract class SlaveRestarter implements ExtensionPoint, Serializable {
*
*
* This method is not expected to return, and the JVM should terminate before this call returns.
- * If the method returns normally, the JNLP slave will move on to the reconnection without restart.
- * If an exception is thrown, it is reported as an error and then the JNLP slave will move on to the
+ * If the method returns normally, the JNLP agent will move on to the reconnection without restart.
+ * If an exception is thrown, it is reported as an error and then the JNLP agent will move on to the
* reconnection without restart.
*/
public abstract void restart() throws Exception;
diff --git a/core/src/main/java/jenkins/util/io/OnMaster.java b/core/src/main/java/jenkins/util/io/OnMaster.java
index ce84873df8..dccd02d6ce 100644
--- a/core/src/main/java/jenkins/util/io/OnMaster.java
+++ b/core/src/main/java/jenkins/util/io/OnMaster.java
@@ -2,12 +2,12 @@ package jenkins.util.io;
/**
* Marks the objects in Jenkins that only exist in the core
- * and not on slaves.
+ * and not on agents.
*
*
* This marker interface is for plugin developers to quickly
* tell if they can take a specific object from a master to
- * a slave.
+ * an agent.
*
* (Core developers, if you find classes/interfaces that extend
* from this, please be encouraged to add them.)
diff --git a/core/src/main/resources/hudson/Messages_pl.properties b/core/src/main/resources/hudson/Messages_pl.properties
index 3c92922c27..268459378a 100644
--- a/core/src/main/resources/hudson/Messages_pl.properties
+++ b/core/src/main/resources/hudson/Messages_pl.properties
@@ -20,6 +20,14 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
+Util.millisecond={0} ms
+Util.second={0} sek
+Util.minute={0} min
+Util.hour ={0} godz
+Util.day ={0} {0,choice,0#dni|1#dzie\u0144|1Making sure all the needed plugins are installed
- Jenkins uses an XML format for representing most of complex objects internally (such as slaves, views, jobs, and builds.)
+ Jenkins uses an XML format for representing most of complex objects internally (such as agents, views, jobs, and builds.)
As such, it has various APIs that send/receive those XMLs. For example, you can create a new job by POSTing its XML representation.
Starting 1.482, Jenkins annotates these XMLs with additional information indicating what plugins have been used in them.
This improves the portability of those XML files.
diff --git a/core/src/main/resources/hudson/PluginManager/installed_pl.properties b/core/src/main/resources/hudson/PluginManager/installed_pl.properties
index 47bc109f16..df5e363201 100644
--- a/core/src/main/resources/hudson/PluginManager/installed_pl.properties
+++ b/core/src/main/resources/hudson/PluginManager/installed_pl.properties
@@ -25,11 +25,11 @@ Enabled=W\u0142\u0105czone wtyczki
Name=Nazwa
Pinned=Przypi\u0119ta
Previously\ installed\ version=Poprzednia zainstalowana wersja
-Restart\ Once\ No\ Jobs\ Are\ Running=Zrestartuj gdy \u017Cadne zadania nie s\u0105 wykonywane
+Restart\ Once\ No\ Jobs\ Are\ Running=Uruchom ponownie gdy \u017Cadne zadania nie s\u0105 wykonywane
Uncheck\ to\ disable\ the\ plugin=Odznacz aby wy\u0142\u0105czy\u0107 wtyczk\u0119
Uninstall=Odinstaluj
Unpin=Odepnij
Version=Wersja
downgradeTo=Powr\u00F3\u0107 do starszej wersji {0}
requires.restart=Wymagane jest ponowne uruchomienie Jenkinsa. Zmiany wtyczek w tym momencie s\u0105 bardzo niewskazane. Uruchom ponownie Jenkinsa, zanim wprowadzisz zmiany.
-wiki.url=http://wiki.jenkins-ci.org/display/JENKINS/Pinned+Plugins
+wiki.url=http://wiki.jenkins-ci.org/display/JENKINS/Pinned+Plugins
\ No newline at end of file
diff --git a/core/src/main/resources/hudson/model/Slave/help-launcher_fr.properties b/core/src/main/resources/hudson/PluginManager/sidepanel_pl.properties
similarity index 85%
rename from core/src/main/resources/hudson/model/Slave/help-launcher_fr.properties
rename to core/src/main/resources/hudson/PluginManager/sidepanel_pl.properties
index bf30272406..cd9cfbdce1 100644
--- a/core/src/main/resources/hudson/model/Slave/help-launcher_fr.properties
+++ b/core/src/main/resources/hudson/PluginManager/sidepanel_pl.properties
@@ -1,6 +1,6 @@
# The MIT License
#
-# Copyright (c) 2004-2009, Sun Microsystems, Inc., Alan Harder, Eric Lefevre-Ardant
+# Copyright (c) 2004-2016, 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
@@ -20,4 +20,5 @@
# 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.
+Back\ to\ Dashboard=Powr\u00F3t do tablicy
+Manage\ Jenkins=Zarz\u0105dzaj Jenkinsem
diff --git a/core/src/main/resources/hudson/PluginManager/table.properties b/core/src/main/resources/hudson/PluginManager/table.properties
index 0a60d09989..cc7af60893 100644
--- a/core/src/main/resources/hudson/PluginManager/table.properties
+++ b/core/src/main/resources/hudson/PluginManager/table.properties
@@ -27,10 +27,9 @@ coreWarning=\
Warning: This plugin is built for Jenkins {0} or newer. \
It may or may not work in your Jenkins.
depCompatWarning=\
- Warning: This plugin requires dependent plugins be upgraded \
- and some of these dependent plugins are not compatible \
- with the current installed version. Jobs using these \
- dependent plugins may need to be reconfigured.
+ Warning: This plugin requires dependent plugins be upgraded and at least one of these dependent plugins claims to use a different settings format than the installed version. \
+ Jobs using that plugin may need to be reconfigured, and/or you may not be able to cleanly revert to the prior version without manually restoring old settings. \
+ Consult the plugin release notes for details.
depCoreWarning=\
Warning: This plugin requires dependent plugins that are \
built for Jenkins {0} or newer. The dependent plugins may \
diff --git a/core/src/main/resources/hudson/PluginWrapper/uninstall_pl.properties b/core/src/main/resources/hudson/PluginWrapper/uninstall_pl.properties
new file mode 100644
index 0000000000..8ac4bef575
--- /dev/null
+++ b/core/src/main/resources/hudson/PluginWrapper/uninstall_pl.properties
@@ -0,0 +1,3 @@
+msg=Czy na pewno chcesz usun\u0105\u0107 wtyczk\u0119 {0} ? Ta operacja usunie wtyczk\u0119 z folderu $JENKINS_HOME, ale pozostawi pliki konfiguracyjne.
+title=Odinstalowywanie wtyczki {0}
+Yes=Tak
\ No newline at end of file
diff --git a/core/src/main/resources/hudson/ProxyConfiguration/help-name.html b/core/src/main/resources/hudson/ProxyConfiguration/help-name.html
index 858bf03249..53291af38d 100644
--- a/core/src/main/resources/hudson/ProxyConfiguration/help-name.html
+++ b/core/src/main/resources/hudson/ProxyConfiguration/help-name.html
@@ -6,8 +6,8 @@
to install plugins on behalf of you. Note that Jenkins uses HTTPS to communicate with the update center to download plugins.
- The value you submit here will be set as http.proxyHost system property. Leaving this field empty
- causes this property to be unset, which means Jenkins will try to connect to the host directly.
+ Leaving this field empty
+ means Jenkins will try to connect to the internet directly.
If you are unsure about the value, check the browser proxy configuration.
diff --git a/core/src/main/resources/hudson/ProxyConfiguration/help-name_de.html b/core/src/main/resources/hudson/ProxyConfiguration/help-name_de.html
index fb15d38b12..ebab2d935f 100644
--- a/core/src/main/resources/hudson/ProxyConfiguration/help-name_de.html
+++ b/core/src/main/resources/hudson/ProxyConfiguration/help-name_de.html
@@ -9,11 +9,9 @@
und Plugins herunterzuladen.
- Der Wert, den Sie hier angeben, wird als Systemeigenschaft http.proxyHost
- gesetzt. Wenn Sie dieses Feld freilassen, wird die Systemeigenschaft gelöscht.
- Jenkins versucht dann, das Update-Center direkt zu kontaktieren.
+ Wenn Sie dieses Feld freilassen, versucht Jenkins, das Update-Center direkt zu kontaktieren.
Wenn Sie sich nicht sicher sind, was Sie hier eintragen sollen, schauen Sie
in der Proxy-Konfiguration Ihres Browsers nach.
-
\ No newline at end of file
+
diff --git a/core/src/main/resources/hudson/ProxyConfiguration/help-name_fr.html b/core/src/main/resources/hudson/ProxyConfiguration/help-name_fr.html
index 7914a1700d..3c7b727592 100644
--- a/core/src/main/resources/hudson/ProxyConfiguration/help-name_fr.html
+++ b/core/src/main/resources/hudson/ProxyConfiguration/help-name_fr.html
@@ -7,8 +7,7 @@
Notez que Jenkins utilise HTTPS pour communiquer avec le serveur de mise à jour pour télécharger les plugins.
- La valeur placée ici sera positionnée dans la propriété système http.proxyHost .
- Si ce champ est vide, la propriété ne sera pas positionnée; Jenkins tentera donc de se
+ Si ce champ est vide Jenkins tentera de se
connecter directement au site.
diff --git a/core/src/main/resources/hudson/ProxyConfiguration/help-name_tr.html b/core/src/main/resources/hudson/ProxyConfiguration/help-name_tr.html
deleted file mode 100644
index 858bf03249..0000000000
--- a/core/src/main/resources/hudson/ProxyConfiguration/help-name_tr.html
+++ /dev/null
@@ -1,14 +0,0 @@
-
- If your Jenkins server sits behind a firewall and does not have the direct access to the internet,
- and if your server JVM is not configured appropriately
- (
See JDK networking properties for more details )
- to enable internet connection, you can specify the HTTP proxy server name in this field to allow Jenkins
- to install plugins on behalf of you. Note that Jenkins uses HTTPS to communicate with the update center to download plugins.
-
-
- The value you submit here will be set as http.proxyHost system property. Leaving this field empty
- causes this property to be unset, which means Jenkins will try to connect to the host directly.
-
-
- If you are unsure about the value, check the browser proxy configuration.
-
\ No newline at end of file
diff --git a/core/src/main/resources/hudson/TcpSlaveAgentListener/index.jelly b/core/src/main/resources/hudson/TcpSlaveAgentListener/index.jelly
index 9e65250be2..5b70213d5f 100644
--- a/core/src/main/resources/hudson/TcpSlaveAgentListener/index.jelly
+++ b/core/src/main/resources/hudson/TcpSlaveAgentListener/index.jelly
@@ -25,7 +25,7 @@ THE SOFTWARE.
diff --git a/core/src/main/resources/hudson/lifecycle/Messages.properties b/core/src/main/resources/hudson/lifecycle/Messages.properties
index 76609f4b61..0439ce0fca 100644
--- a/core/src/main/resources/hudson/lifecycle/Messages.properties
+++ b/core/src/main/resources/hudson/lifecycle/Messages.properties
@@ -22,7 +22,7 @@
WindowsInstallerLink.DisplayName=Install as Windows Service
WindowsInstallerLink.Description=Installs Jenkins as a Windows service to this system, so that Jenkins starts automatically when the machine boots.
-WindowsSlaveInstaller.ConfirmInstallation=This will install a slave agent as a Windows service, so that a Jenkins slave starts automatically when the machine boots.
+WindowsSlaveInstaller.ConfirmInstallation=This will install an agent as a Windows service, so that a Jenkins agent starts automatically when the machine boots.
WindowsSlaveInstaller.DotNetRequired=.NET Framework 2.0 or later is required for this feature
WindowsSlaveInstaller.InstallationSuccessful=Installation was successful. Would you like to start the service now?
-WindowsSlaveInstaller.RootFsDoesntExist=Slave root directory \u2018{0}\u2019 doesn\u2019t exist
\ No newline at end of file
+WindowsSlaveInstaller.RootFsDoesntExist=Agent root directory \u2018{0}\u2019 doesn\u2019t exist
\ No newline at end of file
diff --git a/core/src/main/resources/hudson/lifecycle/Messages_bg.properties b/core/src/main/resources/hudson/lifecycle/Messages_bg.properties
index 9c994c04f8..16317ae27b 100644
--- a/core/src/main/resources/hudson/lifecycle/Messages_bg.properties
+++ b/core/src/main/resources/hudson/lifecycle/Messages_bg.properties
@@ -25,9 +25,6 @@ WindowsInstallerLink.DisplayName=\
WindowsInstallerLink.Description=\
\u0418\u043d\u0441\u0442\u0430\u043b\u0438\u0440\u0430\u043d\u0435 \u043d\u0430 Jenkins \u043a\u0430\u0442\u043e \u0443\u0441\u043b\u0443\u0433\u0430 \u043d\u0430 \u0438\u043d\u0441\u0442\u0430\u043b\u0438\u0440\u0430\u043d\u0438\u044f \u043d\u0430 \u0442\u0430\u0437\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u0430 Windows, \u0437\u0430\
\u0434\u0430 \u043c\u043e\u0436\u0435 \u0442\u043e\u0439 \u0434\u0430 \u0441\u0435 \u0441\u0442\u0430\u0440\u0442\u0438\u0440\u0430 \u0437\u0430\u0435\u0434\u043d\u043e \u0441 \u043c\u0430\u0448\u0438\u043d\u0430\u0442\u0430.
-WindowsSlaveInstaller.ConfirmInstallation=\
- \u0422\u043e\u0432\u0430 \u0449\u0435 \u0438\u043d\u0441\u0442\u0430\u043b\u0438\u0440\u0430 \u043f\u043e\u0434\u0447\u0438\u043d\u0435\u043d \u0430\u0433\u0435\u043d\u0442 \u043a\u0430\u0442\u043e \u0443\u0441\u043b\u0443\u0433\u0430 \u043d\u0430 \u0438\u043d\u0441\u0442\u0430\u043b\u0438\u0440\u0430\u043d\u0438\u044f \u043d\u0430 \u0442\u0430\u0437\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u0430\
- Windows, \u0437\u0430 \u0434\u0430 \u043c\u043e\u0436\u0435 \u0442\u043e\u0439 \u0434\u0430 \u0441\u0435 \u0441\u0442\u0430\u0440\u0442\u0438\u0440\u0430 \u0437\u0430\u0435\u0434\u043d\u043e \u0441 \u043c\u0430\u0448\u0438\u043d\u0430\u0442\u0430.
WindowsSlaveInstaller.DotNetRequired=\
\u0417\u0430 \u0442\u043e\u0432\u0430 \u0441\u0435 \u0438\u0437\u0438\u0441\u043a\u0432\u0430 .NET Framework, \u0432\u0435\u0440\u0441\u0438\u044f 2.0 \u0438\u043b\u0438 \u043f\u043e-\u0432\u0438\u0441\u043e\u043a\u0430
WindowsSlaveInstaller.InstallationSuccessful=\
diff --git a/core/src/main/resources/hudson/lifecycle/Messages_da.properties b/core/src/main/resources/hudson/lifecycle/Messages_da.properties
index 6cb6cfec1a..f6efe70ed1 100644
--- a/core/src/main/resources/hudson/lifecycle/Messages_da.properties
+++ b/core/src/main/resources/hudson/lifecycle/Messages_da.properties
@@ -22,7 +22,5 @@
WindowsInstallerLink.DisplayName=Installer som Windows service
WindowsSlaveInstaller.DotNetRequired=Denne feature kr\u00e6ver .NET framework 2.0 eller nyere
-WindowsSlaveInstaller.RootFsDoesntExist=Slave roddirektorie ''{0}'' findes ikke
WindowsSlaveInstaller.InstallationSuccessful=Installationen lykkedes. Vil du gerne starte service''en nu ?
WindowsInstallerLink.Description=Installerer Jenkins som en Windows service p\u00e5 denne computer, s\u00e5 Jenkins starter automatisk n\u00e5r computeren starter op.
-WindowsSlaveInstaller.ConfirmInstallation=Dette vil installere en Jenkins slave agent som en Windows service, s\u00e5 Jenkins slaven vil starte automatisk n\u00e5r computeren starter op.
diff --git a/core/src/main/resources/hudson/lifecycle/Messages_de.properties b/core/src/main/resources/hudson/lifecycle/Messages_de.properties
index 83960e0ee6..76ac1a4776 100644
--- a/core/src/main/resources/hudson/lifecycle/Messages_de.properties
+++ b/core/src/main/resources/hudson/lifecycle/Messages_de.properties
@@ -24,7 +24,5 @@ WindowsInstallerLink.DisplayName=Als Windows-Dienst installieren
WindowsInstallerLink.Description=\
Installiert Jenkins als Windows-Dienst: Dadurch wird Jenkins \
automatisch nach einem Neustart des Rechners gestartet.
-WindowsSlaveInstaller.ConfirmInstallation=Dies installiert einen Slave-Agent als Windows-Dienst.
WindowsSlaveInstaller.DotNetRequired=.NET Framework 2.0 oder höher ist für dieses Funktionsmerkmal erforderlich.
WindowsSlaveInstaller.InstallationSuccessful=Installation erfolgreich. Möchten Sie den Dienst jetzt starten?
-WindowsSlaveInstaller.RootFsDoesntExist=Stammverzeichnis ''{0}'' existiert auf dem Slave-Knoten nicht.
\ No newline at end of file
diff --git a/core/src/main/resources/hudson/lifecycle/Messages_es.properties b/core/src/main/resources/hudson/lifecycle/Messages_es.properties
index e4618b85a4..2a1031893c 100644
--- a/core/src/main/resources/hudson/lifecycle/Messages_es.properties
+++ b/core/src/main/resources/hudson/lifecycle/Messages_es.properties
@@ -22,7 +22,7 @@
WindowsInstallerLink.DisplayName=Instalar como un servicio de Windows
WindowsInstallerLink.Description=Instalar Jenkins como un servicio de Windows en este sistema, de manera que Jenkins se inicie cuando el sistema arranque.
-WindowsSlaveInstaller.ConfirmInstallation=Esto instalará el agente esclavo como un servicio de Windows.
+WindowsSlaveInstaller.ConfirmInstallation=Esto instalará el agente como un servicio de Windows.
WindowsSlaveInstaller.DotNetRequired=Es necesario tener instalado: .NET Framework 2.0 o posterior, para que esta característica funcione.
WindowsSlaveInstaller.InstallationSuccessful=La instalación ha sido correcta. ¿Quieres arrancar el servicio ahora?
-WindowsSlaveInstaller.RootFsDoesntExist=El directorio raiz {0} en el esclavo no existe.
+WindowsSlaveInstaller.RootFsDoesntExist=El directorio raiz {0} en el agente no existe.
diff --git a/core/src/main/resources/hudson/lifecycle/Messages_ja.properties b/core/src/main/resources/hudson/lifecycle/Messages_ja.properties
index e157bec5ef..481cbd8d0e 100644
--- a/core/src/main/resources/hudson/lifecycle/Messages_ja.properties
+++ b/core/src/main/resources/hudson/lifecycle/Messages_ja.properties
@@ -22,7 +22,6 @@
WindowsInstallerLink.DisplayName=Windows\u306E\u30B5\u30FC\u30D3\u30B9\u3068\u3057\u3066\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB
WindowsInstallerLink.Description=\u30DE\u30B7\u30F3\u304C\u30D6\u30FC\u30C8\u3057\u305F\u3068\u304D\u306BJenkins\u304C\u81EA\u52D5\u7684\u306B\u958B\u59CB\u3059\u308B\u3088\u3046\u306B\u3001Windows\u306E\u30B5\u30FC\u30D3\u30B9\u3068\u3057\u3066Jenkins\u3092\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u3057\u307E\u3059\u3002
-WindowsSlaveInstaller.ConfirmInstallation=\u30B9\u30EC\u30FC\u30D6\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u3092Windows\u306E\u30B5\u30FC\u30D3\u30B9\u3068\u3057\u3066\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u3057\u307E\u3059\u3002
WindowsSlaveInstaller.DotNetRequired=.NET Framework 2.0 \u4EE5\u964D\u304C\u5FC5\u8981\u3067\u3059\u3002
WindowsSlaveInstaller.InstallationSuccessful=\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u304C\u6210\u529F\u3057\u307E\u3057\u305F\u3002\u4ECA\u3059\u3050\u30B5\u30FC\u30D3\u30B9\u3092\u958B\u59CB\u3057\u307E\u3059\u304B?
-WindowsSlaveInstaller.RootFsDoesntExist=\u30B9\u30EC\u30FC\u30D6\u306E\u30EB\u30FC\u30C8\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA ''{0}'' \u304C\u5B58\u5728\u3057\u307E\u305B\u3093\u3002
\ No newline at end of file
+WindowsSlaveInstaller.RootFsDoesntExist=\u30B9\u30EC\u30FC\u30D6\u306E\u30EB\u30FC\u30C8\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA ''{0}'' \u304C\u5B58\u5728\u3057\u307E\u305B\u3093\u3002
diff --git a/core/src/main/resources/hudson/lifecycle/Messages_pt_BR.properties b/core/src/main/resources/hudson/lifecycle/Messages_pt_BR.properties
index a280eaee0c..e2d80763ab 100644
--- a/core/src/main/resources/hudson/lifecycle/Messages_pt_BR.properties
+++ b/core/src/main/resources/hudson/lifecycle/Messages_pt_BR.properties
@@ -22,12 +22,8 @@
# Install as Windows Service
WindowsInstallerLink.DisplayName=Instalar como um servi\u00e7o do Windows
-# Slave root directory ''{0}'' doesn''t exist
-WindowsSlaveInstaller.RootFsDoesntExist=Diret\u00f3rio slave ''{0}'' n\u00e3o existe
# .NET Framework 2.0 or later is required for this feature
WindowsSlaveInstaller.DotNetRequired=Framework .NET 2.0 ou superior \u00e9 necess\u00e1rio
-# This will install a slave agent as a Windows service, so that a Jenkins slave starts automatically when the machine boots.
-WindowsSlaveInstaller.ConfirmInstallation=Isso instalar\u00e1 o agente slave como um servi\u00e7o do Windows, portanto ser\u00e1 iniciado junto com o Sistema Operacional
# Installation was successful. Would you like to start the service now?
WindowsSlaveInstaller.InstallationSuccessful=Instala\u00e7\u00e3o efetuada com sucesso. Gostaria de iniciar o servi\u00e7o agora?
# Installs Jenkins as a Windows service to this system, so that Jenkins starts automatically when the machine boots.
diff --git a/core/src/main/resources/hudson/lifecycle/Messages_zh_TW.properties b/core/src/main/resources/hudson/lifecycle/Messages_zh_TW.properties
index 261fc2d0f2..6986de32c6 100644
--- a/core/src/main/resources/hudson/lifecycle/Messages_zh_TW.properties
+++ b/core/src/main/resources/hudson/lifecycle/Messages_zh_TW.properties
@@ -22,7 +22,5 @@
WindowsInstallerLink.DisplayName=\u5b89\u88dd\u6210 Windows \u670d\u52d9
WindowsInstallerLink.Description=\u5c07 Jenkins \u5b89\u88dd\u6210 Windows \u670d\u52d9\uff0c\u958b\u6a5f\u5f8c Jenkins \u5c31\u6703\u81ea\u52d5\u555f\u52d5\u3002
-WindowsSlaveInstaller.ConfirmInstallation=\u5c07\u628a Slave \u4ee3\u7406\u7a0b\u5f0f\u5b89\u88dd\u6210 Windows \u670d\u52d9\uff0c\u958b\u6a5f\u5f8c Jenkins Slave \u5c31\u6703\u81ea\u52d5\u555f\u52d5\u3002
WindowsSlaveInstaller.DotNetRequired=\u672c\u529f\u80fd\u9700\u8981 .NET Framework 2.0 \u6216\u662f\u66f4\u65b0\u7684\u7248\u672c
WindowsSlaveInstaller.InstallationSuccessful=\u5b89\u88dd\u5b8c\u6210\u3002\u60a8\u8981\u99ac\u4e0a\u555f\u52d5\u670d\u52d9\u55ce?
-WindowsSlaveInstaller.RootFsDoesntExist=Slave \u6839\u76ee\u9304 ''{0}'' \u4e0d\u5b58\u5728
\ No newline at end of file
diff --git a/core/src/main/resources/hudson/logging/LogRecorderManager/index_pl.properties b/core/src/main/resources/hudson/logging/LogRecorderManager/index_pl.properties
index abfa7767ba..9557f45bdd 100644
--- a/core/src/main/resources/hudson/logging/LogRecorderManager/index_pl.properties
+++ b/core/src/main/resources/hudson/logging/LogRecorderManager/index_pl.properties
@@ -1,6 +1,6 @@
# This file is under the MIT License by authors
Add\ new\ log\ recorder=Dodaj nowy rejestrator log\u00F3w
-All\ Jenkins\ Logs=Wszystkie login Jenkins
+All\ Jenkins\ Logs=Wszystkie zdarzenia Jenkinsa
Log\ Recorders=Rejestratory log\u00F3w
Name=Nazwa
diff --git a/core/src/main/resources/hudson/logging/LogRecorderManager/sidepanel_pl.properties b/core/src/main/resources/hudson/logging/LogRecorderManager/sidepanel_pl.properties
index 4945181f27..7f6219d2cd 100644
--- a/core/src/main/resources/hudson/logging/LogRecorderManager/sidepanel_pl.properties
+++ b/core/src/main/resources/hudson/logging/LogRecorderManager/sidepanel_pl.properties
@@ -1,8 +1,8 @@
# This file is under the MIT License by authors
All\ Logs=Wszystkie Logi
-Back\ to\ Dashboard=Wr\u00F3\u0107 do Panelu
-Log\ Levels=Poziom Logowania
+Back\ to\ Dashboard=Powr\u00F3t do tablicy
+Log\ Levels=Poziom logowania
Logger\ List=Lista loger\u00F3w
-Manage\ Jenkins=Zarz\u0105dzaj Jenkins''em
+Manage\ Jenkins=Zarz\u0105dzaj Jenkinsem
New\ Log\ Recorder=Nowe Nagrywanie Log\u00F3w
diff --git a/core/src/main/resources/hudson/model/Slave/help-launcher_pt_BR.properties b/core/src/main/resources/hudson/markup/Messages_pl.properties
similarity index 85%
rename from core/src/main/resources/hudson/model/Slave/help-launcher_pt_BR.properties
rename to core/src/main/resources/hudson/markup/Messages_pl.properties
index d02da19515..b706b9193c 100644
--- a/core/src/main/resources/hudson/model/Slave/help-launcher_pt_BR.properties
+++ b/core/src/main/resources/hudson/markup/Messages_pl.properties
@@ -1,17 +1,17 @@
# The MIT License
-#
-# Copyright (c) 2004-2010, Sun Microsystems, Inc., Cleiber Silva, Fernando Boaglio
-#
+#
+# Copyright (c) 2016, Damian Szczepanik
+#
# 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
@@ -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 como o Jenkins inicia esse slave
+EscapedMarkupFormatter.DisplayName=Niesformatowany tekst
diff --git a/core/src/main/resources/hudson/model/AbstractBuild/index_en_GB.properties b/core/src/main/resources/hudson/model/AbstractBuild/index_en_GB.properties
index d5ed3717ab..d251b5168d 100644
--- a/core/src/main/resources/hudson/model/AbstractBuild/index_en_GB.properties
+++ b/core/src/main/resources/hudson/model/AbstractBuild/index_en_GB.properties
@@ -1,3 +1,3 @@
# This file is under the MIT License by authors
-Build\ Artifacts=Build Artefacts
+Build\ Artifacts=Build Artifacts
diff --git a/core/src/main/resources/hudson/model/AbstractBuild/index_pl.properties b/core/src/main/resources/hudson/model/AbstractBuild/index_pl.properties
index 13a1635b6d..c2e7fc2560 100644
--- a/core/src/main/resources/hudson/model/AbstractBuild/index_pl.properties
+++ b/core/src/main/resources/hudson/model/AbstractBuild/index_pl.properties
@@ -20,13 +20,13 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
-Build=Buduj
+Build=Zadanie
Build\ Artifacts=Artefakty budowania
Changes\ in\ dependency=Zmiany w zale\u017Cno\u015Bciach
-Downstream\ Builds=Buildy podrz\u0119dne
+Downstream\ Builds=Zadania podrz\u0119dne
Not\ yet\ determined=Jeszcze nie ustalono
Took=Trwa\u0142o
-Upstream\ Builds=Buildy nadrz\u0119dne
+Upstream\ Builds=Zadania nadrz\u0119dne
beingExecuted=Zadanie jest wykonywane od {0}
detail=Detale
none=brak
diff --git a/core/src/main/resources/hudson/model/AbstractBuild/index_pt_BR.properties b/core/src/main/resources/hudson/model/AbstractBuild/index_pt_BR.properties
index 7e954f6854..83030bc367 100644
--- a/core/src/main/resources/hudson/model/AbstractBuild/index_pt_BR.properties
+++ b/core/src/main/resources/hudson/model/AbstractBuild/index_pt_BR.properties
@@ -32,5 +32,4 @@ Upstream\ Builds=builds pai
Downstream\ Builds=builds filho
none=nenhum
Took=Demorou
-on=no slave
Build=Build
diff --git a/core/src/main/resources/hudson/model/AbstractBuild/sidepanel_pl.properties b/core/src/main/resources/hudson/model/AbstractBuild/sidepanel_pl.properties
index 1f6bd5f5e8..aa0cc1a6f5 100644
--- a/core/src/main/resources/hudson/model/AbstractBuild/sidepanel_pl.properties
+++ b/core/src/main/resources/hudson/model/AbstractBuild/sidepanel_pl.properties
@@ -20,5 +20,5 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
-Next\ Build=Nast\u0119pna wersja
+Next\ Build=Nast\u0119pne zadanie
Previous\ Build=Poprzednie zadanie
diff --git a/core/src/main/resources/hudson/model/AbstractBuild/tasks_pl.properties b/core/src/main/resources/hudson/model/AbstractBuild/tasks_pl.properties
index 0d03d2fca9..5272dc29df 100644
--- a/core/src/main/resources/hudson/model/AbstractBuild/tasks_pl.properties
+++ b/core/src/main/resources/hudson/model/AbstractBuild/tasks_pl.properties
@@ -20,10 +20,10 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
-Back\ to\ Project=Wr\u00F3\u0107 do projektu
-Changes=Zmiany
+Back\ to\ Project=Powr\u00F3t do projektu
+Changes=Rejestr zmian
Console\ Output=Logi konsoli
-View\ as\ plain\ text=Otw\u00F3rz jako zwyk\u0142y tekst
-Edit\ Build\ Information=Edytuj informacje o kompilacji
-View\ Build\ Information=Poka\u017C Informacje o build''zie
+View\ as\ plain\ text=Otw\u00F3rz jako niesformatowany tekst
+Edit\ Build\ Information=Edytuj informacje o zadaniu
+View\ Build\ Information=Poka\u017C informacje o zadaniu
raw=surowe wyj\u015Bcie
diff --git a/core/src/main/resources/hudson/model/AbstractItem/help-slaveAffinity.html b/core/src/main/resources/hudson/model/AbstractItem/help-slaveAffinity.html
index 02ca436656..bac70c76f2 100644
--- a/core/src/main/resources/hudson/model/AbstractItem/help-slaveAffinity.html
+++ b/core/src/main/resources/hudson/model/AbstractItem/help-slaveAffinity.html
@@ -1,5 +1,5 @@
- Sometimes a project can only be successfully built on a particular slave
+ Sometimes a project can only be successfully built on a particular agent
(or master). If so, this option forces Jenkins to always build this project
on a specific computer.
diff --git a/core/src/main/resources/hudson/model/AbstractItem/help-slaveAffinity_de.html b/core/src/main/resources/hudson/model/AbstractItem/help-slaveAffinity_de.html.lang,slave_rename
similarity index 88%
rename from core/src/main/resources/hudson/model/AbstractItem/help-slaveAffinity_de.html
rename to core/src/main/resources/hudson/model/AbstractItem/help-slaveAffinity_de.html.lang,slave_rename
index c942b354be..f2c9cd86a0 100644
--- a/core/src/main/resources/hudson/model/AbstractItem/help-slaveAffinity_de.html
+++ b/core/src/main/resources/hudson/model/AbstractItem/help-slaveAffinity_de.html.lang,slave_rename
@@ -1,5 +1,5 @@
- Manchmal kann ein Projekt nur auf einem bestimmten Slave-Knoten (oder
+ Manchmal kann ein Projekt nur auf einem bestimmten Agent-Knoten (oder
Master-Knoten) erfolgreich gebaut werden.
In diesem Fall sollte diese Option angewählt werden, so daß Jenkins
diff --git a/core/src/main/resources/hudson/model/AbstractItem/help-slaveAffinity_pt_BR.html b/core/src/main/resources/hudson/model/AbstractItem/help-slaveAffinity_pt_BR.html
deleted file mode 100644
index d5af2f57af..0000000000
--- a/core/src/main/resources/hudson/model/AbstractItem/help-slaveAffinity_pt_BR.html
+++ /dev/null
@@ -1,12 +0,0 @@
-v>
- Algumas vezes um projeto só pode ser construído com sucesso em um slave
- (ou master) em particular. Se for assim, esta opção força o Jenkins a sempre construir este projeto
- em um computadore específico.
-
- Caso contrário, desmarque a caixa e assim o Jenkins pode agendar construções nos nós
- disponíveis, o que resulta em tempos de resposta mais rápidos.
-
-
- Esta opção tamém é últil quando você quiser ter certeza que um projeto pode
- ser construído em um nó particular.
-
diff --git a/core/src/main/resources/hudson/model/AbstractItem/help-slaveAffinity_tr.html b/core/src/main/resources/hudson/model/AbstractItem/help-slaveAffinity_tr.html
deleted file mode 100644
index a5ea3ee54e..0000000000
--- a/core/src/main/resources/hudson/model/AbstractItem/help-slaveAffinity_tr.html
+++ /dev/null
@@ -1,11 +0,0 @@
-
- Bazı projeler sadece belirli slave'lerde (master'da olabilir) başarı ile yapılandırılır,
- bu tür durumlar için, bu seçenek projeyi daima belirli bir bilgisayarda yapılandırır.
-
- Aksi takdirde, kutucuğu seçili değil halde bırakırsanız, Jenkins yapılandırmayı, herhangi
- bir nod üzerinde yürütür.
-
-
- Bir projenin sadece belli bir nod üzerinde çalışmasını istiyorsanız bu seçenek işinize
- yarayacaktır.
-
\ No newline at end of file
diff --git a/core/src/main/resources/hudson/model/AbstractItem/help-slaveAffinity_zh_TW.html b/core/src/main/resources/hudson/model/AbstractItem/help-slaveAffinity_zh_TW.html
deleted file mode 100644
index 1b6c7e06cd..0000000000
--- a/core/src/main/resources/hudson/model/AbstractItem/help-slaveAffinity_zh_TW.html
+++ /dev/null
@@ -1,12 +0,0 @@
-
- 有時候專案只能在特定的 Slave (或 Master) 上才能成功建置。
- 如果有這個情形,請設定這個選項,強制 Jenkins 都只在特定電腦上建置這個專案。
-
- 如果有一群主機可以建置這個專案,您可以用標籤限定要執行的節點,Jenkins 就會在有指定相同標籤的機器中挑一台來建置專案。
-
-
- 否則請不要啟用這個功能,讓 Jenkins 盡量利用有空的節點來建置,等候及執行的時間也會比較短。
-
-
- 透過這個選項,也可以讓您確認專案是否能在特定節點上建置。
-
\ No newline at end of file
diff --git a/core/src/main/resources/hudson/model/AbstractItem/noWorkspace.jelly b/core/src/main/resources/hudson/model/AbstractItem/noWorkspace.jelly
index 4882cfc5da..6a93fc14b4 100644
--- a/core/src/main/resources/hudson/model/AbstractItem/noWorkspace.jelly
+++ b/core/src/main/resources/hudson/model/AbstractItem/noWorkspace.jelly
@@ -45,7 +45,7 @@ THE SOFTWARE.
${%The project was renamed recently and no build was done under the new name.}
- ${%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/AbstractModelObject/descriptionForm_pl.properties b/core/src/main/resources/hudson/model/AbstractModelObject/descriptionForm_pl.properties
new file mode 100644
index 0000000000..6b45cc35e7
--- /dev/null
+++ b/core/src/main/resources/hudson/model/AbstractModelObject/descriptionForm_pl.properties
@@ -0,0 +1,23 @@
+# The MIT License
+#
+# Copyright (c) 2016, Damian Szczepanik
+#
+# 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.
+
+Submit=Zapisz
diff --git a/core/src/main/resources/hudson/model/AbstractProject/changes_pl.properties b/core/src/main/resources/hudson/model/AbstractProject/changes_pl.properties
index 339b5fab61..faba046523 100644
--- a/core/src/main/resources/hudson/model/AbstractProject/changes_pl.properties
+++ b/core/src/main/resources/hudson/model/AbstractProject/changes_pl.properties
@@ -20,4 +20,4 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
-Changes=Zmiany
+Changes=Rejestr zmian
diff --git a/core/src/main/resources/hudson/model/AbstractProject/help-label.html b/core/src/main/resources/hudson/model/AbstractProject/help-label.html
index e854b1d17b..5932919ea2 100644
--- a/core/src/main/resources/hudson/model/AbstractProject/help-label.html
+++ b/core/src/main/resources/hudson/model/AbstractProject/help-label.html
@@ -1,11 +1,11 @@
- If you want to always run this project on a specific node/slave, just specify its name.
+ If you want to always run this project on a specific agent, just specify its name.
This works well when you have a small number of nodes.
- 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
+ As the size of the cluster grows, it becomes useful not to tie projects to specific agents,
+ as it hurts resource utilization when agents may come and go. For such situation, assign labels
+ to agents to classify their capabilities and characteristics, and specify a boolean expression
over those labels to decide where to run.
Valid Operators
@@ -31,15 +31,15 @@
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.
+ For example, windows->x64 could be thought of as "if run on a Windows agent,
+ that agent 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<->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."
+ For example, windows<->sfbay could be thought of as "if run on a Windows agent,
+ that agent must be in the SF bay area, but if not on Windows, it must not be in the bay area."
@@ -47,6 +47,6 @@
An expression can contain whitespace for better readability, and it'll be ignored.
- Label names or slave names can be quoted if they contain unsafe characters. For example,
+ Label names or agent names can be quoted if they contain unsafe characters. For example,
"jenkins-solaris (Solaris)" || "Windows 2008"
diff --git a/core/src/main/resources/hudson/model/AbstractProject/help-label_zh_TW.html b/core/src/main/resources/hudson/model/AbstractProject/help-label_zh_TW.html
deleted file mode 100644
index 22b9144733..0000000000
--- a/core/src/main/resources/hudson/model/AbstractProject/help-label_zh_TW.html
+++ /dev/null
@@ -1,50 +0,0 @@
-
- 如果您想只在特定的節點或 Slave 上建置這個專案,請直接輸入該節點的名稱。
- 在節點不多時這樣子就很好用了。
-
-
- 如果叢集越來越大,那最好不要將專案限定到某一台 Slave 上,因為 Slave 可能會來來去去,進而影響到資源利用率。
- 這種情況下,建議在 Slave 上面設定標籤,依照能力及特性分類,並設定標籤的布林表示式來決定要執行的節點。
-
-
有效的運算符號
-
- 支援下面這些運算符號,依照優先順序高到低排列。
-
- (expr)
- 括號
-
- !expr
- 非
-
- expr&&expr
-
- 且
-
-
- expr||expr
-
- 或
-
-
- a -> b
-
- 「蘊涵」運算符號 (若 a 則 b)。等價於 !a|b。
- 舉例來說,windows->x64 可以想成是「如果在 Windows Slave 上執行,一定要 64 位元的環境」。
- Jenkins 還是可以在 Linux 主機上面建置這個專案。
-
-
- a <-> b
-
- 「若且唯若」運算符號。等價於 a&&b || !a&&!b。
- 舉例來說,windows<->taipei 可以想成是「如果在 Windows Slave 上執行,該節點一定要在臺北;
- 不過要是不在 Windows 上執行,就一定不能在臺北」。
-
-
-
- 所有運算符號都是由左向右算的 (Left-Associative; 例如 a->b->c <-> (a->b)->c )
- 為了方便閱讀,表示式裡可以用半形空白,運算時會被忽略。
-
-
- 標籤名稱或 Slave 名稱中如果有不安全的字元,可以用半形括號括起來。例如:
- "jenkins-solaris (Solaris)" || "Windows 2008"
-
diff --git a/core/src/main/resources/hudson/model/AbstractProject/main_pl.properties b/core/src/main/resources/hudson/model/AbstractProject/main_pl.properties
index db7ba53667..55645387b9 100644
--- a/core/src/main/resources/hudson/model/AbstractProject/main_pl.properties
+++ b/core/src/main/resources/hudson/model/AbstractProject/main_pl.properties
@@ -21,5 +21,5 @@
# THE SOFTWARE.
Last\ Successful\ Artifacts=Ostatnie Powiedzione Artefakty
-Recent\ Changes=Ostatnie zmiany
-Workspace=Obszar roboczy
+Recent\ Changes=Rejestr zmian
+Workspace=Przestrze\u0144 robocza
diff --git a/core/src/main/resources/hudson/model/AbstractProject/sidepanel_pl.properties b/core/src/main/resources/hudson/model/AbstractProject/sidepanel_pl.properties
index 5b8c205892..201bb0fedd 100644
--- a/core/src/main/resources/hudson/model/AbstractProject/sidepanel_pl.properties
+++ b/core/src/main/resources/hudson/model/AbstractProject/sidepanel_pl.properties
@@ -20,7 +20,7 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
-Back\ to\ Dashboard=Powr\u00f3t do Dashboard''u
+Back\ to\ Dashboard=Powr\u00F3t do tablicy
Changes=Rejestr zmian
Wipe\ Out\ Workspace=Wyczy\u015b\u0107 przestrze\u0144 robocz\u0105
Workspace=Przestrze\u0144 robocza
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_pt_BR.properties b/core/src/main/resources/hudson/model/Computer/_script_pt_BR.properties
deleted file mode 100644
index 76ece934fa..0000000000
--- a/core/src/main/resources/hudson/model/Computer/_script_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.
-
-This\ execution\ happens\ in\ the\ slave\ agent\ JVM.=A execu\u00e7\u00e3o aconteceu no agente JVM slave.
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_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 ce1c52d52d..d3c30c47a1 100644
--- a/core/src/main/resources/hudson/model/Computer/sidepanel.jelly
+++ b/core/src/main/resources/hudson/model/Computer/sidepanel.jelly
@@ -32,8 +32,8 @@ 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/new.jelly b/core/src/main/resources/hudson/model/ComputerSet/new.jelly
index 8f3b7076de..403cf5d9ff 100644
--- a/core/src/main/resources/hudson/model/ComputerSet/new.jelly
+++ b/core/src/main/resources/hudson/model/ComputerSet/new.jelly
@@ -23,7 +23,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..1eef961fb3 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 All
+Apply=Apply All
\ No newline at end of file
diff --git a/core/src/main/resources/hudson/model/Job/permalinks_pl.properties b/core/src/main/resources/hudson/model/Job/permalinks_pl.properties
index f5ff9bd483..ce59813bf3 100644
--- a/core/src/main/resources/hudson/model/Job/permalinks_pl.properties
+++ b/core/src/main/resources/hudson/model/Job/permalinks_pl.properties
@@ -20,4 +20,4 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
-Permalinks=Odno\u015Bniki permanentne
+Permalinks=Odno\u015Bniki niezmienne
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..c952af5760 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} )
@@ -232,19 +232,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 +300,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
diff --git a/core/src/main/resources/hudson/model/Messages_bg.properties b/core/src/main/resources/hudson/model/Messages_bg.properties
index 0230072dea..939ad26c85 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=\
@@ -166,38 +162,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
@@ -405,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}
@@ -527,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_da.properties b/core/src/main/resources/hudson/model/Messages_da.properties
index 398a544ac9..94ccc2dbea 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
@@ -62,16 +61,13 @@ 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
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 +76,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
@@ -110,7 +102,6 @@ Hudson.USER_CONTENT_README=Filer i dette direktorie vil blive serveret under htt
UpdateCenter.PluginCategory.scm-related=Kildekodestyring (SCM) relateret
CLI.cancel-quiet-down.shortDescription=Sl\u00e5 effekten af "quite-down" kommandoen fra.
CLI.clear-queue.shortDescription=Ryd byggek\u00f8en
-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
@@ -118,7 +109,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
@@ -136,7 +126,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)
@@ -152,12 +141,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
@@ -177,10 +164,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.
@@ -213,10 +198,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 5200d02ed0..91fb24e694 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}
@@ -87,17 +86,7 @@ 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
@@ -209,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)
@@ -258,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_fr.properties b/core/src/main/resources/hudson/model/Messages_fr.properties
index 8808e4727c..a5935b27ff 100644
--- a/core/src/main/resources/hudson/model/Messages_fr.properties
+++ b/core/src/main/resources/hudson/model/Messages_fr.properties
@@ -50,14 +50,7 @@ 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
@@ -126,14 +119,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_it.properties b/core/src/main/resources/hudson/model/Messages_it.properties
index 6b5ceb2116..100fae6c7a 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" \
@@ -82,19 +79,7 @@ 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
@@ -205,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
@@ -250,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
@@ -274,7 +250,7 @@ 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 a861286d67..29b8a249b9 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} )
@@ -204,17 +187,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 +229,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_nl.properties b/core/src/main/resources/hudson/model/Messages_nl.properties
index e7b5b57aa6..d86d111c92 100644
--- a/core/src/main/resources/hudson/model/Messages_nl.properties
+++ b/core/src/main/resources/hudson/model/Messages_nl.properties
@@ -44,7 +44,6 @@ BallColor.Pending=In afwachting
BallColor.Success=Succes
BallColor.Unstable=Onstabiel
-Computer.Caption=Slaaf {0}
Executor.NotAvailable=Niet beschikbaar
@@ -86,14 +85,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 db0c2b82ed..87f49975e9 100644
--- a/core/src/main/resources/hudson/model/Messages_pl.properties
+++ b/core/src/main/resources/hudson/model/Messages_pl.properties
@@ -1,25 +1,48 @@
-ParametersDefinitionProperty.DisplayName=To budowanie jest sparametryzowane
+ParametersDefinitionProperty.DisplayName=To zadanie jest sparametryzowane
ManageJenkinsAction.DisplayName=Zarz\u0105dzaj Jenkinsem
-Job.AllRecentBuildFailed=Wszystkie ostatnie budowania nie powiod\u0142y si\u0119.
-Job.BuildStability=Stabilno\u015B\u0107 budowa\u0144: {0}
-Job.NOfMFailed={0} spo\u015Br\u00F3d {1} ostatnich budowa\u0144 nie powiod\u0142o si\u0119.
-Job.NoRecentBuildFailed=Brak ostatnich budowa\u0144 zako\u0144czonych niepowodzeniem.
+Job.AllRecentBuildFailed=Wszystkie ostatnie zadania nie powiod\u0142y si\u0119.
+Job.BuildStability=Stabilno\u015B\u0107 zada\u0144: {0}
+Job.NOfMFailed={0} spo\u015Br\u00F3d {1} ostatnich zada\u0144 nie powiod\u0142o si\u0119.
+Job.NoRecentBuildFailed=Brak ostatnich zada\u0144 zako\u0144czonych niepowodzeniem.
AbstractProject.Pronoun=Projekt
+AbstractItem.Pronoun=Projekt
+
+AbstractProject.WorkspaceTitle=Przestrze\u0144 robocza {0}
+AbstractProject.WorkspaceTitleOnComputer=Przestrze\u0144 robocza {0} na {1}
BallColor.Aborted=Przerwane
BallColor.Disabled=Zablokowane
BallColor.Failed=Nie powiod\u0142o si\u0119
BallColor.InProgress=W trakcie
-BallColor.NotBuilt=Nie zbudowane
+BallColor.NotBuilt=Brak uruchomie\u0144
BallColor.Pending=W oczekiwaniu
BallColor.Success=Pomy\u015Blne
BallColor.Unstable=Niestabilne
-Permalink.LastBuild=Ostatnie budowanie
-Permalink.LastStableBuild=Ostatnie stabilne budowanie
-Permalink.LastUnstableBuild=Ostatnie niestabilne budowanie
-Permalink.LastUnsuccessfulBuild=Ostatnie niepomy\u015Blne budowanie
-Permalink.LastSuccessfulBuild=Ostatnie pomy\u015Blne budowanie
-Permalink.LastFailedBuild=Ostatnie niepomy\u015Blne budowanie
-Permalink.LastCompletedBuild=Ostatnie zako\u0144czone budowanie
+Permalink.LastBuild=Ostatnie zadanie
+Permalink.LastStableBuild=Ostatnie stabilne zadanie
+Permalink.LastUnstableBuild=Ostatnie niestabilne zadanie
+Permalink.LastUnsuccessfulBuild=Ostatnie niepomy\u015Blne zadanie
+Permalink.LastSuccessfulBuild=Ostatnie pomy\u015Blne zadanie
+Permalink.LastFailedBuild=Ostatnie niepomy\u015Blne zadanie
+Permalink.LastCompletedBuild=Ostatnie zako\u0144czone zadanie
+
+Run.Summary.Stable=stabilny
+Run.Summary.Unstable=niestabilny
+Run.Summary.Aborted=przerwany
+Run.Summary.NotBuilt=brak zada\u0144
+Run.Summary.BackToNormal=powr\u00F3t do stabilno\u015Bci
+Run.Summary.BrokenForALongTime=nieudany od dawna
+Run.Summary.BrokenSinceThisBuild=nieudany od tego zadania
+Run.Summary.BrokenSince=nieudany od zadania {0}
+Run.Summary.Unknown=?
+
+UpdateCenter.DownloadButNotActivated=Pobrana pomy\u015Blnie. Zostanie w\u0142\u0105czona podczas ponownego uruchomienia Jenkinsa
+UpdateCenter.Status.CheckingInternet=Sprawdzanie po\u0142\u0105czenia z Internetem
+UpdateCenter.Status.CheckingJavaNet=Sprawdzanie po\u0142\u0105czenia z centrum aktualizacji
+UpdateCenter.Status.Success=Zako\u0144czono pomy\u015Blnie
+
+MyViewsProperty.DisplayName=Moje widoki
+MyViewsProperty.GlobalAction.DisplayName=Moje widoki
+
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 4f2f98122b..4c6becc49f 100644
--- a/core/src/main/resources/hudson/model/Messages_pt_BR.properties
+++ b/core/src/main/resources/hudson/model/Messages_pt_BR.properties
@@ -44,7 +44,6 @@ BallColor.Pending=Pendente
BallColor.Success=Sucesso
BallColor.Unstable=Inst\u00e1vel
-Computer.Caption=Slave {0}
Executor.NotAvailable=N/D
@@ -85,14 +84,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 +114,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 +149,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 +177,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
@@ -263,8 +246,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
# \
@@ -285,8 +266,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
@@ -310,9 +289,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
@@ -402,10 +372,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 \
@@ -416,8 +382,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.
@@ -426,12 +390,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
@@ -472,18 +432,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_ru.properties b/core/src/main/resources/hudson/model/Messages_ru.properties
index b966716ec0..63e6effcec 100644
--- a/core/src/main/resources/hudson/model/Messages_ru.properties
+++ b/core/src/main/resources/hudson/model/Messages_ru.properties
@@ -44,7 +44,6 @@ 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
@@ -86,14 +85,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_tr.properties b/core/src/main/resources/hudson/model/Messages_tr.properties
index 2d3aaf2179..72f96af1fa 100644
--- a/core/src/main/resources/hudson/model/Messages_tr.properties
+++ b/core/src/main/resources/hudson/model/Messages_tr.properties
@@ -45,7 +45,6 @@ BallColor.Pending=Bekliyor
BallColor.Success=Ba\u015far\u0131l\u0131
BallColor.Unstable=Dengesiz
-Computer.Caption=Slave {0}
Executor.NotAvailable=Mevcut De\u011fil
@@ -87,14 +86,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_zh_CN.properties b/core/src/main/resources/hudson/model/Messages_zh_CN.properties
index cb2ea0fdf6..1e1584d4d5 100644
--- a/core/src/main/resources/hudson/model/Messages_zh_CN.properties
+++ b/core/src/main/resources/hudson/model/Messages_zh_CN.properties
@@ -68,15 +68,7 @@ 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
@@ -169,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=\
@@ -212,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 87a733d27b..4a20545359 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
@@ -88,19 +86,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} )
@@ -212,16 +198,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=\
@@ -260,7 +238,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/MyView/newViewDetail_pl.properties b/core/src/main/resources/hudson/model/MyView/newViewDetail_pl.properties
index ce3d5d1c9e..ceda1f8b13 100644
--- a/core/src/main/resources/hudson/model/MyView/newViewDetail_pl.properties
+++ b/core/src/main/resources/hudson/model/MyView/newViewDetail_pl.properties
@@ -1,3 +1,3 @@
# This file is under the MIT License by authors
-blurb=Widok ten, automatycznie wy\u015Bwietla wszystkie prace do kt\u00F3rych aktualnie zalogowany u\u017Cytkownik ma dost\u0119p.
+blurb=Widok ten automatycznie wy\u015Bwietla wszystkie zadania do kt\u00F3rych aktualnie zalogowany u\u017Cytkownik ma dost\u0119p.
diff --git a/core/src/main/resources/hudson/model/MyViewsProperty/config_pl.properties b/core/src/main/resources/hudson/model/MyViewsProperty/config_pl.properties
index 807824ceee..df58035e37 100644
--- a/core/src/main/resources/hudson/model/MyViewsProperty/config_pl.properties
+++ b/core/src/main/resources/hudson/model/MyViewsProperty/config_pl.properties
@@ -1,3 +1,4 @@
# This file is under the MIT License by authors
description=Domy\u015Blny widok po przej\u015Bciu do strony ''''Moje widoki''''
+Default\ View=Domy\u015Blny widok
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..b0b96bc81d 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,11 @@
- Labels (AKA tags) are used for grouping multiple slaves into one logical group.
+ Labels (AKA tags) are used for grouping multiple agents into one logical group.
Use spaces between each label. For instance 'regression java6' will assign a
node the labels 'regression' and 'java6'.
- 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',
+ For example, if you have multiple Windows agents and you have jobs that require
+ Windows, then you can configure all your Windows agents 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.
+ of your Windows agents but not on anywhere else.
\ No newline at end of file
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.
-
diff --git a/core/src/main/resources/hudson/model/Node/help-labelString_tr.html b/core/src/main/resources/hudson/model/Node/help-labelString_tr.html
deleted file mode 100644
index bdd2019e65..0000000000
--- a/core/src/main/resources/hudson/model/Node/help-labelString_tr.html
+++ /dev/null
@@ -1,11 +0,0 @@
-
- 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 @@
-
- 標籤可以將多個 Slave 進行邏輯分類。
- 不同的標籤之間請以空格隔開。例如 'regression java6' 代表將節點貼上 'regression' 跟 'java6' 兩個標籤。
-
-
- 舉例來說,如果您有多部 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..dd9c242a06 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,7 @@
- Name that uniquely identifies a slave within this Jenkins installation.
+ Name that uniquely identifies a agent within this Jenkins installation.
- This value could be any string, and doesn't have to be the same as the slave host name,
+ This value could be any string, and doesn't have to be the same as the agent host name,
but it's often convenient to make them the same.
diff --git a/core/src/main/resources/hudson/model/Node/help-name_de.html b/core/src/main/resources/hudson/model/Node/help-name_de.html
deleted file mode 100644
index ce4e888b20..0000000000
--- a/core/src/main/resources/hudson/model/Node/help-name_de.html
+++ /dev/null
@@ -1,8 +0,0 @@
-
- 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.
-
diff --git a/core/src/main/resources/hudson/model/Node/help-name_pt_BR.html b/core/src/main/resources/hudson/model/Node/help-name_pt_BR.html
deleted file mode 100644
index 3be3f19567..0000000000
--- a/core/src/main/resources/hudson/model/Node/help-name_pt_BR.html
+++ /dev/null
@@ -1,7 +0,0 @@
-
- Nome que identifica unicamente um slave dentro deste instalação do Jenkins.
-
-
- Este valor poderia ser qualquer string, e não tem que ser o mesmo nome do host slave,
- mas é conveniente mantê-los iguais.
-
diff --git a/core/src/main/resources/hudson/model/Node/help-name_tr.html b/core/src/main/resources/hudson/model/Node/help-name_tr.html
deleted file mode 100644
index 7aff93778f..0000000000
--- a/core/src/main/resources/hudson/model/Node/help-name_tr.html
+++ /dev/null
@@ -1,7 +0,0 @@
-
- İsim, slave'e içerisinde bulunduğu Jenkins'da belirleyici bir tanım verir.
-
-
- Bu değer bir string olabilir, ve host ismi ile aynı olmak zorunda değildir, ama anlamlı
- olması için aynı vermek bazen uygun olabilir.
-
diff --git a/core/src/main/resources/hudson/model/Node/help-name_zh_TW.html b/core/src/main/resources/hudson/model/Node/help-name_zh_TW.html
deleted file mode 100644
index 3952c09cdb..0000000000
--- a/core/src/main/resources/hudson/model/Node/help-name_zh_TW.html
+++ /dev/null
@@ -1,6 +0,0 @@
-
- 在 Jenkins 中能亳無疑問識別出這個 Slave 的名稱。
-
-
- 名稱可以隨便您取。雖然不一定要是 Slave 的主機名稱,但是設成跟主機名稱一樣會比較方便。
-
diff --git a/core/src/main/resources/hudson/model/Node/help-numExecutors.html b/core/src/main/resources/hudson/model/Node/help-numExecutors.html
index f8dd8a46a9..4d362213ba 100644
--- a/core/src/main/resources/hudson/model/Node/help-numExecutors.html
+++ b/core/src/main/resources/hudson/model/Node/help-numExecutors.html
@@ -9,7 +9,7 @@
for I/O.
- 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.
+ When using Jenkins in the master/agent mode, setting this value to 0 would prevent the master
+ from doing any building on its own. Agents may not have zero executors, but may be
+ temporarily disabled using the button on the agent's status page.
diff --git a/core/src/main/resources/hudson/model/Node/help-numExecutors_de.html b/core/src/main/resources/hudson/model/Node/help-numExecutors_de.html
deleted file mode 100644
index f9427704b5..0000000000
--- a/core/src/main/resources/hudson/model/Node/help-numExecutors_de.html
+++ /dev/null
@@ -1,19 +0,0 @@
-
- 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.
-
diff --git a/core/src/main/resources/hudson/model/Node/help-numExecutors_pt_BR.html b/core/src/main/resources/hudson/model/Node/help-numExecutors_pt_BR.html
deleted file mode 100644
index 01b4537b2f..0000000000
--- a/core/src/main/resources/hudson/model/Node/help-numExecutors_pt_BR.html
+++ /dev/null
@@ -1,13 +0,0 @@
-
- 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.
-
diff --git a/core/src/main/resources/hudson/model/Node/help-numExecutors_tr.html b/core/src/main/resources/hudson/model/Node/help-numExecutors_tr.html
deleted file mode 100644
index cef65e409c..0000000000
--- a/core/src/main/resources/hudson/model/Node/help-numExecutors_tr.html
+++ /dev/null
@@ -1,14 +0,0 @@
-
- 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.
-
diff --git a/core/src/main/resources/hudson/model/Node/help-numExecutors_zh_TW.html b/core/src/main/resources/hudson/model/Node/help-numExecutors_zh_TW.html
deleted file mode 100644
index fd7b2ade67..0000000000
--- a/core/src/main/resources/hudson/model/Node/help-numExecutors_zh_TW.html
+++ /dev/null
@@ -1,12 +0,0 @@
-
- 控制 Jenkins 可以同時執行的建置數,可能會對 Jenkins 整體負載造成影響。
- 如果不知道該怎麼調整,建議您先設成跟系統處理器數目一樣的值。
-
-
- 增加這個值可能會讓每一次建置都變慢,但是可以增加整體處理效率。
- 因為專案在等候 I/O 時,CPU 還是能建置其他專案。
-
-
- 以 Master/Slave 模式使用 Jenkins 時,設定成 0 可以讓 Master 不要自己建置專案。
- Slave 應該不會半個執行程式都沒有,如果您想要暫時停用該 Slave 的話,可以透過它狀態頁中的按鈕達成。
-
diff --git a/core/src/main/resources/hudson/model/ParametersDefinitionProperty/index_pl.properties b/core/src/main/resources/hudson/model/ParametersDefinitionProperty/index_pl.properties
index 0df95d4606..188cbcaf55 100644
--- a/core/src/main/resources/hudson/model/ParametersDefinitionProperty/index_pl.properties
+++ b/core/src/main/resources/hudson/model/ParametersDefinitionProperty/index_pl.properties
@@ -22,4 +22,4 @@
Build=Buduj
LOADING=\u0141ADOWANIE
-description=To budowanie wymaga parametr\u00F3w:
+description=To zadanie wymaga parametr\u00F3w:
diff --git a/core/src/main/resources/hudson/model/Run/console_pl.properties b/core/src/main/resources/hudson/model/Run/console_pl.properties
index 10ae388c90..5e82220e61 100644
--- a/core/src/main/resources/hudson/model/Run/console_pl.properties
+++ b/core/src/main/resources/hudson/model/Run/console_pl.properties
@@ -20,6 +20,6 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
-Console\ Output=Wyj\u015Bcie Konsoli
+Console\ Output=Logi konsoli
View\ as\ plain\ text=Poka\u017C jako tekst niesformatowany
skipSome=Pomini\u0119to {0,number,integer} KB.. Poka\u017C wszystko
diff --git a/core/src/main/resources/hudson/model/Run/delete_pl.properties b/core/src/main/resources/hudson/model/Run/delete_pl.properties
index 2a23b65679..2ae6db4937 100644
--- a/core/src/main/resources/hudson/model/Run/delete_pl.properties
+++ b/core/src/main/resources/hudson/model/Run/delete_pl.properties
@@ -20,4 +20,4 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
-Delete\ this\ build=Usu\u0144 t\u0105 wersje
+Delete\ this\ build=Usu\u0144 to zadanie
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_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_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..d40a982a9b 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,36 @@
- 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 agent needs to have a directory dedicated to Jenkins. Specify
+ the path of this work 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 slave machine. There's no need for
+ should be a path local to the agent machine. There's no need for
this path to be visible from the master, under normal circumstances.
- Slaves do not maintain important data (other than active workspaces
- of projects last built on it), so you can possibly set the slave
+ Agents do not maintain important data (other than active workspaces
+ of projects last built on it), so you can possibly set the agent
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.
+ is that you may lose the up-to-date workspace if the agent is turned off.
If you use a relative path, such as './jenkins-slave', the path will
be relative to the current working directory that the launcher provides.
- 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
+ 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.
+ on the agent 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.
+ of semi-heterogeneous agents.
diff --git a/core/src/main/resources/hudson/model/Slave/help-remoteFS_de.html b/core/src/main/resources/hudson/model/Slave/help-remoteFS_de.html
deleted file mode 100644
index e507e71842..0000000000
--- a/core/src/main/resources/hudson/model/Slave/help-remoteFS_de.html
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
- 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.
-
diff --git a/core/src/main/resources/hudson/model/Slave/help-remoteFS_pt_BR.html b/core/src/main/resources/hudson/model/Slave/help-remoteFS_pt_BR.html
deleted file mode 100644
index 5f995b42e9..0000000000
--- a/core/src/main/resources/hudson/model/Slave/help-remoteFS_pt_BR.html
+++ /dev/null
@@ -1,13 +0,0 @@
-div>
-
-
- 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.
-
diff --git a/core/src/main/resources/hudson/model/Slave/help-remoteFS_tr.html b/core/src/main/resources/hudson/model/Slave/help-remoteFS_tr.html
deleted file mode 100644
index 19357e537b..0000000000
--- a/core/src/main/resources/hudson/model/Slave/help-remoteFS_tr.html
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
- 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.
-
diff --git a/core/src/main/resources/hudson/model/Slave/help-remoteFS_zh_TW.html b/core/src/main/resources/hudson/model/Slave/help-remoteFS_zh_TW.html
deleted file mode 100644
index ff327c4bdd..0000000000
--- a/core/src/main/resources/hudson/model/Slave/help-remoteFS_zh_TW.html
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
- Slave 上要有 Jenkins 專用的目錄。
- 請指定這個工作目錄在 Slave 上的完整路徑,例如 '/var/jenkins' 或是 'c:\jenkins'。
- Master 不用直接存取到這個路徑。
-
-
- Slave 上不會儲存重要資訊 (只會存最近建置專案的工作區),所以您也可以把 Slave 工作區設在暫存目錄裡。
- 唯一的缺點是當 Slave 停掉時,您可能會看不到工作區的最新內容。
-
diff --git a/core/src/main/resources/hudson/model/UpdateCenter/body_pl.properties b/core/src/main/resources/hudson/model/UpdateCenter/body_pl.properties
index 7515413d86..8c519ef315 100644
--- a/core/src/main/resources/hudson/model/UpdateCenter/body_pl.properties
+++ b/core/src/main/resources/hudson/model/UpdateCenter/body_pl.properties
@@ -21,5 +21,5 @@
# THE SOFTWARE.
Go\ back\ to\ the\ top\ page=Wr\u00F3\u0107 do strony g\u0142\u00F3wnej
-warning=Zrestartuj Jenkinsa, gdy instalacja si\u0119 zako\u0144czy i \u017Cadne zadanie nie b\u0119dzie wykonywane
+warning=Uruchom ponownie Jenkinsa, gdy instalacja si\u0119 zako\u0144czy i \u017Cadne zadanie nie b\u0119dzie wykonywane
you\ can\ start\ using\ the\ installed\ plugins\ right\ away=Mo\u017Cesz ju\u017C zacz\u0105\u0107 korzysta\u0107 z zainstalowanych wtyczek
diff --git a/core/src/main/resources/hudson/model/UpdateCenter/index_pl.properties b/core/src/main/resources/hudson/model/UpdateCenter/index_pl.properties
index 11dfad78d0..df69a1766b 100644
--- a/core/src/main/resources/hudson/model/UpdateCenter/index_pl.properties
+++ b/core/src/main/resources/hudson/model/UpdateCenter/index_pl.properties
@@ -20,4 +20,4 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
-Installing\ Plugins/Upgrades=Instalowanie Wtyczek/Aktualizacji
+Installing\ Plugins/Upgrades=Instalowanie wtyczek i aktualizacji
diff --git a/core/src/main/resources/hudson/model/UpdateCenter/sidepanel_pl.properties b/core/src/main/resources/hudson/model/UpdateCenter/sidepanel_pl.properties
index 8727a01346..30d61be913 100644
--- a/core/src/main/resources/hudson/model/UpdateCenter/sidepanel_pl.properties
+++ b/core/src/main/resources/hudson/model/UpdateCenter/sidepanel_pl.properties
@@ -20,6 +20,6 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
-Back\ to\ Dashboard=Wr\u00F3\u0107 na Stron\u0119 G\u0142\u00F3wn\u0105
-Manage\ Jenkins=Zarz\u0105dzanie Jenkins
+Back\ to\ Dashboard=Powr\u00F3t do tablicy
+Manage\ Jenkins=Zarz\u0105dzanie Jenkinsem
Manage\ Plugins=Zarz\u0105dzanie wtyczkami
diff --git a/core/src/main/resources/hudson/model/UsageStatistics/help-usageStatisticsCollected.html b/core/src/main/resources/hudson/model/UsageStatistics/help-usageStatisticsCollected.html
index 2ec5cf132a..160039c362 100644
--- a/core/src/main/resources/hudson/model/UsageStatistics/help-usageStatisticsCollected.html
+++ b/core/src/main/resources/hudson/model/UsageStatistics/help-usageStatisticsCollected.html
@@ -8,7 +8,7 @@
Your Jenkins version
- For your master and each slave, OS type, and # of executors
+ For your master and each agent, OS type, and # of executors
Plugins that are installed and their versions
Number jobs per each job type in your Jenkins
diff --git a/core/src/main/resources/hudson/model/UsageStatistics/help-usageStatisticsCollected_de.html b/core/src/main/resources/hudson/model/UsageStatistics/help-usageStatisticsCollected_de.html
deleted file mode 100644
index f3229055b6..0000000000
--- a/core/src/main/resources/hudson/model/UsageStatistics/help-usageStatisticsCollected_de.html
+++ /dev/null
@@ -1,24 +0,0 @@
-
- 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.
-
-
- Lesen Sie die
- Diskussion dieser Funktion in der Jenkins-Community - und steuern Sie gerne Ihre Meinung dazu bei!
-
diff --git a/core/src/main/resources/hudson/model/UsageStatistics/help-usageStatisticsCollected_zh_TW.html b/core/src/main/resources/hudson/model/UsageStatistics/help-usageStatisticsCollected_zh_TW.html
deleted file mode 100644
index 65e59953f2..0000000000
--- a/core/src/main/resources/hudson/model/UsageStatistics/help-usageStatisticsCollected_zh_TW.html
+++ /dev/null
@@ -1,22 +0,0 @@
-
- 知道大家怎麼使用 Jenkins 對發展方向有很大的助益,開放原始碼專案向來都很難追蹤使用族群。
- 啟用這個選項後,Jenkins 會定期將您的 Jenkins 使用狀況傳送回去。
-
-
- 明確來說,會送出的資訊有:
-
-
- 您的 Jenkins 版本
- Master 及 Slave 的作業系統類型,以及執行程式數
- 安裝的外掛程式名稱及其版本
- Jenkins 中不同作業類型的作業數
-
-
-
- 資訊中不會有任何可以認出您,或是能讓我們聯絡到您的資訊
- (除了 HTTP 中無可避免會揭露的 IP 位址等資訊)。送出的使用狀況統計資料表內容會與整個社群共享。
-
-
- 您可以看看
- 這個機制的社群討論內容 ,也歡迎您提出建言。
-
diff --git a/core/src/main/resources/hudson/model/User/builds_pl.properties b/core/src/main/resources/hudson/model/User/builds_pl.properties
index 44e113ee04..e95f03aedb 100644
--- a/core/src/main/resources/hudson/model/User/builds_pl.properties
+++ b/core/src/main/resources/hudson/model/User/builds_pl.properties
@@ -1,3 +1,3 @@
# This file is under the MIT License by authors
-title=Budowy {0}
+title=Zadania u\u017Cytkownika {0}
diff --git a/core/src/main/resources/hudson/model/User/index_pl.properties b/core/src/main/resources/hudson/model/User/index_pl.properties
index f9e21a20ec..b349e3a89f 100644
--- a/core/src/main/resources/hudson/model/User/index_pl.properties
+++ b/core/src/main/resources/hudson/model/User/index_pl.properties
@@ -1,3 +1,3 @@
# This file is under the MIT License by authors
-Jenkins\ User\ Id=Id u\u017Cytkownika
+Jenkins\ User\ Id=Identyfikator u\u017Cytkownika
diff --git a/core/src/main/resources/hudson/model/User/sidepanel_pl.properties b/core/src/main/resources/hudson/model/User/sidepanel_pl.properties
index 5292105692..5cfaa27c4a 100644
--- a/core/src/main/resources/hudson/model/User/sidepanel_pl.properties
+++ b/core/src/main/resources/hudson/model/User/sidepanel_pl.properties
@@ -1,6 +1,6 @@
# This file is under the MIT License by authors
-Builds=Build''''y
+Builds=Zadania
Configure=Konfiguracja
Delete=Usu\u0144
My\ Views=Moje widoki
diff --git a/core/src/main/resources/hudson/model/View/AsynchPeople/index_pl.properties b/core/src/main/resources/hudson/model/View/AsynchPeople/index_pl.properties
index 9748cfd3ff..0c78d03b5a 100644
--- a/core/src/main/resources/hudson/model/View/AsynchPeople/index_pl.properties
+++ b/core/src/main/resources/hudson/model/View/AsynchPeople/index_pl.properties
@@ -23,5 +23,8 @@
Last\ Active=Ostatnio aktywny
Name=Nazwa
On=Na
-People=Ludzie
+People=U\u017Cytkownicy
User\ Id=Identyfikator u\u017Cytkownika
+Last\ Commit\ Activity=Ostatnia zmiana
+blurb=Prezentuje wszystkich uwierzytelnionych u\u017Cytkownik\u00F3w w\u0142\u0105cznie z identyfikatorem oraz osoby wymienione w opisach zarejestrowanych zmian.
+
diff --git a/core/src/main/resources/hudson/model/View/ajaxBuildQueue.jelly b/core/src/main/resources/hudson/model/View/ajaxBuildQueue.jelly
index 2f1614be49..a26339d7d5 100644
--- a/core/src/main/resources/hudson/model/View/ajaxBuildQueue.jelly
+++ b/core/src/main/resources/hudson/model/View/ajaxBuildQueue.jelly
@@ -28,6 +28,6 @@ THE SOFTWARE.
-
+
\ No newline at end of file
diff --git a/core/src/main/resources/hudson/model/View/builds_pl.properties b/core/src/main/resources/hudson/model/View/builds_pl.properties
index 2f4df23786..1ab9fce120 100644
--- a/core/src/main/resources/hudson/model/View/builds_pl.properties
+++ b/core/src/main/resources/hudson/model/View/builds_pl.properties
@@ -21,4 +21,4 @@
# THE SOFTWARE.
Export\ as\ plain\ XML=Eksportuj jako XML
-buildHistory=Historia kompilacji projektu {0}
+buildHistory=Historia zada\u0144 dla widoku {0}
diff --git a/core/src/main/resources/hudson/model/View/configure_pl.properties b/core/src/main/resources/hudson/model/View/configure_pl.properties
index e9a7446b35..0659364ac1 100644
--- a/core/src/main/resources/hudson/model/View/configure_pl.properties
+++ b/core/src/main/resources/hudson/model/View/configure_pl.properties
@@ -1,6 +1,6 @@
# This file is under the MIT License by authors
Description=Opis
-Filter\ build\ executors=Filtr wykonawc\u00F3w Builda
-Filter\ build\ queue=Filtr kolejki budowania
+Filter\ build\ executors=Filtr wykonawc\u00F3w zada\u0144
+Filter\ build\ queue=Filtr kolejki zada\u0144
Name=Nazwa
diff --git a/core/src/main/resources/hudson/model/View/sidepanel_pl.properties b/core/src/main/resources/hudson/model/View/sidepanel_pl.properties
index 48fc4878ba..c911ad469a 100644
--- a/core/src/main/resources/hudson/model/View/sidepanel_pl.properties
+++ b/core/src/main/resources/hudson/model/View/sidepanel_pl.properties
@@ -21,11 +21,11 @@
# THE SOFTWARE.
Build\ History=Historia zada\u0144
-Check\ File\ Fingerprint=Sprawd\u017A Odcisk Palca Pliku
-Delete\ View=Usu\u0144 Widok
+Check\ File\ Fingerprint=Sprawd\u017A odcisk palca pliku
+Delete\ View=Usu\u0144 widok
Edit\ View=Edytuj widok
Manage\ Jenkins=
-New\ Job=
-NewJob=New {0}
-People=Ludzie
+New\ Job=Nowe zadanie
+NewJob=Nowy {0}
+People=U\u017Cytkownicy
Project\ Relationship=Projekty powi\u0105zane
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 @@
-
- 這個選項設定能讓 Slave 正常運作的最小可用磁碟空間,例如 "1.5GB", "100KB"...。
- 一旦發現 Slave 可用磁碟空間小於這個值,就會將它標示為離線。
-
\ 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.
-
diff --git a/core/src/main/resources/hudson/node_monitors/ArchitectureMonitor/help_zh_TW.html b/core/src/main/resources/hudson/node_monitors/ArchitectureMonitor/help_zh_TW.html
deleted file mode 100644
index ea3610ef33..0000000000
--- a/core/src/main/resources/hudson/node_monitors/ArchitectureMonitor/help_zh_TW.html
+++ /dev/null
@@ -1,3 +0,0 @@
-
- 這個監控程式單純顯示 Slave 架構資訊供您參考。不會將 Slave 標為離線。
-
\ 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.
-
diff --git a/core/src/main/resources/hudson/node_monitors/DiskSpaceMonitor/help.html b/core/src/main/resources/hudson/node_monitors/DiskSpaceMonitor/help.html
index cecca0e087..d714c0e184 100644
--- a/core/src/main/resources/hudson/node_monitors/DiskSpaceMonitor/help.html
+++ b/core/src/main/resources/hudson/node_monitors/DiskSpaceMonitor/help.html
@@ -1,6 +1,6 @@
- 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 @@
-
- 監控每個 Slave 的
$JENKINS_HOME 可用磁碟空間,低於臨界值的 Slave 會被標為離線。
-
-
- 所有建置都在這個目錄裡執行。如果滿了,接下來的建置都會失敗。
-
\ 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/slaves/CommandLauncher/help_da.properties b/core/src/main/resources/hudson/node_monitors/Messages_pl.properties
similarity index 75%
rename from core/src/main/resources/hudson/slaves/CommandLauncher/help_da.properties
rename to core/src/main/resources/hudson/node_monitors/Messages_pl.properties
index 0c16c82c07..68cec8241d 100644
--- a/core/src/main/resources/hudson/slaves/CommandLauncher/help_da.properties
+++ b/core/src/main/resources/hudson/node_monitors/Messages_pl.properties
@@ -1,17 +1,17 @@
# The MIT License
-#
-# Copyright (c) 2004-2010, Sun Microsystems, Inc. Kohsuke Kawaguchi. Knud Poulsen.
-#
+#
+# Copyright (c) 2016, Damian Szczepanik
+#
# 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
@@ -20,5 +20,9 @@
# 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.
+ArchitectureMonitor.DisplayName=Architektura
+ClockMonitor.DisplayName=R\u00F3\u017Cnica czasu
+DiskSpaceMonitor.DisplayName=Wolne miejsce
+ResponseTimeMonitor.DisplayName=Czas odpowiedzi
+SwapSpaceMonitor.DisplayName=Wolna pami\u0119\u0107 wymiany
+TemporarySpaceMonitor.DisplayName=Wolna pami\u0119\u0107 tymczasowa
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 @@
-
- 監控 Master 到 Slave 的網路往返的回應時間,監控結果持續低於臨界值的 Slave 會被標為離線。
-
-
- 可以用來偵測沒有回應的 Slave,或是其他造成網路擁塞的問題。
- 具體來說,Master 會送出 no-op 指令給 Slave,並檢查拿到結果的時間。
-
\ 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 @@
-
- 監控電腦可用的虛擬記憶體空間 (也叫做「Swap 空間」),並將低於臨界值的 Slave 標為離線。
-
-
- Swap 空間的確切定義會隨平台而有所不同。
-
-
-
- 在 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 @@
-
- 監控暫存目錄的可用磁碟空間,低於指定臨界值的節點會被設為離線。
-
-
- Java 工具以及測試、建置過程很常會在暫存目錄裡建立檔案,空間不夠的話可能會無法正常運作。
-
-
- 更精確一點,監控程式會由 java.io.tmpdir 系統屬性找到暫存目錄,檢查其所在分割區的可用空間。
- 想要知道 Slave 使用的目錄是什麼,可以連到 ${rootURL}/computer/SLAVENAME/systemInfo 。
-
\ No newline at end of file
diff --git a/core/src/main/resources/hudson/scm/SCM/project-changes_pl.properties b/core/src/main/resources/hudson/scm/SCM/project-changes_pl.properties
index b90724b296..0021bd2e2f 100644
--- a/core/src/main/resources/hudson/scm/SCM/project-changes_pl.properties
+++ b/core/src/main/resources/hudson/scm/SCM/project-changes_pl.properties
@@ -20,5 +20,5 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
-No\ changes\ in\ any\ of\ the\ builds.=Brak zmian w trakcie procesu budowania.
-detail=detale
+No\ changes\ in\ any\ of\ the\ builds.=Brak zmian w trakcie procesu uruchamiania zada\u0144.
+detail=szczeg\u00F3\u0142y
diff --git a/core/src/main/resources/hudson/security/GlobalSecurityConfiguration/help-slaveAgentPort.html b/core/src/main/resources/hudson/security/GlobalSecurityConfiguration/help-slaveAgentPort.html
index 37d845e2c7..69a4760025 100644
--- a/core/src/main/resources/hudson/security/GlobalSecurityConfiguration/help-slaveAgentPort.html
+++ b/core/src/main/resources/hudson/security/GlobalSecurityConfiguration/help-slaveAgentPort.html
@@ -1,7 +1,7 @@
- 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.
-
diff --git a/core/src/main/resources/hudson/security/GlobalSecurityConfiguration/help-slaveAgentPort_tr.html b/core/src/main/resources/hudson/security/GlobalSecurityConfiguration/help-slaveAgentPort_tr.html
deleted file mode 100644
index d3de5461df..0000000000
--- a/core/src/main/resources/hudson/security/GlobalSecurityConfiguration/help-slaveAgentPort_tr.html
+++ /dev/null
@@ -1,9 +0,0 @@
-
- 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 @@
-
- Jenkins 使用 TCP 連接埠與透過 JNLP 啟動的 Slave 代理程式溝通。
- 為了避免衝突,連接埠一般是隨機挑選的,但可能造成系統資安的困擾。
- 如果您沒有任何 JNLP Slave,建議關閉這個 TCP 連接埠。
- 或是,您可以指定固定的連接埠數值,方便您調整防火牆設定。
-
\ No newline at end of file
diff --git a/core/src/main/resources/hudson/security/GlobalSecurityConfiguration/index.groovy b/core/src/main/resources/hudson/security/GlobalSecurityConfiguration/index.groovy
index 249d4cfbe8..ca23cf73a2 100644
--- a/core/src/main/resources/hudson/security/GlobalSecurityConfiguration/index.groovy
+++ b/core/src/main/resources/hudson/security/GlobalSecurityConfiguration/index.groovy
@@ -25,7 +25,7 @@ l.layout(norefresh:true, permission:app.ADMINISTER, title:my.displayName) {
set("descriptor", my.descriptor);
f.optionalBlock( field:"useSecurity", title:_("Enable security"), checked:app.useSecurity) {
- f.entry (title:_("TCP port for JNLP slave agents"), field:"slaveAgentPort") {
+ f.entry (title:_("TCP port for JNLP agents"), field:"slaveAgentPort") {
f.serverTcpPort()
}
diff --git a/core/src/main/resources/hudson/security/GlobalSecurityConfiguration/index_da.properties b/core/src/main/resources/hudson/security/GlobalSecurityConfiguration/index_da.properties
index 0e53ad060c..02bb056995 100644
--- a/core/src/main/resources/hudson/security/GlobalSecurityConfiguration/index_da.properties
+++ b/core/src/main/resources/hudson/security/GlobalSecurityConfiguration/index_da.properties
@@ -22,7 +22,6 @@
LOADING=INDL\u00C6SER
Enable\ security=Sl\u00E5 sikkerhed til
-TCP\ port\ for\ JNLP\ slave\ agents=TCP port til JNLP slaveagenter
Markup\ Formatter=
Access\ Control=Adgangskontrol
Security\ Realm=Sikkerheds Realm
diff --git a/core/src/main/resources/hudson/security/GlobalSecurityConfiguration/index_de.properties b/core/src/main/resources/hudson/security/GlobalSecurityConfiguration/index_de.properties
index ed694c8119..a9010fb712 100644
--- a/core/src/main/resources/hudson/security/GlobalSecurityConfiguration/index_de.properties
+++ b/core/src/main/resources/hudson/security/GlobalSecurityConfiguration/index_de.properties
@@ -22,7 +22,6 @@
LOADING=LADE DATEN
Enable\ security=Jenkins absichern
-TCP\ port\ for\ JNLP\ slave\ agents=TCP-Port f\u00fcr JNLP-Slave
Disable\ remember\ me=Deaktiviere "Anmeldedaten speichern"
Markup\ Formatter=Markup-Formatierer
Access\ Control=Zugriffskontrolle
diff --git a/core/src/main/resources/hudson/security/GlobalSecurityConfiguration/index_es.properties b/core/src/main/resources/hudson/security/GlobalSecurityConfiguration/index_es.properties
index 60f4150e2e..5a6e60cccb 100644
--- a/core/src/main/resources/hudson/security/GlobalSecurityConfiguration/index_es.properties
+++ b/core/src/main/resources/hudson/security/GlobalSecurityConfiguration/index_es.properties
@@ -22,7 +22,7 @@
LOADING=CARGANDO
Enable\ security=Activar seguridad
-TCP\ port\ for\ JNLP\ slave\ agents=Puerto TCP de JNLP para los agentes en los nodos secundarios
+TCP\ port\ for\ JNLP\ agents=Puerto TCP de JNLP para los agentes en los nodos secundarios
Markup\ Formatter=
Access\ Control=Control de acceso
Security\ Realm=Seguuridad
diff --git a/core/src/main/resources/hudson/security/GlobalSecurityConfiguration/index_fi.properties b/core/src/main/resources/hudson/security/GlobalSecurityConfiguration/index_fi.properties
index f0de13e17d..5757a35336 100644
--- a/core/src/main/resources/hudson/security/GlobalSecurityConfiguration/index_fi.properties
+++ b/core/src/main/resources/hudson/security/GlobalSecurityConfiguration/index_fi.properties
@@ -21,7 +21,6 @@
# THE SOFTWARE.
Enable\ security=Aktivoi kirjautuminen
-TCP\ port\ for\ JNLP\ slave\ agents=
Markup\ Formatter=
Access\ Control=P\u00E4\u00E4synhallinta
Security\ Realm=
diff --git a/core/src/main/resources/hudson/security/GlobalSecurityConfiguration/index_fr.properties b/core/src/main/resources/hudson/security/GlobalSecurityConfiguration/index_fr.properties
index 3a8cc73e95..d70ab48cd3 100644
--- a/core/src/main/resources/hudson/security/GlobalSecurityConfiguration/index_fr.properties
+++ b/core/src/main/resources/hudson/security/GlobalSecurityConfiguration/index_fr.properties
@@ -22,7 +22,6 @@
LOADING=CHARGEMENT
Enable\ security=Activer la s\u00E9curit\u00E9
-TCP\ port\ for\ JNLP\ slave\ agents=Port TCP pour les agents esclaves JNLP
Markup\ Formatter=
Access\ Control=Contr\u00F4le de l''acc\u00E8s
Security\ Realm=Royaume pour la s\u00E9curit\u00E9 (Realm)
diff --git a/core/src/main/resources/hudson/security/GlobalSecurityConfiguration/index_hu.properties b/core/src/main/resources/hudson/security/GlobalSecurityConfiguration/index_hu.properties
index 4f86f54d34..2e3b82f054 100644
--- a/core/src/main/resources/hudson/security/GlobalSecurityConfiguration/index_hu.properties
+++ b/core/src/main/resources/hudson/security/GlobalSecurityConfiguration/index_hu.properties
@@ -22,7 +22,6 @@
LOADING=BET\u00D6LT\u00C9S
Enable\ security=
-TCP\ port\ for\ JNLP\ slave\ agents=
Markup\ Formatter=
Access\ Control=
Security\ Realm=
diff --git a/core/src/main/resources/hudson/security/GlobalSecurityConfiguration/index_ja.properties b/core/src/main/resources/hudson/security/GlobalSecurityConfiguration/index_ja.properties
index 6eeaeab039..73d37c2c96 100644
--- a/core/src/main/resources/hudson/security/GlobalSecurityConfiguration/index_ja.properties
+++ b/core/src/main/resources/hudson/security/GlobalSecurityConfiguration/index_ja.properties
@@ -22,7 +22,6 @@
LOADING=\u30ed\u30fc\u30c9\u4e2d...
Enable\ security=\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u3092\u6709\u52b9\u5316
-TCP\ port\ for\ JNLP\ slave\ agents=JNLP\u30b9\u30ec\u30fc\u30d6\u7528TCP\u30dd\u30fc\u30c8\u756a\u53f7
Markup\ Formatter=\u30de\u30fc\u30af\u30a2\u30c3\u30d7\u8a18\u6cd5
Access\ Control=\u30a2\u30af\u30bb\u30b9\u5236\u5fa1
Security\ Realm=\u30e6\u30fc\u30b6\u30fc\u60c5\u5831
diff --git a/core/src/main/resources/hudson/security/GlobalSecurityConfiguration/index_nl.properties b/core/src/main/resources/hudson/security/GlobalSecurityConfiguration/index_nl.properties
index 0f6020cc66..38a67ec667 100644
--- a/core/src/main/resources/hudson/security/GlobalSecurityConfiguration/index_nl.properties
+++ b/core/src/main/resources/hudson/security/GlobalSecurityConfiguration/index_nl.properties
@@ -22,7 +22,6 @@
LOADING=OPHALEN
Enable\ security=Activeer beveiliging
-TCP\ port\ for\ JNLP\ slave\ agents=TCP-poort voor JNLP-slaafnodes
Markup\ Formatter=
Access\ Control=Toegangscontrole
Security\ Realm=Beveiligingszone
diff --git a/core/src/main/resources/hudson/security/GlobalSecurityConfiguration/index_pt_BR.properties b/core/src/main/resources/hudson/security/GlobalSecurityConfiguration/index_pt_BR.properties
index 2a28726538..b920631d0b 100644
--- a/core/src/main/resources/hudson/security/GlobalSecurityConfiguration/index_pt_BR.properties
+++ b/core/src/main/resources/hudson/security/GlobalSecurityConfiguration/index_pt_BR.properties
@@ -22,7 +22,6 @@
LOADING=Carregando
Enable\ security=Habilitar segurança
-TCP\ port\ for\ JNLP\ slave\ agents=Porta TCP para agentes slave JNLP
Markup\ Formatter=Formatador de markup
Access\ Control=Controle de acesso
Security\ Realm=Dom\u00ednio (realm) de seguran\u00e7a
diff --git a/core/src/main/resources/hudson/security/GlobalSecurityConfiguration/index_ru.properties b/core/src/main/resources/hudson/security/GlobalSecurityConfiguration/index_ru.properties
index 49891a4e30..156daf036b 100644
--- a/core/src/main/resources/hudson/security/GlobalSecurityConfiguration/index_ru.properties
+++ b/core/src/main/resources/hudson/security/GlobalSecurityConfiguration/index_ru.properties
@@ -22,7 +22,6 @@
LOADING=\u0417\u0410\u0413\u0420\u0423\u0417\u041A\u0410
Enable\ security=\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0437\u0430\u0449\u0438\u0442\u0443
-TCP\ port\ for\ JNLP\ slave\ agents=TCP \u043f\u043e\u0440\u0442 \u0434\u043b\u044f JNLP \u043f\u043e\u0434\u0447\u0438\u043d\u0435\u043d\u043d\u044b\u0445 \u0430\u0433\u0435\u043d\u0442\u043e\u0432
Markup\ Formatter=
Access\ Control=\u041a\u043e\u043d\u0442\u0440\u043e\u043b\u044c \u0434\u043e\u0441\u0442\u0443\u043f\u0430
Security\ Realm=\u041e\u0431\u043b\u0430\u0441\u0442\u044c \u0437\u0430\u0449\u0438\u0442\u044b (realm)
diff --git a/core/src/main/resources/hudson/security/GlobalSecurityConfiguration/index_tr.properties b/core/src/main/resources/hudson/security/GlobalSecurityConfiguration/index_tr.properties
index 383c978db6..1ef7e7eb53 100644
--- a/core/src/main/resources/hudson/security/GlobalSecurityConfiguration/index_tr.properties
+++ b/core/src/main/resources/hudson/security/GlobalSecurityConfiguration/index_tr.properties
@@ -21,7 +21,6 @@
# THE SOFTWARE.
Enable\ security=G\u00fcvenli\u011fi devreye al
-TCP\ port\ for\ JNLP\ slave\ agents=JNLP Slave ajanlar\u0131 i\u00e7in TCP portu
Markup\ Formatter=
Access\ Control=Eri\u015fim Kontrol\u00fc
Security\ Realm=G\u00fcvenlik Alan\u0131
diff --git a/core/src/main/resources/hudson/security/GlobalSecurityConfiguration/index_zh_CN.properties b/core/src/main/resources/hudson/security/GlobalSecurityConfiguration/index_zh_CN.properties
index dda1fcfe45..a4a5ce68dd 100644
--- a/core/src/main/resources/hudson/security/GlobalSecurityConfiguration/index_zh_CN.properties
+++ b/core/src/main/resources/hudson/security/GlobalSecurityConfiguration/index_zh_CN.properties
@@ -22,7 +22,6 @@
LOADING=\u52A0\u8F7D\u4E2D
Enable\ security=\u542f\u7528\u5b89\u5168
-TCP\ port\ for\ JNLP\ slave\ agents=JNLP\u8282\u70b9\u4ee3\u7406\u7684TCP\u7aef\u53e3
Markup\ Formatter=
Access\ Control=\u8bbf\u95ee\u63a7\u5236
Security\ Realm=\u5b89\u5168\u57df
diff --git a/core/src/main/resources/hudson/security/GlobalSecurityConfiguration/index_zh_TW.properties b/core/src/main/resources/hudson/security/GlobalSecurityConfiguration/index_zh_TW.properties
index 7966bc9a90..103ce2ab03 100644
--- a/core/src/main/resources/hudson/security/GlobalSecurityConfiguration/index_zh_TW.properties
+++ b/core/src/main/resources/hudson/security/GlobalSecurityConfiguration/index_zh_TW.properties
@@ -23,7 +23,6 @@
LOADING=\u8f09\u5165\u4e2d
Enable\ security=\u555f\u7528\u5b89\u5168\u6027
-TCP\ port\ for\ JNLP\ slave\ agents=JNLP Slave \u4ee3\u7406\u7a0b\u5f0f TCP \u57e0
Markup\ Formatter=\u6a19\u8a18\u683c\u5f0f\u5668
Access\ Control=\u5b58\u53d6\u63a7\u5236
Security\ Realm=\u5b89\u5168\u6027\u9818\u57df
diff --git a/core/src/main/resources/hudson/security/HudsonPrivateSecurityRealm/_entryForm_pl.properties b/core/src/main/resources/hudson/security/HudsonPrivateSecurityRealm/_entryForm_pl.properties
index 232cf06c4b..789580f522 100644
--- a/core/src/main/resources/hudson/security/HudsonPrivateSecurityRealm/_entryForm_pl.properties
+++ b/core/src/main/resources/hudson/security/HudsonPrivateSecurityRealm/_entryForm_pl.properties
@@ -1,6 +1,7 @@
# This file is under the MIT License by authors
-Confirm\ password=Has\u0142o
+Sign\ up=Zarejestruj si\u0119
+Confirm\ password=Powt\u00F3rz has\u0142o
E-mail\ address=Adres e-mail
Full\ name=Pe\u0142na nazwa
Password=Has\u0142o
diff --git a/core/src/main/resources/hudson/security/HudsonPrivateSecurityRealm/loginLink_pl.properties b/core/src/main/resources/hudson/security/HudsonPrivateSecurityRealm/loginLink_pl.properties
index 2256c9f917..72d26aa862 100644
--- a/core/src/main/resources/hudson/security/HudsonPrivateSecurityRealm/loginLink_pl.properties
+++ b/core/src/main/resources/hudson/security/HudsonPrivateSecurityRealm/loginLink_pl.properties
@@ -20,4 +20,4 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
-sign\ up=za\u0142\u00F3\u017C konto
+sign\ up=Za\u0142\u00F3\u017C konto
diff --git a/core/src/main/resources/hudson/model/Computer/_script_tr.properties b/core/src/main/resources/hudson/security/Messages_pl.properties
similarity index 80%
rename from core/src/main/resources/hudson/model/Computer/_script_tr.properties
rename to core/src/main/resources/hudson/security/Messages_pl.properties
index 710d98527e..347024e6a5 100644
--- a/core/src/main/resources/hudson/model/Computer/_script_tr.properties
+++ b/core/src/main/resources/hudson/security/Messages_pl.properties
@@ -1,6 +1,6 @@
# The MIT License
#
-# Copyright (c) 2004-2009, Sun Microsystems, Inc., Kohsuke Kawaguchi, Oguz Dag
+# Copyright (c) 2016, Damian Szczepanik
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
@@ -19,5 +19,5 @@
# 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.
+GlobalSecurityConfiguration.DisplayName=Konfiguracja globalnych zabezpiecze\u0144
+GlobalSecurityConfiguration.Description=Bezpiecze\u0144stwo Jenkinsa: okre\u015Bl, kto ma dost\u0119p i mo\u017Ce u\u017Cywa\u0107 systemu.
diff --git a/core/src/main/resources/hudson/security/SecurityRealm/loginLink_pl.properties b/core/src/main/resources/hudson/security/SecurityRealm/loginLink_pl.properties
index a17c45ef4e..8df91bd929 100644
--- a/core/src/main/resources/hudson/security/SecurityRealm/loginLink_pl.properties
+++ b/core/src/main/resources/hudson/security/SecurityRealm/loginLink_pl.properties
@@ -20,4 +20,4 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
-login=zaloguj si\u0119
+login=Logowanie
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.
diff --git a/core/src/main/resources/hudson/slaves/AbstractCloudImpl/help-instanceCapStr_zh_TW.html b/core/src/main/resources/hudson/slaves/AbstractCloudImpl/help-instanceCapStr_zh_TW.html
deleted file mode 100644
index a8a73747df..0000000000
--- a/core/src/main/resources/hudson/slaves/AbstractCloudImpl/help-instanceCapStr_zh_TW.html
+++ /dev/null
@@ -1,11 +0,0 @@
-
- 您可以設定 Jenkins 在這片雲中可以啟動的 Slave 上限數目。
- 可以避免收到帳單時受到太大的震憾。
-
-
- 以輸入 3 為例,Jenkins 在雲端執行個體數沒達上限前才能再啟動一個新的。
- 在這個方式下,最糟就算 Jenkins 起了執行個體後就置之不理,您還是有能同時執行的個體數上限。
-
-
- 不填的話代表不設上限。
-
diff --git a/core/src/main/resources/hudson/slaves/CommandLauncher/help-command.html b/core/src/main/resources/hudson/slaves/CommandLauncher/help-command.html
index 7177d11330..ad61686f9f 100644
--- a/core/src/main/resources/hudson/slaves/CommandLauncher/help-command.html
+++ b/core/src/main/resources/hudson/slaves/CommandLauncher/help-command.html
@@ -1,8 +1,8 @@
- 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.
#!/bin/sh
@@ -21,7 +21,7 @@ exec java -jar ~/bin/slave.jar
- 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.
-
-
- slave.jar befindet sich als WEB-INF/slave.jar .
-
-
- 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.
-
-
diff --git a/core/src/main/resources/hudson/slaves/CommandLauncher/help-command_pt_BR.html b/core/src/main/resources/hudson/slaves/CommandLauncher/help-command_pt_BR.html
deleted file mode 100644
index 406267125f..0000000000
--- a/core/src/main/resources/hudson/slaves/CommandLauncher/help-command_pt_BR.html
+++ /dev/null
@@ -1,53 +0,0 @@
-
- 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.
-
diff --git a/core/src/main/resources/hudson/slaves/CommandLauncher/help-command_tr.html b/core/src/main/resources/hudson/slaves/CommandLauncher/help-command_tr.html
deleted file mode 100644
index 98943c4192..0000000000
--- a/core/src/main/resources/hudson/slaves/CommandLauncher/help-command_tr.html
+++ /dev/null
@@ -1,38 +0,0 @@
-
- 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-command_zh_TW.html b/core/src/main/resources/hudson/slaves/CommandLauncher/help-command_zh_TW.html
deleted file mode 100644
index af1e220f35..0000000000
--- a/core/src/main/resources/hudson/slaves/CommandLauncher/help-command_zh_TW.html
+++ /dev/null
@@ -1,29 +0,0 @@
-
- 啟動 Slave 代理程式的指令,可以控制 Slave 電腦並與 Master 溝通。
- Jenkins 假設執行的程式會在正式的 Slave 機器上啟動
slave.jar 。
-
-
- 可以由這裡 下載 slave.jar 。
-
-
- 簡單一點就像 "ssh 主機名稱 java -jar ~/bin/slave.jar"。
-
- 但是,一般會建議您在 Slave 上面寫一個小 Shell Script,控制 Java 及 slave.jar 的位置,
- 也能設定 PATH 這類節點間不盡相同的環境變數。就像:
-
-
-#!/bin/sh
-exec java -jar ~/bin/slave.jar
-
-
-
- 您可以使用任何指令執行 Slave 機器上的程式,例如 RSH。
- 只要最後程式的 stdin 及 stdout 被連到 "java -jar ~/bin/slave.jar" 就好。
-
-
- 大型部署環境下,可以考慮從掛載 NFS 的共通位置中載入 slave.jar ,
- 就不用每次升級 Jenkins 時還要同步更新每部機器上的這個檔案。
-
-
- 設定成 "ssh -v 主機名稱 " 可以幫助您處理連線問題。
-
diff --git a/core/src/main/resources/hudson/slaves/CommandLauncher/help.properties b/core/src/main/resources/hudson/slaves/CommandLauncher/help.properties
index e4d34a73f1..a980d82ce8 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 an agent, such as through 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_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/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 @@
-
- 要是 Slave JVM 啟動時需要指定 "-Xmx256m" 這類額外的 VM 參數,可以在這裡設定。
- 在
這裡 可以看到所有選項。
-
\ 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..393be7ebba 100644
--- a/core/src/main/resources/hudson/slaves/JNLPLauncher/help.properties
+++ b/core/src/main/resources/hudson/slaves/JNLPLauncher/help.properties
@@ -20,7 +20,7 @@
# 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.) \
+blurb=Starts an agent by launching a program through
JNLP . \
+ The launch in this case is initiated by the agent itself, \
+ thus agents 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
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:}
javaws ${h.inferHudsonURL(request)}${it.url}slave-agent.jnlp
- ${%Or if the slave is headless:}
+ ${%Or if the agent is headless:}
java${it.launcher.vmargs == null ? '' : ' ' + it.launcher.vmargs} -jar slave.jar -jnlpUrl ${h.inferHudsonURL(request)}${it.url}slave-agent.jnlp
@@ -63,7 +63,7 @@ THE SOFTWARE.
- ${%Run from slave command line:}
+ ${%Run from agent command line:}
java${it.launcher.vmargs == null ? '' : ' ' + it.launcher.vmargs} -jar slave.jar -jnlpUrl ${h.inferHudsonURL(request)}${it.url}slave-agent.jnlp -secret ${it.jnlpMac}
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..cefa0fcdeb 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 on-line as much as possible
+RetentionStrategy.Demand.displayName=Take this agent on-line when in demand and off-line 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 agents 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 on-line 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_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/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/tasks/LogRotator/config_pl.properties b/core/src/main/resources/hudson/tasks/LogRotator/config_pl.properties
index a6aa76c5ae..c52764d174 100644
--- a/core/src/main/resources/hudson/tasks/LogRotator/config_pl.properties
+++ b/core/src/main/resources/hudson/tasks/LogRotator/config_pl.properties
@@ -1,4 +1,7 @@
# This file is under the MIT License by authors
Days\ to\ keep\ artifacts=Ilo\u015B\u0107 dni przechowywania artefaktu
-Days\ to\ keep\ builds=Ilo\u015B\u0107 dni przechowywania builda
+Days\ to\ keep\ builds=Ilo\u015B\u0107 dni przechowywania zada\u0144
+Max\ #\ of\ builds\ to\ keep=Maksymalna ilo\u015B\u0107 przechowywanych zada\u0144
+if\ not\ empty,\ build\ records\ are\ only\ kept\ up\ to\ this\ number\ of\ days=Je\u015Bli nie jest puste, zadania s\u0105 przechowywane podan\u0105 ilo\u015B\u0107 dni
+if\ not\ empty,\ only\ up\ to\ this\ number\ of\ build\ records\ are\ kept=Je\u015Bli nie jest puste, przechowywanych jest tyle zada\u0144, ile podano
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.
diff --git a/core/src/main/resources/hudson/tools/AbstractCommandInstaller/help-command_de.html b/core/src/main/resources/hudson/tools/AbstractCommandInstaller/help-command_de.html
deleted file mode 100644
index c2ea0fec7a..0000000000
--- a/core/src/main/resources/hudson/tools/AbstractCommandInstaller/help-command_de.html
+++ /dev/null
@@ -1,5 +0,0 @@
-
- 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/AbstractCommandInstaller/help-command_zh_TW.html b/core/src/main/resources/hudson/tools/AbstractCommandInstaller/help-command_zh_TW.html
deleted file mode 100644
index e9d06e036c..0000000000
--- a/core/src/main/resources/hudson/tools/AbstractCommandInstaller/help-command_zh_TW.html
+++ /dev/null
@@ -1,4 +0,0 @@
-
- 在 Slave 節點上安裝工具要執行的指令。
- 每次都會執行這個指令,所以如果工具已經安裝好了,指令應該要不做任何事盡快結束。
-
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/InstallSourceProperty/help_zh_TW.html b/core/src/main/resources/hudson/tools/InstallSourceProperty/help_zh_TW.html
deleted file mode 100644
index 40248d0da3..0000000000
--- a/core/src/main/resources/hudson/tools/InstallSourceProperty/help_zh_TW.html
+++ /dev/null
@@ -1,10 +0,0 @@
-
- 這個功能能讓 Jenkins 依您的需求,將工具安裝到您上面設定的地方去。
-
-
- 選用這個功能用,您需要設定一系列的工具「安裝程式」,每個安裝程式都定義 Jenkins 該如何安裝這項工具。
-
-
- 對不限定平台的工具 (例如 Ant) 設定多個「安裝程式」並不合理。
- 但是對平台相關的工具來說,多個安裝程式設定,讓您可以依 Slave 環境不同執行專屬的安裝 Script。
-
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/hudson/tools/ZipExtractionInstaller/help-url_zh_TW.html b/core/src/main/resources/hudson/tools/ZipExtractionInstaller/help-url_zh_TW.html
deleted file mode 100644
index 06a1b92db6..0000000000
--- a/core/src/main/resources/hudson/tools/ZipExtractionInstaller/help-url_zh_TW.html
+++ /dev/null
@@ -1,6 +0,0 @@
-
- 可以下載工具壓縮檔的 URL。
- 只支援 ZIP 或是 GZip 壓縮過的 TAR 檔。
- 伺服器上的檔案時間會跟本地版本 (如果有的話) 比較,所以您可以很輕鬆的發佈更新。
- URL 要能從 Jenkins Master 連到,不過 Slave 連不到也沒關係。
-
diff --git a/core/src/main/resources/hudson/triggers/TimerTrigger/help-spec.html b/core/src/main/resources/hudson/triggers/TimerTrigger/help-spec.html
index 4ce69c94b9..d097fc4193 100644
--- a/core/src/main/resources/hudson/triggers/TimerTrigger/help-spec.html
+++ b/core/src/main/resources/hudson/triggers/TimerTrigger/help-spec.html
@@ -73,7 +73,7 @@
H/15 * * * *
# every ten minutes in the first half of every hour (three times, perhaps at :04, :14, :24)
H(0-29)/10 * * * *
-# once every two hours every weekday (perhaps at 10:38 AM, 12:38 PM, 2:38 PM, 4:38 PM)
+# once every two hours every weekday (perhaps at 9:38 AM, 11:38 AM, 1:38 PM, 3:38 PM)
H 9-16/2 * * 1-5
# once a day on the 1st and 15th of every month except December
H H 1,15 1-11 *
diff --git a/core/src/main/resources/hudson/util/HudsonIsLoading/index_cs.properties b/core/src/main/resources/hudson/util/HudsonIsLoading/index_cs.properties
new file mode 100644
index 0000000000..a81c0e7598
--- /dev/null
+++ b/core/src/main/resources/hudson/util/HudsonIsLoading/index_cs.properties
@@ -0,0 +1,4 @@
+# This file is under the MIT License by authors
+
+Please\ wait\ while\ Jenkins\ is\ getting\ ready\ to\ work=Po\u010Dkejte pros\u00EDm, ne\u017E aplikace Jenkins zcela nab\u011Bhne
+Your\ browser\ will\ reload\ automatically\ when\ Jenkins\ is\ ready.=Jakmile bude Jenkins p\u0159ipraven, str\u00E1nka se automaticky obnov\u00ED.
diff --git a/core/src/main/resources/hudson/views/BuildButtonColumn/column_pl.properties b/core/src/main/resources/hudson/views/BuildButtonColumn/column_pl.properties
index ef61b47961..3179ca1b18 100644
--- a/core/src/main/resources/hudson/views/BuildButtonColumn/column_pl.properties
+++ b/core/src/main/resources/hudson/views/BuildButtonColumn/column_pl.properties
@@ -20,6 +20,6 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
-Build_scheduled=Budowanie zaplanowane
-Schedule_a_build=Dodaj budowanie do kolejki dla {0}
-Schedule_a_build_with_parameters=Zbuduj z parametrami dla {0}
+Build_scheduled=Zadanie zosta\u0142o zaplanowane
+Schedule_a_build=Dodaj zadanie do kolejki dla {0}
+Schedule_a_build_with_parameters=Uruchom z parametrami dla {0}
diff --git a/core/src/main/resources/hudson/views/LastDurationColumn/columnHeader_pl.properties b/core/src/main/resources/hudson/views/LastDurationColumn/columnHeader_pl.properties
index 772faa8053..450a3a8853 100644
--- a/core/src/main/resources/hudson/views/LastDurationColumn/columnHeader_pl.properties
+++ b/core/src/main/resources/hudson/views/LastDurationColumn/columnHeader_pl.properties
@@ -20,4 +20,4 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
-Last\ Duration=Czas ostatniego budowania
+Last\ Duration=Czas trwania
diff --git a/core/src/main/resources/hudson/views/LastFailureColumn/columnHeader_pl.properties b/core/src/main/resources/hudson/views/LastFailureColumn/columnHeader_pl.properties
index 4cd147a02b..37b1ca45e7 100644
--- a/core/src/main/resources/hudson/views/LastFailureColumn/columnHeader_pl.properties
+++ b/core/src/main/resources/hudson/views/LastFailureColumn/columnHeader_pl.properties
@@ -20,4 +20,4 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
-Last\ Failure=Ostatni B\u0142\u0105d
+Last\ Failure=Ostatni b\u0142\u0105d
diff --git a/core/src/main/resources/hudson/views/LastSuccessColumn/columnHeader_pl.properties b/core/src/main/resources/hudson/views/LastSuccessColumn/columnHeader_pl.properties
index c09e14ce7c..d188be71e2 100644
--- a/core/src/main/resources/hudson/views/LastSuccessColumn/columnHeader_pl.properties
+++ b/core/src/main/resources/hudson/views/LastSuccessColumn/columnHeader_pl.properties
@@ -20,4 +20,4 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
-Last\ Success=Ostatni Sukces
+Last\ Success=Ostatni sukces
diff --git a/core/src/main/resources/hudson/model/Computer/_script_sv_SE.properties b/core/src/main/resources/hudson/views/Messages_pl.properties
similarity index 88%
rename from core/src/main/resources/hudson/model/Computer/_script_sv_SE.properties
rename to core/src/main/resources/hudson/views/Messages_pl.properties
index e1d01dd5a8..088bf10ca2 100644
--- a/core/src/main/resources/hudson/model/Computer/_script_sv_SE.properties
+++ b/core/src/main/resources/hudson/views/Messages_pl.properties
@@ -1,6 +1,6 @@
# The MIT License
#
-# Copyright (c) 2004-2010, Sun Microsystems, Inc.
+# Copyright (c) 2016, Damian Szczepanik
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
@@ -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.=Detta utf\u00F6rs p\u00E5 nodens JVM.
+JobColumn.DisplayName=Nazwa
diff --git a/core/src/main/resources/hudson/views/StatusColumn/columnHeader_pl.properties b/core/src/main/resources/hudson/views/StatusColumn/columnHeader_pl.properties
index ba4a183921..4890220afc 100644
--- a/core/src/main/resources/hudson/views/StatusColumn/columnHeader_pl.properties
+++ b/core/src/main/resources/hudson/views/StatusColumn/columnHeader_pl.properties
@@ -20,4 +20,4 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
-Status\ of\ the\ last\ build=Status ostatniej kompilacji
+Status\ of\ the\ last\ build=Status ostatniego zadania
diff --git a/core/src/main/resources/hudson/views/WeatherColumn/columnHeader_pl.properties b/core/src/main/resources/hudson/views/WeatherColumn/columnHeader_pl.properties
index f518d43c5a..2df8e482e5 100644
--- a/core/src/main/resources/hudson/views/WeatherColumn/columnHeader_pl.properties
+++ b/core/src/main/resources/hudson/views/WeatherColumn/columnHeader_pl.properties
@@ -20,4 +20,4 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
-Weather\ report\ showing\ aggregated\ status\ of\ recent\ builds=Raport z ostatnich wykona\u0144
+Weather\ report\ showing\ aggregated\ status\ of\ recent\ builds=Raport z ostatnich zada\u0144
diff --git a/core/src/main/resources/hudson/widgets/HistoryWidget/entry_pl.properties b/core/src/main/resources/hudson/widgets/HistoryWidget/entry_pl.properties
index 3dc5cc2c1e..d648319d06 100644
--- a/core/src/main/resources/hudson/widgets/HistoryWidget/entry_pl.properties
+++ b/core/src/main/resources/hudson/widgets/HistoryWidget/entry_pl.properties
@@ -20,4 +20,4 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
-Console\ Output=Wyj\u015Bcie konsoli
+Console\ Output=Logi konsoli
diff --git a/core/src/main/resources/hudson/widgets/Messages_pl.properties b/core/src/main/resources/hudson/widgets/Messages_pl.properties
index 37de7c67a6..0bf1fc9fa9 100644
--- a/core/src/main/resources/hudson/widgets/Messages_pl.properties
+++ b/core/src/main/resources/hudson/widgets/Messages_pl.properties
@@ -20,4 +20,4 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
-BuildHistoryWidget.DisplayName=Historia budowa\u0144
+BuildHistoryWidget.DisplayName=Historia zada\u0144
diff --git a/core/src/main/resources/jenkins/diagnostics/SecurityIsOffMonitor/message_cs.properties b/core/src/main/resources/jenkins/diagnostics/SecurityIsOffMonitor/message_cs.properties
new file mode 100644
index 0000000000..2cae869ce1
--- /dev/null
+++ b/core/src/main/resources/jenkins/diagnostics/SecurityIsOffMonitor/message_cs.properties
@@ -0,0 +1,6 @@
+# This file is under the MIT License by authors
+
+Setup\ Security=Nastaven\u00ED zabezpe\u010Den\u00ED
+Dismiss=Rozum\u00EDm
+blurb=Nezabezpe\u010Den\u00FD b\u011Bh aplikace Jenkins umo\u017E\u0148uje komukoliv na s\u00EDti spou\u0161t\u011Bt procesy va\u0161\u00EDm \
+ jm\u00E9nem. Pro omezen\u00ED tohoto zneu\u017Eit\u00ED pros\u00EDm zva\u017Ete zapnut\u00ED autentizace do aplikace Jenkins.
diff --git a/core/src/main/resources/jenkins/install/pluginSetupWizard.properties b/core/src/main/resources/jenkins/install/pluginSetupWizard.properties
index f86316fc83..03fddbf2b4 100644
--- a/core/src/main/resources/jenkins/install/pluginSetupWizard.properties
+++ b/core/src/main/resources/jenkins/install/pluginSetupWizard.properties
@@ -36,3 +36,4 @@ installWizard_installIncomplete_title=Resume Installation
installWizard_installIncomplete_banner=Resume Installation
installWizard_installIncomplete_message=Jenknins was restarted during installation and some plugins didn't seem to get installed.
installWizard_installIncomplete_resumeInstallationButtonLabel=Resume
+installWizard_installIncomplete_dependenciesLabel=Dependencies
diff --git a/core/src/main/resources/jenkins/management/Messages_pl.properties b/core/src/main/resources/jenkins/management/Messages_pl.properties
index 174a79fbe6..0193fb3c76 100644
--- a/core/src/main/resources/jenkins/management/Messages_pl.properties
+++ b/core/src/main/resources/jenkins/management/Messages_pl.properties
@@ -22,15 +22,34 @@
# THE SOFTWARE.
#
-PluginsLink.Description=Dodaj, usu\u0144, wy\u0142\u0105cz lub w\u0142\u0105cz wtyczki kt\u00F3re mog\u0105 rozszerzy\u0107 funkcjonalno\u015B\u0107 Jenkinsa.
ConfigureLink.DisplayName=Skonfiguruj system
ConfigureLink.Description=Konfiguruj ustawienia globalne i \u015Bcie\u017Cki.
+
+ReloadLink.DisplayName=Odczytaj ponownie konfiguracj\u0119 z dysku
ReloadLink.Description=Porzu\u0107 wszystkie dane za\u0142adowane w pami\u0119ci i za\u0142aduj wszystko z systemu plik\u00F3w.\n\
Opcja u\u017Cyteczna gdy zmodyfikowano pliki konfiguracyjne bezpo\u015Brednio z dysku.
-StatisticsLink.DisplayName=Statystyki Obci\u0105\u017Cenia
-PluginsLink.DisplayName=Zarz\u0105dzaj dodatkami
-ShutdownLink.DisplayName_prepare=Przygotuj do wy\u0142\u0105czenia
-ReloadLink.DisplayName=Odczytaj ponownie konfiguracj\u0119 z dysku
-ShutdownLink.Description=Zatrzyma wykonanie nowych build\u00F3w, tak by system m\u00F3g\u0142by\u0107 bezpiecznie wy\u0142\u0105czony.
-ShutdownLink.DisplayName_cancel=Anuluj wy\u0142\u0105czenie
+
+PluginsLink.DisplayName=Zarz\u0105dzaj wtyczkami
+PluginsLink.Description=Dodaj, usu\u0144, wy\u0142\u0105cz lub w\u0142\u0105cz wtyczki kt\u00F3re mog\u0105 rozszerzy\u0107 funkcjonalno\u015B\u0107 Jenkinsa.
+
SystemInfoLink.DisplayName=Informacje o systemie
+SystemInfoLink.Description=Wy\u015Bwietla wiele \u015Brodowiskowych informacji pomocnych przy rozwi\u0105zywaniu problem\u00F3w.
+
+StatisticsLink.DisplayName=Statystyki obci\u0105\u017Cenia
+StatisticsLink.Description=Sprawd\u017A obci\u0105\u017Cenie zasob\u00F3w systemowych i dowiedz si\u0119, czy nie potrzebujesz wi\u0119cej maszyn do uruchamiania zada\u0144.
+
+SystemLogLink.DisplayName=Dziennik systemowy
+SystemLogLink.Description=Dziennik systemowy gromadzi wywoy\u0142ania java.util.logging powi\u0105zane z Jenkinsem.
+
+CliLink.DisplayName=Wiersz polece\u0144 Jenkinsa
+CliLink.Description=Zarz\u0105dzaj Jenkinsem poziomu z wiersza polece\u0144 lub systemu.
+
+ConsoleLink.DisplayName=Konsola skrypt\u00F3w
+ConsoleLink.Description=Wykonuje dowolny skrypt pomocny do cel\u00F3w administracyjnych, usuwania usterek i diagnostyki.
+
+NodesLink.DisplayName=Zarz\u0105dzaj w\u0119z\u0142ami
+NodesLink.Description=Dodawaj, usuwaj, kontroluj i monitoruj r\u00F3\u017Cne w\u0119z\u0142y, na kt\u00F3rych Jenkins uruchamia zadania.
+
+ShutdownLink.DisplayName_prepare=Przygotuj do wy\u0142\u0105czenia
+ShutdownLink.DisplayName_cancel=Anuluj wy\u0142\u0105czenie
+ShutdownLink.Description=Zatrzyma wykonanie nowych build\u00F3w, tak by system m\u00F3g\u0142by\u0107 bezpiecznie wy\u0142\u0105czony.
diff --git a/core/src/main/resources/jenkins/management/PluginsLink/info_pl.properties b/core/src/main/resources/jenkins/management/PluginsLink/info_pl.properties
index 29bc40f579..57020cf14b 100644
--- a/core/src/main/resources/jenkins/management/PluginsLink/info_pl.properties
+++ b/core/src/main/resources/jenkins/management/PluginsLink/info_pl.properties
@@ -22,4 +22,4 @@
# THE SOFTWARE.
#
-updates\ available=uaktualnienia s\u0105 dost\u0119pne
+updates\ available=aktualizacje s\u0105 dost\u0119pne
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/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"
diff --git a/core/src/main/resources/jenkins/model/Jenkins/downgrade_pl.properties b/core/src/main/resources/jenkins/model/Jenkins/downgrade_pl.properties
index a7ca7cdb6a..4e6685245c 100644
--- a/core/src/main/resources/jenkins/model/Jenkins/downgrade_pl.properties
+++ b/core/src/main/resources/jenkins/model/Jenkins/downgrade_pl.properties
@@ -21,4 +21,4 @@
# THE SOFTWARE.
Restore\ the\ previous\ version\ of\ Jenkins=Przywr\u00F3\u0107 poprzedni\u0105 wersj\u0119 Jenkins''a
-buttonText=Obni\u017C do
+buttonText=Obni\u017C do {0}
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..9ba899b51b 100644
--- a/core/src/main/resources/jenkins/model/Jenkins/help-rawWorkspaceDir.html
+++ b/core/src/main/resources/jenkins/model/Jenkins/help-rawWorkspaceDir.html
@@ -1,6 +1,6 @@
Specify where Jenkins would store job workspaces on the master node.
- (It has no effect on builds run on slaves.)
+ (It has no effect on builds run on agents.)
This value can include the following variables.
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 @@
-
- 設定 Jenkins 在 Master 節點上存放作業工作區的地方 (對 Slave 節點上的建置無效),可以使用下列變數:
-
-
- ${JENKINS_HOME} — Jenkins 主目錄。
- ${ITEM_ROOTDIR} — 作業根目錄,也就是放預設工作區的地方。
- ${ITEM_FULL_NAME} — 用 '/' 隔開的作業名稱,例如 "foo/bar"。
-
-
-
- 讓您可以把工作區放到 SSD, SCSI 甚至是 Ram Disk 上。
- 預設值是 ${ITEM_ROOTDIR}/workspace。
-
\ No newline at end of file
diff --git a/core/src/main/resources/jenkins/model/Jenkins/legend_pl.properties b/core/src/main/resources/jenkins/model/Jenkins/legend_pl.properties
index 5dcd092fc6..5b008064d9 100644
--- a/core/src/main/resources/jenkins/model/Jenkins/legend_pl.properties
+++ b/core/src/main/resources/jenkins/model/Jenkins/legend_pl.properties
@@ -1,13 +1,13 @@
# This file is under the MIT License by authors
-blue=Ostatnie budowanie projektu zako\u0144czy\u0142o si\u0119 pomy\u015Blnie.
-blue_anime=Ostatnie budowanie projektu zako\u0144czy\u0142o si\u0119 pomy\u015Blnie. Nowa wersja jest w trakcie budowy.
-grey=Projekt nie zosta\u0142 dotychczas zbudowany lub jest wy\u0142\u0105czony.
-grey_anime=Trwa pierwsze budowanie projektu.
-red=Ostatnie budowanie projektu nie powiod\u0142o si\u0119.
-red_anime=Ostatnie budowanie projektu nie powiod\u0142o si\u0119. Nowa wersja jest w trakcie budowy.
-yellow=Ostatnie budowanie projektu zako\u0144czy\u0142o si\u0119 pomy\u015Blnie, lecz wersja jest niestabilna. To oznaczenie stosowane jest dla projekt\u00F3w, w kt\u00F3rych testy zako\u0144czy\u0142y si\u0119 niepowodzeniem.
-yellow_anime=Ostatnie budowanie projektu zako\u0144czy\u0142o si\u0119 pomy\u015Blnie, lecz wersja jest niestabilna. Nowa wersja jest w trakcie budowy.
+blue=Ostatnie zadanie projektu zako\u0144czy\u0142o si\u0119 pomy\u015Blnie.
+blue_anime=Ostatnie zadanie projektu zako\u0144czy\u0142o si\u0119 pomy\u015Blnie. Nowa wersja jest w trakcie budowy.
+grey=Zadanie nie zosta\u0142o dotychczas zako\u0144czone lub jest wy\u0142\u0105czony.
+grey_anime=Trwa pierwsze zadanie projektu.
+red=Ostatnie zadanie projektu nie powiod\u0142o si\u0119.
+red_anime=Ostatnie zadanie projektu nie powiod\u0142o si\u0119. Nowa wersja jest w trakcie budowy.
+yellow=Ostatnie zadanie projektu zako\u0144czy\u0142o si\u0119 pomy\u015Blnie, lecz wersja jest niestabilna. To oznaczenie stosowane jest dla projekt\u00F3w, w kt\u00F3rych testy zako\u0144czy\u0142y si\u0119 niepowodzeniem.
+yellow_anime=Ostatnie zadanie projektu zako\u0144czy\u0142o si\u0119 pomy\u015Blnie, lecz wersja jest niestabilna. Nowa wersja jest w trakcie budowy.
health-81plus=Budowanie zako\u0144czone pomy\u015Blnie w ponad 80 procent przypadk\u00F3w. Przesu\u0144 myszk\u0119 nad ikon\u0119 projektu, aby sprawdzi\u0107 szczeg\u00F3\u0142y.
health-61to80=Budowanie zako\u0144czone pomy\u015Blnie pomi\u0119dzy 60 a 80 procent przypadk\u00F3w. Przesu\u0144 myszk\u0119 nad ikon\u0119 projektu, aby sprawdzi\u0107 szczeg\u00F3\u0142y.
health-41to60=Budowanie zako\u0144czone pomy\u015Blnie pomi\u0119dzy 40 a 60 procent przypadk\u00F3w. Przesu\u0144 myszk\u0119 nad ikon\u0119 projektu, aby sprawdzi\u0107 szczeg\u00F3\u0142y.
diff --git a/core/src/main/resources/jenkins/model/Jenkins/login_pl.properties b/core/src/main/resources/jenkins/model/Jenkins/login_pl.properties
index 45c8799cac..f353e83663 100644
--- a/core/src/main/resources/jenkins/model/Jenkins/login_pl.properties
+++ b/core/src/main/resources/jenkins/model/Jenkins/login_pl.properties
@@ -3,6 +3,6 @@
Password=Has\u0142o
Remember\ me\ on\ this\ computer=Zapami\u0119taj mnie na tym komputerze
User=Login
-login=zaloguj
+login=Zaloguj
signUp=Za\u0142\u00F3\u017C konto je\u015Bli nie jeste\u015B jeszcze uczestnikiem.
diff --git a/core/src/main/resources/jenkins/model/Jenkins/systemInfo.properties b/core/src/main/resources/jenkins/model/Jenkins/systemInfo.properties
index b1438e6fbb..1cc37cc3bd 100644
--- a/core/src/main/resources/jenkins/model/Jenkins/systemInfo.properties
+++ b/core/src/main/resources/jenkins/model/Jenkins/systemInfo.properties
@@ -1 +1 @@
-threadDump_blurb=Visit this page for master and slave thread dumps.
+threadDump_blurb=Visit this page for master and agent thread dumps.
diff --git a/core/src/main/resources/jenkins/model/Jenkins/systemInfo_de.properties b/core/src/main/resources/jenkins/model/Jenkins/systemInfo_de.properties
index 3797962b79..8a60d7efc0 100644
--- a/core/src/main/resources/jenkins/model/Jenkins/systemInfo_de.properties
+++ b/core/src/main/resources/jenkins/model/Jenkins/systemInfo_de.properties
@@ -28,4 +28,3 @@ Pinned=Gesperrt
Name=Name
Plugins=Plugins
Version=Version
-threadDump_blurb=Besuchen Sie diese Seite , um die Master und Slave Thread Dumps zu sehen.
diff --git a/core/src/main/resources/jenkins/model/Jenkins/systemInfo_ja.properties b/core/src/main/resources/jenkins/model/Jenkins/systemInfo_ja.properties
index 170abca067..49b8a4f79a 100644
--- a/core/src/main/resources/jenkins/model/Jenkins/systemInfo_ja.properties
+++ b/core/src/main/resources/jenkins/model/Jenkins/systemInfo_ja.properties
@@ -30,4 +30,3 @@ Version=\u30d0\u30fc\u30b8\u30e7\u30f3
Enabled=\u6709\u52b9\u5316
Pinned=\u30d4\u30f3
Thread\ Dumps=\u30b9\u30ec\u30c3\u30c9\u30c0\u30f3\u30d7
-threadDump_blurb=\u30de\u30b9\u30bf\u30fc\u3068\u30b9\u30ec\u30fc\u30d6\u306e\u30b9\u30ec\u30c3\u30c9\u30c0\u30f3\u30d7\u306f\u3053\u3061\u3089 \u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002
diff --git a/core/src/main/resources/jenkins/model/Jenkins/systemInfo_pt_BR.properties b/core/src/main/resources/jenkins/model/Jenkins/systemInfo_pt_BR.properties
index 16e6abedf9..0e7bcd0313 100644
--- a/core/src/main/resources/jenkins/model/Jenkins/systemInfo_pt_BR.properties
+++ b/core/src/main/resources/jenkins/model/Jenkins/systemInfo_pt_BR.properties
@@ -30,5 +30,4 @@ Version=Vers\u00E3o
Thread\ Dumps=Thread Dumps
No\ plugins\ installed.=Nenhum plugin instalado.
System\ Information=Informa\u00e7\u00f5es do sistema
-# Visit this page for master and slave thread dumps.
-threadDump_blurb=Visite esta p\u00e1gina para thread dumps do master e slaves.
+
diff --git a/core/src/main/resources/jenkins/model/Jenkins/systemInfo_zh_TW.properties b/core/src/main/resources/jenkins/model/Jenkins/systemInfo_zh_TW.properties
index c28c78dc3e..85b258fb53 100644
--- a/core/src/main/resources/jenkins/model/Jenkins/systemInfo_zh_TW.properties
+++ b/core/src/main/resources/jenkins/model/Jenkins/systemInfo_zh_TW.properties
@@ -32,4 +32,3 @@ Version=\u7248\u672c
Pinned=\u5df2\u639b\u8f09
Thread\ Dumps=\u57f7\u884c\u7dd2\u50be\u5370
-threadDump_blurb=\u5230\u9019\u4e00\u9801 \u53ef\u4ee5\u770b\u5230 Master \u53ca Slave \u7684\u57f7\u884c\u7dd2\u50be\u5370\u5167\u5bb9\u3002
diff --git a/core/src/main/resources/jenkins/model/Messages_pl.properties b/core/src/main/resources/jenkins/model/Messages_pl.properties
index 5d8e20a46f..bd0c8dd435 100644
--- a/core/src/main/resources/jenkins/model/Messages_pl.properties
+++ b/core/src/main/resources/jenkins/model/Messages_pl.properties
@@ -1,5 +1,5 @@
# The MIT License
-BuildDiscarderProperty.displayName=Porzu\u0107 stare budowania
-ParameterizedJobMixIn.build_with_parameters=Buduj z parametrami
-ParameterizedJobMixIn.build_now=Buduj teraz
+BuildDiscarderProperty.displayName=Porzu\u0107 stare zadania
+ParameterizedJobMixIn.build_with_parameters=Uruchom z parametrami
+ParameterizedJobMixIn.build_now=Uruchom
diff --git a/core/src/main/resources/jenkins/security/s2m/AdminCallableMonitor/message.properties b/core/src/main/resources/jenkins/security/s2m/AdminCallableMonitor/message.properties
index 95377db314..7b49ac2619 100644
--- a/core/src/main/resources/jenkins/security/s2m/AdminCallableMonitor/message.properties
+++ b/core/src/main/resources/jenkins/security/s2m/AdminCallableMonitor/message.properties
@@ -1,2 +1,2 @@
-blurb=Jenkins has rejected some commands from slaves, because we are unsure if it is open for slaves to execute, \
+blurb=Jenkins has rejected some commands from agents, because we are unsure if it is open for agents to execute, \
but this rejection has probably broken some builds. You should examine the situation to see if they should be whitelisted.
\ No newline at end of file
diff --git a/core/src/main/resources/jenkins/security/s2m/AdminCallableMonitor/message_pt_BR.properties b/core/src/main/resources/jenkins/security/s2m/AdminCallableMonitor/message_pt_BR.properties
index dd8765f735..25a215256f 100644
--- a/core/src/main/resources/jenkins/security/s2m/AdminCallableMonitor/message_pt_BR.properties
+++ b/core/src/main/resources/jenkins/security/s2m/AdminCallableMonitor/message_pt_BR.properties
@@ -20,9 +20,5 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
-# Jenkins has rejected some commands from slaves, because we are unsure if it is open for slaves to execute, \
-# but this rejection has probably broken some builds. You should examine the situation to see if they should be whitelisted.
-blurb=Jenkins rejeitou alguns comandos dos slaves, porque não tem certeza se está disponível para chamar os slaves, \
- e essa rejeição provavelmente quebrou alguns builds. Você deve examinar a situação e avaliar se está Ok.
Examine=
Dismiss=
diff --git a/core/src/main/resources/jenkins/security/s2m/AdminWhitelistRule/index.jelly b/core/src/main/resources/jenkins/security/s2m/AdminWhitelistRule/index.jelly
index 62dbc88621..d4c181f80f 100644
--- a/core/src/main/resources/jenkins/security/s2m/AdminWhitelistRule/index.jelly
+++ b/core/src/main/resources/jenkins/security/s2m/AdminWhitelistRule/index.jelly
@@ -26,14 +26,14 @@ THE SOFTWARE.
- ${%Slave → Master Access Control}
+ ${%Agent → Master Access Control}
- Jenkins master is now more strict about what commands its slaves can send to the master.
+ Jenkins master is now more strict about what commands its agents can send to the master.
Unfortunately, this prevents some plugins from functioning correctly, as those plugins do not
- specify which commands are open for slaves to execute and which ones are not.
+ specify which commands are open for agents to execute and which ones are not.
While plugin developers work on updating this,
- as an administrator, you can mark commands as OK for slaves to execute (aka "whitelisting".)
+ as an administrator, you can mark commands as OK for agents to execute (aka "whitelisting".)
- The slave → master access control subsystem is currently disabled.
- This is unsafe if you have slaves from other less trusted people.
+ The agent → master access control subsystem is currently disabled.
+ This is unsafe if you have agents from other less trusted people.
You can put it back on from
Global Security Configuration UI
@@ -50,7 +50,7 @@ THE SOFTWARE.
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/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 2caba28563..632f576388 100644
--- a/core/src/main/resources/lib/layout/layout.jelly
+++ b/core/src/main/resources/lib/layout/layout.jelly
@@ -166,6 +166,8 @@ ${h.initPageVariables(context)}
+
+
diff --git a/core/src/main/resources/lib/test/bar_pl.properties b/core/src/main/resources/lib/test/bar_pl.properties
index 53c588e308..66225c24df 100644
--- a/core/src/main/resources/lib/test/bar_pl.properties
+++ b/core/src/main/resources/lib/test/bar_pl.properties
@@ -20,6 +20,6 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
-failures={0} pora\u017Cek
+failures={0} b\u0142\u0119d\u00F3w
skipped={0} pomini\u0119tych
tests={0} test\u00F3w
diff --git a/core/src/test/java/hudson/cli/ListJobsCommandTest.java b/core/src/test/java/hudson/cli/ListJobsCommandTest.java
index 51b4cd980c..a08935c855 100644
--- a/core/src/test/java/hudson/cli/ListJobsCommandTest.java
+++ b/core/src/test/java/hudson/cli/ListJobsCommandTest.java
@@ -4,6 +4,7 @@ import static org.hamcrest.CoreMatchers.equalTo;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.CoreMatchers.containsString;
import static org.hamcrest.MatcherAssert.assertThat;
+import static org.junit.Assert.fail;
import static org.powermock.api.mockito.PowerMockito.mock;
import static org.powermock.api.mockito.PowerMockito.mockStatic;
import static org.powermock.api.mockito.PowerMockito.when;
@@ -50,6 +51,7 @@ public class ListJobsCommandTest {
jenkins = mock(Jenkins.class);
mockStatic(Jenkins.class);
when(Jenkins.getInstance()).thenReturn(jenkins);
+ when(Jenkins.getActiveInstance()).thenReturn(jenkins);
command = mock(ListJobsCommand.class, Mockito.CALLS_REAL_METHODS);
command.stdout = new PrintStream(stdout);
command.stderr = new PrintStream(stderr);
@@ -61,9 +63,13 @@ public class ListJobsCommandTest {
when(jenkins.getView("NoSuchViewOrItemGroup")).thenReturn(null);
when(jenkins.getItemByFullName("NoSuchViewOrItemGroup")).thenReturn(null);
- assertThat(runWith("NoSuchViewOrItemGroup"), equalTo(-1));
+ try {
+ runWith("NoSuchViewOrItemGroup");
+ fail("Exception should be thrown in the previous call.");
+ } catch (IllegalArgumentException e) { // Expected
+ assertThat(e.getMessage(), containsString("No view or item group with the given name 'NoSuchViewOrItemGroup' found."));
+ }
assertThat(stdout, is(empty()));
- assertThat(stderr.toString(), containsString("No view or item group with the given name found"));
}
/*
diff --git a/core/src/test/java/hudson/cli/handlers/ViewOptionHandlerTest.java b/core/src/test/java/hudson/cli/handlers/ViewOptionHandlerTest.java
index f6dd1d4b39..1f17d89d77 100644
--- a/core/src/test/java/hudson/cli/handlers/ViewOptionHandlerTest.java
+++ b/core/src/test/java/hudson/cli/handlers/ViewOptionHandlerTest.java
@@ -80,6 +80,7 @@ public class ViewOptionHandlerTest {
PowerMockito.mockStatic(Jenkins.class);
PowerMockito.when(Jenkins.getInstance()).thenReturn(jenkins);
+ PowerMockito.when(Jenkins.getActiveInstance()).thenReturn(jenkins);
when(jenkins.getView("outer")).thenReturn(outer);
when(jenkins.getDisplayName()).thenReturn("Jenkins");
}
@@ -116,7 +117,7 @@ public class ViewOptionHandlerTest {
assertEquals(
"No view named missing_view inside view Jenkins",
- parseFailedWith(CmdLineException.class, "missing_view")
+ parseFailedWith(IllegalArgumentException.class, "missing_view")
);
verifyZeroInteractions(setter);
@@ -126,7 +127,7 @@ public class ViewOptionHandlerTest {
assertEquals(
"No view named missing_view inside view outer",
- parseFailedWith(CmdLineException.class, "outer/missing_view")
+ parseFailedWith(IllegalArgumentException.class, "outer/missing_view")
);
verifyZeroInteractions(setter);
@@ -136,7 +137,7 @@ public class ViewOptionHandlerTest {
assertEquals(
"No view named missing_view inside view nested",
- parseFailedWith(CmdLineException.class, "outer/nested/missing_view")
+ parseFailedWith(IllegalArgumentException.class, "outer/nested/missing_view")
);
verifyZeroInteractions(setter);
@@ -146,19 +147,43 @@ public class ViewOptionHandlerTest {
assertEquals(
"inner view can not contain views",
- parseFailedWith(CmdLineException.class, "outer/nested/inner/missing")
+ parseFailedWith(IllegalStateException.class, "outer/nested/inner/missing")
);
verifyZeroInteractions(setter);
}
+ @Test public void reportEmptyViewNameRequestAsNull() throws Exception {
+ assertEquals(handler.getView(""), null);
+ verifyZeroInteractions(setter);
+ }
+
+ @Test public void reportViewSpaceNameRequestAsIAE() throws Exception {
+ try {
+ assertEquals(handler.getView(" "), null);
+ fail("No exception thrown. Expected IllegalArgumentException");
+ } catch (IllegalArgumentException e) {
+ assertEquals("No view named inside view Jenkins", e.getMessage());
+ verifyZeroInteractions(setter);
+ }
+ }
+
+ @Test public void reportNullViewAsNPE() throws Exception {
+ try {
+ handler.getView(null);
+ fail("No exception thrown. Expected NullPointerException");
+ } catch (NullPointerException e) {
+ verifyZeroInteractions(setter);
+ }
+ }
+
@Test public void refuseToReadOuterView() throws Exception {
denyAccessOn(outer);
assertEquals(
"Access denied for: outer",
- parseFailedWith(CmdLineException.class, "outer/nested/inner")
+ parseFailedWith(AccessDeniedException.class, "outer/nested/inner")
);
verify(outer).checkPermission(View.READ);
@@ -174,7 +199,7 @@ public class ViewOptionHandlerTest {
assertEquals(
"Access denied for: nested",
- parseFailedWith(CmdLineException.class, "outer/nested/inner")
+ parseFailedWith(AccessDeniedException.class, "outer/nested/inner")
);
verify(nested).checkPermission(View.READ);
@@ -189,7 +214,7 @@ public class ViewOptionHandlerTest {
assertEquals(
"Access denied for: inner",
- parseFailedWith(CmdLineException.class, "outer/nested/inner")
+ parseFailedWith(AccessDeniedException.class, "outer/nested/inner")
);
verify(inner).checkPermission(View.READ);
diff --git a/pom.xml b/pom.xml
index ce8bc076fc..322de8b166 100644
--- a/pom.xml
+++ b/pom.xml
@@ -33,7 +33,7 @@ THE SOFTWARE.
org.jenkins-ci.main
pom
- 2.0-alpha-1-SNAPSHOT
+ 2.0-alpha-3-SNAPSHOT
pom
Jenkins main module
@@ -179,7 +179,7 @@ THE SOFTWARE.
org.jenkins-ci.main
remoting
- 2.53.2
+ 2.53.3
@@ -500,7 +500,7 @@ THE SOFTWARE.
org.jenkins-ci.tools
maven-jenkins-dev-plugin
- 8.1.4.v20120524-jenkins-1
+ 9.2.15.v20160210-jenkins-1
org.jvnet.updatecenter2
@@ -510,7 +510,7 @@ THE SOFTWARE.
org.jenkins-ci.tools
maven-hpi-plugin
- 1.114
+ 1.116
org.apache.maven.plugins
diff --git a/test/pom.xml b/test/pom.xml
index 98bf773193..e57b8ba16b 100644
--- a/test/pom.xml
+++ b/test/pom.xml
@@ -28,7 +28,7 @@ THE SOFTWARE.
org.jenkins-ci.main
pom
- 2.0-alpha-1-SNAPSHOT
+ 2.0-alpha-3-SNAPSHOT
test
@@ -63,7 +63,7 @@ THE SOFTWARE.
${project.groupId}
jenkins-test-harness
- 2.2
+ 2.5
test
@@ -196,7 +196,7 @@ THE SOFTWARE.
maven-surefire-plugin
- ${jacocoSurefireArgs} -Dfile.encoding=UTF-8 -Xmx256m -XX:MaxPermSize=128m
+ ${jacocoSurefireArgs} -Dfile.encoding=UTF-8 -Xmx1g -XX:MaxPermSize=128m
true
diff --git a/test/src/test/groovy/hudson/cli/BuildCommandTest.groovy b/test/src/test/groovy/hudson/cli/BuildCommandTest.groovy
index 733726b553..33a9b22f87 100644
--- a/test/src/test/groovy/hudson/cli/BuildCommandTest.groovy
+++ b/test/src/test/groovy/hudson/cli/BuildCommandTest.groovy
@@ -201,8 +201,8 @@ public class BuildCommandTest {
def invoker = new CLICommandInvoker(j, new BuildCommand());
def result = invoker.invokeWithArgs("the-project");
- assertThat(result, failedWith(-1));
- assertThat(result.stderr(), containsString("Cannot build the-project because it is disabled."));
+ assertThat(result, failedWith(4));
+ assertThat(result.stderr(), containsString("ERROR: Cannot build the-project because it is disabled."));
assertNull("Project should not be built", project.getBuildByNumber(1));
}
@@ -213,8 +213,8 @@ public class BuildCommandTest {
def invoker = new CLICommandInvoker(j, new BuildCommand());
def result = invoker.invokeWithArgs("new-one");
- assertThat(result, failedWith(-1));
- assertThat(result.stderr(), containsString("Cannot build new-one because its configuration has not been saved."));
+ assertThat(result, failedWith(4));
+ assertThat(result.stderr(), containsString("ERROR: Cannot build new-one because its configuration has not been saved."));
assertNull("Project should not be built", newOne.getBuildByNumber(1));
}
@@ -257,8 +257,8 @@ public class BuildCommandTest {
// Create CLI & run command
def invoker = new CLICommandInvoker(j, new BuildCommand());
def result = invoker.invokeWithArgs("foo","-p","string=value");
- assertThat(result, failedWith(-1));
- assertThat(result.stderr(), containsString("No default value for the parameter \'FOO\'."));
+ assertThat(result, failedWith(2));
+ assertThat(result.stderr(), containsString("ERROR: No default value for the parameter \'FOO\'."));
Thread.sleep(5000); // Give the job 5 seconds to be submitted
assertNull("Build should not be scheduled", j.jenkins.getQueue().getItem(project));
diff --git a/test/src/test/java/hudson/cli/CLIRegistererTest.java b/test/src/test/java/hudson/cli/CLIRegistererTest.java
index 99d65175ff..fd5a427ba2 100644
--- a/test/src/test/java/hudson/cli/CLIRegistererTest.java
+++ b/test/src/test/java/hudson/cli/CLIRegistererTest.java
@@ -26,8 +26,8 @@ public class CLIRegistererTest {
CLICommandInvoker command = new CLICommandInvoker(j, "quiet-down");
Result invocation = command.invokeWithArgs("--username", "foo", "--password", "invalid");
- assertThat(invocation, failedWith(1));
- assertThat(invocation.stderr(), containsString("BadCredentialsException: foo"));
+ assertThat(invocation, failedWith(7));
+ assertThat(invocation.stderr(), containsString("ERROR: Bad Credentials. Search the server log for "));
assertThat("Unauthorized command was executed", Jenkins.getInstance().isQuietingDown(), is(false));
invocation = command.invokeWithArgs("--username", "foo", "--password", "foo");
diff --git a/test/src/test/java/hudson/cli/CopyJobCommandTest.java b/test/src/test/java/hudson/cli/CopyJobCommandTest.java
index 06fac566f6..8d34edcd8e 100644
--- a/test/src/test/java/hudson/cli/CopyJobCommandTest.java
+++ b/test/src/test/java/hudson/cli/CopyJobCommandTest.java
@@ -124,11 +124,11 @@ public class CopyJobCommandTest {
}
});
copyJobCommand.setTransportAuth(User.get("alice").impersonate());
- assertThat(command.invokeWithArgs("d1/p", "d2/p"), failedWith(-1));
+ assertThat(command.invokeWithArgs("d1/p", "d2/p"), failedWith(3));
copyJobCommand.setTransportAuth(User.get("bob").impersonate());
- assertThat(command.invokeWithArgs("d1/p", "d2/p"), failedWith(-1));
+ assertThat(command.invokeWithArgs("d1/p", "d2/p"), failedWith(6));
copyJobCommand.setTransportAuth(User.get("charlie").impersonate());
- assertThat(command.invokeWithArgs("d1/p", "d2/p"), failedWith(-1));
+ assertThat(command.invokeWithArgs("d1/p", "d2/p"), failedWith(6));
copyJobCommand.setTransportAuth(User.get("debbie").impersonate());
assertThat(command.invokeWithArgs("d1/p", "d2/p"), succeededSilently());
assertNotNull(d2.getItem("p"));
diff --git a/test/src/test/java/hudson/cli/CreateJobCommandTest.java b/test/src/test/java/hudson/cli/CreateJobCommandTest.java
index a11b0461ac..fd713b0a53 100644
--- a/test/src/test/java/hudson/cli/CreateJobCommandTest.java
+++ b/test/src/test/java/hudson/cli/CreateJobCommandTest.java
@@ -78,7 +78,7 @@ public class CreateJobCommandTest {
}
});
cmd.setTransportAuth(User.get("alice").impersonate());
- assertThat(invoker.withStdin(new ByteArrayInputStream(" ".getBytes("US-ASCII"))).invokeWithArgs("d/p"), failedWith(-1));
+ assertThat(invoker.withStdin(new ByteArrayInputStream(" ".getBytes("US-ASCII"))).invokeWithArgs("d/p"), failedWith(6));
cmd.setTransportAuth(User.get("bob").impersonate());
assertThat(invoker.withStdin(new ByteArrayInputStream(" ".getBytes("US-ASCII"))).invokeWithArgs("d/p"), succeededSilently());
assertNotNull(d.getItem("p"));
diff --git a/test/src/test/java/hudson/cli/CreateNodeCommandTest.java b/test/src/test/java/hudson/cli/CreateNodeCommandTest.java
index ad207cc0d7..329e2d4b91 100644
--- a/test/src/test/java/hudson/cli/CreateNodeCommandTest.java
+++ b/test/src/test/java/hudson/cli/CreateNodeCommandTest.java
@@ -60,9 +60,9 @@ public class CreateNodeCommandTest {
.invoke()
;
- assertThat(result.stderr(), containsString("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(-1));
+ assertThat(result, failedWith(6));
}
@Test public void createNode() throws Exception {
@@ -129,9 +129,9 @@ public class CreateNodeCommandTest {
.invoke()
;
- assertThat(result.stderr(), containsString("Node 'SlaveFromXML' already exists"));
+ assertThat(result.stderr(), containsString("ERROR: Node 'SlaveFromXML' already exists"));
assertThat(result, hasNoStandardOutput());
- assertThat(result, failedWith(-1));
+ assertThat(result, failedWith(4));
}
@Test public void createNodeShouldFailIfNodeAlreadyExistWhenNameSpecifiedExplicitly() throws Exception {
@@ -144,8 +144,8 @@ public class CreateNodeCommandTest {
.invokeWithArgs("ExistingSlave")
;
- assertThat(result.stderr(), containsString("Node 'ExistingSlave' already exists"));
+ assertThat(result.stderr(), containsString("ERROR: Node 'ExistingSlave' already exists"));
assertThat(result, hasNoStandardOutput());
- assertThat(result, failedWith(-1));
+ assertThat(result, failedWith(4));
}
}
diff --git a/test/src/test/java/hudson/cli/CreateViewCommandTest.java b/test/src/test/java/hudson/cli/CreateViewCommandTest.java
index 5ed9af5f6a..5b564ea011 100644
--- a/test/src/test/java/hudson/cli/CreateViewCommandTest.java
+++ b/test/src/test/java/hudson/cli/CreateViewCommandTest.java
@@ -62,9 +62,9 @@ public class CreateViewCommandTest {
.invoke()
;
- assertThat(result, failedWith(-1));
+ assertThat(result, failedWith(6));
assertThat(result, hasNoStandardOutput());
- assertThat(result.stderr(), containsString("user is missing the View/Create permission"));
+ assertThat(result.stderr(), containsString("ERROR: user is missing the View/Create permission"));
}
@Test public void createViewShouldSucceed() {
@@ -111,9 +111,9 @@ public class CreateViewCommandTest {
.invoke()
;
- assertThat(result, failedWith(-1));
+ assertThat(result, failedWith(4));
assertThat(result, hasNoStandardOutput());
- assertThat(result.stderr(), containsString("View 'ViewFromXML' already exists"));
+ assertThat(result.stderr(), containsString("ERROR: View 'ViewFromXML' already exists"));
}
@Test public void createViewShouldFailUsingInvalidName() {
@@ -124,8 +124,8 @@ public class CreateViewCommandTest {
.invokeWithArgs("..")
;
- assertThat(result, failedWith(-1));
+ assertThat(result, failedWith(3));
assertThat(result, hasNoStandardOutput());
- assertThat(result.stderr(), containsString("Invalid view name"));
+ assertThat(result.stderr(), containsString("ERROR: Invalid view name"));
}
}
diff --git a/test/src/test/java/hudson/cli/DeleteJobCommandTest.java b/test/src/test/java/hudson/cli/DeleteJobCommandTest.java
index 1f540c9e28..1bf3622f99 100644
--- a/test/src/test/java/hudson/cli/DeleteJobCommandTest.java
+++ b/test/src/test/java/hudson/cli/DeleteJobCommandTest.java
@@ -62,9 +62,9 @@ public class DeleteJobCommandTest {
.authorizedTo(Job.READ, Jenkins.READ)
.invokeWithArgs("aProject");
- assertThat(result, failedWith(-1));
+ assertThat(result, failedWith(6));
assertThat(result, hasNoStandardOutput());
- assertThat(result.stderr(), containsString("user is missing the Job/Delete permission"));
+ assertThat(result.stderr(), containsString("ERROR: user is missing the Job/Delete permission"));
}
@Test public void deleteJobShouldFailWithoutJobReadPermission() throws IOException {
@@ -75,9 +75,9 @@ public class DeleteJobCommandTest {
.authorizedTo(Job.DELETE, Jenkins.READ)
.invokeWithArgs("aProject");
- assertThat(result, failedWith(-1));
+ assertThat(result, failedWith(3));
assertThat(result, hasNoStandardOutput());
- assertThat(result.stderr(), containsString("No such job 'aProject'"));
+ assertThat(result.stderr(), containsString("ERROR: No such job 'aProject'"));
}
@Test public void deleteJobShouldSucceed() throws Exception {
@@ -98,9 +98,9 @@ public class DeleteJobCommandTest {
.authorizedTo(Job.READ, Job.DELETE, Jenkins.READ)
.invokeWithArgs("never_created");
- assertThat(result, failedWith(-1));
+ assertThat(result, failedWith(3));
assertThat(result, hasNoStandardOutput());
- assertThat(result.stderr(), containsString("No such job 'never_created'"));
+ assertThat(result.stderr(), containsString("ERROR: No such job 'never_created'"));
}
@Test public void deleteJobManyShouldSucceed() throws Exception {
@@ -119,7 +119,45 @@ public class DeleteJobCommandTest {
assertThat(j.jenkins.getItem("aProject3"), nullValue());
}
- @Test public void deleteJobManyShouldFailIfAJobDoesNotExist() throws Exception {
+ @Test public void deleteJobManyShouldFailIfFirstJobDoesNotExist() throws Exception {
+
+ j.createFreeStyleProject("aProject1");
+ j.createFreeStyleProject("aProject2");
+
+ final CLICommandInvoker.Result result = command
+ .authorizedTo(Job.READ, Job.DELETE, Jenkins.READ)
+ .invokeWithArgs("never_created", "aProject1", "aProject2");
+
+ assertThat(result, failedWith(5));
+ assertThat(result, hasNoStandardOutput());
+ assertThat(result.stderr(), containsString("never_created: No such job 'never_created'"));
+ assertThat(result.stderr(), containsString("ERROR: Error occured while performing this command, see previous stderr output."));
+
+ assertThat(j.jenkins.getItem("aProject1"), nullValue());
+ assertThat(j.jenkins.getItem("aProject2"), nullValue());
+ assertThat(j.jenkins.getItem("never_created"), nullValue());
+ }
+
+ @Test public void deleteJobManyShouldFailIfMiddleJobDoesNotExist() throws Exception {
+
+ j.createFreeStyleProject("aProject1");
+ j.createFreeStyleProject("aProject2");
+
+ final CLICommandInvoker.Result result = command
+ .authorizedTo(Job.READ, Job.DELETE, Jenkins.READ)
+ .invokeWithArgs("aProject1","never_created", "aProject2");
+
+ assertThat(result, failedWith(5));
+ assertThat(result, hasNoStandardOutput());
+ assertThat(result.stderr(), containsString("never_created: No such job 'never_created'"));
+ assertThat(result.stderr(), containsString("ERROR: Error occured while performing this command, see previous stderr output."));
+
+ assertThat(j.jenkins.getItem("aProject1"), nullValue());
+ assertThat(j.jenkins.getItem("aProject2"), nullValue());
+ assertThat(j.jenkins.getItem("never_created"), nullValue());
+ }
+
+ @Test public void deleteJobManyShouldFailIfLastJobDoesNotExist() throws Exception {
j.createFreeStyleProject("aProject1");
j.createFreeStyleProject("aProject2");
@@ -128,15 +166,37 @@ public class DeleteJobCommandTest {
.authorizedTo(Job.READ, Job.DELETE, Jenkins.READ)
.invokeWithArgs("aProject1", "aProject2", "never_created");
- assertThat(result, failedWith(-1));
+ assertThat(result, failedWith(5));
assertThat(result, hasNoStandardOutput());
- assertThat(result.stderr(), containsString("No such job 'never_created'"));
+ assertThat(result.stderr(), containsString("never_created: No such job 'never_created'"));
+ assertThat(result.stderr(), containsString("ERROR: Error occured while performing this command, see previous stderr output."));
assertThat(j.jenkins.getItem("aProject1"), nullValue());
assertThat(j.jenkins.getItem("aProject2"), nullValue());
assertThat(j.jenkins.getItem("never_created"), nullValue());
}
+ @Test public void deleteJobManyShouldFailIfMoreJobsDoNotExist() throws Exception {
+
+ j.createFreeStyleProject("aProject1");
+ j.createFreeStyleProject("aProject2");
+
+ final CLICommandInvoker.Result result = command
+ .authorizedTo(Job.READ, Job.DELETE, Jenkins.READ)
+ .invokeWithArgs("aProject1", "never_created1", "never_created2", "aProject2");
+
+ assertThat(result, failedWith(5));
+ assertThat(result, hasNoStandardOutput());
+ assertThat(result.stderr(), containsString("never_created1: No such job 'never_created1'"));
+ assertThat(result.stderr(), containsString("never_created2: No such job 'never_created2'"));
+ assertThat(result.stderr(), containsString("ERROR: Error occured while performing this command, see previous stderr output."));
+
+ assertThat(j.jenkins.getItem("aProject1"), nullValue());
+ assertThat(j.jenkins.getItem("aProject2"), nullValue());
+ assertThat(j.jenkins.getItem("never_created1"), nullValue());
+ assertThat(j.jenkins.getItem("never_created2"), nullValue());
+ }
+
@Test public void deleteJobManyShouldSucceedEvenAJobIsSpecifiedTwice() throws Exception {
j.createFreeStyleProject("aProject1");
diff --git a/test/src/test/java/hudson/cli/DeleteNodeCommandTest.java b/test/src/test/java/hudson/cli/DeleteNodeCommandTest.java
index 60b3494e0a..07ddcdca2a 100644
--- a/test/src/test/java/hudson/cli/DeleteNodeCommandTest.java
+++ b/test/src/test/java/hudson/cli/DeleteNodeCommandTest.java
@@ -60,9 +60,9 @@ public class DeleteNodeCommandTest {
.invokeWithArgs("aNode")
;
- assertThat(result, failedWith(-1));
+ assertThat(result, failedWith(6));
assertThat(result, hasNoStandardOutput());
- assertThat(result.stderr(), containsString("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 {
@@ -85,9 +85,9 @@ public class DeleteNodeCommandTest {
.invokeWithArgs("never_created")
;
- assertThat(result, failedWith(-1));
+ assertThat(result, failedWith(3));
assertThat(result, hasNoStandardOutput());
- assertThat(result.stderr(), containsString("No such node 'never_created'"));
+ assertThat(result.stderr(), containsString("ERROR: No such node 'never_created'"));
}
@Test public void deleteNodeManyShouldSucceed() throws Exception {
@@ -106,7 +106,45 @@ public class DeleteNodeCommandTest {
assertThat(j.jenkins.getView("aNode3"), nullValue());
}
- @Test public void deleteNodeManyShouldFailIfANodeDoesNotExist() throws Exception {
+ @Test public void deleteNodeManyShouldFailIfFirstNodeDoesNotExist() throws Exception {
+
+ j.createSlave("aNode1", "", null);
+ j.createSlave("aNode2", "", null);
+
+ final CLICommandInvoker.Result result = command
+ .authorizedTo(Computer.DELETE, Jenkins.READ)
+ .invokeWithArgs("never_created", "aNode1", "aNode2");
+
+ assertThat(result, failedWith(5));
+ assertThat(result, hasNoStandardOutput());
+ assertThat(result.stderr(), containsString("never_created: No such node 'never_created'"));
+ assertThat(result.stderr(), containsString("ERROR: Error occured while performing this command, see previous stderr output."));
+
+ assertThat(j.jenkins.getView("aNode1"), nullValue());
+ assertThat(j.jenkins.getView("aNode2"), nullValue());
+ assertThat(j.jenkins.getView("never_created"), nullValue());
+ }
+
+ @Test public void deleteNodeManyShouldFailIfMiddleNodeDoesNotExist() throws Exception {
+
+ j.createSlave("aNode1", "", null);
+ j.createSlave("aNode2", "", null);
+
+ final CLICommandInvoker.Result result = command
+ .authorizedTo(Computer.DELETE, Jenkins.READ)
+ .invokeWithArgs("aNode1", "never_created", "aNode2");
+
+ assertThat(result, failedWith(5));
+ assertThat(result, hasNoStandardOutput());
+ assertThat(result.stderr(), containsString("never_created: No such node 'never_created'"));
+ assertThat(result.stderr(), containsString("ERROR: Error occured while performing this command, see previous stderr output."));
+
+ assertThat(j.jenkins.getView("aNode1"), nullValue());
+ assertThat(j.jenkins.getView("aNode2"), nullValue());
+ assertThat(j.jenkins.getView("never_created"), nullValue());
+ }
+
+ @Test public void deleteNodeManyShouldFailIfLastNodeDoesNotExist() throws Exception {
j.createSlave("aNode1", "", null);
j.createSlave("aNode2", "", null);
@@ -115,15 +153,37 @@ public class DeleteNodeCommandTest {
.authorizedTo(Computer.DELETE, Jenkins.READ)
.invokeWithArgs("aNode1", "aNode2", "never_created");
- assertThat(result, failedWith(-1));
+ assertThat(result, failedWith(5));
assertThat(result, hasNoStandardOutput());
- assertThat(result.stderr(), containsString("No such node 'never_created'"));
+ assertThat(result.stderr(), containsString("never_created: No such node 'never_created'"));
+ assertThat(result.stderr(), containsString("ERROR: Error occured while performing this command, see previous stderr output."));
assertThat(j.jenkins.getView("aNode1"), nullValue());
assertThat(j.jenkins.getView("aNode2"), nullValue());
assertThat(j.jenkins.getView("never_created"), nullValue());
}
+ @Test public void deleteNodeManyShouldFailIfMoreNodesDoNotExist() throws Exception {
+
+ j.createSlave("aNode1", "", null);
+ j.createSlave("aNode2", "", null);
+
+ final CLICommandInvoker.Result result = command
+ .authorizedTo(Computer.DELETE, Jenkins.READ)
+ .invokeWithArgs("aNode1", "never_created1", "never_created2", "aNode2");
+
+ assertThat(result, failedWith(5));
+ assertThat(result, hasNoStandardOutput());
+ assertThat(result.stderr(), containsString("never_created1: No such node 'never_created1'"));
+ assertThat(result.stderr(), containsString("never_created2: No such node 'never_created2'"));
+ assertThat(result.stderr(), containsString("ERROR: Error occured while performing this command, see previous stderr output."));
+
+ assertThat(j.jenkins.getView("aNode1"), nullValue());
+ assertThat(j.jenkins.getView("aNode2"), nullValue());
+ assertThat(j.jenkins.getView("never_created1"), nullValue());
+ assertThat(j.jenkins.getView("never_created2"), nullValue());
+ }
+
@Test public void deleteNodeManyShouldSucceedEvenANodeIsSpecifiedTwice() throws Exception {
j.createSlave("aNode1", "", null);
diff --git a/test/src/test/java/hudson/cli/DeleteViewCommandTest.java b/test/src/test/java/hudson/cli/DeleteViewCommandTest.java
index c3938b51be..732270fccc 100644
--- a/test/src/test/java/hudson/cli/DeleteViewCommandTest.java
+++ b/test/src/test/java/hudson/cli/DeleteViewCommandTest.java
@@ -67,9 +67,9 @@ public class DeleteViewCommandTest {
.invokeWithArgs("aView")
;
- assertThat(result, failedWith(-1));
+ assertThat(result, failedWith(6));
assertThat(result, hasNoStandardOutput());
- assertThat(result.stderr(), containsString("user is missing the View/Delete permission"));
+ assertThat(result.stderr(), containsString("ERROR: user is missing the View/Delete permission"));
}
@Test public void deleteViewShouldFailWithoutViewReadPermission() throws IOException {
@@ -81,9 +81,9 @@ public class DeleteViewCommandTest {
.invokeWithArgs("aView")
;
- assertThat(result, failedWith(-1));
+ assertThat(result, failedWith(6));
assertThat(result, hasNoStandardOutput());
- assertThat(result.stderr(), containsString("user is missing the View/Read permission"));
+ assertThat(result.stderr(), containsString("ERROR: user is missing the View/Read permission"));
}
@Test public void deleteViewShouldSucceed() throws Exception {
@@ -106,9 +106,9 @@ public class DeleteViewCommandTest {
.invokeWithArgs("never_created")
;
- assertThat(result, failedWith(-1));
+ assertThat(result, failedWith(3));
assertThat(result, hasNoStandardOutput());
- assertThat(result.stderr(), containsString("No view named never_created inside view Jenkins"));
+ assertThat(result.stderr(), containsString("ERROR: No view named never_created inside view Jenkins"));
}
// ViewGroup.canDelete()
@@ -119,10 +119,32 @@ public class DeleteViewCommandTest {
.invokeWithArgs("All")
;
- assertThat(result, failedWith(-1));
+ assertThat(result, failedWith(4));
assertThat(result, hasNoStandardOutput());
assertThat(j.jenkins.getView("All"), notNullValue());
- assertThat(result.stderr(), containsString("Jenkins does not allow to delete 'All' view"));
+ assertThat(result.stderr(), containsString("ERROR: Jenkins does not allow to delete 'All' view"));
+ }
+
+ @Test public void deleteViewShoudlFailIfViewNameIsEmpty() {
+ final CLICommandInvoker.Result result = command
+ .authorizedTo(View.READ, View.DELETE, Jenkins.READ)
+ .invokeWithArgs("")
+ ;
+
+ assertThat(result, failedWith(3));
+ assertThat(result, hasNoStandardOutput());
+ assertThat(result.stderr(), containsString("ERROR: View name is empty"));
+ }
+
+ @Test public void deleteViewShoudlFailIfViewNameIsSpace() {
+ final CLICommandInvoker.Result result = command
+ .authorizedTo(View.READ, View.DELETE, Jenkins.READ)
+ .invokeWithArgs(" ")
+ ;
+
+ assertThat(result, failedWith(3));
+ assertThat(result, hasNoStandardOutput());
+ assertThat(result.stderr(), containsString("ERROR: No view named inside view Jenkins"));
}
@Test public void deleteViewManyShouldSucceed() throws Exception {
@@ -141,7 +163,45 @@ public class DeleteViewCommandTest {
assertThat(j.jenkins.getView("aView3"), nullValue());
}
- @Test public void deleteViewManyShouldFailIfAViewDoesNotExist() throws Exception {
+ @Test public void deleteViewManyShouldFailIfFirstViewDoesNotExist() throws Exception {
+
+ j.jenkins.addView(new ListView("aView1"));
+ j.jenkins.addView(new ListView("aView2"));
+
+ final CLICommandInvoker.Result result = command
+ .authorizedTo(View.READ, View.DELETE, Jenkins.READ)
+ .invokeWithArgs("never_created", "aView1", "aView2");
+
+ assertThat(result, failedWith(5));
+ assertThat(result, hasNoStandardOutput());
+ assertThat(result.stderr(), containsString("never_created: No view named never_created inside view Jenkins"));
+ assertThat(result.stderr(), containsString("ERROR: Error occured while performing this command, see previous stderr output."));
+
+ assertThat(j.jenkins.getView("aView1"), nullValue());
+ assertThat(j.jenkins.getView("aView2"), nullValue());
+ assertThat(j.jenkins.getView("never_created"), nullValue());
+ }
+
+ @Test public void deleteViewManyShouldFailIfMiddleViewDoesNotExist() throws Exception {
+
+ j.jenkins.addView(new ListView("aView1"));
+ j.jenkins.addView(new ListView("aView2"));
+
+ final CLICommandInvoker.Result result = command
+ .authorizedTo(View.READ, View.DELETE, Jenkins.READ)
+ .invokeWithArgs("aView1", "never_created", "aView2");
+
+ assertThat(result, failedWith(5));
+ assertThat(result, hasNoStandardOutput());
+ assertThat(result.stderr(), containsString("never_created: No view named never_created inside view Jenkins"));
+ assertThat(result.stderr(), containsString("ERROR: Error occured while performing this command, see previous stderr output."));
+
+ assertThat(j.jenkins.getView("aView1"), nullValue());
+ assertThat(j.jenkins.getView("aView2"), nullValue());
+ assertThat(j.jenkins.getView("never_created"), nullValue());
+ }
+
+ @Test public void deleteViewManyShouldFailIfLastViewDoesNotExist() throws Exception {
j.jenkins.addView(new ListView("aView1"));
j.jenkins.addView(new ListView("aView2"));
@@ -150,15 +210,37 @@ public class DeleteViewCommandTest {
.authorizedTo(View.READ, View.DELETE, Jenkins.READ)
.invokeWithArgs("aView1", "aView2", "never_created");
- assertThat(result, failedWith(-1));
+ assertThat(result, failedWith(5));
assertThat(result, hasNoStandardOutput());
- assertThat(result.stderr(), containsString("No view named never_created inside view Jenkins"));
+ assertThat(result.stderr(), containsString("never_created: No view named never_created inside view Jenkins"));
+ assertThat(result.stderr(), containsString("ERROR: Error occured while performing this command, see previous stderr output."));
assertThat(j.jenkins.getView("aView1"), nullValue());
assertThat(j.jenkins.getView("aView2"), nullValue());
assertThat(j.jenkins.getView("never_created"), nullValue());
}
+ @Test public void deleteViewManyShouldFailIfMoreViewsDoNotExist() throws Exception {
+
+ j.jenkins.addView(new ListView("aView1"));
+ j.jenkins.addView(new ListView("aView2"));
+
+ final CLICommandInvoker.Result result = command
+ .authorizedTo(View.READ, View.DELETE, Jenkins.READ)
+ .invokeWithArgs("aView1", "never_created1", "never_created2", "aView2");
+
+ assertThat(result, failedWith(5));
+ assertThat(result, hasNoStandardOutput());
+ assertThat(result.stderr(), containsString("never_created1: No view named never_created1 inside view Jenkins"));
+ assertThat(result.stderr(), containsString("never_created2: No view named never_created2 inside view Jenkins"));
+ assertThat(result.stderr(), containsString("ERROR: Error occured while performing this command, see previous stderr output."));
+
+ assertThat(j.jenkins.getView("aView1"), nullValue());
+ assertThat(j.jenkins.getView("aView2"), nullValue());
+ assertThat(j.jenkins.getView("never_created1"), nullValue());
+ assertThat(j.jenkins.getView("never_created2"), nullValue());
+ }
+
@Test public void deleteViewManyShouldSucceedEvenAViewSpecifiedTwice() throws Exception {
j.jenkins.addView(new ListView("aView1"));
@@ -182,9 +264,10 @@ public class DeleteViewCommandTest {
.authorizedTo(View.READ, View.DELETE, Jenkins.READ)
.invokeWithArgs("aView1", "aView2", "All");
- assertThat(result, failedWith(-1));
+ assertThat(result, failedWith(5));
assertThat(result, hasNoStandardOutput());
- assertThat(result.stderr(), containsString("Jenkins does not allow to delete 'All' view"));
+ assertThat(result.stderr(), containsString("All: Jenkins does not allow to delete 'All' view"));
+ assertThat(result.stderr(), containsString("ERROR: Error occured while performing this command, see previous stderr output."));
assertThat(j.jenkins.getView("aView1"), nullValue());
assertThat(j.jenkins.getView("aView2"), nullValue());
diff --git a/test/src/test/java/hudson/cli/GetNodeCommandTest.java b/test/src/test/java/hudson/cli/GetNodeCommandTest.java
index e6d2c8ac08..b6f7c575da 100644
--- a/test/src/test/java/hudson/cli/GetNodeCommandTest.java
+++ b/test/src/test/java/hudson/cli/GetNodeCommandTest.java
@@ -59,8 +59,8 @@ public class GetNodeCommandTest {
.invokeWithArgs("MySlave")
;
- assertThat(result.stderr(), containsString("user is missing the Slave/ExtendedRead permission"));
- assertThat(result, failedWith(-1));
+ assertThat(result.stderr(), containsString("ERROR: user is missing the Agent/ExtendedRead permission"));
+ assertThat(result, failedWith(6));
assertThat(result, hasNoStandardOutput());
}
@@ -86,8 +86,8 @@ public class GetNodeCommandTest {
.invokeWithArgs("MySlave")
;
- assertThat(result.stderr(), containsString("No such node 'MySlave'"));
- assertThat(result, failedWith(-1));
+ assertThat(result.stderr(), containsString("ERROR: No such node 'MySlave'"));
+ assertThat(result, failedWith(3));
assertThat(result, hasNoStandardOutput());
}
}
diff --git a/test/src/test/java/hudson/cli/GetViewCommandTest.java b/test/src/test/java/hudson/cli/GetViewCommandTest.java
index 4eb47f1553..d3a6fd9ef7 100644
--- a/test/src/test/java/hudson/cli/GetViewCommandTest.java
+++ b/test/src/test/java/hudson/cli/GetViewCommandTest.java
@@ -63,9 +63,9 @@ public class GetViewCommandTest {
.invokeWithArgs("aView")
;
- assertThat(result, failedWith(-1));
+ assertThat(result, failedWith(6));
assertThat(result, hasNoStandardOutput());
- assertThat(result.stderr(), containsString("user is missing the View/Read permission"));
+ assertThat(result.stderr(), containsString("ERROR: user is missing the View/Read permission"));
}
@Test public void getViewShouldYieldConfigXml() throws Exception {
@@ -90,8 +90,8 @@ public class GetViewCommandTest {
.invokeWithArgs("never_created")
;
- assertThat(result, failedWith(-1));
+ assertThat(result, failedWith(3));
assertThat(result, hasNoStandardOutput());
- assertThat(result.stderr(), containsString("No view named never_created inside view Jenkins"));
+ assertThat(result.stderr(), containsString("ERROR: No view named never_created inside view Jenkins"));
}
}
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 1204d4af56..620429120c 100644
--- a/test/src/test/java/hudson/cli/OnlineNodeCommandTest.java
+++ b/test/src/test/java/hudson/cli/OnlineNodeCommandTest.java
@@ -63,18 +63,18 @@ public class OnlineNodeCommandTest {
.authorizedTo(Jenkins.READ)
.invokeWithArgs("aNode");
- assertThat(result, failedWith(1));
+ assertThat(result, failedWith(6));
assertThat(result, hasNoStandardOutput());
- assertThat(result.stderr(), containsString("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 {
final CLICommandInvoker.Result result = command
.authorizedTo(Computer.CONNECT, Jenkins.READ)
.invokeWithArgs("never_created");
- assertThat(result, failedWith(1));
+ assertThat(result, failedWith(3));
assertThat(result, hasNoStandardOutput());
- assertThat(result.stderr(), containsString("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/ReloadJobCommandTest.java b/test/src/test/java/hudson/cli/ReloadJobCommandTest.java
index ff99a88e95..40869bab3f 100644
--- a/test/src/test/java/hudson/cli/ReloadJobCommandTest.java
+++ b/test/src/test/java/hudson/cli/ReloadJobCommandTest.java
@@ -67,9 +67,9 @@ public class ReloadJobCommandTest {
.authorizedTo(Job.READ, Jenkins.READ)
.invokeWithArgs("aProject");
- assertThat(result, failedWith(1));
+ assertThat(result, failedWith(6));
assertThat(result, hasNoStandardOutput());
- assertThat(result.stderr(), containsString("user is missing the Job/Configure permission"));
+ assertThat(result.stderr(), containsString("ERROR: user is missing the Job/Configure permission"));
assertThat(project.scheduleBuild2(0).get().getLog(), containsString("echo 1"));
}
@@ -86,9 +86,9 @@ public class ReloadJobCommandTest {
.authorizedTo(Job.CONFIGURE, Jenkins.READ)
.invokeWithArgs("aProject");
- assertThat(result, failedWith(1));
+ assertThat(result, failedWith(3));
assertThat(result, hasNoStandardOutput());
- assertThat(result.stderr(), containsString("No such job \u2018aProject\u2019 exists."));
+ assertThat(result.stderr(), containsString("ERROR: No such job \u2018aProject\u2019 exists."));
assertThat(project.scheduleBuild2(0).get().getLog(), containsString("echo 1"));
}
@@ -116,9 +116,9 @@ public class ReloadJobCommandTest {
final CLICommandInvoker.Result result = command
.authorizedTo(Job.READ, Job.CONFIGURE, Jenkins.READ)
.invokeWithArgs("never_created");
- assertThat(result, failedWith(1));
+ assertThat(result, failedWith(3));
assertThat(result, hasNoStandardOutput());
- assertThat(result.stderr(), containsString("No such job \u2018never_created\u2019 exists."));
+ assertThat(result.stderr(), containsString("ERROR: No such job \u2018never_created\u2019 exists."));
}
@Test public void reloadJobShouldFailIfJobDoesNotExistButNearExists() throws Exception {
@@ -128,9 +128,9 @@ public class ReloadJobCommandTest {
final CLICommandInvoker.Result result = command
.authorizedTo(Job.READ, Job.CONFIGURE, Jenkins.READ)
.invokeWithArgs("never_created1");
- assertThat(result, failedWith(1));
+ assertThat(result, failedWith(3));
assertThat(result, hasNoStandardOutput());
- assertThat(result.stderr(), containsString("No such job \u2018never_created1\u2019 exists. Perhaps you meant \u2018never_created\u2019?"));
+ assertThat(result.stderr(), containsString("ERROR: No such job \u2018never_created1\u2019 exists. Perhaps you meant \u2018never_created\u2019?"));
}
@Test public void reloadJobManyShouldSucceed() throws Exception {
@@ -161,7 +161,59 @@ public class ReloadJobCommandTest {
assertThat(project3.scheduleBuild2(0).get().getLog(), containsString("echo 2"));
}
- @Test public void reloadJobManyShouldFailIfAJobDoesNotExist() throws Exception {
+ @Test public void reloadJobManyShouldFailIfFirstJobDoesNotExist() throws Exception {
+
+ FreeStyleProject project1 = j.createFreeStyleProject("aProject1");
+ project1.getBuildersList().add(new Shell("echo 1"));
+ FreeStyleProject project2 = j.createFreeStyleProject("aProject2");
+ project2.getBuildersList().add(new Shell("echo 1"));
+
+ assertThat(project1.scheduleBuild2(0).get().getLog(), containsString("echo 1"));
+ assertThat(project2.scheduleBuild2(0).get().getLog(), containsString("echo 1"));
+
+ changeProjectOnTheDisc(project1, "echo 1", "echo 2");
+ changeProjectOnTheDisc(project2, "echo 1", "echo 2");
+
+ final CLICommandInvoker.Result result = command
+ .authorizedTo(Job.READ, Job.CONFIGURE, Jenkins.READ)
+ .invokeWithArgs("never_created", "aProject1", "aProject2");
+
+ assertThat(result, failedWith(5));
+ assertThat(result, hasNoStandardOutput());
+ assertThat(result.stderr(), containsString("never_created: No such job \u2018never_created\u2019 exists."));
+ assertThat(result.stderr(), containsString("ERROR: Error occured while performing this command, see previous stderr output."));
+
+ assertThat(project1.scheduleBuild2(0).get().getLog(), containsString("echo 2"));
+ assertThat(project2.scheduleBuild2(0).get().getLog(), containsString("echo 2"));
+ }
+
+ @Test public void reloadJobManyShouldFailIfMiddleJobDoesNotExist() throws Exception {
+
+ FreeStyleProject project1 = j.createFreeStyleProject("aProject1");
+ project1.getBuildersList().add(new Shell("echo 1"));
+ FreeStyleProject project2 = j.createFreeStyleProject("aProject2");
+ project2.getBuildersList().add(new Shell("echo 1"));
+
+ assertThat(project1.scheduleBuild2(0).get().getLog(), containsString("echo 1"));
+ assertThat(project2.scheduleBuild2(0).get().getLog(), containsString("echo 1"));
+
+ changeProjectOnTheDisc(project1, "echo 1", "echo 2");
+ changeProjectOnTheDisc(project2, "echo 1", "echo 2");
+
+ final CLICommandInvoker.Result result = command
+ .authorizedTo(Job.READ, Job.CONFIGURE, Jenkins.READ)
+ .invokeWithArgs("aProject1", "never_created", "aProject2");
+
+ assertThat(result, failedWith(5));
+ assertThat(result, hasNoStandardOutput());
+ assertThat(result.stderr(), containsString("never_created: No such job \u2018never_created\u2019 exists."));
+ assertThat(result.stderr(), containsString("ERROR: Error occured while performing this command, see previous stderr output."));
+
+ assertThat(project1.scheduleBuild2(0).get().getLog(), containsString("echo 2"));
+ assertThat(project2.scheduleBuild2(0).get().getLog(), containsString("echo 2"));
+ }
+
+ @Test public void reloadJobManyShouldFailIfLastJobDoesNotExist() throws Exception {
FreeStyleProject project1 = j.createFreeStyleProject("aProject1");
project1.getBuildersList().add(new Shell("echo 1"));
@@ -178,9 +230,37 @@ public class ReloadJobCommandTest {
.authorizedTo(Job.READ, Job.CONFIGURE, Jenkins.READ)
.invokeWithArgs("aProject1", "aProject2", "never_created");
- assertThat(result, failedWith(1));
+ assertThat(result, failedWith(5));
assertThat(result, hasNoStandardOutput());
- assertThat(result.stderr(), containsString("No such job \u2018never_created\u2019 exists."));
+ assertThat(result.stderr(), containsString("never_created: No such job \u2018never_created\u2019 exists."));
+ assertThat(result.stderr(), containsString("ERROR: Error occured while performing this command, see previous stderr output."));
+
+ assertThat(project1.scheduleBuild2(0).get().getLog(), containsString("echo 2"));
+ assertThat(project2.scheduleBuild2(0).get().getLog(), containsString("echo 2"));
+ }
+
+ @Test public void reloadJobManyShouldFailIfMoreJobsDoNotExist() throws Exception {
+
+ FreeStyleProject project1 = j.createFreeStyleProject("aProject1");
+ project1.getBuildersList().add(new Shell("echo 1"));
+ FreeStyleProject project2 = j.createFreeStyleProject("aProject2");
+ project2.getBuildersList().add(new Shell("echo 1"));
+
+ assertThat(project1.scheduleBuild2(0).get().getLog(), containsString("echo 1"));
+ assertThat(project2.scheduleBuild2(0).get().getLog(), containsString("echo 1"));
+
+ changeProjectOnTheDisc(project1, "echo 1", "echo 2");
+ changeProjectOnTheDisc(project2, "echo 1", "echo 2");
+
+ final CLICommandInvoker.Result result = command
+ .authorizedTo(Job.READ, Job.CONFIGURE, Jenkins.READ)
+ .invokeWithArgs("aProject1", "never_created1", "never_created2", "aProject2");
+
+ assertThat(result, failedWith(5));
+ assertThat(result, hasNoStandardOutput());
+ assertThat(result.stderr(), containsString("never_created1: No such job \u2018never_created1\u2019 exists."));
+ assertThat(result.stderr(), containsString("never_created2: No such job \u2018never_created2\u2019 exists."));
+ assertThat(result.stderr(), containsString("ERROR: Error occured while performing this command, see previous stderr output."));
assertThat(project1.scheduleBuild2(0).get().getLog(), containsString("echo 2"));
assertThat(project2.scheduleBuild2(0).get().getLog(), containsString("echo 2"));
diff --git a/test/src/test/java/hudson/cli/SetBuildDisplayNameCommandTest.java b/test/src/test/java/hudson/cli/SetBuildDisplayNameCommandTest.java
index f706fa2b70..224aa2b2e3 100644
--- a/test/src/test/java/hudson/cli/SetBuildDisplayNameCommandTest.java
+++ b/test/src/test/java/hudson/cli/SetBuildDisplayNameCommandTest.java
@@ -57,9 +57,9 @@ public class SetBuildDisplayNameCommandTest {
.invokeWithArgs("project", "42", "DisplayName")
;
- assertThat(result.stderr(), containsString("Build #42 does not exist"));
+ assertThat(result.stderr(), containsString("ERROR: Build #42 does not exist"));
assertThat(result, hasNoStandardOutput());
- assertThat(result, failedWith(-1));
+ assertThat(result, failedWith(3));
}
@Test public void setDescriptionSuccessfully() throws Exception {
diff --git a/test/src/test/java/hudson/cli/UpdateNodeCommandTest.java b/test/src/test/java/hudson/cli/UpdateNodeCommandTest.java
index b4a977dbe9..f03b7d2a5f 100644
--- a/test/src/test/java/hudson/cli/UpdateNodeCommandTest.java
+++ b/test/src/test/java/hudson/cli/UpdateNodeCommandTest.java
@@ -60,8 +60,8 @@ public class UpdateNodeCommandTest {
.invokeWithArgs("MySlave")
;
- assertThat(result.stderr(), containsString("user is missing the Slave/Configure permission"));
- assertThat(result, failedWith(-1));
+ assertThat(result.stderr(), containsString("ERROR: user is missing the Agent/Configure permission"));
+ assertThat(result, failedWith(6));
assertThat(result, hasNoStandardOutput());
}
@@ -92,8 +92,8 @@ public class UpdateNodeCommandTest {
.invokeWithArgs("MySlave")
;
- assertThat(result.stderr(), containsString("No such node 'MySlave'"));
- assertThat(result, failedWith(-1));
+ assertThat(result.stderr(), containsString("ERROR: No such node 'MySlave'"));
+ assertThat(result, failedWith(3));
assertThat(result, hasNoStandardOutput());
}
}
diff --git a/test/src/test/java/hudson/cli/UpdateViewCommandTest.java b/test/src/test/java/hudson/cli/UpdateViewCommandTest.java
index 937c2e7bac..ad2ceffe1b 100644
--- a/test/src/test/java/hudson/cli/UpdateViewCommandTest.java
+++ b/test/src/test/java/hudson/cli/UpdateViewCommandTest.java
@@ -61,9 +61,9 @@ public class UpdateViewCommandTest {
.invokeWithArgs("aView")
;
- assertThat(result, failedWith(-1));
+ assertThat(result, failedWith(6));
assertThat(result, hasNoStandardOutput());
- assertThat(result.stderr(), containsString("user is missing the View/Configure permission"));
+ assertThat(result.stderr(), containsString("ERROR: user is missing the View/Configure permission"));
}
@Test public void updateViewShouldModifyViewConfiguration() throws Exception {
@@ -94,8 +94,8 @@ public class UpdateViewCommandTest {
.invokeWithArgs("not_created")
;
- assertThat(result, failedWith(-1));
+ assertThat(result, failedWith(3));
assertThat(result, hasNoStandardOutput());
- assertThat(result.stderr(), containsString("No view named not_created inside view Jenkins"));
+ assertThat(result.stderr(), containsString("ERROR: No view named not_created inside view Jenkins"));
}
}
diff --git a/test/src/test/java/hudson/cli/ViewManipulationTest.java b/test/src/test/java/hudson/cli/ViewManipulationTest.java
index b77ea0854e..fe2bedb3d5 100644
--- a/test/src/test/java/hudson/cli/ViewManipulationTest.java
+++ b/test/src/test/java/hudson/cli/ViewManipulationTest.java
@@ -84,12 +84,12 @@ public class ViewManipulationTest {
j.createFreeStyleProject("a_project");
res = add().invokeWithArgs("All", "a_project");
- assertThat(res, failedWith(-1));
- assertThat(res.stderr(), containsString("'All' view can not be modified directly"));
+ assertThat(res, failedWith(4));
+ assertThat(res.stderr(), containsString("ERROR: 'All' view can not be modified directly"));
res = remove().invokeWithArgs("All", "a_project");
- assertThat(res, failedWith(-1));
- assertThat(res.stderr(), containsString("'All' view can not be modified directly"));
+ assertThat(res, failedWith(4));
+ assertThat(res.stderr(), containsString("ERROR: 'All' view can not be modified directly"));
}
@Test
@@ -99,12 +99,12 @@ public class ViewManipulationTest {
j.createFreeStyleProject("a_project");
res = add().authorizedTo(Jenkins.READ, Job.READ, View.READ).invokeWithArgs("a_view", "a_project");
- assertThat(res, failedWith(-1));
- assertThat(res.stderr(), containsString("user is missing the View/Configure permission"));
+ assertThat(res, failedWith(6));
+ assertThat(res.stderr(), containsString("ERROR: user is missing the View/Configure permission"));
res = remove().authorizedTo(Jenkins.READ, Job.READ, View.READ).invokeWithArgs("a_view", "a_project");
- assertThat(res, failedWith(-1));
- assertThat(res.stderr(), containsString("user is missing the View/Configure permission"));
+ assertThat(res, failedWith(6));
+ assertThat(res.stderr(), containsString("ERROR: user is missing the View/Configure permission"));
}
private CLICommandInvoker add() {
diff --git a/test/src/test/java/hudson/model/ComputerConfigDotXmlTest.java b/test/src/test/java/hudson/model/ComputerConfigDotXmlTest.java
index dec8e9d766..1ae807ba07 100644
--- a/test/src/test/java/hudson/model/ComputerConfigDotXmlTest.java
+++ b/test/src/test/java/hudson/model/ComputerConfigDotXmlTest.java
@@ -38,8 +38,10 @@ import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
+import javax.servlet.ReadListener;
import javax.servlet.ServletInputStream;
import javax.servlet.ServletOutputStream;
+import javax.servlet.WriteListener;
import org.acegisecurity.context.SecurityContext;
import org.acegisecurity.context.SecurityContextHolder;
@@ -147,9 +149,18 @@ public class ComputerConfigDotXmlTest {
@Override
public void write(int b) throws IOException {
-
baos.write(b);
}
+
+ @Override
+ public boolean isReady() {
+ return true;
+ }
+
+ @Override
+ public void setWriteListener(WriteListener writeListener) {
+ throw new UnsupportedOperationException();
+ }
});
return baos;
@@ -162,15 +173,28 @@ public class ComputerConfigDotXmlTest {
private final InputStream inner;
public Stream(final InputStream inner) {
-
this.inner = inner;
}
@Override
public int read() throws IOException {
-
return inner.read();
}
+
+ @Override
+ public boolean isFinished() {
+ return false;
+ }
+
+ @Override
+ public boolean isReady() {
+ return true;
+ }
+
+ @Override
+ public void setReadListener(ReadListener readListener) {
+ throw new UnsupportedOperationException();
+ }
}
return new Stream(Computer.class.getResourceAsStream(name));
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/QueueTest.java b/test/src/test/java/hudson/model/QueueTest.java
index a868ab1e6d..2a91020de2 100644
--- a/test/src/test/java/hudson/model/QueueTest.java
+++ b/test/src/test/java/hudson/model/QueueTest.java
@@ -103,6 +103,10 @@ import org.apache.commons.io.FileUtils;
import static org.hamcrest.Matchers.nullValue;
import static org.junit.Assert.*;
+import org.eclipse.jetty.server.Server;
+import org.eclipse.jetty.server.ServerConnector;
+import org.eclipse.jetty.servlet.ServletHandler;
+import org.eclipse.jetty.servlet.ServletHolder;
import org.junit.Assert;
import org.junit.Rule;
import org.junit.Test;
@@ -114,10 +118,6 @@ import org.jvnet.hudson.test.SleepBuilder;
import org.jvnet.hudson.test.TestBuilder;
import org.jvnet.hudson.test.TestExtension;
import org.jvnet.hudson.test.recipes.LocalData;
-import org.mortbay.jetty.Server;
-import org.mortbay.jetty.bio.SocketConnector;
-import org.mortbay.jetty.servlet.ServletHandler;
-import org.mortbay.jetty.servlet.ServletHolder;
/**
* @author Kohsuke Kawaguchi
@@ -283,12 +283,12 @@ public class QueueTest {
Server server = new Server();
- SocketConnector connector = new SocketConnector();
+ ServerConnector connector = new ServerConnector(server);
server.addConnector(connector);
ServletHandler handler = new ServletHandler();
handler.addServletWithMapping(new ServletHolder(new FileItemPersistenceTestServlet()),"/");
- server.addHandler(handler);
+ server.setHandler(handler);
server.start();
@@ -404,7 +404,7 @@ public class QueueTest {
try {
build = m.scheduleBuild2(0).get(60, TimeUnit.SECONDS);
} catch (TimeoutException x) {
- throw (AssertionError) new AssertionError(r.jenkins.getQueue().getApproximateItemsQuickly().toString()).initCause(x);
+ throw (AssertionError) new AssertionError(r.jenkins.getQueue().getItems().toString()).initCause(x);
}
r.assertBuildStatusSuccess(build);
assertEquals("", build.getBuiltOnStr());
@@ -581,7 +581,6 @@ public class QueueTest {
* Make sure that the running build actually carries an credential.
*/
@Test public void accessControl() throws Exception {
- r.configureUserRealm();
FreeStyleProject p = r.createFreeStyleProject();
QueueItemAuthenticatorConfiguration.get().getAuthenticators().add(new MockQueueItemAuthenticator(Collections.singletonMap(p.getFullName(), alice)));
p.getBuildersList().add(new TestBuilder() {
@@ -608,7 +607,6 @@ public class QueueTest {
DumbSlave s1 = r.createSlave();
DumbSlave s2 = r.createSlave();
- r.configureUserRealm();
FreeStyleProject p = r.createFreeStyleProject();
QueueItemAuthenticatorConfiguration.get().getAuthenticators().add(new MockQueueItemAuthenticator(Collections.singletonMap(p.getFullName(), alice)));
p.getBuildersList().add(new TestBuilder() {
diff --git a/test/src/test/java/hudson/model/UpdateSiteTest.java b/test/src/test/java/hudson/model/UpdateSiteTest.java
index 1f0971ea62..8e22d43f76 100644
--- a/test/src/test/java/hudson/model/UpdateSiteTest.java
+++ b/test/src/test/java/hudson/model/UpdateSiteTest.java
@@ -42,15 +42,16 @@ import javax.servlet.http.HttpServletResponse;
import static org.junit.Assert.*;
import org.apache.commons.io.FileUtils;
+import org.eclipse.jetty.server.HttpConnection;
+import org.eclipse.jetty.server.Request;
+import org.eclipse.jetty.server.Server;
+import org.eclipse.jetty.server.ServerConnector;
+import org.eclipse.jetty.server.handler.AbstractHandler;
import org.junit.After;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.jvnet.hudson.test.JenkinsRule;
-import org.mortbay.jetty.HttpConnection;
-import org.mortbay.jetty.Server;
-import org.mortbay.jetty.bio.SocketConnector;
-import org.mortbay.jetty.handler.AbstractHandler;
public class UpdateSiteTest {
@@ -76,18 +77,17 @@ public class UpdateSiteTest {
@Before
public void setUpWebServer() throws Exception {
server = new Server();
- SocketConnector connector = new SocketConnector();
+ ServerConnector connector = new ServerConnector(server);
server.addConnector(connector);
server.setHandler(new AbstractHandler() {
- public void handle(String target, HttpServletRequest request,
- HttpServletResponse response, int dispatch) throws IOException,
- ServletException {
+ @Override
+ public void handle(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
if (target.startsWith(RELATIVE_BASE)) {
target = target.substring(RELATIVE_BASE.length());
}
String responseBody = getResource(target);
if (responseBody != null) {
- HttpConnection.getCurrentConnection().getRequest().setHandled(true);
+ baseRequest.setHandled(true);
response.setContentType("text/plain; charset=utf-8");
response.setStatus(HttpServletResponse.SC_OK);
response.getOutputStream().write(responseBody.getBytes());
diff --git a/test/src/test/java/hudson/util/XStream2Security247Test.java b/test/src/test/java/hudson/util/XStream2Security247Test.java
new file mode 100644
index 0000000000..d67434495f
--- /dev/null
+++ b/test/src/test/java/hudson/util/XStream2Security247Test.java
@@ -0,0 +1,136 @@
+package hudson.util;
+
+import hudson.model.Items;
+import org.apache.commons.io.*;
+import org.apache.commons.io.IOUtils;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.TemporaryFolder;
+import org.jvnet.hudson.test.Issue;
+import org.jvnet.hudson.test.JenkinsRule;
+import org.kohsuke.stapler.StaplerRequest;
+import org.kohsuke.stapler.StaplerResponse;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+import javax.servlet.ReadListener;
+import javax.servlet.ServletInputStream;
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+
+import static org.junit.Assert.assertFalse;
+import static org.mockito.Mockito.when;
+
+public class XStream2Security247Test {
+
+ @Rule
+ public JenkinsRule j = new JenkinsRule();
+
+ @Rule
+ public TemporaryFolder f = new TemporaryFolder();
+
+ @Mock
+ private StaplerRequest req;
+
+ @Mock
+ private StaplerResponse rsp;
+
+ @Before
+ public void setUp() throws Exception {
+ MockitoAnnotations.initMocks(this);
+ }
+
+ @Test
+ @Issue("SECURITY-247")
+ public void testXmlLoad() throws Exception {
+ File exploitFile = f.newFile();
+ try {
+ // be extra sure there's no file already
+ if (exploitFile.exists() && !exploitFile.delete()) {
+ throw new IllegalStateException("file exists and cannot be deleted");
+ }
+ File tempJobDir = new File(j.jenkins.getRootDir(), "security247");
+
+ String exploitXml = org.apache.commons.io.IOUtils.toString(
+ XStream2Security247Test.class.getResourceAsStream(
+ "/hudson/util/XStream2Security247Test/config.xml"), "UTF-8");
+
+ exploitXml = exploitXml.replace("@TOKEN@", exploitFile.getAbsolutePath());
+
+ FileUtils.write(new File(tempJobDir, "config.xml"), exploitXml);
+
+ try {
+ Items.load(j.jenkins, tempJobDir);
+ } catch (Exception e) {
+ // ignore
+ }
+ assertFalse("no file should be created here", exploitFile.exists());
+ } finally {
+ exploitFile.delete();
+ }
+ }
+
+ @Test
+ @Issue("SECURITY-247")
+ public void testPostJobXml() throws Exception {
+ File exploitFile = f.newFile();
+ try {
+ // be extra sure there's no file already
+ if (exploitFile.exists() && !exploitFile.delete()) {
+ throw new IllegalStateException("file exists and cannot be deleted");
+ }
+ File tempJobDir = new File(j.jenkins.getRootDir(), "security247");
+
+ String exploitXml = org.apache.commons.io.IOUtils.toString(
+ XStream2Security247Test.class.getResourceAsStream(
+ "/hudson/util/XStream2Security247Test/config.xml"), "UTF-8");
+
+ exploitXml = exploitXml.replace("@TOKEN@", exploitFile.getAbsolutePath());
+
+ when(req.getMethod()).thenReturn("POST");
+ when(req.getInputStream()).thenReturn(new Stream(IOUtils.toInputStream(exploitXml)));
+ when(req.getContentType()).thenReturn("application/xml");
+ when(req.getParameter("name")).thenReturn("foo");
+
+ try {
+ j.jenkins.doCreateItem(req, rsp);
+ } catch (Exception e) {
+ // don't care
+ }
+
+ assertFalse("no file should be created here", exploitFile.exists());
+ } finally {
+ exploitFile.delete();
+ }
+ }
+
+ private static class Stream extends ServletInputStream {
+ private final InputStream inner;
+
+ public Stream(final InputStream inner) {
+ this.inner = inner;
+ }
+
+ @Override
+ public int read() throws IOException {
+ return inner.read();
+ }
+
+ @Override
+ public boolean isFinished() {
+ return false;
+ }
+
+ @Override
+ public boolean isReady() {
+ return true;
+ }
+
+ @Override
+ public void setReadListener(ReadListener readListener) {
+ throw new UnsupportedOperationException();
+ }
+ }
+}
diff --git a/test/src/test/java/jenkins/model/JenkinsLocationConfigurationTest.java b/test/src/test/java/jenkins/model/JenkinsLocationConfigurationTest.java
index 9acce428f7..09d7d4c27c 100644
--- a/test/src/test/java/jenkins/model/JenkinsLocationConfigurationTest.java
+++ b/test/src/test/java/jenkins/model/JenkinsLocationConfigurationTest.java
@@ -1,6 +1,7 @@
package jenkins.model;
-import static org.junit.Assert.assertTrue;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.containsString;
import com.gargoylesoftware.htmlunit.html.HtmlInput;
import com.gargoylesoftware.htmlunit.html.HtmlPage;
@@ -24,6 +25,6 @@ public class JenkinsLocationConfigurationTest {
HtmlPage p = j.createWebClient().goTo("configure");
HtmlInput url = p.getFormByName("config").getInputByName("_.url");
url.setValueAttribute("http://localhost:1234/");
- assertTrue(p.getDocumentElement().getTextContent().contains("instead of localhost"));
+ assertThat(p.getDocumentElement().getTextContent(), containsString("instead of localhost"));
}
}
diff --git a/test/src/test/java/jenkins/security/Security218CliTest.java b/test/src/test/java/jenkins/security/Security218CliTest.java
index 546cdc8fde..ae4cbeac4d 100644
--- a/test/src/test/java/jenkins/security/Security218CliTest.java
+++ b/test/src/test/java/jenkins/security/Security218CliTest.java
@@ -76,7 +76,7 @@ public class Security218CliTest {
@Test
@Issue("SECURITY-218")
public void probeSpring1() throws Exception {
- probe(Payload.Spring1, -1);
+ probe(Payload.Spring1, 1);
}
private void probe(Payload payload, int expectedResultCode) throws Exception {
diff --git a/test/src/test/java/jenkins/security/Security232Test.java b/test/src/test/java/jenkins/security/Security232Test.java
new file mode 100644
index 0000000000..26ff457c4a
--- /dev/null
+++ b/test/src/test/java/jenkins/security/Security232Test.java
@@ -0,0 +1,256 @@
+package jenkins.security;
+
+import hudson.remoting.Callable;
+import hudson.remoting.Channel;
+import hudson.remoting.Channel.Mode;
+import hudson.remoting.ChannelBuilder;
+import hudson.remoting.ClassFilter;
+import hudson.remoting.JarLoader;
+import java.io.DataOutputStream;
+import java.io.File;
+import java.io.IOException;
+import java.io.ObjectOutputStream;
+import java.io.OutputStream;
+import java.lang.reflect.Constructor;
+import java.lang.reflect.Field;
+import java.lang.reflect.InvocationHandler;
+import java.lang.reflect.Method;
+import java.lang.reflect.Proxy;
+import java.net.HttpURLConnection;
+import java.net.InetSocketAddress;
+import java.net.Socket;
+import java.net.URL;
+import java.net.URLClassLoader;
+import java.rmi.activation.ActivationDesc;
+import java.rmi.activation.ActivationID;
+import java.rmi.activation.ActivationInstantiator;
+import java.rmi.server.ObjID;
+import java.rmi.server.RemoteObject;
+import java.rmi.server.UnicastRemoteObject;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import javax.net.SocketFactory;
+import static jenkins.security.security218.Payload.CommonsCollections1;
+import jenkins.security.security218.ysoserial.payloads.CommonsCollections1;
+import jenkins.security.security218.ysoserial.payloads.ObjectPayload;
+import static org.junit.Assert.*;
+import org.junit.Rule;
+import org.junit.Test;
+import org.jvnet.hudson.test.Issue;
+import org.jvnet.hudson.test.JenkinsRule;
+import sun.reflect.ReflectionFactory;
+import sun.rmi.server.ActivationGroupImpl;
+import sun.rmi.server.UnicastRef2;
+import sun.rmi.server.Util;
+import sun.rmi.transport.LiveRef;
+import sun.rmi.transport.TransportConstants;
+import sun.rmi.transport.tcp.TCPEndpoint;
+
+/**
+ * @author mbechler, adapted for JUnit/JenkinsRule by jglick
+ */
+@Issue("SECURITY-232")
+public class Security232Test {
+
+ @Rule
+ public JenkinsRule r = new JenkinsRule();
+
+ @Test
+ public void commonsCollections1() throws Exception {
+ File pwned = new File(r.jenkins.getRootDir(), "pwned");
+
+ int jrmpPort = 12345;
+ URL u = r.getURL();
+
+ HttpURLConnection hc = (HttpURLConnection) u.openConnection();
+ int clip = Integer.parseInt(hc.getHeaderField("X-Jenkins-CLI-Port"));
+
+ InetSocketAddress isa = new InetSocketAddress(u.getHost(), clip);
+ Socket s = null;
+ Channel c = null;
+ try {
+ System.err.println("* Opening socket " + isa);
+ s = SocketFactory.getDefault().createSocket(isa.getAddress(), isa.getPort());
+ s.setKeepAlive(true);
+ s.setTcpNoDelay(true);
+
+ System.err.println("* Opening channel");
+ OutputStream outputStream = s.getOutputStream();
+
+ DataOutputStream dos = new DataOutputStream(outputStream);
+
+ dos.writeUTF("Protocol:CLI-connect");
+
+ ExecutorService cp = Executors.newCachedThreadPool();
+ c = new ChannelBuilder("EXPLOIT", cp).withMode(Mode.BINARY).build(s.getInputStream(), outputStream);
+
+ System.err.println("* Channel open");
+
+ Class> reqClass = Class.forName("hudson.remoting.RemoteInvocationHandler$RPCRequest");
+
+ Constructor> reqCons = reqClass.getDeclaredConstructor(int.class, Method.class, Object[].class);
+ reqCons.setAccessible(true);
+
+ Object getJarLoader = reqCons
+ .newInstance(1, Class.forName("hudson.remoting.IChannel").getMethod("getProperty", Object.class), new Object[] {
+ JarLoader.class.getName() + ".ours"
+ });
+
+ Object call = c.call((Callable) getJarLoader);
+ InvocationHandler remote = Proxy.getInvocationHandler(call);
+ Class> rih = Class.forName("hudson.remoting.RemoteInvocationHandler");
+ Field oidF = rih.getDeclaredField("oid");
+ oidF.setAccessible(true);
+ int oid = oidF.getInt(remote);
+
+ System.err.println("* JarLoader oid is " + oid);
+
+ Constructor uroC = UnicastRemoteObject.class.getDeclaredConstructor();
+ uroC.setAccessible(true);
+ ReflectionFactory rf = ReflectionFactory.getReflectionFactory();
+ Constructor> sc = rf.newConstructorForSerialization(ActivationGroupImpl.class, uroC);
+ sc.setAccessible(true);
+ UnicastRemoteObject uro = (UnicastRemoteObject) sc.newInstance();
+
+ Field portF = UnicastRemoteObject.class.getDeclaredField("port");
+ portF.setAccessible(true);
+ portF.set(uro, jrmpPort);
+ Field f = RemoteObject.class.getDeclaredField("ref");
+ f.setAccessible(true);
+ f.set(uro, new UnicastRef2(new LiveRef(new ObjID(2), new TCPEndpoint("localhost", 12345), true)));
+
+ Object o = reqCons
+ .newInstance(oid, JarLoader.class.getMethod("isPresentOnRemote", Class.forName("hudson.remoting.Checksum")), new Object[] {
+ uro,
+ });
+
+ try {
+ c.call((Callable) o);
+ }
+ catch ( Exception e ) {
+ // [ActivationGroupImpl[UnicastServerRef [liveRef:
+ // [endpoint:[172.16.20.11:12345](local),objID:[de39d9c:15269e6d8bf:-7fc1, -9046794842107247609]]
+
+ e.printStackTrace();
+
+ String msg = e.getMessage();
+ int start = msg.indexOf("objID:[");
+ if ( start < 0 ) {
+ return; // good, got blocked before we even got this far
+ }
+
+ int sep = msg.indexOf(", ", start + 1);
+
+ if ( sep < 0 ) {
+ throw new Exception("Failed to get object id, separator");
+ }
+
+ int end = msg.indexOf("]", sep + 1);
+
+ if ( end < 0 ) {
+ throw new Exception("Failed to get object id, separator");
+ }
+
+ String uid = msg.substring(start + 7, sep);
+ String objNum = msg.substring(sep + 2, end);
+
+ System.err.println("* UID is " + uid);
+ System.err.println("* ObjNum is " + objNum);
+
+ String[] parts = uid.split(":");
+
+ long obj = Long.parseLong(objNum);
+ int o1 = Integer.parseInt(parts[ 0 ], 16);
+ long o2 = Long.parseLong(parts[ 1 ], 16);
+ short o3 = Short.parseShort(parts[ 2 ], 16);
+
+ exploit(new InetSocketAddress(isa.getAddress(), jrmpPort), obj, o1, o2, o3, new CommonsCollections1(), "touch " + pwned);
+ }
+
+ c.close();
+ }
+ finally {
+ if ( s != null ) {
+ s.close();
+ }
+ }
+
+ Thread.sleep(5000);
+
+ assertFalse("Pwned!", pwned.exists());
+ }
+
+
+ /**
+ * @param inetSocketAddress
+ * @param obj
+ * @param o1
+ * @param o2
+ * @param o3
+ * @throws IOException
+ */
+ private static void exploit ( InetSocketAddress isa, long obj, int o1, long o2, short o3, ObjectPayload payload, String payloadArg )
+ throws Exception {
+ Socket s = null;
+ try {
+ System.err.println("* Opening JRMP socket " + isa);
+ s = SocketFactory.getDefault().createSocket(isa.getAddress(), isa.getPort());
+ s.setKeepAlive(true);
+ s.setTcpNoDelay(true);
+
+ OutputStream os = s.getOutputStream();
+ DataOutputStream dos = new DataOutputStream(os);
+
+ dos.writeInt(TransportConstants.Magic);
+ dos.writeShort(TransportConstants.Version);
+ dos.writeByte(TransportConstants.SingleOpProtocol);
+
+ dos.write(TransportConstants.Call);
+
+ final ObjectOutputStream objOut = new ObjectOutputStream(dos) {
+
+ protected void annotateClass ( Class> cl ) throws IOException {
+ if ( ! ( cl.getClassLoader() instanceof URLClassLoader ) ) {
+ writeObject(null);
+ }
+ else {
+ URL[] us = ( (URLClassLoader) cl.getClassLoader() ).getURLs();
+ String cb = "";
+ for ( URL u : us ) {
+ cb += u.toString();
+ }
+ writeObject(cb);
+ }
+ }
+
+
+ /**
+ * Serializes a location from which to load the specified class.
+ */
+ protected void annotateProxyClass ( Class> cl ) throws IOException {
+ annotateClass(cl);
+ }
+ };
+
+ objOut.writeLong(obj);
+ objOut.writeInt(o1);
+ objOut.writeLong(o2);
+ objOut.writeShort(o3);
+
+ objOut.writeInt(-1);
+ objOut.writeLong(Util.computeMethodHash(ActivationInstantiator.class.getMethod("newInstance", ActivationID.class, ActivationDesc.class)));
+
+ System.err.println("Running " + payload + " against " + ClassFilter.class.getProtectionDomain().getCodeSource().getLocation());
+ final Object object = payload.getObject(payloadArg);
+ objOut.writeObject(object);
+
+ os.flush();
+ }
+ finally {
+ if ( s != null ) {
+ s.close();
+ }
+ }
+ }
+
+}
diff --git a/test/src/test/resources/hudson/util/XStream2Security247Test/config.xml b/test/src/test/resources/hudson/util/XStream2Security247Test/config.xml
new file mode 100644
index 0000000000..5b9b22ab59
--- /dev/null
+++ b/test/src/test/resources/hudson/util/XStream2Security247Test/config.xml
@@ -0,0 +1,27 @@
+
+
+
+
+
+ hashCode
+
+
+
+
+ touch
+ @TOKEN@
+
+ false
+
+ 0
+ 0
+
+ 0
+ start
+
+
+
+
+ 1
+
+
diff --git a/war/gulpfile.js b/war/gulpfile.js
index 6e137a91de..cd1f43067a 100644
--- a/war/gulpfile.js
+++ b/war/gulpfile.js
@@ -3,6 +3,14 @@
//
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
@@ -13,3 +21,12 @@ builder.bundle('src/main/js/pluginSetupWizard.js')
.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/widgets/jenkins-widgets.less')
+ .inDir('src/main/webapp/jsbundles');
diff --git a/war/package.json b/war/package.json
index 37149ebe74..12e842df90 100644
--- a/war/package.json
+++ b/war/package.json
@@ -8,13 +8,13 @@
"handlebars": "^3.0.3",
"hbsfy": "^2.4.1",
"jenkins-handlebars-rt": "^1.0.1",
- "jenkins-js-builder": "0.0.37",
- "jenkins-js-test": "0.0.16"
+ "jenkins-js-builder": "0.0.40",
+ "jenkins-js-test": "^1.0.0"
},
"dependencies": {
"bootstrap-detached": "^3.3.5-v1",
- "jenkins-js-modules": "^1.4.0",
+ "jenkins-js-modules": "^1.5.0",
"jquery-detached": "^2.1.4-v2",
- "window-handle": "0.0.6"
+ "window-handle": "^1.0.0"
}
}
diff --git a/war/pom.xml b/war/pom.xml
index d4706dd08e..b960f3a4d5 100644
--- a/war/pom.xml
+++ b/war/pom.xml
@@ -28,7 +28,7 @@ THE SOFTWARE.
org.jenkins-ci.main
pom
- 2.0-alpha-1-SNAPSHOT
+ 2.0-alpha-3-SNAPSHOT
jenkins-war
@@ -49,7 +49,7 @@ THE SOFTWARE.
org.jenkins-ci
executable-war
- 1.30
+ 1.33
provided
@@ -79,7 +79,7 @@ THE SOFTWARE.
${project.groupId}
remoting
-
+
${project.groupId}
cli
@@ -93,13 +93,13 @@ THE SOFTWARE.
-->
org.jenkins-ci
winstone
- 2.9
+ 3.1
test
org.jenkins-ci.modules
instance-identity
- 1.4
+ 1.5.1
org.jenkins-ci.modules
@@ -139,19 +139,19 @@ THE SOFTWARE.
org.jenkins-ci.ui
jquery-detached
- 1.2
+ 1.2.1
core-assets
org.jenkins-ci.ui
bootstrap
- 1.3.1
+ 1.3.2
core-assets
org.jenkins-ci.ui
handlebars
- 1.1
+ 1.1.1
core-assets
@@ -475,7 +475,7 @@ THE SOFTWARE.
../core/src/main/resources
-
+
@@ -588,7 +589,7 @@ THE SOFTWARE.
Linux amd64
node-v${node.version}-linux-x64.tar.gz
-
+
@@ -596,7 +597,7 @@ THE SOFTWARE.
mac
node-v${node.version}-darwin-x64.tar.gz
-
+
@@ -620,7 +621,7 @@ THE SOFTWARE.
windows x86
win-x86/node.exe
-
+
@@ -742,7 +743,10 @@ THE SOFTWARE.
gulp
- bundle test
+
+ bundle test
+ ${skipTests}
+
diff --git a/war/src/main/js/api/plugins.js b/war/src/main/js/api/plugins.js
index 99eb62e132..4f3bcb967e 100644
--- a/war/src/main/js/api/plugins.js
+++ b/war/src/main/js/api/plugins.js
@@ -10,12 +10,15 @@
exports.recommendedPlugins = [
"antisamy-markup-formatter",
"credentials",
+ "github-branch-source",
"junit",
"mailer",
"matrix-auth",
"script-security",
"subversion",
- "translation"
+ "translation",
+ "workflow-aggregator",
+ "workflow-multibranch"
];
//
@@ -51,6 +54,14 @@ exports.availablePlugins = [
{ "name": "junit" }
]
},
+ {
+ "category":"Pipelines and Continuous Delivery",
+ "plugins": [
+ { "name": "workflow-aggregator" },
+ { "name": "github-branch-source" },
+ { "name": "workflow-multibranch" }
+ ]
+ },
{
"category":"SCM",
"plugins": [
diff --git a/war/src/main/js/config-tabbar.js b/war/src/main/js/config-tabbar.js
new file mode 100644
index 0000000000..96225d8858
--- /dev/null
+++ b/war/src/main/js/config-tabbar.js
@@ -0,0 +1,96 @@
+var $ = require('jquery-detached').getJQuery();
+var jenkinsLocalStorage = require('./util/jenkinsLocalStorage.js');
+var configMetadata = require('./widgets/config/model/ConfigTableMetaData.js');
+
+$(function() {
+ // Horrible ugly hack...
+ // We need to use Behaviour.js to wait until after radioBlock.js Behaviour.js rules
+ // have been applied, otherwise row-set rows become visible across sections.
+ var done = false;
+ Behaviour.specify(".block-control", 'row-set-block-control', 1000, function() { // jshint ignore:line
+ if (done) {
+ return;
+ }
+ done = true;
+
+ // Only do job configs for now.
+ var configTables = $('.job-config.tabbed');
+ if (configTables.size() > 0) {
+ var tabBarShowPreferenceKey = 'config:usetabs';
+ var tabBarShowPreference = jenkinsLocalStorage.getGlobalItem(tabBarShowPreferenceKey, "yes");
+
+ var tabBarWidget = require('./widgets/config/tabbar.js');
+ if (tabBarShowPreference === "yes") {
+ configTables.each(function() {
+ var configTable = $(this);
+ var tabBar = tabBarWidget.addTabs(configTable);
+
+ // We want to merge some sections together.
+ // Merge the "Advanced" section into the "General" section.
+ var generalSection = tabBar.getSection('config_general');
+ if (generalSection) {
+ generalSection.adoptSection('config_advanced_project_options');
+ }
+
+ addFinderToggle(tabBar);
+ tabBar.onShowSection(function() {
+ // Hook back into hudson-behavior.js
+ fireBottomStickerAdjustEvent();
+ });
+ tabBar.deactivator.click(function() {
+ jenkinsLocalStorage.setGlobalItem(tabBarShowPreferenceKey, "no");
+ require('window-handle').getWindow().location.reload();
+ });
+ $('.jenkins-config-widgets .find-container input').focus(function() {
+ fireBottomStickerAdjustEvent();
+ });
+
+ if (tabBar.hasSections()) {
+ var tabBarLastSectionKey = 'config:' + tabBar.configForm.attr('name') + ':last-tab';
+ var tabBarLastSection = jenkinsLocalStorage.getPageItem(tabBarLastSectionKey, tabBar.sections[0].id);
+ tabBar.onShowSection(function() {
+ jenkinsLocalStorage.setPageItem(tabBarLastSectionKey, this.id);
+ });
+ tabBar.showSection(tabBarLastSection);
+ }
+ });
+ } else {
+ configTables.each(function() {
+ var configTable = $(this);
+ var activator = tabBarWidget.addTabsActivator(configTable);
+ configMetadata.markConfigTableParentForm(configTable);
+ activator.click(function() {
+ jenkinsLocalStorage.setGlobalItem(tabBarShowPreferenceKey, "yes");
+ require('window-handle').getWindow().location.reload();
+ });
+ });
+ }
+ }
+ });
+});
+
+function addFinderToggle(configTableMetadata) {
+ var findToggle = $('
');
+ var finderShowPreferenceKey = 'config:showfinder';
+
+ $('.tabBar', configTableMetadata.configWidgets).append(findToggle);
+ findToggle.click(function() {
+ var findContainer = $('.find-container', configTableMetadata.configWidgets);
+ if (findContainer.hasClass('visible')) {
+ findContainer.removeClass('visible');
+ jenkinsLocalStorage.setGlobalItem(finderShowPreferenceKey, "no");
+ } else {
+ findContainer.addClass('visible');
+ $('input', findContainer).focus();
+ jenkinsLocalStorage.setGlobalItem(finderShowPreferenceKey, "yes");
+ }
+ });
+
+ if (jenkinsLocalStorage.getGlobalItem(finderShowPreferenceKey, "yes") === 'yes') {
+ findToggle.click();
+ }
+}
+
+function fireBottomStickerAdjustEvent() {
+ Event.fire(window, 'jenkins:bottom-sticker-adjust'); // jshint ignore:line
+}
diff --git a/war/src/main/js/page-init.js b/war/src/main/js/page-init.js
new file mode 100644
index 0000000000..e7ddae3a6b
--- /dev/null
+++ b/war/src/main/js/page-init.js
@@ -0,0 +1,37 @@
+/*
+ * Page initialisation tasks.
+ */
+
+var $ = require('jquery-detached').getJQuery();
+var jsModules = require('jenkins-js-modules');
+
+$(function() {
+ loadScripts();
+ loadCSS();
+});
+
+function loadScripts() {
+ $('.jenkins-js-load').each(function () {
+ var scriptUrl = $(this).attr('data-src');
+ if (scriptUrl) {
+ // jsModules.addScript will ensure that the script is
+ // loaded once and once only. So, this can be considered
+ // analogous to a client-side adjunct.
+ jsModules.addScript(scriptUrl);
+ $(this).remove();
+ }
+ });
+}
+
+function loadCSS() {
+ $('.jenkins-css-load').each(function () {
+ var cssUrl = $(this).attr('data-src');
+ if (cssUrl) {
+ // jsModules.addCSSToPage will ensure that the CSS is
+ // loaded once and once only. So, this can be considered
+ // analogous to a client-side adjunct.
+ jsModules.addCSSToPage(cssUrl);
+ $(this).remove();
+ }
+ });
+}
diff --git a/war/src/main/js/pluginSetupWizardGui.js b/war/src/main/js/pluginSetupWizardGui.js
index a8b304146b..637c6cc5aa 100644
--- a/war/src/main/js/pluginSetupWizardGui.js
+++ b/war/src/main/js/pluginSetupWizardGui.js
@@ -66,8 +66,16 @@ var createPluginSetupWizard = function() {
}
});
+ // get total number of dependencies
+ Handlebars.registerHelper('dependencyCount', function(plugName) {
+ var plug = availablePlugins[plugName];
+ if(plug && plug.allDependencies && plug.allDependencies.length > 1) { // includes self
+ return plug.allDependencies.length - 1;
+ }
+ });
+
// gets user friendly dependency text
- Handlebars.registerHelper('dependencyText', function(plugName) {
+ Handlebars.registerHelper('eachDependency', function(plugName, options) {
var plug = availablePlugins[plugName];
if(!plug) {
return '';
@@ -75,20 +83,25 @@ var createPluginSetupWizard = function() {
var deps = $.grep(plug.allDependencies, function(value) { // remove self
return value !== plugName;
});
- var out = '';
+
+ var out = '';
for(var i = 0; i < deps.length; i++) {
- if(i > 0) {
- out += ', ';
- }
var depName = deps[i];
var dep = availablePlugins[depName];
if(dep) {
- out += dep.title;
+ out += options.fn(dep);
}
}
return out;
});
+ // executes a block if there are dependencies
+ Handlebars.registerHelper('ifVisibleDependency', function(plugName, options) {
+ if(visibleDependencies[plugName]) {
+ return options.fn();
+ }
+ });
+
// Include handlebars templates here - explicitly require them and they'll be available by hbsfy as part of the bundle process
var errorPanel = require('./templates/errorPanel.hbs');
var loadingPanel = require('./templates/loadingPanel.hbs');
@@ -122,6 +135,7 @@ var createPluginSetupWizard = function() {
var pluginList = pluginManager.plugins();
var allPluginNames = pluginManager.pluginNames();
var selectedPluginNames = pluginManager.recommendedPluginNames();
+ var visibleDependencies = {};
var categories = [];
var availablePlugins = {};
var categorizedPlugins = {};
@@ -264,6 +278,25 @@ var createPluginSetupWizard = function() {
setPanel(progressPanel, { installingPlugins : installingPlugins });
};
+
+ // toggles visibility of dependency listing for a plugin
+ var toggleDependencyList = function() {
+ var $btn = $(this);
+ var $toggle = $btn.parents('.plugin:first');
+ var plugName = $btn.attr('data-plugin-name');
+ if(!visibleDependencies[plugName]) {
+ visibleDependencies[plugName] = true;
+ }
+ else {
+ visibleDependencies[plugName] = false;
+ }
+ if(!visibleDependencies[plugName]) {
+ $toggle.removeClass('show-dependencies');
+ }
+ else {
+ $toggle.addClass('show-dependencies');
+ }
+ };
// install the default plugins
var installDefaultPlugins = function() {
@@ -519,7 +552,7 @@ var createPluginSetupWizard = function() {
findIndex = (findIndex+1) % matches.length;
}
var $el = $(matches[findIndex]);
- $el = $el.parents('label:first'); // scroll to the block
+ $el = $el.parents('.plugin:first'); // scroll to the block
if($el && $el.length > 0) {
var pos = $pl.scrollTop() + $el.position().top;
$pl.stop(true).animate({
@@ -538,7 +571,7 @@ var createPluginSetupWizard = function() {
// search for given text, optionally scroll to the next match, set classes on appropriate elements from the search match
var searchForPlugins = function(text, scroll) {
var $pl = $('.plugin-list');
- var $containers = $pl.find('label');
+ var $containers = $pl.find('.plugin');
// must always do this, as it's called after refreshing the panel (e.g. check/uncheck plugs)
$containers.removeClass('match');
@@ -550,7 +583,7 @@ var createPluginSetupWizard = function() {
}
else {
var matches = findElementsWithText($pl[0], text.toLowerCase(), function(d) { return d.toLowerCase(); });
- $(matches).parents('label').addClass('match');
+ $(matches).parents('.plugin').addClass('match');
if(lastSearch !== text && scroll) {
scrollPlugin($pl, matches, text);
}
@@ -669,6 +702,7 @@ var createPluginSetupWizard = function() {
// click action mappings
var actions = {
+ '.toggle-dependency-list': toggleDependencyList,
'.install-recommended': installDefaultPlugins,
'.install-custom': loadCustomPluginPanel,
'.install-home': function() { setPanel(welcomePanel); },
diff --git a/war/src/main/js/templates/pluginSelectionPanel.hbs b/war/src/main/js/templates/pluginSelectionPanel.hbs
index ef511786cc..11bcfcb329 100644
--- a/war/src/main/js/templates/pluginSelectionPanel.hbs
+++ b/war/src/main/js/templates/pluginSelectionPanel.hbs
@@ -26,21 +26,36 @@
-
{{{translations.installWizard_installCustom_pluginListDesc}}}
+
{{{translations.installWizard_installCustom_pluginListDesc}}}
{{#each categorizedPlugins}}
{{@key}} {{pluginCountForCategory @key}}
{{#each this}}
-
-
-
- {{plugin.title}}
-
-
- {{{plugin.excerpt}}}
-
-
+
+ {{#hasDependencies plugin.name}}
+
+ {{../../../translations.installWizard_installIncomplete_dependenciesLabel}}{{dependencyCount ../plugin.name}}
+
+ {{/hasDependencies}}
+
+
+
+ {{plugin.title}}
+
+
+ {{{plugin.excerpt}}}
+
+ {{#hasDependencies plugin.name}}
+
+ {{#eachDependency ../plugin.name}}
+
+ {{title}}
+
+ {{/eachDependency}}
+
+ {{/hasDependencies}}
+
+
{{/each}}
{{/each}}
diff --git a/war/src/main/js/util/jenkinsLocalStorage.js b/war/src/main/js/util/jenkinsLocalStorage.js
new file mode 100644
index 0000000000..44aa587fe6
--- /dev/null
+++ b/war/src/main/js/util/jenkinsLocalStorage.js
@@ -0,0 +1,32 @@
+var windowHandle = require('window-handle');
+var storage = require('./localStorage.js');
+
+/**
+ * Store a Jenkins globally scoped value.
+ */
+exports.setGlobalItem = function(name, value) {
+ storage.setItem('jenkins:' + name, value);
+};
+
+/**
+ * Get a Jenkins globally scoped value.
+ */
+exports.getGlobalItem = function(name, defaultVal) {
+ return storage.getItem('jenkins:' + name, defaultVal);
+};
+
+/**
+ * Store a Jenkins page scoped value.
+ */
+exports.setPageItem = function(name, value) {
+ name = 'jenkins:' + name + ':' + windowHandle.getWindow().location.href;
+ storage.setItem(name, value);
+};
+
+/**
+ * Get a Jenkins page scoped value.
+ */
+exports.getPageItem = function(name, defaultVal) {
+ name = 'jenkins:' + name + ':' + windowHandle.getWindow().location.href;
+ return storage.getItem(name, defaultVal);
+};
\ No newline at end of file
diff --git a/war/src/main/js/util/jquery-ext.js b/war/src/main/js/util/jquery-ext.js
new file mode 100644
index 0000000000..f7285a4c4a
--- /dev/null
+++ b/war/src/main/js/util/jquery-ext.js
@@ -0,0 +1,40 @@
+/*
+ * Some internal jQuery extensions.
+ */
+
+var jQD = require('jquery-detached');
+var $ext;
+
+exports.getJQuery = function() {
+ if (!$ext) {
+ initJQueryExt();
+ }
+ return $ext;
+};
+
+/*
+ * Clear the $ext instance if the window changes. Primarily for unit testing.
+ */
+var windowHandle = require('window-handle');
+windowHandle.getWindow(function() {
+ $ext = undefined;
+});
+
+function initJQueryExt() {
+ // We are going to be adding "stuff" to jQuery. We create a totally new jQuery instance
+ // because we do NOT want to run the risk of polluting the shared instance.
+ $ext = jQD.newJQuery();
+
+ /**
+ * A pseudo selector that performs a case insensitive text contains search i.e. the same
+ * as the standard ':contains' selector, but case insensitive.
+ */
+ $ext.expr[":"].containsci = $ext.expr.createPseudo(function (text) {
+ return function (element) {
+ var elementText = $ext(element).text();
+ var result = (elementText.toUpperCase().indexOf(text.toUpperCase()) !== -1);
+ return result;
+ };
+ });
+}
+initJQueryExt();
diff --git a/war/src/main/js/util/localStorage.js b/war/src/main/js/util/localStorage.js
new file mode 100644
index 0000000000..d04063777e
--- /dev/null
+++ b/war/src/main/js/util/localStorage.js
@@ -0,0 +1,36 @@
+var windowHandle = require('window-handle');
+var win = windowHandle.getWindow();
+var storage = win.localStorage;
+
+if (typeof storage === "undefined") {
+ console.warn('HTML5 localStorage not supported by this browser.');
+ // mock it...
+ storage = {
+ storage: {},
+ setItem: function(name, value) {
+ this.storage[name] = value;
+ },
+ getItem: function(name) {
+ return this.storage[name];
+ },
+ removeItem: function(name) {
+ delete this.storage[name];
+ }
+ };
+}
+
+exports.setItem = function(name, value) {
+ storage.setItem(name, value);
+};
+
+exports.getItem = function(name, defaultVal) {
+ var value = storage.getItem(name);
+ if (!value) {
+ value = defaultVal;
+ }
+ return value;
+};
+
+exports.removeItem = function(name) {
+ return storage.removeItem(name);
+};
\ No newline at end of file
diff --git a/war/src/main/js/widgets/config/model/ConfigRowGrouping.js b/war/src/main/js/widgets/config/model/ConfigRowGrouping.js
new file mode 100644
index 0000000000..0284b3da57
--- /dev/null
+++ b/war/src/main/js/widgets/config/model/ConfigRowGrouping.js
@@ -0,0 +1,75 @@
+var jQD = require('../../../util/jquery-ext.js');
+
+module.exports = ConfigRowGrouping;
+
+/*
+ * =======================================================================================
+ * Configuration table row grouping i.e. row-set-*, optional-block-*, radio-block-* etc
+ *
+ * A ConfigSection maintains a list of ConfigRowGrouping and then ConfigRowGrouping
+ * itself maintains a list i.e. it's hierarchical. See ConfigSection.gatherRowGroups().
+ * =======================================================================================
+ */
+function ConfigRowGrouping(startRow, parentRowGroupContainer) {
+ this.startRow = startRow;
+ this.parentRowGroupContainer = parentRowGroupContainer;
+ this.endRow = undefined;
+ this.rows = [];
+ this.rowGroups = []; // Support groupings nested inside groupings
+ this.toggleWidget = undefined;
+ this.label = undefined;
+}
+
+ConfigRowGrouping.prototype.getRowCount = function(includeChildren) {
+ var count = this.rows.length;
+ if (includeChildren === undefined || includeChildren === true) {
+ for (var i = 0; i < this.rowGroups.length; i++) {
+ count += this.rowGroups[i].getRowCount();
+ }
+ }
+ return count;
+};
+
+ConfigRowGrouping.prototype.getLabels = function() {
+ var labels = [];
+
+ if (this.label) {
+ labels.push(this.label);
+ }
+ for (var i = 0; i < this.rowGroups.length; i++) {
+ var rowSet = this.rowGroups[i];
+ labels.push(rowSet.getLabels());
+ }
+ return labels;
+};
+
+ConfigRowGrouping.prototype.updateVisibility = function() {
+ if (this.toggleWidget !== undefined) {
+ var isChecked = this.toggleWidget.is(':checked');
+ for (var i = 0; i < this.rows.length; i++) {
+ if (isChecked) {
+ this.rows[i].show();
+ } else {
+ this.rows[i].hide();
+ }
+ }
+ }
+ for (var ii = 0; ii < this.rowGroups.length; ii++) {
+ var rowSet = this.rowGroups[ii];
+ rowSet.updateVisibility();
+ }
+};
+
+/*
+ * Find the row-set toggle widget i.e. the input element that indicates that
+ * the row-set rows should be made visible or not.
+ */
+ConfigRowGrouping.prototype.findToggleWidget = function(row) {
+ var $ = jQD.getJQuery();
+ var input = $(':input.block-control', row);
+ if (input.size() === 1) {
+ this.toggleWidget = input;
+ this.label = input.parent().find('label').text();
+ input.addClass('disable-behavior');
+ }
+};
diff --git a/war/src/main/js/widgets/config/model/ConfigSection.js b/war/src/main/js/widgets/config/model/ConfigSection.js
new file mode 100644
index 0000000000..295181af82
--- /dev/null
+++ b/war/src/main/js/widgets/config/model/ConfigSection.js
@@ -0,0 +1,247 @@
+var jQD = require('../../../util/jquery-ext.js');
+var util = require('./util.js');
+var ConfigRowGrouping = require('./ConfigRowGrouping.js');
+
+module.exports = ConfigSection;
+
+/*
+ * =======================================================================================
+ * Configuration table section.
+ * =======================================================================================
+ */
+function ConfigSection(headerRow, parentCMD) {
+ this.headerRow = headerRow;
+ this.parentCMD = parentCMD;
+ this.title = headerRow.attr('title');
+ this.id = util.toId(this.title);
+ this.rowGroups = undefined;
+ this.activator = undefined;
+ this.subSections = [];
+}
+
+ConfigSection.prototype.isTopLevelSection = function() {
+ return (this.parentCMD.getSection(this.id) !== undefined);
+};
+
+/**
+ * Move another top-level section into this section i.e. adopt it.
+ *
+ * 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.markRowsAsActive = function() {
+ var rows = this.getRows();
+ for (var i = 0; i < rows.length; i++) {
+ rows[i].addClass('active').show();
+ }
+ 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 (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];
+
+ /*jshint loopfunc: true */
+ $('span.highlight-split', row).each(function() { // jshint ignore:line
+ var highlightSplit = $(this);
+ highlightSplit.before(highlightSplit.text());
+ highlightSplit.remove();
+ });
+
+ 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..6ee7905a80
--- /dev/null
+++ b/war/src/main/js/widgets/config/model/ConfigTableMetaData.js
@@ -0,0 +1,308 @@
+/*
+ * Internal support module for config tables.
+ */
+
+var jQD = require('../../../util/jquery-ext.js');
+var ConfigSection = require('./ConfigSection.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
elements of elements
+ // with a name of "config"?
+ return $('form[name="config"] > table');
+};
+
+exports.fromConfigTable = function(configTable) {
+ var $ = jQD.getJQuery();
+ var sectionHeaders = $('.section-header', configTable);
+ var configForm = exports.markConfigTableParentForm(configTable);
+
+ // Mark the ancestor s of the section headers and add a title
+ sectionHeaders.each(function () {
+ var sectionHeader = $(this);
+ var sectionRow = sectionHeader.closest('tr');
+ var sectionTitle = sectionRow.text();
+
+ // Remove leading hash from accumulated text in title (from element).
+ if (sectionTitle.indexOf('#') === 0) {
+ sectionTitle = sectionTitle.substring(1);
+ }
+
+ sectionRow.addClass('section-header-row');
+ sectionRow.attr('title', sectionTitle);
+ });
+
+ var configTableMetadata = new ConfigTableMetaData(configForm, configTable);
+ var topRows = configTableMetadata.getTopRows();
+ var firstRow = configTableMetadata.getFirstRow();
+ var curSection;
+
+ // The first set of rows don't have a 'section-header-row', so we manufacture one,
+ // calling it a "General" section. We do this by marking the first row in the table.
+ // See the next block of code.
+ firstRow.addClass('section-header-row');
+ firstRow.attr('title', "General");
+
+ // Go through the top level elements (immediately inside the )
+ // and group the related s based on the "section-header-row", using a "normalized"
+ // version of the section title as the section id.
+ topRows.each(function () {
+ var tr = $(this);
+ if (tr.hasClass('section-header-row')) {
+ // a new section
+ curSection = new ConfigSection(tr, configTableMetadata);
+ configTableMetadata.sections.push(curSection);
+ }
+ });
+
+ var buttonsRow = $('#bottom-sticker', configTable).closest('tr');
+ buttonsRow.removeClass(curSection.id);
+ buttonsRow.addClass(util.toId('buttons'));
+
+ return configTableMetadata;
+};
+
+/*
+ * =======================================================================================
+ * ConfigTable MetaData class.
+ * =======================================================================================
+ */
+function ConfigTableMetaData(configForm, configTable) {
+ this.$ = jQD.getJQuery();
+ this.configForm = configForm;
+ this.configTable = configTable;
+ this.configTableBody = this.$('> tbody', configTable);
+ this.activatorContainer = undefined;
+ this.sections = [];
+ this.findInput = undefined;
+ this.showListeners = [];
+ this.configWidgets = undefined;
+ this.addWidgetsContainer();
+ this.addFindWidget();
+}
+
+ConfigTableMetaData.prototype.getTopRows = function() {
+ return this.configTableBody.children('tr');
+};
+
+ConfigTableMetaData.prototype.getFirstRow = function() {
+ return this.getTopRows().first();
+};
+
+ConfigTableMetaData.prototype.addWidgetsContainer = function() {
+ var $ = jQD.getJQuery();
+ this.configWidgets = $('
');
+ this.configWidgets.insertBefore(this.configForm);
+};
+
+ConfigTableMetaData.prototype.addFindWidget = function() {
+ var $ = jQD.getJQuery();
+ var thisTMD = this;
+ var findWidget = $('');
+
+ thisTMD.findInput = $('input', findWidget);
+
+ // Add the find text clearer
+ $('.clear', findWidget).click(function() {
+ thisTMD.findInput.val('');
+ thisTMD.showSections('');
+ thisTMD.findInput.focus();
+ });
+
+ var findTimeout;
+ thisTMD.findInput.keydown(function() {
+ if (findTimeout) {
+ clearTimeout(findTimeout);
+ findTimeout = undefined;
+ }
+ findTimeout = setTimeout(function() {
+ findTimeout = undefined;
+ thisTMD.showSections(thisTMD.findInput.val());
+ }, 300);
+ });
+
+ this.configWidgets.append(findWidget);
+};
+
+ConfigTableMetaData.prototype.sectionCount = function() {
+ return this.sections.length;
+};
+
+ConfigTableMetaData.prototype.hasSections = function() {
+ var hasSections = (this.sectionCount() > 0);
+ if (!hasSections) {
+ console.warn('Jenkins configuration without sections?');
+ }
+ return hasSections;
+};
+
+ConfigTableMetaData.prototype.sectionIds = function() {
+ var sectionIds = [];
+ for (var i = 0; i < this.sections.length; i++) {
+ sectionIds.push(this.sections[i].id);
+ }
+ return sectionIds;
+};
+
+ConfigTableMetaData.prototype.activateSection = function(sectionId) {
+ if (!sectionId) {
+ throw 'Invalid section id "' + sectionId + '"';
+ }
+
+ var section = this.getSection(sectionId);
+ if (section) {
+ section.activate();
+ }
+};
+
+ConfigTableMetaData.prototype.activeSection = function() {
+ if (this.hasSections()) {
+ for (var i = 0; i < this.sections.length; i++) {
+ var section = this.sections[i];
+ if (section.activator.hasClass('active')) {
+ return section;
+ }
+ }
+ }
+};
+
+ConfigTableMetaData.prototype.getSection = function(sectionId) {
+ if (this.hasSections()) {
+ for (var i = 0; i < this.sections.length; i++) {
+ var section = this.sections[i];
+ if (section.id === sectionId) {
+ return section;
+ }
+ }
+ }
+ return undefined;
+};
+
+ConfigTableMetaData.prototype.removeSection = function(sectionId) {
+ if (this.hasSections()) {
+ for (var i = 0; i < this.sections.length; i++) {
+ var section = this.sections[i];
+ if (section.id === sectionId) {
+ this.sections.splice(i, 1);
+ if (section.activator) {
+ section.activator.remove();
+ }
+ return true;
+ }
+ }
+ }
+ return false;
+};
+
+ConfigTableMetaData.prototype.activateFirstSection = function() {
+ if (this.hasSections()) {
+ this.activateSection(this.sections[0].id);
+ }
+};
+
+ConfigTableMetaData.prototype.activeSectionCount = function() {
+ var activeSectionCount = 0;
+ if (this.hasSections()) {
+ for (var i = 0; i < this.sections.length; i++) {
+ var section = this.sections[i];
+ if (section.activator.hasClass('active')) {
+ activeSectionCount++;
+ }
+ }
+ }
+ return activeSectionCount;
+};
+
+ConfigTableMetaData.prototype.showSection = function(section) {
+ if (typeof section === 'string') {
+ section = this.getSection(section);
+ }
+
+ if (section) {
+ var topRows = this.getTopRows();
+
+ // Deactivate currently active section ...
+ this.deactivateActiveSection();
+
+ // Active the specified section
+ section.activator.addClass('active');
+ section.markRowsAsActive();
+
+ // and always show the buttons
+ topRows.filter('.config_buttons').show();
+
+ // Update text highlighting
+ section.highlightText(this.findInput.val());
+
+ fireListeners(this.showListeners, section);
+ }
+};
+
+ConfigTableMetaData.prototype.deactivateActiveSection = function() {
+ var topRows = this.getTopRows();
+ var $ = jQD.getJQuery();
+
+ $('.config-section-activator.active', this.activatorContainer).removeClass('active');
+ topRows.filter('.active').removeClass('active');
+ topRows.hide();
+};
+
+ConfigTableMetaData.prototype.onShowSection = function(listener) {
+ this.showListeners.push(listener);
+};
+
+ConfigTableMetaData.prototype.showSections = function(withText) {
+ if (withText === '') {
+ if (this.hasSections()) {
+ for (var i1 = 0; i1 < this.sections.length; i1++) {
+ this.sections[i1].activator.removeClass('hidden');
+ }
+ var activeSection = this.activeSection();
+ if (!activeSection) {
+ this.showSection(this.sections[0]);
+ } else {
+ activeSection.highlightText(this.findInput.val());
+ }
+ }
+ } else {
+ if (this.hasSections()) {
+ var sectionsWithText = [];
+
+ for (var i2 = 0; i2 < this.sections.length; i2++) {
+ var section = this.sections[i2];
+
+ if (section.hasText(withText)) {
+ section.activator.removeClass('hidden');
+ sectionsWithText.push(section);
+ } else {
+ section.activator.addClass('hidden');
+ }
+ }
+
+ // Select the first section to contain the text.
+ if (sectionsWithText.length > 0) {
+ this.showSection(sectionsWithText[0]);
+ } else {
+ this.deactivateActiveSection();
+ }
+ }
+ }
+};
+
+function fireListeners(listeners, contextObject) {
+ for (var i = 0; i < listeners.length; i++) {
+ fireListener(listeners[i], contextObject);
+ }
+ function fireListener(listener, contextObject) {
+ setTimeout(function() {
+ listener.call(contextObject);
+ }, 1);
+ }
+}
\ No newline at end of file
diff --git a/war/src/main/js/widgets/config/model/util.js b/war/src/main/js/widgets/config/model/util.js
new file mode 100644
index 0000000000..1ef40e4b83
--- /dev/null
+++ b/war/src/main/js/widgets/config/model/util.js
@@ -0,0 +1,5 @@
+
+exports.toId = function(string) {
+ string = string.trim();
+ return 'config_' + string.replace(/[\W_]+/g, '_').toLowerCase();
+};
\ No newline at end of file
diff --git a/war/src/main/js/widgets/config/tabbar.js b/war/src/main/js/widgets/config/tabbar.js
new file mode 100644
index 0000000000..44ad3d55c7
--- /dev/null
+++ b/war/src/main/js/widgets/config/tabbar.js
@@ -0,0 +1,74 @@
+var jQD = require('jquery-detached');
+var tableMetadata = require('./model/ConfigTableMetaData.js');
+
+exports.addTabsOnFirst = function() {
+ return exports.addTabs(tableMetadata.findConfigTables().first());
+};
+
+exports.addTabs = function(configTable) {
+ var $ = jQD.getJQuery();
+ var configTableMetadata;
+
+ if ($.isArray(configTable)) {
+ // It's a config metadata block
+ configTableMetadata = configTable;
+ } else if (typeof configTable === 'string') {
+ // It's a config selector
+ var configTableEl = $(configTable);
+ if (configTableEl.size() === 0) {
+ throw "No config table found using selector '" + configTable + "'";
+ } else {
+ configTableMetadata = tableMetadata.fromConfigTable(configTableEl);
+ }
+ } else {
+ // It's a config element
+ configTableMetadata = tableMetadata.fromConfigTable(configTable);
+ }
+
+ var tabBar = $('
');
+ configTableMetadata.activatorContainer = tabBar;
+
+ function newTab(section) {
+ var tab = $('
');
+
+ tab.text(section.title);
+ tab.addClass(section.id);
+
+ return tab;
+ }
+
+ var section;
+ for (var i = 0; i < configTableMetadata.sections.length; i++) {
+ section = configTableMetadata.sections[i];
+ var tab = newTab(section);
+ tabBar.append(tab);
+ section.setActivator(tab);
+ }
+
+ var tabs = $('
');
+ var noTabs = $('untab
');
+
+ configTableMetadata.configWidgets.append(tabs);
+ tabs.append(noTabs);
+ tabs.append(tabBar);
+
+ tabs.mouseenter(function() {
+ tabs.addClass('mouse-over');
+ });
+ tabs.mouseleave(function() {
+ tabs.removeClass('mouse-over');
+ });
+ configTableMetadata.deactivator = noTabs;
+
+ // Always activate the first section by default.
+ configTableMetadata.activateFirstSection();
+
+ return configTableMetadata;
+};
+
+exports.addTabsActivator = function(configTable) {
+ var $ = jQD.getJQuery();
+ var configWidgets = $('tab
');
+ configWidgets.insertBefore(configTable);
+ return configWidgets;
+};
diff --git a/war/src/main/js/widgets/config/tabbar.less b/war/src/main/js/widgets/config/tabbar.less
new file mode 100644
index 0000000000..ecbde53d78
--- /dev/null
+++ b/war/src/main/js/widgets/config/tabbar.less
@@ -0,0 +1,100 @@
+/*
+ * Tab bar specific rules.
+ */
+
+.jenkins-config-widgets {
+ position: relative;
+
+ .showTabs {
+ float: right;
+ margin-bottom: 5px;
+ margin-right: 20px;
+ cursor: pointer;
+ opacity: 0.4;
+ }
+ .showTabs:hover {
+ opacity: 0.8;
+ }
+
+ @find-container-height: 40px;
+ @find-container-width: 200px;
+ .find-container {
+ .border-radius(@find-container-height/2);
+ .find-container(@height: @find-container-height, @width: @find-container-width);
+ display: none;
+ background-color: @light-backgrond;
+ margin-bottom: 15px;
+
+ .find {
+ left: 50%;
+ margin-left: -100px;
+ }
+ }
+ .find-container.visible {
+ display: block;
+ }
+
+ .form-config.tabBarFrame {
+ position: relative;
+
+ .noTabs {
+ display: none;
+ position: absolute;
+ margin: 3px;
+ right: 0px;
+ top: 7px;
+ cursor: pointer;
+ opacity: 0.4;
+ }
+
+ .config-section-activators {
+ margin-right: 80px;
+ }
+
+ .tabBar {
+ .tab {
+ border: solid 1px @light-border;
+ border-bottom: none;
+ color: #999;
+ padding: 7px 10px;
+ .border-radius-top(5px);
+ cursor: pointer;
+ }
+ .tab.active {
+ background: #eee;
+ color: #000;
+ font-weight: bold;
+ z-index: 2;
+ }
+
+ .find-toggle {
+ background-image: url("../images/16x16/search.png");
+ background-repeat: no-repeat;
+ width: 16px;
+ height: 16px;
+ margin: 8px;
+ float: left;
+ cursor: pointer;
+ }
+ }
+
+ border-bottom: solid 1px @light-border;
+ margin-bottom: 10px;
+ }
+
+ .form-config.tabBarFrame.mouse-over {
+ .noTabs {
+ display: inline;
+ }
+ .noTabs:hover {
+ opacity: 0.8;
+ }
+ }
+
+}
+
+.jenkins-config {
+ span.highlight {
+ background-color: #ffff00;
+ }
+}
\ No newline at end of file
diff --git a/war/src/main/js/widgets/form/form-mixins.less b/war/src/main/js/widgets/form/form-mixins.less
new file mode 100644
index 0000000000..3240bbcfd1
--- /dev/null
+++ b/war/src/main/js/widgets/form/form-mixins.less
@@ -0,0 +1,45 @@
+/*
+ * Mixins for form elements
+ */
+
+/*
+ * Search input field
+ */
+.search(@height) {
+ height: @height;
+ .border-radius(@height/2);
+ padding: 0px 15px;
+ outline: none;
+ border: 1px solid #DDD;
+ box-shadow: 0 0 5px #DDD inset;
+ background-color: #ffffff;
+}
+
+.find-container(@height: 40px, @width: 200px) {
+ height: @height;
+ padding: 5px;
+
+ .find {
+ position: absolute;
+ top: 5px;
+ width: @width;
+ vertical-align: middle;
+
+ input {
+ width: 100%;
+ .search(@height - 10);
+ }
+ .clear {
+ position: absolute;
+ padding: 0px 4px;
+ cursor: pointer;
+ top: (@height/2 - 13);
+ right: 5px;
+ opacity: 0.5;
+ font-weight: bold;
+ }
+ .clear:hover {
+ opacity: 1.0;
+ }
+ }
+}
\ No newline at end of file
diff --git a/war/src/main/js/widgets/jenkins-widgets.less b/war/src/main/js/widgets/jenkins-widgets.less
new file mode 100644
index 0000000000..c2a9e87f6b
--- /dev/null
+++ b/war/src/main/js/widgets/jenkins-widgets.less
@@ -0,0 +1,18 @@
+@import "variables";
+
+/*
+ * Mixins
+ * http://lesscss.org/features/#mixins-feature
+ */
+@import "layout-mixins";
+@import "form/form-mixins";
+
+/*
+ * Widget styles
+ */
+@import "config/tabbar";
+
+
+.hidden {
+ display: none;
+}
\ No newline at end of file
diff --git a/war/src/main/js/widgets/layout-mixins.less b/war/src/main/js/widgets/layout-mixins.less
new file mode 100644
index 0000000000..3634a7ff30
--- /dev/null
+++ b/war/src/main/js/widgets/layout-mixins.less
@@ -0,0 +1,49 @@
+/*
+ * General/layout mixins
+ */
+
+
+/*
+ * Border radius
+ */
+.border-radius(@radius) {
+ -webkit-border-radius: @radius;
+ -moz-border-radius: @radius;
+ border-radius: @radius;
+}
+.border-radius-top-left(@radius) {
+ -webkit-border-top-left-radius: @radius;
+ -moz-border-top-left-radius: @radius;
+ border-top-left-radius: @radius;
+}
+.border-radius-top-right(@radius) {
+ -webkit-border-top-right-radius: @radius;
+ -moz-border-top-right-radius: @radius;
+ border-top-right-radius: @radius;
+}
+.border-radius-bottom-left(@radius) {
+ -webkit-border-bottom-left-radius: @radius;
+ -moz-border-bottom-left-radius: @radius;
+ border-top-bottom-radius: @radius;
+}
+.border-radius-bottom-right(@radius) {
+ -webkit-border-bottom-right-radius: @radius;
+ -moz-border-bottom-right-radius: @radius;
+ border-top-bottom-radius: @radius;
+}
+.border-radius-top(@radius) {
+ .border-radius-top-left(@radius);
+ .border-radius-top-right(@radius);
+}
+.border-radius-bottom(@radius) {
+ .border-radius-bottom-left(@radius);
+ .border-radius-bottom-right(@radius);
+}
+.border-radius-left(@radius) {
+ .border-radius-top-left(@radius);
+ .border-radius-bottom-left(@radius);
+}
+.border-radius-right(@radius) {
+ .border-radius-top-right(@radius);
+ .border-radius-bottom-right(@radius);
+}
\ No newline at end of file
diff --git a/war/src/main/js/widgets/variables.less b/war/src/main/js/widgets/variables.less
new file mode 100644
index 0000000000..8cc5a1a162
--- /dev/null
+++ b/war/src/main/js/widgets/variables.less
@@ -0,0 +1,2 @@
+@light-border: #f3f3f3;
+@light-backgrond: #eee;
\ No newline at end of file
diff --git a/war/src/main/less/pluginSetupWizard.less b/war/src/main/less/pluginSetupWizard.less
index 46ba9919ad..af80db4c25 100644
--- a/war/src/main/less/pluginSetupWizard.less
+++ b/war/src/main/less/pluginSetupWizard.less
@@ -282,7 +282,7 @@
}
&.searching-with-transition {
- label {
+ .plugin {
display: none;
transition: all .25s;
@@ -312,7 +312,7 @@
}
&.searching {
- label {
+ .plugin {
display: none;
transition: all .25s;
@@ -331,65 +331,118 @@
}
}
}
-
- label {
- font-weight: normal;
- padding: 7px 2px 7px 27px;
+
+ .plugin {
position: relative;
- display: block;
- cursor: pointer;
- margin: 4px -7px;
-
- &:hover{
- background: rgba(100, 200, 255, 0.1);
- box-shadow:inset 0 200px 200px -200px rgba(100, 200, 255, 0.33),inset 0 0 0 1px rgba(100, 200, 255, 0.33);
- }
-
- &.selected {
+
+ &.selected label {
background: #dff0d8;
margin: 4px -7px;
padding: 6px 0 6px 26px;
border-radius: 2px;
border: 1px solid #C2E0A9;
color: #3c763d;
- }
- .title {
- display: block;
- font-weight: bold;
- white-space: nowrap;
+ .dependencies {
+ color: #777;
+ }
+ }
+
+ label {
+ font-weight: normal;
+ padding: 7px 2px 7px 27px;
position: relative;
- }
-
- .description {
display: block;
- margin-top: .5em;
+ cursor: pointer;
+ margin: 4px -7px;
+
+ &:hover{
+ background: rgba(100, 200, 255, 0.1);
+ box-shadow:inset 0 400px 400px -100px rgba(100, 200, 255, 0.33), inset 0 0 0 1px rgba(100, 200, 255, 0.33);
+ }
+
+ .title {
+ display: block;
+ font-weight: bold;
+ white-space: nowrap;
+ position: relative;
+ }
+
+ .description {
+ display: block;
+ margin-top: .5em;
+ }
+
+ input[type=checkbox] {
+ float: left;
+ margin: 2px -18px;
+ vertical-align: middle;
+ }
+
+ + .tooltip {
+ left: 2px !important;
+ margin-right: 16px;
+
+ .tooltip-arrow {
+ left: 4em !important;
+ }
+
+ .tooltip-inner {
+ max-width: none;
+ padding: .5em 1em;
+ text-align: left;
+ }
+ }
}
-
- &.selected .dependencies {
+
+ .toggle-dependency-list {
+ position: absolute;
+ top: 0;
+ right: 0;
color: #777;
+ border: 0;
+ text-decoration: none;
+ padding: 5px 13px;
+ z-index: 100;
+
+ .badge {
+ margin-left: 7px;
+ }
+
+ &:hover, &.active {
+ text-decoration: underline;
+ }
}
-
- input[type=checkbox] {
- float: left;
- margin: 2px -18px;
- vertical-align: middle;
+
+ .dep-list {
+ padding: 10px 0 6px 0;
+ display: none;
+
+ .badge {
+ padding: 4px 8px;
+ margin: 5px 3px 0 0;
+ }
+ }
+
+ &.show-dependencies {
+ .toggle-dependency-list:after {
+ content: '';
+ display: inline-block;
+ position: absolute;
+ top: 50%;
+ right: 100%;
+ width: 0;
+ height: 0;
+ border-left: 7px solid transparent;
+ border-right: 7px solid transparent;
+ border-top: 7px solid #999;
+ margin: -3px -3px 0 0;
+ }
+
+ .dep-list {
+ display: block;
+ }
}
-
- + .tooltip {
- left: 2px !important;
- margin-right: 16px;
-
- .tooltip-arrow {
- left: 4em !important;
- }
-
- .tooltip-inner {
- max-width: none;
- padding: .5em 1em;
- text-align: left;
- }
- }
}
}
}
diff --git a/war/src/main/webapp/WEB-INF/web.xml b/war/src/main/webapp/WEB-INF/web.xml
index b34fc209b0..f9b401b608 100644
--- a/war/src/main/webapp/WEB-INF/web.xml
+++ b/war/src/main/webapp/WEB-INF/web.xml
@@ -23,10 +23,11 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
-->
-
+ xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
+ version="3.1"
+ metadata-complete="true">
Jenkins v${project.version}
Build management system
@@ -174,7 +175,7 @@ THE SOFTWARE.
- *
+ **
@@ -236,4 +237,11 @@ THE SOFTWARE.
java.lang.Throwable
/oops
+
+
+
+
+ true
+
+
diff --git a/war/src/main/webapp/scripts/hudson-behavior.js b/war/src/main/webapp/scripts/hudson-behavior.js
index b0cf9e368c..1b89841a45 100644
--- a/war/src/main/webapp/scripts/hudson-behavior.js
+++ b/war/src/main/webapp/scripts/hudson-behavior.js
@@ -1195,6 +1195,7 @@ var jenkinsRules = {
Element.observe(window,"resize",adjustSticker);
// initial positioning
Element.observe(window,"load",adjustSticker);
+ Event.observe(window, 'jenkins:bottom-sticker-adjust', adjustSticker);
adjustSticker();
layoutUpdateCallback.add(adjustSticker);
},
diff --git a/war/src/test/js/widgets/config/freestyle-config.html b/war/src/test/js/widgets/config/freestyle-config.html
new file mode 100644
index 0000000000..a236ee0f45
--- /dev/null
+++ b/war/src/test/js/widgets/config/freestyle-config.html
@@ -0,0 +1,163 @@
+
+
+
\ No newline at end of file
diff --git a/war/src/test/js/widgets/config/tabbar-spec.js b/war/src/test/js/widgets/config/tabbar-spec.js
new file mode 100644
index 0000000000..46af54fa09
--- /dev/null
+++ b/war/src/test/js/widgets/config/tabbar-spec.js
@@ -0,0 +1,205 @@
+var jsTest = require("jenkins-js-test");
+
+describe("tabbar-spec tests", function () {
+
+ it("- test section count", function (done) {
+ jsTest.onPage(function() {
+ var configTabBar = jsTest.requireSrcModule('widgets/config/tabbar');
+ var firstTableMetadata = configTabBar.addTabsOnFirst();
+
+ var jQD = require('jquery-detached');
+ var $ = jQD.getJQuery();
+
+ expect($('.section-header-row', firstTableMetadata.configTable).size()).toBe(4);
+ expect(firstTableMetadata.sectionCount()).toBe(4);
+ expect($('.tabBar .tab').size()).toBe(4);
+
+ expect(firstTableMetadata.sectionIds().toString())
+ .toBe('config_general,config__advanced_project_options,config__build_triggers,config__build');
+
+ done();
+ }, 'widgets/config/freestyle-config.html');
+ });
+
+ it("- test section activation", function (done) {
+ jsTest.onPage(function() {
+ var configTabBar = jsTest.requireSrcModule('widgets/config/tabbar');
+ var firstTableMetadata = configTabBar.addTabsOnFirst();
+
+ // The first section ("General") should be active by default
+ expect(firstTableMetadata.activeSection().id).toBe('config_general');
+ expect(firstTableMetadata.activeSectionCount()).toBe(1);
+
+ firstTableMetadata.onShowSection(function() {
+ expect(this.id).toBe('config__build');
+
+ expect(firstTableMetadata.activeSectionCount()).toBe(1);
+ var activeSection = firstTableMetadata.activeSection();
+ expect(activeSection.id).toBe('config__build');
+ expect(activeSection.activeRowCount()).toBe(2);
+ expect(firstTableMetadata.getTopRows().filter('.active').size()).toBe(1); // should be activeSection.activeRowCount() - 1
+
+ done();
+ });
+
+ // Mimic the user clicking on one of the tabs. Should make that section active,
+ // with all of the rows in that section having an "active" class.
+ firstTableMetadata.activateSection('config__build');
+ // above 'firstTableMetadata.onShowSection' handler should get called now
+
+ }, 'widgets/config/freestyle-config.html');
+ });
+
+ it("- test row-group modeling", function (done) {
+ jsTest.onPage(function() {
+ var configTabBar = jsTest.requireSrcModule('widgets/config/tabbar');
+ var firstTableMetadata = configTabBar.addTabsOnFirst();
+
+ var generalSection = firstTableMetadata.activeSection();
+ expect(generalSection.id).toBe('config_general');
+
+ var sectionRowGroups = generalSection.rowGroups;
+
+ expect(sectionRowGroups.length).toBe(1);
+ expect(sectionRowGroups[0].getRowCount(false)).toBe(0); // zero because it does not have any non row-group rows nested immediately inside i.e. does not have any "normal" rows
+ expect(sectionRowGroups[0].getRowCount(true)).toBe(4); // there are some nested down in the children. see below
+ expect(sectionRowGroups[0].rowGroups.length).toBe(1);
+ expect(sectionRowGroups[0].rowGroups[0].getRowCount(false)).toBe(4); // The inner grouping has rows
+ expect(sectionRowGroups[0].rowGroups[0].getRowCount()).toBe(4); // Same as above ... just making sure they're direct child rows and not nested below
+ expect(generalSection.getRowGroupLabels().toString()).toBe('Discard Old Builds');
+
+ done();
+ }, 'widgets/config/freestyle-config.html');
+ });
+
+ it("- test finder - via handler triggering", function (done) {
+ jsTest.onPage(function() {
+ var configTabBarWidget = jsTest.requireSrcModule('widgets/config/tabbar');
+ var configTabBar = configTabBarWidget.addTabsOnFirst();
+ var jQD = require('jquery-detached');
+
+ var $ = jQD.getJQuery();
+
+ var tabBar = $('.tabBar');
+
+ // All tabs should be visible...
+ expect($('.tab', tabBar).size()).toBe(4);
+ expect($('.tab.hidden', tabBar).size()).toBe(0);
+
+ var finder = configTabBar.findInput;
+ expect(finder.size()).toBe(1);
+
+ // Find sections that have the text "trigger" in them...
+ keydowns('trigger', finder);
+
+ // Need to wait for the change to happen ... there's a 300ms delay.
+ // We could just call configTabBar.showSections(), but ...
+ setTimeout(function() {
+ expect($('.tab.hidden', tabBar).size()).toBe(3);
+ expect(textCleanup($('.tab.hidden', tabBar).text())).toBe('General|#Advanced Project Options|#Build');
+
+ var activeSection = configTabBar.activeSection();
+ expect(textCleanup(activeSection.title)).toBe('#Build Triggers');
+
+ expect($('.highlight-split .highlight').text()).toBe('Trigger');
+
+ done();
+ }, 600);
+ }, 'widgets/config/freestyle-config.html');
+ });
+
+ it("- test finder - via showSections()", function (done) {
+ jsTest.onPage(function() {
+ var configTabBarWidget = jsTest.requireSrcModule('widgets/config/tabbar');
+ var configTabBar = configTabBarWidget.addTabsOnFirst();
+ var jQD = require('jquery-detached');
+
+ var $ = jQD.getJQuery();
+
+ var tabBar = $('.tabBar');
+
+ configTabBar.showSections('quiet period');
+ expect($('.tab.hidden', tabBar).size()).toBe(3);
+ expect(textCleanup($('.tab.hidden', tabBar).text())).toBe('General|#Build Triggers|#Build');
+
+ var activeSection = configTabBar.activeSection();
+ expect(textCleanup(activeSection.title)).toBe('#Advanced Project Options');
+
+ done();
+ }, 'widgets/config/freestyle-config.html');
+ });
+
+ it("- test finder - via showSections() - in inner row-group", function (done) {
+ jsTest.onPage(function() {
+ var configTabBarWidget = jsTest.requireSrcModule('widgets/config/tabbar');
+ var configTabBar = configTabBarWidget.addTabsOnFirst();
+ var jQD = require('jquery-detached');
+
+ var $ = jQD.getJQuery();
+
+ var tabBar = $('.tabBar');
+
+ configTabBar.showSections('Strategy');
+ expect($('.tab.hidden', tabBar).size()).toBe(3);
+ expect(textCleanup($('.tab.hidden', tabBar).text())).toBe('#Advanced Project Options|#Build Triggers|#Build');
+
+ var activeSection = configTabBar.activeSection();
+ expect(textCleanup(activeSection.title)).toBe('General');
+
+ done();
+ }, 'widgets/config/freestyle-config.html');
+ });
+
+ it("- test adopt sections ", function (done) {
+ jsTest.onPage(function() {
+ var configTabBarWidget = jsTest.requireSrcModule('widgets/config/tabbar');
+ var configTabBar = configTabBarWidget.addTabsOnFirst();
+ var jQD = require('jquery-detached');
+
+ var $ = jQD.getJQuery();
+
+ var tabBar = $('.tabBar');
+
+ // Move the advanced stuff into the general section
+ var general = configTabBar.getSection('config_general');
+ general.adoptSection('config__advanced_project_options');
+
+ // Only 3 tabs should be visible
+ // (used to be 4 before the merge/adopt)...
+ expect($('.tab', tabBar).size()).toBe(3);
+ expect(textCleanup($('.tab', tabBar).text())).toBe('General|#Build Triggers|#Build');
+
+ // And if we try to use the finder now to find something
+ // that was in the advanced section, it should now appear in the
+ // General section ...
+ configTabBar.showSections('quiet period');
+ expect($('.tab.hidden', tabBar).size()).toBe(2);
+ expect(textCleanup($('.tab.hidden', tabBar).text())).toBe('#Build Triggers|#Build');
+
+ var activeSection = configTabBar.activeSection();
+ expect(textCleanup(activeSection.title)).toBe('General');
+
+ done();
+ }, 'widgets/config/freestyle-config.html');
+ });
+
+ function keydowns(text, onInput) {
+ var jQD = require('jquery-detached');
+ var $ = jQD.getJQuery();
+
+ // hmmm, for some reason, the key events do not result in the text being
+ // set in the input, so setting it manually.
+ onInput.val(text);
+
+ // Now fire a keydown event to trigger the handler
+ var e = $.Event("keydown");
+ e.which = 116;
+ onInput.trigger(e);
+ }
+
+ function textCleanup(text) {
+ return text.trim().replace(/(\r\n|\n|\r)/gm, "").replace(/ +/g, "|");
+ }
+});
+
+// TODO: lots more tests !!!
\ No newline at end of file