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

Gui*_*llo 3 pipeline build devops azure-devops

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

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

池:vmImage:'windows-latest'

变量:解决方案:'**/*.sln' buildPlatform:'任何 CPU' buildConfiguration:'发布'

步骤: - 任务:NuGetToolInstaller@0

  • 任务:NuGetCommand@2 输入:restoreSolution:'$(solution)'

  • 任务:Npm@1 输入:命令:'install'workingDir:'applicationFolder/app'

  • 任务:VSBuild @ 1输入:解决方案:'$(解决方案)'msbuildArgs:'/ p:DeployOnBuild = true / p:WebPublishMethod = Package / p:PackageAsSingleFile = true / p:SkipInvalidConfigurations = true / p:PackageLocation =“$( build.artifactStagingDirectory)"' 平台:'$(buildPlatform)' 配置:'$(buildConfiguration)'

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

Leo*_*SFT 5

是否可以在 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
}
Run Code Online (Sandbox Code Playgroud)

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

然后通过任务将这些下载文件发布到Artifacts PublishBuildArtifacts

希望这可以帮助。