标签: azure-pipelines

VSTS:如何在具有多个项目的Visual Studio构建步骤中处理FileSystem WebPublishMethod

我有一个解决方案,包含两个基本的(不是MVC或.Net Core)ASP.Net Web应用程序,以及它们所依赖的一些库.

我在VSTS中有一个构建定义,其中包含一个Visual Studio Build步骤,该步骤使用MSBuild构建解决方案.

默认的MSBuild参数集将每个Web应用程序打包到一个文件中,通过批处理文件进行部署:

/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation="$(build.artifactstagingdirectory)\\"

我不能使用此方法,并要求将网站发布到文件系统,以便现有脚本可以进行部署.

因此我将这些论点改为:

/p:DeployOnBuild=true /p:DeployDefaultTarget=WebPublish /p:WebPublishMethod=FileSystem /p:publishUrl=$(build.artifactstagingdirectory)\website

这确实将两个网站发布到文件系统,但问题是它将它们放在同一个文件夹中.

有没有办法传递某种类型的paramaterised URL,publishUrl以便这两个网站最终可以在不同的文件夹中?或者我必须为每个项目单独制作一个MSBuild步骤吗?

msbuild visual-studio azure-devops azure-pipelines visual-studio-2017

16
推荐指数
1
解决办法
8192
查看次数

azurepipelines-coverage.yml的架构,用于配置PR的新发布的代码覆盖率指标功能

该功能在这里描述

现在,您可以在拉取请求(PR)视图中查看更改的代码覆盖率指标。这样可以确保您已通过自动化测试充分测试了更改。覆盖状态将在PR概述中显示为注释。您可以在文件差异视图中查看更改的每个代码行的覆盖率信息的详细信息。

但是要配置它,它需要azurepipelines-coverage.yml在仓库的根部,但是我在任何地方都找不到模式。

有人知道吗?无法配置它,默认代码覆盖率设置为70%,我似乎无法禁用它。

我已经用Google搜索,搜索了博客文章,搜索了Microsoft文档和Github。

azure-devops azure-pipelines

16
推荐指数
1
解决办法
476
查看次数

TFS 2015可以构建变量访问其他构建变量吗?

当我在新的TFS 2015团队构建中定义自定义变量时,如下所示:
名称:SomeOutput
值:$(System.DefaultWorkingDirectory)\Some

......它似乎没有扩大$(System.DefaultWorkingDirectory).
有没有解决的办法?

编辑:
至少它似乎并没有到处扩展.

例如,在MSBuild-Arguments中,/p:OUTPUT="$(SomeOutput)"扩展为/p:OUTPUT="C:\TfsData\BuildAgents\_work\3\s\Some"但是当我添加一个cmd行构建任务时,工具设置为cmd和参数设置为/k set,它打印
SOMEOUTPUT=$(System.DefaultWorkingDirectory)\Some

编辑2:这是我的变量
变量

这是我的工作流程步骤
工作流程

这就是构建打印的内容
构建输出

variables tfs tfsbuild tfs-2015 azure-pipelines

15
推荐指数
1
解决办法
8691
查看次数

如何在VSTS/VSO Build vNext中创建Web部署包?

我在Visual Studio Team Services(以前的Visual Studio Online)中进行了自动构建.解决方案正在构建中.如何配置它以便创建Web部署包?

msbuild build azure-devops azure-pipelines

15
推荐指数
2
解决办法
7879
查看次数

Azure Pipelines - 并行步骤 (YAML)

我正在设置我的 Azure Devops Pipelines,并且有一个需要一些相当长的设置步骤才能运行的构建。这些需要在其他可以并行运行的任务之前运行。

但是,我只能通过指定作业来完成此操作,这需要每次都执行这些冗长的步骤。IE:

jobs:
  - job: Run1
     steps:
       - task: Long running setup task
       - task: Run taskA
  - job: Run2
       - task: Long running setup task
       - task: Run taskB  
Run Code Online (Sandbox Code Playgroud)

有没有办法让这个长时间运行的任务运行,并使任务 A/B 依赖于该环境而不需要按顺序运行它们?理想情况下,它会是这样的:

-job
  steps:
    -task: Long running setup
    -task: Parallel: taskA
    -task: Parallel: taskB
Run Code Online (Sandbox Code Playgroud)

或者,如果可能的话,之前的作业是否拍摄了容器/映像快照并重用?

azure-devops azure-pipelines

15
推荐指数
1
解决办法
8039
查看次数

如何将 Git LFS 与 Azure 存储库和管道一起使用

我有一个在 Azure Repos 中使用 Git LFS 的项目,其中使用 Git LFS 签入了几个二进制图像文件。当我的 Azure Pipelines 构建执行 . 时git pull,图像文件不会从 Git LFS 中提取,我留下了几个零字节图像文件。

我正在使用自定义的自托管 Azure Pipelines 构建服务器,该服务器上安装了最新版本的 Git LFS:

PS C:\rehan> git lfs --version                                                                                     git-lfs/2.7.2 (GitHub; windows amd64; go 1.12.2; git 08a08ae0)
Run Code Online (Sandbox Code Playgroud)

我试过添加步骤来执行,git lfs install但这没有帮助。当我git lfs pull登录到构建服务器后手动执行 a 时,文件被正确下载。当我git lfs pull在 Azure Pipeline 中作为构建步骤运行时,出现以下错误:

fatal: could not read Username for 'https://foo.visualstudio.com': terminal prompts disabled
batch response: Git credentials for https://foo.visualstudio.com/Bar/_git/Bar not found.
error: failed to fetch …
Run Code Online (Sandbox Code Playgroud)

