在 VSTS 上,我们想要在某些分支上保护一些文件。如果特定文件已更改,合并/构建如何会失败?
一等奖是在构建服务器上配置它,在本例中是 VisualStudio.com (VSTS / GIT)。
场景:我们有各种发布分支 v1、v2、v3。我们希望保护 packages.json 文件,以防止任何人更新这些分支上的 Nuget 包。因此,如果 package.json 文件在拉取请求中已更改为“v3”,则不允许合并。
azure-devops azure-pipelines azure-pipelines-release-pipeline
我在 Visual Studio Team Services(又名 Visual Studio Online?老实说我不太确定它的正确名称)中有一个构建定义,它没有生成工件,我真的不确定为什么。解决方案文件中的主要项目是使用 TopShelf 构建的 Windows 服务。我怀疑 Visual Studio 生成任务中的 MSBuild 参数可能是错误的。我从正在运行的 MVC 项目的构建定义中复制了它们,但我突然想到它们可能不适用于 Windows 服务。
他们来了:
/p:DeployOnBuild=true
/p:WebPublishMethod=Package
/p:PackageAsSingleFile=true
/p:SkipInvalidConfigurations=true
/p:PackageLocation="$(build.artifactstagingdirectory)\\"
Run Code Online (Sandbox Code Playgroud)
我稍后在此过程中有一个“复制文件”任务和一个“发布构建工件”任务,但显然该任务$(build.artifactstagingdirectory)\\是空的。我收到这个警告:
##[警告]目录“d:\a\1\a”为空。不会添加任何内容来构建工件
奇怪的是,在我发布符号的过程中的另一项任务中,一切似乎都进展顺利。
还有一点:我正在使用托管构建代理。不确定这是否重要。
这就是我能想到提供的所有相关信息。我在这里离基地很远吗?我过去使用过 Octopus Deploy,并且我知道我必须在我的服务上安装 Octopack。我需要在这里做类似的事情吗?
我在内容部分尝试了多种组合,但每次 obj 文件夹仍然被复制到我的构建中。
我在我的部分使用了以下组合Contents:
1. **\!(obj|V1Server.vshost.exe|V1Server.vshost.exe.config| .pdb| .xml| .cache| .cs| .csproj| .CopyComplete| .ico| .resx| .resources| .txt) bin\$(BuildConfiguration) bin\App.config
2.obj\!(*)
3.!(对象)
4.!(对象)\
我的模式匹配语法有什么问题?
我是第一次使用 Visual Studio Team Services,并使用 MSTest 项目设置 C# 类库的简单场景。我想设置自动构建,它也执行测试。然而这不起作用。我对此进行了很多搜索,大多数问题似乎与 NUnit 等不同的测试适配器有关。这里的情况并非如此,因为我只是使用默认的测试框架。
谁能帮助我并让我知道我错过了什么步骤或做错了什么?
唯一的消息是“警告:没有可用的测试......”,其中包含大量引用的 dll。
这是完整的日志:
2017-11-20T08:43:16.5294822Z ##[节]开始:VsTest - testAssemblies 2017-11-20T08:43:16.5294822Z ==================== =================================================== ======== 2017-11-20T08:43:16.5294822Z 任务:Visual Studio 测试 2017-11-20T08:43:16.5294822Z 描述:使用 Visual Studio 测试运行程序运行测试 2017-11-20T08:43: 16.5294822Z 版本:2.2.3 2017-11-20T08:43:16.5294822Z 作者:微软公司 2017-11-20T08:43:16.5294822Z 帮助:更多信息 2017-11-20T08:43:16.5294822Z ============================================ ======================================== 2017-11-20T08:43:17.5500059Z 运行使用 vstest.console.exe 进行本地测试 2017-11-20T08:43:17.5500059Z ================================== ======================== 2017-11-20T08:43:17.5520059Z 测试选择器:测试组件 2017-11-20T08:43:17.5520059Z 测试程序集: **\*test*.dll,!**\obj\** 2017-11-20T08:43:17.5520059Z 测试筛选条件:空 2017-11-20T08:43:17.5530063Z 搜索文件夹:d:\ a\1\s 2017-11-20T08:43:17.5540068Z 运行设置文件: d:\a\1\s 2017-11-20T08:43:17.5540068Z 并行运行: false 2017-11-20T08:43: 17.5540068Z 隔离运行: false 2017-11-20T08:43:17.5592822Z 自定义适配器的路径: d:\a\1\s 2017-11-20T08:43:17.5592822Z 其他控制台选项: null 2017-11-20T08 :43:17.5600072Z 启用代码覆盖率: false …
尝试使用托管 VS2017 构建代理在 VSTS 上构建 WPF 应用程序时出现以下错误:
Modules\ManualOperation\ManualOperationDialog.xaml(61):Modules\ManualOperation\ManualOperationDialog.xaml(61,22): 错误 MC3074: XML 命名空间中不存在标签“Interaction.Triggers” http://schemas.microsoft.com /表达式/2010/交互性'。第 61 行位置 22。
在 Visual Studio 2017 版本 15.5.1 中构建相同的项目,没有错误。自上次由 VSTS 构建以来,该项目也没有发生任何变化。
项目具体情况:
System.Windows.Interactivity 属性是:

