标签: azure-pipelines

在 Azure DevOps 构建管道期间创建 json 文件

我有一个运行 Cypress 测试的 Azure DevOps 构建管道。在 Cypress 测试中,我们有一个使用电子邮件和密码登录的测试用户。在我的本地系统上,我的密码保存在一个cypress.env.json文件中。

在 Azure 构建管道上,我收到一条消息,表明密码是undefined有意义的,因为我们将cypress.env.json文件放入 .gitignore 中,以免将其暴露给存储库。

我创建了一个 Azure 变量来表示密码:$(ACCOUNT_PASSWORD)

因此,我认为我需要cypress.env.json在构建管道中创建文件并为其使用 Azure 变量,但我不知道如何在构建步骤中创建文件。

我有这个任务:

- task: CmdLine@2
  displayName: 'run Cypress'
  inputs:
    script: |
      npm run ci
Run Code Online (Sandbox Code Playgroud)

因此,我需要在此之前添加一个任务,cypress.env.json使用代表密码的变量创建文件:

{
  "ACCOUNT_PASSWORD": $(ACCOUNT_PASSWORD)
}
Run Code Online (Sandbox Code Playgroud)

azure-devops azure-pipelines

10
推荐指数
1
解决办法
6698
查看次数

Azure、.Net、Cobertura - ##[警告]找到多个文件或目录匹配项

您好,我正在尝试在 azure 管道中使用 .net5 获取代码覆盖率。

运行测试(不是整个文件)

Starting test execution, please wait...
A total of 1 test files matched the specified pattern.
Results File: /home/vsts/work/_temp/_fv-az43-964_2021-08-25_08_31_59.trx

Attachments:
  /home/vsts/work/_temp/f5dd5e9f-e260-437d-80ef-4fb917215b09/coverage.cobertura.xml
Passed!  - Failed:     0, Passed:    16, Skipped:     0, Total:    16, Duration: 732 ms - /home/vsts/work/1/s/sda2021_webapi/Test/sda2021_api.tests/bin/Release/net5.0/sda2021_webapi.tests.dll (net5.0)
Result Attachments will be stored in LogStore
Run Attachments will be stored in LogStore
Info: Azure Pipelines hosted agents have been updated and now contain .Net 5.x SDK/Runtime along with the older .Net Core version which are currently …
Run Code Online (Sandbox Code Playgroud)

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

10
推荐指数
1
解决办法
3344
查看次数

在VSO上构建ASP.NET 5 beta 7应用程序有什么好运吗?

我正在尝试在VSO上构建ASP.NET 5 beta 7应用程序.我收到以下错误:

System.IO.FileNotFoundException:无法加载文件或程序集"Microsoft.DNX.PackageManager"或其依赖项之一.该系统找不到指定的文件.

文件名:'Microsoft.DNX.PackageManager'

我知道这个问题:https: //github.com/aspnet/Announcements/issues/51

所以我尝试使用PowerShell脚本安装最新的WebTools,但"访问被拒绝".

有关如何在VSO中构建beta7应用程序的任何想法?或者只是等待单元VSO构建服务器将使用最新工具进行更新?

asp.net azure-devops azure-pipelines

9
推荐指数
2
解决办法
913
查看次数

Build.SourceVersion在VSO vNext Build中为空

我正在使用Visual Studio Online中的新脚本化构建功能(而不是XAML构建定义),并且我尝试使用构建号格式使构建版本号包含目标存储库的最新Git Commit ID.

我使用以下内部版本号格式:

$(MajorVersion).$(MinorVersion).$(BuildId).$(SourceVersion)
Run Code Online (Sandbox Code Playgroud)

这导致生成的版本号1.0.1234.- 即SourceVersion值为空,这在排队构建时导致VSO错误.我也尝试通过在变量前面添加Build.相同的结果来限定变量.为了测试,我已将构建号更改为以下格式:

$(MajorVersion).$(MinorVersion).$(BuildId).$(SourceBranch)
Run Code Online (Sandbox Code Playgroud)

这正确地导致了值 1.0.1234.refs_heads_master

我一直在使用Predefined Variables参考,Build.SourceVersion被列为全局变量.

我做错了什么,我遇到过一个错误,或者这是设计的,在构建排队时不可用?如果这是设计的,有没有办法在Build Number格式中自动包含简短的Git Commit ID?

