标签: azure-pipelines-build-task

VSTS NuGet包排除测试项目

我正在使用VSTS vNext构建系统来构建C#解决方案.您可以在下面看到NuGet Packager的设置.nuspec文件的路径设置为引用.csproj文件.

在此输入图像描述

但是这包括所有.csproj文件; 我需要排除测试项目.忽略'Core.Test.csproj'但仍然打包'Core.csproj'.

我试过' *.csproj; - :! *test.csproj'和其他组合,但没有运气搞清楚这一点!有谁知道模式匹配如何适用于vNext构建?

azure-devops azure-pipelines-build-task azure-artifacts

6
推荐指数
2
解决办法
1950
查看次数

为什么缺少TFS构建步骤扩展图标?

我在MS教程之后为TFS创建了一个新的扩展.出于某种原因,当我将Icon添加到我的扩展程序时,我可以在安装扩展程序时在"Extension Manager"页面中看到此图标,

但是当我从构建步骤菜单中选择我的扩展时,图像丢失了.

在"vss-extension.json"文件中,我添加了:

"icons": {
    "default": "images/icon.png"
}, 
"files": [
    {
        "path": "images",
        "addressable": true          
    },
    {
        "path": "dist",
        "addressable": true,
        "packagePath": "scripts"
    },
    {
        "path": "infoTab.html",
        "addressable": true
    },                   
    {
        "path": "node_modules/vss-web-extension-sdk/lib",
        "addressable": true,
        "packagePath": "lib"
    },    
    {
        "path": "buildtask"
    }       
],
Run Code Online (Sandbox Code Playgroud)

图像文件是32x32

该图像是否应该在"task.json"文件中引用?

tfs azure-devops azure-pipelines-build-task

6
推荐指数
2
解决办法
955
查看次数

VSTS在线门户:发布时取消嵌套构建文件夹

我正在尝试为大型解决方案设置自动构建和部署。单个解决方案在“ $(Build.ArtifactStagingDirectory)”位置生成2个zip文件夹,其中包含所有正确的文件。出于测试/故障排除的目的,我仅查看这些zip文件之一,但是最终两个站点都必须采用这种方式进行部署。

但是,要获取实际文件,您必须通过14个不必要的子文件夹。更复杂的是,其中的8个是可变的,具体取决于构建配置的某些元素(某些归因于git repo中的文件夹结构)。

我不需要这些子文件夹。另一个问题是我实际上并不需要100%的平面文件。我需要2个带有子文件夹的文件夹才能包含在最终提取的目录中。(最终目录是IIS站点的物理路径。)是否可以执行此操作?

我试过了:

  • 提取生成的zip文件,将其解压缩到temp目录,然后重新打包,所有这些都在构建机器上。

    • 为了使其正常工作,我必须手动指定14个子目录。另外,我无法使用“发布工件”将生成的zip上传到VSTS,所以我不确定如何将其下载到服务器盒中。
  • 从VSTS下载已发布的zip文件,在发布计算机上本地将其解压缩,然后将内容复制到正确的目录中。

    • 仅当我手动指定目录中包含的14个文件夹时,此方法才有效。我试图用通配符隐藏14个文件夹,但仅成功复制了过多的嵌套结构-我猜“ Source Folder”参数不支持通配符(我必须在“ Contents”部分中实际执行此操作,或者任务失败)。
  • 使用复制对话框中的“ Flatten Folders”高级选项。

    • 这将删除所有文件夹结构,这不是我想要的。我最终需要在最终目录中包含2个包含子文件夹的文件夹。

如果不可能仅将构建步骤生成的zip文件部分压扁,我将不胜感激,可以帮助您弄清楚我可以使用变量拉出多少条令人费解的路径。

azure-devops azure-pipelines-build-task azure-pipelines azure-pipelines-release-pipeline

6
推荐指数
2
解决办法
989
查看次数

在vsts构建期间设置"Path"环境变量,因此它将在构建任务中持续存在,特别是vsTest任务

我有一个vsts构建定义,其中我尝试使用PowerShell(以及我尝试cmd之前)任务设置PATH环境变量,以便在以后的vsTest任务中,测试可以从该路径运行exe,但是使用设置PATH ps\cmd任务似乎不起作用,我尝试了几个选项,如:

[Environment]::SetEnvironmentVariable("Path", $env:Path + ";" + $newPath, [EnvironmentVariableTarget]::User)

setx path " %newPath;%PATH%"
Run Code Online (Sandbox Code Playgroud)

有什么建议?

vstest azure-devops azure-pipelines-build-task azure-pipelines

6
推荐指数
2
解决办法
3232
查看次数

VSTS Build vNext NuGet自定义包源

我们有一个Azure Entreprise协议,其中包含一个VSTS帐户绑定的主要订阅.我们已经设置了包管理扩展,以便为不同的项目托管一些有用的包.对于每个客户,我们在此EA中创建订阅,并绑定一个VSTS帐户.我们在后一个订阅的Hosted构建代理上构建我们的客户项目.但是,当构建过程恢复存储在主包源上的NuGet包(使用Nuget安装程序任务)时,看起来构建服务无法访问此订阅源(可能因为它不是同一订阅的一部分).