git git-lfs azure-pipelines azure-repos

15
推荐指数
1
解决办法
6205
查看次数

Azure Pipelines:管道中单个作业内的并行任务

使用 Azure DevOps,我正在创建一个发布管道,我希望其中一个阶段有 1 个作业和 5 个步骤。前三个步骤是相同的​​任务类型,但具有不同的变量,我想让它们并行,这样一些流程将如下所示:

工作

并行:步骤1、步骤2、步骤3

然后:第4步(在所有3个并行步骤成功/失败之后)

然后:步骤5(步骤4完成后)

这是当前的作业设置

这是当前的作业设置

我不确定如何设置控制选项 -为所有这些步骤运行此任务。我需要以某种方式将前三个设置为立即运行(可能是自定义条件“always()”),并将步骤 4 和步骤 5 设置为在前面的步骤完成后按顺序运行。

步骤 5 可以是:即使上一个任务失败,除非部署被取消,但我不确定如果我为步骤 4 设置相同的设置,它是否会仅将步骤 3 视为先前任务或所有三个先前(步骤 1 - 步骤 3)任务。

另外,对于执行计划并行性,我想将多代理设置为三个是可以的,因为总体上最多可以并行执行 3 个步骤。

作业并行性

azure-devops azure-pipelines

15
推荐指数
1
解决办法
2万
查看次数

构建 Wix 安装程序时构建挂起

我有一个构建设置,最后会构建一个 Wix 项目来为我的应用程序创建一个 MSI。当我尝试运行构建时,它会进入链接步骤并在它被取消之前挂起大约一个小时。没有错误信息或任何信息可以解释可能发生的情况。它挂起的日志是:

Link:
  C:\Program Files (x86)\WiX Toolset v3.11\bin\Light.exe -out D:\a\1\s\myapplication.msi -pdbout D:\a\1\s\myapplication.wixpdb -cultures:null -ext "C:\Program Files (x86)\WiX Toolset v3.11\bin\\WixUtilExtension.dll" -ext "C:\Program Files (x86)\WiX Toolset v3.11\bin\\WixUIExtension.dll" -ext "C:\Program Files (x86)\WiX Toolset v3.11\bin\\WixNetFxExtension.dll" -sice:ICE30 -sice:ICE80 -contentsfile obj\Release\Installer.wixproj.BindContentsFileListnull.txt -outputsfile obj\Release\Installer.wixproj.BindOutputsFileListnull.txt -builtoutputsfile obj\Release\Installer.wixproj.BindBuiltOutputsFileListnull.txt -wixprojectfile D:\a\1\s\Installer.wixproj obj\Release\pthC2B68370CAB72F5041F3FBDF89753BBA\ActionsAndSequences.wixobj obj\Release\pthC2B68370CAB72F5041F3FBDF89753BBA\LangComponents.wixobj obj\Release\pthC2B68370CAB72F5041F3FBDF89753BBA\Upgrades.wixobj obj\Release\pthF392250A412040E3E7164BEF9B45533D\ClientUIFlow.wixobj obj\Release\pthF392250A412040E3E7164BEF9B45533D\OldClientWarningDlg.wixobj obj\Release\pthF392250A412040E3E7164BEF9B45533D\SetServicesUrlDlg.wixobj obj\Release\pthC2B68370CAB72F5041F3FBDF89753BBA\Components.wixobj obj\Release\Product.wixobj
  Windows Installer XML Toolset Linker version 3.11.2.4516
  Copyright (c) .NET Foundation and contributors. All rights reserved.
Run Code Online (Sandbox Code Playgroud)

我使用的配置是:

- task: MSBuild@1
      displayName: 'Building Installer'
      inputs:
        solution: '/path/to/solution'
        platform: 'x86'
        configuration: …
Run Code Online (Sandbox Code Playgroud)

msbuild azure-devops azure-pipelines

15
推荐指数
1
解决办法
1668
查看次数

设置管道变量包含无关的双引号或单引号

BASE_URL我有以下命令在 Azure DevOps yaml 中设置变量:

- script: |
    echo "##vso[task.setvariable variable=BASE_URL;]$(PROD-CONTAINER-URL)"
  condition: and(succeeded(), eq(variables['Build.SourceBranchName'], 'master'))
Run Code Online (Sandbox Code Playgroud)

然而,每当我回显该变量时,它就会看起来像这样:

https://google.com"

如果我用单引号替换它或将引号放在$(PROD-CONTAINER-URL)引号内部或外部,那么问题仍然存在。我该如何解决这个问题以及导致它的原因是什么?

continuous-integration azure-devops azure-pipelines

15
推荐指数
2
解决办法
5275
查看次数

使用azure pipeline判断模板中是否存在变量

我正在尝试找出一种方法来执行以下操作

variables:
  ${{ if eq(variables['var-a'], exists_and_is_set) }}:
    namespaceName: $(var-a)
  ${{ if ne(variables['var-a'], exists_and_is_set) }}:
    namespaceName: $(var-b)
Run Code Online (Sandbox Code Playgroud)

基本上,如果变量 A 存在并且有一个值 != null != '' 则使用它,否则使用另一个变量。这里的脚本非常简单,我找不到方法来做到这一点。原因是我正在进行更改,在使用此模板的数百个 CICD 管道中,只有 10 个左右会使用var-a,因此我试图找到一种方法来实现逻辑,而不必去更新数百个管道包含他们不会使用的东西。

azure-pipelines

15
推荐指数
2
解决办法
3万
查看次数