@@ -78,6 +78,7 @@ public class SSHJNodeExecutorPlugin implements NodeExecutor, ProxySecretBundleCr
7878 public static final String NODE_ATTR_USE_SFTP = "use-sftp" ;
7979
8080 public static final String PROJECT_SSH_USER = PROJ_PROP_PREFIX + "ssh.user" ;
81+ public static final String CONFIG_SET_PTY = "always-set-pty" ;
8182
8283 public static final String FWK_PROP_SSH_AUTHENTICATION = FWK_PROP_PREFIX + NODE_ATTR_SSH_AUTHENTICATION ;
8384 public static final String PROJ_PROP_SSH_AUTHENTICATION = PROJ_PROP_PREFIX + NODE_ATTR_SSH_AUTHENTICATION ;
@@ -105,6 +106,10 @@ public class SSHJNodeExecutorPlugin implements NodeExecutor, ProxySecretBundleCr
105106 public static final String FWK_PROP_USE_SFTP = FWK_PROP_PREFIX + NODE_ATTR_USE_SFTP ;
106107 public static final String PROJ_PROP_USE_SFTP = PROJ_PROP_PREFIX + NODE_ATTR_USE_SFTP ;
107108
109+ public static final String NODE_ATTR_ALWAYS_SET_PTY = "always-set-pty" ;
110+ public static final String FWK_PROP_SET_PTY = FWK_PROP_PREFIX + NODE_ATTR_ALWAYS_SET_PTY ;
111+ public static final String PROJ_PROP_SET_PTY = PROJ_PROP_PREFIX + NODE_ATTR_ALWAYS_SET_PTY ;
112+
108113 public static final String SUDO_OPT_PREFIX = "sudo-" ;
109114
110115 public static final String DEFAULT_SUDO_PROMPT_PATTERN = "[sudo] password for" ;
@@ -182,6 +187,10 @@ public class SSHJNodeExecutorPlugin implements NodeExecutor, ProxySecretBundleCr
182187 "Use SFTP for file transfer" ,
183188 false , "false" );
184189
190+ public static final Property ALWAYS_SET_PTY = PropertyUtil .bool (CONFIG_SET_PTY , "Force PTY" ,
191+ "Always force use of new pty" ,
192+ false , "false" );
193+
185194 private SSHClient sshClient ;
186195
187196 public void setSshClient (SSHClient sshClient ) {
@@ -210,6 +219,7 @@ public Description getDescription() {
210219 builder .property (SSH_KEEP_ALIVE_MAX_ALIVE_COUNT );
211220 builder .property (SSH_RETRY_ENABLE );
212221 builder .property (SSH_RETRY_COUNTER );
222+ builder .property (ALWAYS_SET_PTY );
213223
214224 //mapping config input on project and framework level
215225 builder .mapping (CONFIG_KEYPATH , PROJ_PROP_SSH_KEYPATH );
@@ -233,6 +243,9 @@ public Description getDescription() {
233243 builder .mapping (CONFIG_RETRY_ENABLE , PROJ_PROP_RETRY_ENABLE );
234244 builder .frameworkMapping (CONFIG_RETRY_ENABLE , FWK_PROP_RETRY_ENABLE );
235245
246+ builder .mapping (CONFIG_SET_PTY , PROJ_PROP_SET_PTY );
247+ builder .frameworkMapping (CONFIG_SET_PTY , FWK_PROP_SET_PTY );
248+
236249 return builder .build ();
237250 }
238251
@@ -246,6 +259,7 @@ public NodeExecutorResult executeCommand(ExecutionContext context, String[] comm
246259 node
247260 );
248261 }
262+
249263 boolean success = false ;
250264
251265 final ExecutionListener listener = context .getExecutionListener ();
0 commit comments