我正在使用VSTS vNext构建系统来构建C#解决方案.您可以在下面看到NuGet Packager的设置.nuspec文件的路径设置为引用.csproj文件.
但是这包括所有.csproj文件; 我需要排除测试项目.忽略'Core.Test.csproj'但仍然打包'Core.csproj'.
我试过' *.csproj; - :! *test.csproj'和其他组合,但没有运气搞清楚这一点!有谁知道模式匹配如何适用于vNext构建?
我在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"文件中引用?
我正在尝试为大型解决方案设置自动构建和部署。单个解决方案在“ $(Build.ArtifactStagingDirectory)”位置生成2个zip文件夹,其中包含所有正确的文件。出于测试/故障排除的目的,我仅查看这些zip文件之一,但是最终两个站点都必须采用这种方式进行部署。
但是,要获取实际文件,您必须通过14个不必要的子文件夹。更复杂的是,其中的8个是可变的,具体取决于构建配置的某些元素(某些归因于git repo中的文件夹结构)。
我不需要这些子文件夹。另一个问题是我实际上并不需要100%的平面文件。我需要2个带有子文件夹的文件夹才能包含在最终提取的目录中。(最终目录是IIS站点的物理路径。)是否可以执行此操作?
我试过了:
提取生成的zip文件,将其解压缩到temp目录,然后重新打包,所有这些都在构建机器上。
从VSTS下载已发布的zip文件,在发布计算机上本地将其解压缩,然后将内容复制到正确的目录中。
使用复制对话框中的“ Flatten Folders”高级选项。
如果不可能仅将构建步骤生成的zip文件部分压扁,我将不胜感激,可以帮助您弄清楚我可以使用变量拉出多少条令人费解的路径。
azure-devops azure-pipelines-build-task azure-pipelines azure-pipelines-release-pipeline
我有一个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
我们有一个Azure Entreprise协议,其中包含一个VSTS帐户绑定的主要订阅.我们已经设置了包管理扩展,以便为不同的项目托管一些有用的包.对于每个客户,我们在此EA中创建订阅,并绑定一个VSTS帐户.我们在后一个订阅的Hosted构建代理上构建我们的客户项目.但是,当构建过程恢复存储在主包源上的NuGet包(使用Nuget安装程序任务)时,看起来构建服务无法访问此订阅源(可能因为它不是同一订阅的一部分).
有没有办法在主要订阅源权限中允许外部构建服务,或者甚至在客户构建定义的NuGet Installer任务中使用api密钥,以便能够从主要订阅源恢复包?
编辑:我尝试使用特定的nuget.config与apiKey(在我的开发机器上本地设置相同的api键)或packageSourceCredentials标记.2中没有一个让构建代理恢复包.
编辑:构建代理截图(COETools.Testing来自另一个订阅的自定义源)
编辑:我更改了构建任务以使用默认代理提供的nuget.exe(我之前在源代码管理中使用了一个),我设法恢复了nuget官方订阅源中的包.但我仍然无法从自定义Feed中恢复.
请帮助我-如何为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参考,并且框架版本设置合适,然后重试。
谢谢。
问候,Deb
.net unit-testing azure-devops azure-pipelines-build-task azure-pipelines
我已经创建了一个构建定义,以便在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
我需要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构建使用不同版本的任何帮助,将不胜感激。
由于Visual Studio测试步骤在构建管道中失败,因此构建失败。
我有一个简单的.NET Core v2.1类库和关联的MS Test库。我的流程有2个步骤:
这两个项目都针对该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 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-pipelines-build-task ×10
azure-devops ×9
azure ×2
.net ×1
azure-pipelines-release-pipeline ×1
msbuild ×1
tfs ×1
unit-testing ×1
vstest ×1