如何在管道中使用通过 ssh 插件发布

Chr*_*ris 7 jenkins jenkins-plugins jenkins-pipeline

我想从 Windows 上托管的 Jenkins SSH 到 linux 服务器并在 linux 机器上执行命令,我尝试通过 ssh 插件安装发布并测试了全局配置中的连接,它工作正常,我不知道下一步如何进行在管道中。任何帮助,将不胜感激。

小智 7

如果您正在寻找用于 Publish-Over-SSH 的声明性管道 (Jenkinsfile) 的语法(而不是我能找到的脚本化管道)。这最终对我有用。

pipeline{
  agent any
  environment {
    RELEASENAME="yourProject-ci"
  }
  stages{
    stage("Get the charts..."){
        steps {checkout scm}
    }
    stage('SSH transfer') {
        steps([$class: 'BapSshPromotionPublisherPlugin']) {
            sshPublisher(
                continueOnError: false, failOnError: true,
                publishers: [
                    sshPublisherDesc(
                        configName: "kubernetes_master",
                        verbose: true,
                        transfers: [
                            sshTransfer(execCommand: "/bin/rm -rf /opt/deploy/helm"),
                            sshTransfer(sourceFiles: "helm/**",)
                        ]
                    )
                ]
            )
        }
    }
    stage('Deploy Helm Scripts'){
        steps([$class: 'BapSshPromotionPublisherPlugin']) {
            sshPublisher(
                continueOnError: false, failOnError: true,
                publishers: [
                    sshPublisherDesc(
                        configName: "kubernetes_master",
                        verbose: true,
                        transfers: [
                            sshTransfer(execCommand: "cd /opt/deploy/helm;helm upgrade ${RELEASENAME} . --install"),
                        ]
                    )
                ]
            )
        }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

我首先进行结账,然后将一些 Helm 图表从结账复制到我的 kubernetes master,然后运行图表。

configName: "kubernetes_master"是我在 Publish_over_ssh 插件配置部分(在“管理 Jenkins”>“配置系统”下找到)设置的内容,以便我可以引用它。它包括用户名、sshkey、目标主机名和目标的基本目录(我将其设置为 /opt/deploy)。

仅供参考 execCommand 不使用基目录...它假设您将使用完整路径。

希望有帮助。

编辑:我可能应该提到 sshPublisher 有比我使用的更多的选项。您可以在这里找到它们:https ://jenkins.io/doc/pipeline/steps/publish-over-ssh/


J S*_*cta 5

如果您正在使用管道项目Jenkinsfile,那么您需要做的就是在 Jenkins 中进入您的项目并单击配置。在配置的管道部分,底部有一个链接“管道语法”。它将带您到代码段生成器。它是不言自明的,在我们的例子中,它允许生成“通过 ssh 发布”的片段,您可以将其添加到 Jenkinsfile 中(将其添加到阶段定义中的步骤部分)。在生成器中,您可以定义要发布的内容、运行 shell 命令的选项等。source