当前位置: 首页 > 知识库问答 >
问题:

是否可以在Azure DevOps上的生成管道期间下载文件?

别开诚
2023-03-14

我们开始使用Azure DevOps来构建和部署我的应用。目前,我们不会将应用程序映像上传到我们的repo。我想知道我是否可以将所有图像下载到构建管道期间将要生成的工件中。

我的 yml 管道 : 触发器: - 开发

池:vmImage:'windows-latest'

变量: 解决方案: “**/*.sln” 构建平台: “任何 CPU” 构建配置: “发布”

步骤: - 任务:NuGetToolInstaller@0

>

  • 任务:NuGetCommand@2输入:restoreSolution:'$(解决方案)'

    任务:Npm@1输入:命令:“安装”工作任务:“应用程序文件夹/应用程序”

    任务:VSBuild@1输入:解决方案:“$(solution)”msbuildArgs:“/p:DeployOnBuild=true/p:WebPublishMethod=Package/p:PackageAsSingleFile=true/p:跳过无效配置=true/p:PackageLocation=“$(build.artifactStagingDirectory)”“平台:“$

    任务:PublishBuildArtifacts@1输入:PathtoPublish:'$(Build.ArtifactStagingDirectory)'ArtifactName:'drop'PublishLoction:'Container'

  • 共有1个答案

    邢博涛
    2023-03-14

    是否可以在Azure DevOps上的生成管道期间下载文件?

    简而言之,答案是肯定的。

    没有从FTP服务器下载文件的开箱即用任务。只有将文件上传到FTP服务器的FTP上传任务无法下载。

    因此,要解决这个问题,我们可以使用powershell脚本连接到FTP服务器并下载文件:

    脚本如下:

    #FTP Server Information - SET VARIABLES
    $ftp = "ftp://XXX.com/" 
    $user = 'UserName' 
    $pass = 'Password'
    $folder = 'FTP_Folder'
    $target = "C:\Folder\Folder1\"
    
    #SET CREDENTIALS
    $credentials = new-object System.Net.NetworkCredential($user, $pass)
    
    function Get-FtpDir ($url,$credentials) {
        $request = [Net.WebRequest]::Create($url)
        $request.Method = [System.Net.WebRequestMethods+FTP]::ListDirectory
        if ($credentials) { $request.Credentials = $credentials }
        $response = $request.GetResponse()
        $reader = New-Object IO.StreamReader $response.GetResponseStream() 
        while(-not $reader.EndOfStream) {
            $reader.ReadLine()
        }
        #$reader.ReadToEnd()
        $reader.Close()
        $response.Close()
    }
    
    #SET FOLDER PATH
    $folderPath= $ftp + "/" + $folder + "/"
    
    $files = Get-FTPDir -url $folderPath -credentials $credentials
    
    $files 
    
    $webclient = New-Object System.Net.WebClient 
    $webclient.Credentials = New-Object System.Net.NetworkCredential($user,$pass) 
    $counter = 0
    foreach ($file in ($files | where {$_ -like "*.txt"})){
        $source=$folderPath + $file  
        $destination = $target + $file 
        $webclient.DownloadFile($source, $target+$file)
    
        #PRINT FILE NAME AND COUNTER
        $counter++
        $counter
        $source
    }
    

    证书来自:PowerShell连接到FTP服务器并获取文件。

    然后通过任务< code > PublishBuildArtifacts 将这些下载文件发布到工件。

    希望这有所帮助。

     类似资料:
    • 我们希望通过 azure DevOps 将开发转移到另一家公司,我们问自己,是否不仅可以通过此管道推送新版本。但是,也可以通过 Azure 开发运营或 aws 开发运营管道从生产环境中下载数据?我研究了自己,但什么也没发现。 你们有这方面的更多信息吗? 谢谢

    • 我有一个JSON文件。我正在寻找任何有助于根据该JSON文件生成AVRO模式的程序/工具。我不关心数据类型。只要AVRO模式结构是基于JSON生成的,它都可以是字符串。 目标是,我试图只使用json文件创建一个avro文件。为此,我需要avro模式。 所以,如果我有一个avro模式,使用avro工具,我将能够通过提供avro模式和JSON文件作为输入来生成avro文件。 任何进一步的帮助/建议将不

    • 问题内容: 如果我做 是一样的吗 ? 我想要我所有的东西,就像在8023端口上监听一样。 问题答案: 不,您需要将nohup分别添加到命令中。 建议这样的事情: 或者:

    • 我需要从我的中生成一个文件,但我希望避免创建。有可能吗?

    • 问题内容: 是否可以 不 尝试加载就知道是否已加载Java类?尝试加载该类,但我不希望出现这种副作用。还有另一种方法吗? (我不想覆盖类加载器。我正在寻找一个相对简单的方法。) 问题答案: (感谢Aleksi)此代码: 产生: 请注意,示例类不在软件包中。完整的二进制名称是必需的。 二进制名称的一个示例是

    • 我正在开始使用Azure管道(您将很快从问题中弄清楚),我有一个v.basic构建管道,步骤为Nuget= 作业完成了,但是它做了什么吗?构建的输出应该是< code > $(build . artifactstagingdirectory)\ web app . zip 。我可以检查这个文件是否存在吗?我有一个发布管道,它将这个构建管道作为其工件的来源。它当前失败,出现错误“错误:未找到具有指定