Azure DevOps Server - 如何知道另一台服务器上的系统目录?

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

我正在使用两种不同的构建服务器,一种用于使用静态代码分析进行构建,另一种不用于构建一些大型 Windows 解决方案。

在两台服务器上进行构建工作得很好,但完成后,我需要一台服务器上的工件。有相当多的内置功能可以处理工件,但我非常喜欢直接文件复制。

如果我对像

\\server1\DevOpsAgent\_work\1\b\
这样的目录进行硬编码,它就可以工作,但是如果目录不是“1”,或者服务器名称发生更改(我仅通过代理要求选择服务器),我就会遇到问题。

有没有办法在运行时找到“其他”服务器正在使用哪些目录?

尚未在 Microsoft 文档或在线中找到答案。

azure-devops azure-pipelines azure-pipelines-yaml
1个回答
0
投票

TL;DR 使用管道工件(或者,作为替代方案,通用包)而不是直接文件副本。

更多详情

...我需要一台服务器上的工件。有相当多的内置功能可以处理工件,但我非常喜欢直接文件复制。

老实说,我不明白使用直接文件复制如何简化事情,特别是考虑到您已经面临的问题 - 使用对代理的要求、可能(并且可能会)改变的路径等等。

此外,您还尝试使用一种解决方法来重新发明轮子,以解决很久以前许多 CI/CD 平台已经解决的问题:在管道之间发布和使用工件。

使用管道工件

大多数使用管道工件的情况都非常简单 - 发布管道将工件生成到文件夹中,将这些文件复制到暂存目录(可选),然后发布这些工件:

# Generate artifacts into the $(Build.ArtifactStagingDirectory) folder
- task: VSBuild@1
  inputs:
    solution: '**/*.sln'
    msbuildArgs: 'p:DesktopBuildPackageLocation="$(Build.ArtifactStagingDirectory)\WebApp.zip" ...
    platform: 'Any CPU'
    configuration: 'Release'

# Publish files from $(Build.ArtifactStagingDirectory) folder as artifacts
- task: PublishPipelineArtifact@1
  inputs:
    targetPath: $(Build.ArtifactStagingDirectory)
    artifactName: WebApp

消费管道/阶段/作业下载工件,然后使用它们来部署应用程序、运行脚本等

- task: DownloadPipelineArtifact@2
  inputs:
    artifact: WebApp
    targetPath: '$(System.DefaultWorkingDirectory)'

- task: AzureRmWebAppDeployment@4
  inputs:
    # other properties here
    packageForLinux: '$(System.DefaultWorkingDirectory)/**/*.zip'
© www.soinside.com 2019 - 2024. All rights reserved.