这是我在VSO中设置内部版本号格式的地方: 这是我在VSO中设置内部版本号格式的地方

这是我在没有明确指定Git CommitId时看到的错误:

400:内部版本号格式字符串$(MajorVersion).$(MinorVersion).$(BuildId).$(SourceVersion)生成内部版本号0.1.1.其中包含无效字符,太长或以'.'结尾.内部版本号的最大长度为255个字符.不允许的字符包括'"','/',':','<','>','\','|','?','@'和'*'.

git azure-devops azure-pipelines

9
推荐指数
1
解决办法
4734
查看次数

从触发Team Services中的构建的分支获取源代码

我想在VS Team Services中创建一个集成构建,当对除master之外的任何分支(develop/feature xy)进行提交时触发.

我能够为此创建一个触发器:

在此输入图像描述

但是我如何检查触发构建的分支的来源?

在任务选项卡中,第一步是"获取源",这里我只能选择一个分支(这里不能使用*通配符):

在此输入图像描述

否则,例如,构建由特征分支触发,但源是从开发分支获取的.我怎样才能做到这一点?

continuous-integration azure-devops azure-pipelines-build-task azure-pipelines

9
推荐指数
1
解决办法
1847
查看次数

VSTS,创建构建定义会收到AllowScriptsAuthAccess错误

长时间听众,第一次来电!我花了两天时间寻找答案,所以希望有人可以提供帮助.

我已经建立了一个个人/免费的VSTS实例并创建了一个项目.我想要做的第一个任务之一是设置构建管道,因此创建一个新管道,将代理池定义为VS2017,连接到我的Github repo等,所有这些都没问题.

接下来,我尝试添加代理作业,再次选择VS2017作为代理.如果没有选择其他选项,如果我尝试保存构建定义,则会收到以下错误消息(并且无法保存);

The AllowScriptsAuthAccess build option is not supported in API versions greater than 4.0.

在阶段下的"代理"作业配置 "构建/选项"选项卡上(滑块设置为禁用),取消选中允许脚本访问OAuth令牌

我用谷歌搜索并搜索了各种各样的东西,试图找到有同样问题的人,但这几乎就像我是第一个发现这个 - 这是不太可能!它几乎驱使我使用Bing来搜索解决方案,但是不要让我感到沮丧.

任何想法或建议将不胜感激!

oauth azure-devops azure-pipelines

9
推荐指数
2
解决办法
1481
查看次数

Azure DevOps-在PowerShell脚本中设置和使用变量

我有一个Azure DevOps构建管道,该管道具有两个单独的PowerShell脚本。在第一个脚本中,我从XML文件中获取一个值,并将其设置在环境变量中。在第二个脚本中,我想使用环境变量中的值。不幸的是,我没有看到环境变量被设置。目前,我有:

脚本1:

$myXml = [xml](Get-Content ./MyXml.xml)  
$departmentId = $myXml.Department.Id

Write-Host ##vso[task.setvariable variable=DepartmentId;]$departmentId    
Write-Host "Set environment variable to ($env:DepartmentId)"

Get-ChildItem Env:

Write-Host "Department Id ($departmentId)"
Run Code Online (Sandbox Code Playgroud)

运行脚本1时,我看到:

Set environment variable to ()
[All of the environment variable BUT, I DO NOT SEE ONE NAMED "DepartmentId"]
Department Id (1)
Run Code Online (Sandbox Code Playgroud)

注意:1)该$env:DepartmentId值未在“设置环境变量”语句中打印,并且2)该DepartmentId值未在环境变量列表中列出。我的意图是DepartmentId在第二个脚本中使用它,如下所示:

脚本2:

Write-Host "Using Department: $(env:DepartmentId)"
Run Code Online (Sandbox Code Playgroud)

此时,脚本仅显示:

env:DepartmentId : The term 'env:DepartmentId' is not recognized as the name of a cmdlet, function, script file, or operable program. …
Run Code Online (Sandbox Code Playgroud)

powershell azure-devops azure-pipelines

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

使用YAML在本地构建Azure DevOps管道

在将其推送到分支以测试可能的错误之前,如何在本地计算机上模拟Azure Devops管道的构建过程.

解决方案在本地构建正确,没有错误和警告.还从VS命令行MSBuild编译没有错误的解决办法,但在某些试图推动管道建设引发许多错误大多与preprocessor defenitionprecompiled header.