有没有办法在主要订阅源权限中允许外部构建服务,或者甚至在客户构建定义的NuGet Installer任务中使用api密钥,以便能够从主要订阅源恢复包?

编辑:我尝试使用特定的nuget.config与apiKey(在我的开发机器上本地设置相同的api键)或packageSourceCredentials标记.2中没有一个让构建代理恢复包.

编辑:构建代理截图(COETools.Testing来自另一个订阅的自定义源) 在此输入图像描述

编辑:nuget.config 在此输入图像描述

编辑:我更改了构建任务以使用默认代理提供的nuget.exe(我之前在源代码管理中使用了一个),我设法恢复了nuget官方订阅源中的包.但我仍然无法从自定义Feed中恢复.

azure nuget-package azure-pipelines-build-task

5
推荐指数
1
解决办法
647
查看次数

如何在VSTS(CI)中为.NET标准库(2.0)项目启用代码覆盖率

请帮助我-如何为VSTS(CI)中的.NET标准库项目(2.0)启用/显示代码覆盖结果。通过dotnet测试任务(.NET Core 2.0预览版)启用了测试结果,并能够查看通过的测试用例。下一步,我添加了“发布结果”任务,但是在构建过程中显示以下警告- 找不到与_temp * / .trx 匹配的测试结果文件 甚至我也修改了.csproj文件并添加了<DebugType>Full</DebugType>

使用Visual Studio 2017 Professional(版本-15.5.2)项目-.NET标准库(2.0)单元测试-MSTest(在Visual Studio中内置)

我需要在VSTS的“构建定义”中添加/修改哪些任务/应该如何执行任务,以便可以看到针对单元测试的代码覆盖率。

代码覆盖率的任务- 测试程序集

其他选择

现在,我可以看到代码覆盖率(不确定是否显示正确的代码覆盖率),但是任务-测试程序集***。test * .dll失败,并出现以下错误- 代码覆盖率结果

  • ......... $(BuildConfiguration)\ netcoreapp2.0 \ Microsoft.VisualStudio.TestPlatform.MSTestAdapter.PlatformServices.dll中没有可用的测试。确保测试项目具有包“ Microsoft.NET.Test.Sdk”的nuget参考,并且框架版本设置合适,然后重试。

    • ...... $(BuildConfiguration)\ netcoreapp2.0 \ Microsoft.VisualStudio.TestPlatform.MSTestAdapter.PlatformServices.dll中没有可用的测试。确保测试项目具有包“ Microsoft.NET.Test.Sdk”的nuget参考,并且框架版本设置合适,然后重试。

谢谢。

问候,Deb

.net unit-testing azure-devops azure-pipelines-build-task azure-pipelines

5
推荐指数
1
解决办法
1813
查看次数

VSTS构建失败,并显示MSB3325,无法导入PFX密钥文件

我已经创建了一个构建定义,以便在visualstudio.com上在线构建桌面应用程序,该应用程序在任务“构建解决方案”(Visual Studio构建)中失败,并出现以下错误,

[错误] C:\ Program Files(x86)\ Microsoft Visual Studio \ 2017 \ Enterprise \ MSBuild \ 15.0 \ Bin \ Microsoft.Common.CurrentVersion.targets(3156,5):错误MSB3325:无法导入以下密钥文件:Sixmod5Certificate .pfx。密钥文件可能受密码保护。若要更正此问题,请尝试再次导入证书或使用以下密钥容器名称将证书手动安装到“强名称” CSP:VS_KEY_3B2BCC84AE4E26F1

我遵循了https://developercommunity.visualstudio.com/content/problem/156086/vsts-build-msb3325-cannot-import-the-following-key.html中指定的解决方案

然后按照/sf/answers/3408876061/中的指定, 我在构建任务之前添加了一个powershell脚本任务,如下所示,

[CmdletBinding()]
param(  
    [Parameter(Mandatory)][string] $pfxpath,
    [Parameter(Mandatory)][string] $password
)

Add-Type -AssemblyName System.Security
$cert = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2
$cert.Import($pfxpath, $password, [System.Security.Cryptography.X509Certificates.X509KeyStorageFlags]"PersistKeySet")
$store = new-object system.security.cryptography.X509Certificates.X509Store -argumentlist "MY", CurrentUser
$store.Open([System.Security.Cryptography.X509Certificates.OpenFlags]"ReadWrite")
$store.Add($cert)
$store.Close()
Run Code Online (Sandbox Code Playgroud)

但是还没有运气

有类似此指定解决方案的不同SO帖子,可以从Admin用户构建,也可以手动安装pfx证书,但是由于它们与个人计算机有关,并且我试图在visualstudio.com上配置持续集成,因此对于我。

请注意,我能够在本地计算机上成功构建。

如果您最终希望重新产生此问题,请按照以下步骤操作,