我们在 VSTS 上建立了一个非常基本的构建。这非常令人沮丧。任何帮助,将不胜感激。
因此,我可以获得构建详细信息,但它不包含有关构建作业的任何信息。例如,每个构建作业都在构建代理上运行 - 我如何使用 REST Api 获取此部分?
我们谈论的是 vNext 构建,而不是 XAML。
Azure Pipeline 示例显示使用 pip 安装需求。
https://learn.microsoft.com/en-us/azure/devops/pipelines/languages/python?view=azure-devops
- script: pip install -r requirements.txt
displayName: 'Install requirements'
Run Code Online (Sandbox Code Playgroud)
期待已久的东西还没有出现,那么当你一直在使用而你有但没有的pip -p时候,Pythonista 该怎么办呢?pipenvPipfilePipfile.lockrequirements.txt
我在 AzureDevOps 中创建新的代理池时遇到问题。
我想要做的是删除一台旧的自托管主机并部署一台新主机。然而,旧主机使用的代理池和新主机使用的代理池是由同事创建的。这导致我无法删除现有的注册代理,导致在新主机部署期间发生冲突。为了解决此问题,我能够删除代理池。
现在,当我想创建一个同名的新池时,我收到错误消息
“未找到标识符为 76 的代理池”。
有没有人看到过这个错误消息并且或者知道我可以采取什么措施?
预期: 创建一个与旧池同名的新代理池。
实际: 我收到错误消息“未找到标识符为 76 的代理池”。
我在 Azure DevOps 中有一个用于 ASP.NET Core 应用程序的构建管道,并且希望将其与批准拉取请求的条件一起使用。
steps:
- script: dotnet restore
displayName: 'Run command: dotnet restore'
- script: >
dotnet test
/p:CollectCoverage=true
/p:CoverletOutputFormat=cobertura
/p:Threshold=80
/p:ThresholdStat=total
/p:Exclude="[*xunit.*]*"
displayName: 'Run command: dotnet test'
Run Code Online (Sandbox Code Playgroud)
我希望当代码覆盖率(使用封面)未通过时,构建失败。但是,尽管验收标准未通过,但即使生成了日志消息,该步骤仍会成功运行。
coverlet.msbuild.targets(41,5): error : 总行覆盖率低于指定的 80 coverlet.msbuild.targets(41,5): error : 总分支覆盖率低于指定的 80 coverlet.msbuild.targets( 41,5): 错误:总方法覆盖率低于指定的 80
在这种情况下有可能强制失败吗?
将管道从经典转换为 YAML(所以我知道它有效)。
我构建并发布工件任务如下所示:
- task: PublishPipelineArtifact@1
displayName: 'Publish Pipeline Artifact'
inputs:
targetPath: '$(Build.ArtifactStagingDirectory)/MyArtifact'
artifact: MyArtifact
Run Code Online (Sandbox Code Playgroud)
构建时的结果如下所示:
然后我想将其部署到 web 应用程序 YAML:
- stage: Dev
jobs:
- job: DeployApp
displayName: Deploy Web App
pool:
name: myPrivate
demands: msbuild
steps:
- task: DownloadPipelineArtifact@2
inputs:
artifact: MyArtifact
- task: AzureRmWebAppDeployment@4
displayName: 'Deploy App'
inputs:
WebAppKind: 'Web App On Windows'
azureSubscription: 'edited out...'
WebAppName: webAppName
package: '$(System.ArtifactsDirectory)'
enableXmlTransform: true
Run Code Online (Sandbox Code Playgroud)
这会在 Azure DevOps 中产生以下输出:
块上有差异,但由于尺寸非常匹配,我很高兴。
然后我在部署中遇到错误,因此我开始查看 Kudo,并可以看到在 SitePackages 中我的所有包都是 1 kb(或空...)。我预计 61.2 MB。
我采取了我的工作经典部署,在那里我有这一行:
packageForLinux:'$(System.DefaultWorkingDirectory)/_MyArtifact/MyArtifact/MyApplication.zip' …Run Code Online (Sandbox Code Playgroud) azure-pipelines ×10
azure-devops ×8
agent ×1
asp.net-core ×1
azure-pipelines-release-pipeline ×1
pipenv ×1
pool ×1
topshelf ×1
unit-testing ×1