我想从Windows上托管的Jenkins通过SSH连接到Linux服务器并在linux机器上执行命令,我尝试通过ssh插件安装发布并测试全局配置中的连接,它运行正常,我不知道如何继续进行管道。任何帮助将不胜感激。
答案 0 :(得分:3)
如果您使用的是管道项目和 Jenkinsfile ,那么您要做的就是进入Jenkins中的项目,然后单击“配置”。在配置的管道部分中,底部有一个链接“管道语法”。它将带您到片段生成器。它的自我解释,在我们的案例中,它允许生成“ ssh上的发布”片段,您可以将其添加到Jenkinsfile中(将其添加到阶段定义内的steps部分)。在生成器中,您可以定义要发布的内容,运行shell命令的选项等。source
答案 1 :(得分:2)
如果您正在寻找用于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"),
]
)
]
)
}
}
}
}
我首先进行结帐,然后将一些掌舵图表从结帐复制到我的kubernetes主数据库,然后运行图表。
我在Publish_over_ssh插件配置部分(位于Manage Jenkins> Configure System下找到)中设置了 configName: "kubernetes_master"
,因此我可以引用它。它包括一个用户名,sshkey,目标主机名和目标的基本目录,我将其放置为/ opt / deploy。
FYI execCommand不使用基本目录...假定您将使用完整路径。
希望有帮助。
edit:我可能应该提到sshPublisher的选项比我使用的更多。您可以在这里找到它们:https://jenkins.io/doc/pipeline/steps/publish-over-ssh/
答案 2 :(得分:0)
基于levis的答案,以下内容对我有用。
...
stage('Deploy') {
agent any
steps {
sh 'mv target/my-app-0.0.1-SNAPSHOT.jar my-app.jar'
sshPublisher(
continueOnError: false,
failOnError: true,
publishers: [
sshPublisherDesc(
configName: "my-ssh-connection",
transfers: [sshTransfer(sourceFiles: 'my-app.jar')],
verbose: true
)
]
)
}
}
...
答案 3 :(得分:-1)
我不知道这会有多大帮助,但我找到了一个tutorial的东西应该有效,直到他们有更好的方法去做。