Package hudson
Class Launcher
java.lang.Object
hudson.Launcher
- Direct Known Subclasses:
Launcher.DecoratedLauncher
,Launcher.DummyLauncher
,Launcher.LocalLauncher
,Launcher.RemoteLauncher
Starts a process.
This hides the difference between running programs locally vs remotely.
'env' parameter
To allow important environment variables to be copied over to the remote machine, the 'env' parameter shouldn't contain default inherited environment variables (which often contains machine-specific information, like PATH, TIMEZONE, etc.)
Launcher
is responsible for inheriting environment variables.
- Author:
- Kohsuke Kawaguchi
- See Also:
-
Nested Class Summary
Modifier and TypeClassDescriptionstatic class
A launcher which delegates to a provided inner launcher.static class
static class
static class
Launcher
that launches process locally.final class
Builder pattern for configuring a process to launch.static class
Launches processes remotely by using the given channel.static interface
Remoting interface of a remote process -
Field Summary
Modifier and TypeFieldDescriptionprotected final hudson.remoting.VirtualChannel
protected EnvVarsFilterRuleWrapper
protected final TaskListener
static boolean
Debug option to display full current path instead of just the last token. -
Constructor Summary
ModifierConstructorDescriptionprotected
Constructor for a decorator.protected
Launcher
(TaskListener listener, hudson.remoting.VirtualChannel channel) -
Method Summary
Modifier and TypeMethodDescriptionfinal Launcher
decorateByEnv
(EnvVars _env) Returns a decoratedLauncher
that automatically adds the specified environment variables.final Launcher
decorateByPrefix
(String... prefix) Returns a decoratedLauncher
that puts the given set of arguments as a prefix to any commands that it invokes.final Launcher
decorateFor
(Node node) Returns a decoratedLauncher
for the given node.hudson.remoting.VirtualChannel
Gets the channel that can be used to run a program remotely.Deprecated.since 2008-11-16.Gets theTaskListener
that this launcher uses to report the commands that it's executing.boolean
isUnix()
Returns true if thisLauncher
is going to launch on Unix.abstract void
CallsProcessTree.killAll(Map)
to kill processes.final Launcher.ProcStarter
launch()
Launches a process by using a builder-pattern to configure the parameters.abstract Proc
launch
(Launcher.ProcStarter starter) Primarily invoked fromLauncher.ProcStarter.start()
to start a process with a specific launcher.final Proc
launch
(String[] cmd, boolean[] mask, String[] env, InputStream in, OutputStream out) Deprecated.as of 1.311 Uselaunch()
and its associated builder patternlaunch
(String[] cmd, boolean[] mask, String[] env, InputStream in, OutputStream out, FilePath workDir) Deprecated.as of 1.311 Uselaunch()
and its associated builder patternfinal Proc
launch
(String[] cmd, boolean[] mask, String[] env, OutputStream out, FilePath workDir) Deprecated.as of 1.311 Uselaunch()
and its associated builder patternfinal Proc
launch
(String[] cmd, boolean[] mask, Map<String, String> env, InputStream in, OutputStream out) Deprecated.as of 1.311 Uselaunch()
and its associated builder patternfinal Proc
Deprecated.as of 1.311 Uselaunch()
and its associated builder patternfinal Proc
launch
(String[] cmd, String[] env, InputStream in, OutputStream out) Deprecated.as of 1.311 Uselaunch()
and its associated builder patternlaunch
(String[] cmd, String[] env, InputStream in, OutputStream out, FilePath workDir) Deprecated.as of 1.311 Uselaunch()
and its associated builder patternfinal Proc
launch
(String[] cmd, String[] env, OutputStream out, FilePath workDir) Deprecated.as of 1.311 Uselaunch()
and its associated builder patternfinal Proc
launch
(String[] cmd, Map<String, String> env, InputStream in, OutputStream out) Deprecated.as of 1.311 Uselaunch()
and its associated builder patternfinal Proc
Deprecated.as of 1.311 Uselaunch()
and its associated builder patternfinal Proc
launch
(String cmd, String[] env, OutputStream out, FilePath workDir) Deprecated.as of 1.311 Uselaunch()
and its associated builder patternfinal Proc
Deprecated.as of 1.311 Uselaunch()
and its associated builder patternabstract hudson.remoting.Channel
launchChannel
(String[] cmd, OutputStream out, FilePath workDir, Map<String, String> envVars) Launches a specified process and connects its input/output to aChannel
, then return it.protected final void
maskedPrintCommandLine
(String[] cmd, boolean[] mask, FilePath workDir) protected final void
maskedPrintCommandLine
(List<String> cmd, boolean[] mask, FilePath workDir) Prints out the command line to the listener with some portions masked to prevent sensitive information from being recorded on the listener.void
prepareFilterRules
(Run<?, ?> run, EnvVarsFilterableBuilder builder) Build the environment filter rules that will be applied on the environment variablesprotected final void
printCommandLine
(String[] cmd, FilePath workDir) Prints out the command line to the listener so that users know what we are doing.protected void
setEnvVarsFilterRuleWrapper
(EnvVarsFilterRuleWrapper envVarsFilterRuleWrapper)
-
Field Details
-
listener
-
channel
@CheckForNull protected final hudson.remoting.VirtualChannel channel -
envVarsFilterRuleWrapper
@Restricted(org.kohsuke.accmod.restrictions.Beta.class) protected EnvVarsFilterRuleWrapper envVarsFilterRuleWrapper -
showFullPath
public static boolean showFullPathDebug option to display full current path instead of just the last token.
-
-
Constructor Details
-
Launcher
protected Launcher(@NonNull TaskListener listener, @CheckForNull hudson.remoting.VirtualChannel channel) -
Launcher
Constructor for a decorator.- Parameters:
launcher
- Launcher to be decorated
-
-
Method Details
-
prepareFilterRules
@Restricted(org.kohsuke.accmod.restrictions.Beta.class) public void prepareFilterRules(@CheckForNull Run<?, ?> run, @NonNull EnvVarsFilterableBuilder builder) Build the environment filter rules that will be applied on the environment variables- Parameters:
run
- The run that requested the command interpretation, could benull
if outside of a run context.builder
- The builder that asked to run this command- Since:
- 2.246
-
setEnvVarsFilterRuleWrapper
@Restricted(org.kohsuke.accmod.restrictions.Beta.class) protected void setEnvVarsFilterRuleWrapper(EnvVarsFilterRuleWrapper envVarsFilterRuleWrapper) -
getChannel
@CheckForNull public hudson.remoting.VirtualChannel getChannel()Gets the channel that can be used to run a program remotely.- Returns:
null
if the target node is not configured to support this. this is a transitional measure. Note that a launcher for the built-in node is always non-null.
-
getListener
Gets theTaskListener
that this launcher uses to report the commands that it's executing.- Returns:
- Task listener
-
getComputer
Deprecated.since 2008-11-16. See the javadoc for why this is inherently unreliable. If you are trying to figure out the currentComputer
from within a build, useFilePath.toComputer()
orComputer.currentComputer()
.If thisLauncher
is encapsulating an execution on a specificComputer
, return it.Because of the way internal Hudson abstractions are set up (that is,
Launcher
only needs aVirtualChannel
to do its job and isn't really required that the channel comes from an existingComputer
), this method may not always the rightComputer
instance.- Returns:
null
if this launcher is not created from aComputer
object.
-
launch
Launches a process by using a builder-pattern to configure the parameters. -
launch
@Deprecated public final Proc launch(String cmd, Map<String, String> env, OutputStream out, FilePath workDir) throws IOExceptionDeprecated.as of 1.311 Uselaunch()
and its associated builder pattern- Throws:
IOException
-
launch
@Deprecated public final Proc launch(String[] cmd, Map<String, String> env, OutputStream out, FilePath workDir) throws IOExceptionDeprecated.as of 1.311 Uselaunch()
and its associated builder pattern- Throws:
IOException
-
launch
@Deprecated public final Proc launch(String[] cmd, Map<String, String> env, InputStream in, OutputStream out) throws IOExceptionDeprecated.as of 1.311 Uselaunch()
and its associated builder pattern- Throws:
IOException
-
launch
@Deprecated public final Proc launch(String[] cmd, boolean[] mask, Map<String, String> env, OutputStream out, FilePath workDir) throws IOExceptionDeprecated.as of 1.311 Uselaunch()
and its associated builder patternLaunch a command with optional censoring of arguments from the listener (Note: The censored portions will remain visible through /proc, pargs, process explorer, etc. i.e. people logged in on the same machine This version of the launch command just ensures that it is not visible from a build log which is exposed via the web)- Parameters:
cmd
- The command and all it's arguments.mask
- Which of the command and arguments should be masked from the listenerenv
- Environment variable overrides.out
- stdout and stderr of the process will be sent to this stream. the stream won't be closed.workDir
- null if the working directory could be anything.- Returns:
- The process of the command.
- Throws:
IOException
- When there are IO problems.
-
launch
@Deprecated public final Proc launch(String[] cmd, boolean[] mask, Map<String, String> env, InputStream in, OutputStream out) throws IOExceptionDeprecated.as of 1.311 Uselaunch()
and its associated builder patternLaunch a command with optional censoring of arguments from the listener (Note: The censored portions will remain visible through /proc, pargs, process explorer, etc. i.e. people logged in on the same machine This version of the launch command just ensures that it is not visible from a build log which is exposed via the web)- Parameters:
cmd
- The command and all it's arguments.mask
- Which of the command and arguments should be masked from the listenerenv
- Environment variable overrides.in
- null if there's no input.out
- stdout and stderr of the process will be sent to this stream. the stream won't be closed.- Returns:
- The process of the command.
- Throws:
IOException
- When there are IO problems.
-
launch
@Deprecated public final Proc launch(String cmd, String[] env, OutputStream out, FilePath workDir) throws IOException Deprecated.as of 1.311 Uselaunch()
and its associated builder pattern- Throws:
IOException
-
launch
@Deprecated public final Proc launch(String[] cmd, String[] env, OutputStream out, FilePath workDir) throws IOException Deprecated.as of 1.311 Uselaunch()
and its associated builder pattern- Throws:
IOException
-
launch
@Deprecated public final Proc launch(String[] cmd, String[] env, InputStream in, OutputStream out) throws IOException Deprecated.as of 1.311 Uselaunch()
and its associated builder pattern- Throws:
IOException
-
launch
@Deprecated public final Proc launch(String[] cmd, boolean[] mask, String[] env, OutputStream out, FilePath workDir) throws IOException Deprecated.as of 1.311 Uselaunch()
and its associated builder patternLaunch a command with optional censoring of arguments from the listener (Note: The censored portions will remain visible through /proc, pargs, process explorer, etc. i.e. people logged in on the same machine This version of the launch command just ensures that it is not visible from a build log which is exposed via the web)- Parameters:
cmd
- The command and all it's arguments.mask
- Which of the command and arguments should be masked from the listenerenv
- Environment variable overrides.out
- stdout and stderr of the process will be sent to this stream. the stream won't be closed.workDir
- null if the working directory could be anything.- Returns:
- The process of the command.
- Throws:
IOException
- When there are IO problems.
-
launch
@Deprecated public final Proc launch(String[] cmd, boolean[] mask, String[] env, InputStream in, OutputStream out) throws IOException Deprecated.as of 1.311 Uselaunch()
and its associated builder patternLaunch a command with optional censoring of arguments from the listener (Note: The censored portions will remain visible through /proc, pargs, process explorer, etc. i.e. people logged in on the same machine This version of the launch command just ensures that it is not visible from a build log which is exposed via the web)- Parameters:
cmd
- The command and all it's arguments.mask
- Which of the command and arguments should be masked from the listenerenv
- Environment variable overrides.in
- null if there's no input.out
- stdout and stderr of the process will be sent to this stream. the stream won't be closed.- Returns:
- The process of the command.
- Throws:
IOException
- When there are IO problems.
-
launch
@Deprecated public Proc launch(String[] cmd, String[] env, InputStream in, OutputStream out, FilePath workDir) throws IOException Deprecated.as of 1.311 Uselaunch()
and its associated builder pattern- Parameters:
env
- Environment variable overrides.in
- null if there's no input.workDir
- null if the working directory could be anything.out
- stdout and stderr of the process will be sent to this stream. the stream won't be closed.- Throws:
IOException
-
launch
@Deprecated public Proc launch(String[] cmd, boolean[] mask, String[] env, InputStream in, OutputStream out, FilePath workDir) throws IOException Deprecated.as of 1.311 Uselaunch()
and its associated builder patternLaunch a command with optional censoring of arguments from the listener (Note: The censored portions will remain visible through /proc, pargs, process explorer, etc. i.e. people logged in on the same machine This version of the launch command just ensures that it is not visible from a build log which is exposed via the web)- Parameters:
cmd
- The command and all it's arguments.mask
- Which of the command and arguments should be masked from the listenerenv
- Environment variable overrides.in
- null if there's no input.out
- stdout and stderr of the process will be sent to this stream. the stream won't be closed.workDir
- null if the working directory could be anything.- Returns:
- The process of the command.
- Throws:
IOException
- When there are IO problems.
-
launch
Primarily invoked fromLauncher.ProcStarter.start()
to start a process with a specific launcher.- Throws:
IOException
-
launchChannel
public abstract hudson.remoting.Channel launchChannel(@NonNull String[] cmd, @NonNull OutputStream out, @CheckForNull FilePath workDir, @NonNull Map<String, String> envVars) throws IOException, InterruptedExceptionLaunches a specified process and connects its input/output to aChannel
, then return it.When the returned channel is terminated, the process will be killed.
- Parameters:
cmd
- The commands.out
- Where the stderr from the launched process will be sent.workDir
- The working directory of the new process, ornull
to inherit from the current processenvVars
- Environment variable overrides. In addition to what the current process is inherited (if this is going to be launched from an agent, that becomes the "current" process), these variables will be also set.- Throws:
IOException
InterruptedException
-
isUnix
public boolean isUnix()Returns true if thisLauncher
is going to launch on Unix. -
kill
CallsProcessTree.killAll(Map)
to kill processes.- Throws:
IOException
InterruptedException
-
printCommandLine
Prints out the command line to the listener so that users know what we are doing. -
maskedPrintCommandLine
protected final void maskedPrintCommandLine(@NonNull List<String> cmd, @CheckForNull boolean[] mask, @CheckForNull FilePath workDir) Prints out the command line to the listener with some portions masked to prevent sensitive information from being recorded on the listener.- Parameters:
cmd
- The commandsmask
- An array of booleans which control whether a cmd element should be masked (true
) or remain unmasked (false
).workDir
- The work dir.
-
maskedPrintCommandLine
-
decorateFor
Returns a decoratedLauncher
for the given node.- Parameters:
node
- Node for which this launcher is created.- Returns:
- Decorated instance of the Launcher.
-
decorateByPrefix
Returns a decoratedLauncher
that puts the given set of arguments as a prefix to any commands that it invokes.- Parameters:
prefix
- Prefixes to be appended- Since:
- 1.299
-
decorateByEnv
Returns a decoratedLauncher
that automatically adds the specified environment variables. Those that are specified inLauncher.ProcStarter.envs(String...)
will take precedence over what's specified here.- Since:
- 1.489
-