步骤1:创建一个新的VSTO外接程序项目(任何Excel / Word / Powerpoint)。

步骤2:将此附加到VSTS。

步骤3:在“应用程序属性”的“签名”选项卡中,而不是使用临时证书,而是创建一个新的受密码保护的证书(在我的情况下为PFX-个人信息交换),并使用该证书对ClickOnce清单进行签名

步骤4:尝试在本地计算机上构建,它将成功。

第5步:将其推入并尝试在VSTS上构建,您将得到与上述相同的错误。

msbuild azure-devops azure-pipelines-build-task azure-pipelines

5
推荐指数
1
解决办法
864
查看次数

如何在Azure Pipelines for CI / CD中使用较新版本的Maven构建

我需要Maven 3.5.3或更高版本来构建托管在github上的项目。Azure管道CI / CD中使用的maven的默认版本为3.3.9。我可以看到有一种方法可以使用Java工具安装程序来安装不同版本的Java 。我在他们的Maven 文档中找不到这样的选择。

但是对于Maven,可以指定

mavenVersionOption: 'Default' # Options: default, path
mavenDirectory: # Required when mavenVersionOption == Path
Run Code Online (Sandbox Code Playgroud)

但是作为一个新手,我不了解如何安装Maven并在此处指定路径。

对于如何在Azure管道CI / CD中为我的Maven构建使用不同版本的任何帮助,将不胜感激。

azure azure-devops azure-pipelines-build-task

5
推荐指数
1
解决办法
524
查看次数

VS Test在管道中失败,缺少“ Microsoft.NET.Test.Sdk”

由于Visual Studio测试步骤在构建管道中失败,因此构建失败。

我有一个简单的.NET Core v2.1类库和关联的MS Test库。我的流程有2个步骤:

  1. .NET Core构建步骤,以及
  2. Visual Studio测试步骤

这两个项目都针对该netcoreapp2.1框架,有关.csproj文件,请参见下文。

我尝试启用和禁用“ 代码覆盖率”选项,但这没有什么区别。

提前致谢,

凯恩


.csproj文件

主要项目

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>netcoreapp2.1</TargetFramework>
    <AssemblyName>Trustmarque.Core.ExtensionMethods</AssemblyName>
    <RootNamespace>Trustmarque.Core.ExtensionMethods</RootNamespace>
    <GeneratePackageOnBuild>true</GeneratePackageOnBuild>
    <Description>Generalised class extension methods build on the .NET Core.</Description>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Newtonsoft.Json" Version="11.0.2" />
  </ItemGroup>

</Project>
Run Code Online (Sandbox Code Playgroud)

测试项目

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>netcoreapp2.1</TargetFramework>

    <IsPackable>false</IsPackable>

    <AssemblyName>Trustmarque.Core.ExtensionMethods.Tests</AssemblyName>

    <RootNamespace>Trustmarque.Core.ExtensionMethods.Tests</RootNamespace>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.9.0" />
    <PackageReference Include="MSTest.TestAdapter" Version="1.3.2" />
    <PackageReference Include="MSTest.TestFramework" Version="1.3.2" />
  </ItemGroup>

  <ItemGroup>
    <ProjectReference Include="..\ExtensionMethods\ExtensionMethods.csproj" />
  </ItemGroup>

</Project>
Run Code Online (Sandbox Code Playgroud)


YAML



queue:
  name: …
Run Code Online (Sandbox Code Playgroud)

azure-devops azure-pipelines-build-task azure-pipelines

5
推荐指数
3
解决办法
2773
查看次数

如何构建 Docker 镜像然后使用构建的镜像来运行测试

我想使用 Azure Pipelines 构建 Docker 映像,然后使用容器作业在构建的映像内运行测试。

图像应使用构建 ID 作为标记(或构建 ID、提交哈希和分支名称的组合)。如果我使用静态标记作为值(例如build),则有两个并行运行的两条管道可能会导致不必要的竞争条件。

构建步骤非常简单 - 登录、构建并推送到 Docker Hub。

但是,在指定测试作业以使用容器时,我无法使用变量。

这是一个有效的示例,但它不使用私有注册表。

variables:
  - group: dockerCredentials
    # contains: dockerUsername, dockerPassword
  - name: imageName
    value: azure-pipelines-test
  - name: dockerRegistry
    value: krsb
  - name: fullImageName
    value:

jobs:
- job: build
  pool:
    vmImage: 'Ubuntu-16.04'
  steps:
  - script: |
      docker login -u $(dockerUsername) -p $(dockerPassword)
      docker build -t '$(dockerRegistry)/$(imageName):$(build.buildId)' .
      docker push '$(dockerRegistry)/$(imageName):$(build.buildId)'
    displayName: 'docker build'

- job: test
  dependsOn:
  - build
  pool:
    vmImage: ubuntu-16.04
  container:
    image: …
Run Code Online (Sandbox Code Playgroud)

azure-devops azure-pipelines-build-task azure-pipelines

5
推荐指数
0
解决办法
263
查看次数