我想从托管在Windows上的Jenkins到Linux服务器,并在Linux计算机中执行命令,我尝试通过SSH插件安装发布,并在Global Config中测试了连接,并且它可以工作很好,我不知道该如何进行管道。任何帮助将不胜感激。
如果您使用的是 Pipeline Project 和A Jenkinsfile ,那么您需要做的就是进入Jenkins和Jenkins和单击配置。在配置的管道部分中,在底部有一个链接"管道语法"。它将带您进入 simpet Generator 。它的自我解释性,在我们的情况下,它允许您将"通过SSH"片段添加到Jenkinsfile(将其添加到舞台定义中的步骤部分(。在发电机中,您可以定义要发布的内容,运行shell命令的选项等。来源
如果您正在寻找用于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"),
]
)
]
)
}
}
}
}
我有一个首先发生的结帐,然后我将一些头盔图从结帐复制到我的Kubernetes Master,然后运行图表。
configName: "kubernetes_master"
是我在publish_over_ssh插件配置部分中设置的东西(在管理jenkins> Configure System下找到(,因此我可以参考它。它包括一个用户名,sshkey,目标主机名和我列为/opt/exploy的目的地的基本目录。
fyi execCommand不使用基本目录...它假定您将使用完整的路径。
希望会有所帮助。
编辑:我可能应该提到,SSHPUBLISHER的选择要比我使用的更多。您可以在这里找到它们:https://jenkins.io/doc/pipeline/steps/publish-over-ssh/
基于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
)
]
)
}
}
我前一次得到了这个问题,这是答案。根据您的要求更改代码。
pipeline {
agent any
options { timestamps () }
stages {
stage('Publish over ssh plugin in pipeline') {
steps([$class: 'BapSshPromotionPublisherPlugin']) {
script {
List SERVERS_LIST = ["Server_1", "Server_2"]
for(cr_server in SERVERS_LIST){
sshPublisher(
publishers: [
sshPublisherDesc(
configName: cr_server,
transfers: [
sshTransfer(
cleanRemote: false,
excludes: '',
execCommand: '',
execTimeout: 120000,
flatten: false,
makeEmptyDirs: false,
noDefaultExcludes: false,
patternSeparator: '[, ]+',
remoteDirectory: '',
remoteDirectorySDF: false,
removePrefix: '',
sourceFiles: '**/*'
)
],
usePromotionTimestamp: false,
useWorkspaceInPromotion: false,
verbose: false
)
]
)
}
}
}
}
}
}
我不知道这会有多帮助,但是我找到了一个应该有效的教程,直到他们有一种更好的方法。