使用 jenkins 将文件复制到管道中的远程 Windows 服务器

问题描述 投票:0回答:1

我在 jenkins 中尝试了多种解决方案来复制远程文件,即 AWS 上的 EC2 窗口服务器。

  1. 通过 ssh 发布:提供了密钥、主机名、用户名和密码,但每次都连接失败

  2. 管道脚本:

    管道{ 任何代理

         stages {
             stage('SCP') {
                 steps {
                     bat '"C:\\Program Files\\Git\\usr\\bin\\scp.exe" -i "C:\\Live" C:\\Windows\\System32\\config\\systemprofile\\AppData\\Local\\Jenkins\\.jenkins\\workspace\\MSDeploy\\abc.txt abc.txt'
                     bat '"c:\\Program Files\\Git\\usr\\bin\\ssh.exe" -i "C:\\Live" [email protected] ls -ltr'
                 }
             }
         }
     }
    

    其中

    C:\Live
    是远程服务器目录,
    C:\\Windows\\System32\\config\\systemprofile\\AppData\\Local\\Jenkins\\.jenkins\\workspace\\MSDeploy\\abc.txt
    是本地目录,但它会抛出错误:显示找不到这样的文件或目录

  1. pipeline {
     agent any
     stage ('Deploy') {
         steps {
             withCredentials([[$class: 'AmazonWebServicesCredentialsBinding', accessKeyVariable: 'var', credentialsId: 'credid', secretKeyVariable: 'seckey']]) {
                 writeFile file: 'groovy1.txt', text: 'ls'
                 bat 'ls -l groovy1.txt'
                 bat 'cat groovy1.txt'
             }
         } 
     }
    }
    

它确实创建了带有文本的文件,但不起作用。所有解决方案都不适合我。

我错过了什么?

jenkins remote-desktop file-copying
1个回答
0
投票

您使用的是Windows服务器,您需要使用一些工具来实现这一点,通过ssh复制可能在这里不起作用。我通常使用的最好的直接解决方案。

第1步:

  1. 创建一个网络驱动器并将其附加到共享文件夹。
  2. 可以使用bat命令来附加
net use N: \\ServerName\Folder /user:Administrator Password

N 是你的驱动器

  1. 现在从 jenkins 使用复制命令。

复制“D:\Jenkins 文件 N:”

您可以在 jenkins 文件中使用这些命令,请参阅此链接以获取相同的信息 https://thenucleargeeks.com/2020/11/24/how-to-run-batch-scripts-commands-in-jenkinsfile/ 这适用于您的情况,如果您遇到任何问题,请告诉我。

© www.soinside.com 2019 - 2024. All rights reserved.