【问题标题】:How to fetch files from remote host over SSH/SCP in Team Services build step如何在 Team Services 构建步骤中通过 SSH/SCP 从远程主机获取文件
【发布时间】:2016-09-13 11:18:04
【问题描述】:

使用 Team Services 中的“通过 SSH 复制文件”构建步骤,可以定义 SSH 端点并将文件复制到该主机。

https://www.visualstudio.com/en-us/docs/build/steps/deploy/copy-files-over-ssh

现在我想在 Team Services 中使用相同的 SSH 端点来获取文件。 我怎样才能做到这一点?

【问题讨论】:

  • 问题已解决。解决方案(但不是很好):将 pscp.exe 添加到存储库中。然后 VSTS 可以使用构建步骤“命令行”来执行来自和到 VSTS 主机的 scp 操作。

标签: ssh azure-devops scp


【解决方案1】:

一种方法是您可以添加命令行任务来构建定义以调用curl 命令通过SSH 获取文件。如果您使用的是本地构建代理,您可以参考this 线程在 windows 中安装 curl。

另一种方式(如果你熟悉typescript的话),基于copyfilesoverssh的source code,它获取SSH的必要信息(例如用户名、密码),然后根据这些信息连接到SSH服务器并上传文件。

var sshEndpoint = tl.getInput('sshEndpoint', true); 
  var username:string = tl.getEndpointAuthorizationParameter(sshEndpoint, 'username', false); 
  var password:string = tl.getEndpointAuthorizationParameter(sshEndpoint, 'password', true); //passphrase is optional 
  var privateKey:string = tl.getEndpointDataParameter(sshEndpoint, 'privateKey', true); //private key is optional, password can be used for connecting 
  var hostname:string = tl.getEndpointDataParameter(sshEndpoint, 'host', false); 
  var port:string = tl.getEndpointDataParameter(sshEndpoint, 'port', true);  

另外,基于this文章的样例,它可以从服务器下载文件。

client.scp('admin:password@example.com:/home/admin/file.txt', './', function(err) {
})

因此,您可以参考这些代码来构建自定义构建任务,以通过 SSH/SCP 从远程主机下载文件。

关于向 VSTS 添加构建任务的文章:https://www.visualstudio.com/en-us/docs/integrate/extensions/develop/add-build-taskhttp://blog.devmatter.com/custom-build-tasks-in-vso/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-04-21
    • 2017-07-15
    • 1970-01-01
    • 1970-01-01
    • 2021-06-09
    • 1970-01-01
    • 2017-06-18
    • 1970-01-01
    相关资源
    最近更新 更多