Jenkins 2.414.1:动态创建执行节点或复用节点指定凭证的咨询
针对Jenkins远程Linux节点执行流水线的解决方案
你的需求完全可以实现,下面分两种场景给出具体配置方式:
一、动态创建Jenkins执行节点(按需启停)
通过Jenkins官方的SSH Build Agents插件,就能在流水线中动态注册远程Linux节点,用完可自动销毁,非常适合临时任务场景:
前置准备:
- 在Jenkins插件管理中安装
SSH Build Agents插件(Jenkins 2.414.1完全兼容)。 - 在Jenkins凭证管理中添加目标LDAP用户的SSH凭证:可以是“用户名+密码”或者“用户名+私钥”类型,记录好凭证ID。
- 确保远程Linux主机开启SSH服务,Jenkins主节点能访问该主机的22端口,且目标用户对指定工作目录有读写权限。
- 在Jenkins插件管理中安装
流水线示例代码:
pipeline { agent none stages { stage('动态节点执行任务') { agent { sshConnector( remoteHost: '远程Linux主机IP/域名', credentialsId: '你的用户级凭证ID', sshHostKeyVerificationStrategy: 'nonVerifyingKeyVerificationStrategy', // 测试环境可用,生产建议用已知主机策略 remoteFS: '/home/目标用户/jenkins_workspace', label: 'temp-linux-slave' ) } steps { script { // 验证当前执行用户 sh 'whoami' // 这里替换成你的实际任务命令 sh 'echo 正在远程节点执行任务...' } } } } post { always { // 任务结束后销毁动态节点,避免资源浪费 script { def targetNode = Jenkins.instance.nodes.find { it.name == 'temp-linux-slave' } if (targetNode) { Jenkins.instance.removeNode(targetNode) } } } } }
二、复用预定义节点并指定用户级凭证
如果已经在Jenkins中配置了永久的远程Linux节点,有两种方式指定用户身份执行任务:
方式1:预定义节点直接绑定用户凭证
编辑预定义节点的配置:
- 进入「Jenkins管理」→「节点」→ 选择目标节点→「配置」
- 在「启动方法」中选择「通过SSH启动代理」,然后在「凭证」下拉框中选择你提前配置的用户级LDAP凭证
- 保存配置后,该节点会以指定用户身份连接远程Linux主机,流水线只需指定节点标签即可:
pipeline { agent { label 'predefined-linux-slave' } // 预定义节点的标签 stages { stage('预定义节点执行任务') { steps { sh 'whoami' // 输出的就是你指定的LDAP用户 sh '执行你的流水线任务命令' } } } }
方式2:流水线中临时切换用户
如果预定义节点默认用其他用户连接,可在流水线中通过凭证切换用户执行:
pipeline { agent { label 'predefined-linux-slave' } stages { stage('切换用户执行任务') { steps { withCredentials([sshUserPrivateKey( credentialsId: '你的用户级凭证ID', usernameVariable: 'TARGET_USER' )]) { // 通过su切换用户执行命令 sh "su - ${TARGET_USER} -c 'whoami && 你的任务命令'" // 或者用sudo(如果目标用户有sudo权限) // sh "sudo -u ${TARGET_USER} whoami" } } } } }
关键注意事项
- 无论哪种方案,目标LDAP用户必须拥有远程Linux主机的SSH访问权限,且对工作目录有读写权限。
- 生产环境中建议启用SSH主机密钥验证策略,不要用
nonVerifyingKeyVerificationStrategy,避免安全风险。 - 确保Jenkins主节点和远程Linux主机网络连通,无防火墙或安全组限制。
内容的提问来源于stack exchange,提问作者freeAR
相关产品推荐
相关产品推荐