我想知道如何在我的机器上本地测试相同的过程,而无需推送回购.

azure-pipelines.yml
-------------------
pool:
  vmImage: 'vs2017-win2016'

steps:
- task: MSBuild@1
  displayName: 'Build solution'
  inputs:
    platform: 'Win32'
    configuration: 'release'
    solution: 'mysolution.sln'
- task: VSTest@2
  displayName: 'Run Test'
  inputs:
    platform: 'Win32'
    Configuration: 'release'
    testAssemblyVer2: |
     **\*.Test.dll
     !**\*TestAdapter.dll
     !**\obj\**
    runSettingsFile: project.Test/test.runsettings
    codeCoverageEnabled: true 
Run Code Online (Sandbox Code Playgroud)

visual-c++ azure-devops azure-pipelines

9
推荐指数
1
解决办法
3036
查看次数

在Azure Devops门户上查看代码覆盖率报告

作为azure devops构建管道的一部分,我正在运行NUnit测试(.Net Framework 4.5中的项目)。

- task: VSTest@2
  inputs:
    testAssemblyVer2: 'tests/**/*.Tests.dll'
    pathtoCustomTestAdapters: '$(Build.SourcesDirectory)/packages'
    codeCoverageEnabled: true
  displayName: 'NUnit Testing'

- task: PublishCodeCoverageResults@1
  inputs:
    codeCoverageTool: JaCoCo
    summaryFileLocation: '$(Common.TestResultsDirectory)/**/*.xml'
  displayName: 'Publish Code Coverage'
  //        summaryFileLocation: '$(Common.TestResultsDirectory)/**/*.coverage'
Run Code Online (Sandbox Code Playgroud)

但是我看不到覆盖率报告,只看到覆盖率结果的下载链接...

代码覆盖率下载链接

如何将.coverage报告转换为JaCoCo格式?或直接以JaCoCo格式生成报告?

我已经看到了一些针对.Net Core(链接)的解决方案,但是没有针对.Net框架的解决方案

azure asp.net-4.5 nunit-3.0 azure-devops azure-pipelines

9
推荐指数
1
解决办法
2625
查看次数

如何在具有参考点网项目的xamarin项目的azure devops中创建YAML构建管道

我最近将我的资源转移到了天蓝色的devOps上,以使用cd / ci和所有其他不错的东西。现在,我创建了我的第一个构建管道来构建Xamarin项目的android部分。但是我最终收到一条错误消息,找不到参考项目的资源,我将还原软件包并重试。现在,由于我拥有azure托管的构建代理而不是自托管的,因此我无法在进行构建之前正确设置代理。但是我想应该有一些方法可以正确地配置构建管道来完成所有必要的工作。它只是我不知道我应该添加到我的yaml文件中以修复此问题的线索。

这是我收到的错误消息:

##[error]C:\Program Files\dotnet\sdk\2.2.105\Sdks\Microsoft.NET.Sdk\targets\Microsoft.PackageDependencyResolution.targets(208,5): Error NETSDK1004: Assets file 'd:\a\1\s\*****\*****\*****\*****\obj\project.assets.json' not found. Run a NuGet package restore to generate this file.
Run Code Online (Sandbox Code Playgroud)

问题在于该文件应通过编译引用的项目来生成,而不是nuget包的一部分。

据我自己了解,这是我的构建管道。

# Xamarin.Android
# Build a Xamarin.Android project.
# Add steps that test, sign, and distribute an app, save build artifacts, and more:
# https://docs.microsoft.com/azure/devops/pipelines/languages/xamarin

trigger:
- Share/main

pool:
  vmImage: 'VS2017-Win2016'

variables:
  buildConfiguration: 'Debug'
  outputDirectory: '$(build.binariesDirectory)/$(buildConfiguration)'

steps:
- task: NuGetToolInstaller@1
  inputs:
    versionSpec: 5.1.0

- task: NuGetCommand@2
  displayName: 'Restore NuGet Packages'
  inputs:
    command: restore
    restoreSolution: '**/*.sln'    

- task: …
Run Code Online (Sandbox Code Playgroud)

azure xamarin.android xamarin azure-devops azure-pipelines

9
推荐指数
1
解决办法
181
查看次数