You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Declarative Jenkinsfile中配置远程SSH执行步骤?

在Declarative Jenkinsfile中执行远程SSH命令

嗨,我来帮你搞定这个问题!既然你已经在Jenkins主配置里完成了远程SSH站点的配置,那在Declarative流水线里执行远程命令其实非常简单,核心是用SSH Pipeline Steps插件提供的专属步骤。下面我给你详细讲两种常用的实现方式:

1. 直接执行单条/多条命令:sshCommand

这个步骤可以直接在远程服务器上执行指定的Shell命令,Declarative模式下需要把它放在script块里使用。

基本用法示例

pipeline {
    agent any
    stages {
        stage('Remote Command Execution') {
            steps {
                script {
                    // 替换成你在Jenkins配置里的远程SSH站点名称
                    sshCommand remote: remote('your-ssh-server-alias'), command: 'ls -l /var/www'
                }
            }
        }
    }
}

执行多条命令

如果需要执行一系列命令,可以用多行字符串包裹,就像在本地Shell里写脚本一样:

script {
    sshCommand remote: remote('your-ssh-server-alias'), command: '''
        cd /opt/my-project
        git fetch origin
        git checkout release/v1.0.0
        ./deploy.sh
    '''
}

2. 上传并执行本地脚本:sshScript

如果你的远程操作逻辑比较复杂,写在命令里太冗长,可以先在本地写好脚本文件,然后用sshScript把它上传到远程服务器并执行。

示例

假设本地有一个deploy-app.sh脚本,内容是部署应用的逻辑,那么流水线里可以这么写:

pipeline {
    agent any
    stages {
        stage('Run Remote Deployment Script') {
            steps {
                script {
                    sshScript remote: remote('your-ssh-server-alias'), script: 'deploy-app.sh'
                }
            }
        }
    }
}

一些实用注意事项

  • 权限验证:确保Jenkins配置的SSH凭证(密钥/密码)在远程服务器上有足够的操作权限,比如目录读写、命令执行权限。
  • 环境变量传递:如果需要把流水线里的环境变量传给远程命令,可以用字符串插值的方式:
    environment {
        APP_VERSION = '1.0.0'
    }
    steps {
        script {
            sshCommand remote: remote('your-ssh-server-alias'), command: "echo Deploying version ${APP_VERSION} to /opt/apps"
        }
    }
    
  • 错误处理:如果远程命令执行失败,sshCommand和sshScript会自动让流水线失败,你也可以用catchError块来捕获异常并自定义处理逻辑。

内容的提问来源于stack exchange,提问作者Rob Barnes

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 04:26:30