如何使用Jenkins文件将文件从Jenkins代理节点复制到远程服务器

如何使用Jenkins文件将文件从Jenkins代理节点复制到远程服务器,jenkins,jenkins-pipeline,Jenkins,Jenkins Pipeline,我有一个Jenkinsfile,它实现了一个管道,在其中一个阶段和一个节点下,如果我说unstash‘myfile’,那么这个‘myfile’将在节点上可用吗?我的要求是,我需要访问此文件并将其作为Jenkins文件脚本的一部分复制到已知的远程服务器(此远程服务器不是Jenkins池的一部分)。您可以使用将文件复制到远程服务器。以下是如何将文件从作业工作区发送到远程主机的示例: remote = [:] remote.name = "name" remote.host = "remote_ip

我有一个Jenkinsfile,它实现了一个管道,在其中一个阶段和一个节点下,如果我说unstash‘myfile’,那么这个‘myfile’将在节点上可用吗?我的要求是,我需要访问此文件并将其作为Jenkins文件脚本的一部分复制到已知的远程服务器(此远程服务器不是Jenkins池的一部分)。

您可以使用将文件复制到远程服务器。以下是如何将文件从作业工作区发送到远程主机的示例:

remote = [:]

remote.name = "name"
remote.host = "remote_ip"
remote.allowAnyHosts = true
remote.failOnError = true
withCredentials([usernamePassword(credentialsId: 'credentials_name', passwordVariable: 'password', usernameVariable: 'username')]) {
    remote.user = username
    remote.password = password
}

sshPut remote: remote, from: 'myfile', into: 'folder_on_remote_host'
您可以使用将文件复制到远程服务器。以下是如何将文件从作业工作区发送到远程主机的示例:

remote = [:]

remote.name = "name"
remote.host = "remote_ip"
remote.allowAnyHosts = true
remote.failOnError = true
withCredentials([usernamePassword(credentialsId: 'credentials_name', passwordVariable: 'password', usernameVariable: 'username')]) {
    remote.user = username
    remote.password = password
}

sshPut remote: remote, from: 'myfile', into: 'folder_on_remote_host'
我说unstash'myfile',这个'myfile'将在节点上的何处可用

您不必
unstash'myfile'
,您可以
unstash'my_stash'
,其中
my_stash
是您以前保存存储时使用的名称。存储可以包含一个文件,也可以包含整个目录树。它的内容是在您隐藏它时定义的(相对于运行
stash
的节点上的
${WORKSPACE}
),并且它以完全相同的方式取消隐藏,相对于运行
unstash
的节点上的
${WORKSPACE}

工作区的位置取决于您的代理配置(在我的位置,它位于
/Users/jenkins/workspace/
),但出于所有实际目的——由于节点上的步骤也在该文件夹中运行——您可以将其称为
,例如

stage ('stash') {
   node { label  'one' }
   steps {
       script {
           sh "echo 1 > myfile.txt" // runs in $WORKSPACE, creates $WORKSPACE/myfile.txt
           stash name: "my_stash", includes: "myfile.txt" // relative to $WORKSPACE
       }
   }
}

stage ('unstash') {
   node { label  'two' }
   steps {
       script {
           unstash name: "my_stash"  // runs in $WORKSPACE, creates $WORKSPACE/myfile.txt
           sh "cat ./myfile.txt"
       }
   }
}
我说unstash'myfile',这个'myfile'将在节点上的何处可用

您不必
unstash'myfile'
,您可以
unstash'my_stash'
,其中
my_stash
是您以前保存存储时使用的名称。存储可以包含一个文件,也可以包含整个目录树。它的内容是在您隐藏它时定义的(相对于运行
stash
的节点上的
${WORKSPACE}
),并且它以完全相同的方式取消隐藏,相对于运行
unstash
的节点上的
${WORKSPACE}

工作区的位置取决于您的代理配置(在我的位置,它位于
/Users/jenkins/workspace/
),但出于所有实际目的——由于节点上的步骤也在该文件夹中运行——您可以将其称为
,例如

stage ('stash') {
   node { label  'one' }
   steps {
       script {
           sh "echo 1 > myfile.txt" // runs in $WORKSPACE, creates $WORKSPACE/myfile.txt
           stash name: "my_stash", includes: "myfile.txt" // relative to $WORKSPACE
       }
   }
}

stage ('unstash') {
   node { label  'two' }
   steps {
       script {
           unstash name: "my_stash"  // runs in $WORKSPACE, creates $WORKSPACE/myfile.txt
           sh "cat ./myfile.txt"
       }
   }
}