我花了大约一个小时寻找这个问题的答案,但一无所获,所以我希望这里有人能帮助我。
背景
我们目前正在尝试使用App Center DistributeVSTS 中的构建任务通过应用程序中心部署我们的 Xamarin.Forms android 应用程序。
其中一项设置允许您指向项目中的发行说明文件,然后当您单击该文件时,该文件将作为发送的电子邮件的一部分包含在应用程序中心发行信息中。该文件必须是 UTF-8 格式。
问题
有没有一种方法可以实际格式化该文件以使其显示良好?我尝试使用 HTML,但没有成功。当仅使用纯文本文件时,它会忽略文本文件中的任何换行符,仅将所有文本显示为连续字符串。
如果不可能的话,我并不追求任何突破性的格式化,只是想知道是否有一种格式化方法,因此它至少不是一大堆文本。
提前致谢
加雷思
对于Azure Pipelines yaml文件,我想在特定池中的每个代理上一次运行一组任务。当我查看工作策略矩阵时,它看起来是一个很好的解决方案,但是目前它无法提取我为此使用的变量。
与该问题相关的管道yaml文件是以下部分:
resources:
- repo: self
trigger: none
jobs:
- job: RunOnEveryAgent
strategy:
maxParallel: 3
matrix:
agent_1:
agentName: Hosted Agent
agent_2:
agentName: Hosted VS2017 2
agent_3:
agentName: Hosted VS2017 3
pool:
name: Hosted VS2017
demands:
- msbuild
- visualstudio
- Agent.Name -equals $(agentName)
steps:
- (etc.)
Run Code Online (Sandbox Code Playgroud)
使用此脚本,我尝试设置一个矩阵以在池中的三个代理中的每个代理上运行一次。但是,当我尝试在需求列表中引用该代理时,它不会选择它。实际的错误信息如下:
[错误1]在满足指定要求的托管VS2017池中找不到代理:
msbuild
视觉工作室
Agent.Name-等于$(agentName)
Agent.Version -gtVersion 2.141.1
如果我硬编码的代理名称也做的工作:
demands:
- msbuild
- visualstudio
- Agent.Name Hosted VS2017 3
Run Code Online (Sandbox Code Playgroud)
是否支持在池需求中使用这些变量?还是应该使用其他变量或表达式?
因此,我尝试创建一个下游项目,尝试使用存储在天蓝色管道工件中的工件进行构建。我正在使用任务 DownloadPipelineArtifact@0
它谈到了对 pipelineId 的需求,但不太确定在哪里可以找到我的其他管道的 id。有什么简单的方法吗?根据文档,它应该是一个 ~4 位数字。
谢谢
我的情况如下:我创建了一个带有管道变量的 Azure DevOps 管道,假设为“变量 A”。“变量 A”的值为 1。在构建过程中,我将“变量 A”的值更改为 2。
当构建第二次运行时,我想要这些“变量 A”的值,但这又回到了 1,但我希望该值为 2,因为在上一次构建中我将“变量 A”的值设置为 2。
这些是我尝试过但没有成功的方法:
方法一:
Write-Host "##vso[task.setvariable variable=A;]2"
Run Code Online (Sandbox Code Playgroud)
方法二:
$env:A = 2
Run Code Online (Sandbox Code Playgroud)
唯一有效但我不认为这是可行的方法是通过其余 api 获取整个构建定义,然后将其放回更改的变量值。
这个问题还有其他解决办法吗?
我使用 CocoaPods 在项目中包含了一个新库,每次在 Azure DevOps 代理上构建时,都会出现以下错误:
\n\n\n\n\n目标“MyApp”和“MyLib”之间的依赖关系循环;构建可能会产生不可靠的结果。这通常可以通过将目标的标头构建阶段移到编译源之前来解决。
\n
循环路径:Pods-MyApp \xe2\x86\x92 MyLib \xe2\x86\x92 Pods-MyApp
\n\n我尝试过pod deintegrate,然后pod install它确实解决了问题,但每次我尝试构建时,都会出现相同的错误,\n在本地构建完美,但不在构建代理上构建。
我正在尝试针对包含Visual Studio Installer Project的 .NET Framework 4.7.2 解决方案设置 Azure DevOps 构建管道。我已在 Windows Server 2019 VM 上设置了自托管代理,该 VM 安装了 Visual Studio 2019 Community。构建管道包含 NuGet 安装程序任务,后跟 NuGet 任务,设置用于恢复引用的 NuGet 包。下面是 YAML 片段:
- task: NuGetCommand@2
inputs:
command: 'restore'
restoreSolution: '$(solution)'
Run Code Online (Sandbox Code Playgroud)
但是,使用此配置运行构建会导致构建日志中出现以下错误:
[错误]nuget 命令失败,退出代码(1) 和错误(C:\##############.vdproj(1,1): 错误 MSB4025: 项目文件无法已加载。根级别的数据无效。第 1 行,位置 1。)
这似乎是由于新版本的 nuget.exe 中的性能增强所致。基于此GitHub 问题的建议是使用 MSBuild 设置跳过不存在的包目标RestoreUseSkipNonexistentTargets。
GitHub问题提到使用NUGET_RESTORE_MSBUILD_ARGS NuGet CLI环境变量来设置此属性,但我不知道如何通过NuGet构建任务来实现这一点。
false由于 NuGet 现在已与 MSBuild 集成,因此我尝试通过 NuGet 任务上的命令行参数设置此属性。我修改了 YAML,将命令设置为custom以便传递参数。我的语法基于MSBuild 恢复文档。现在看起来如下:
- task: …Run Code Online (Sandbox Code Playgroud) msbuild nuget nuget-package-restore azure-devops azure-pipelines
最近,我的工作场所已从 CircleCI 过渡到 Azure Pipelines,因此我们一直在迁移所有 CI。虽然大多数都比较简单,但这个特定的管道需要在 docker 镜像内运行我们的 Linux 作业。这是 CircleCI 中的内容:
build:
docker:
- image: electronuserland/builder:wine-03.18
steps:
- run: apt-get update
- run: apt-get install -y libgnome-keyring-dev icnsutils graphicsmagick xz-utils rpm bsdtar
- run: yarn install
# run tests!
- run: yarn test -- -u
- run: yarn test -- --maxWorkers 2
# Build the React app and the Electron app
- run:
name: yarn run electron-pack
VERSION=$(node -p "var ipVer = require('./package.json').version; \
var semVer = require('semver'); \ …Run Code Online (Sandbox Code Playgroud) 我的开发团队正在使用 Azure Devops 的 Microsoft 托管构建代理,但希望拥有性能更高的构建代理。目前我们的构建时间有时会超过 5 分钟,这是不可取的。
我们不想走自托管路线,因为那样我们将需要管理我们自己的构建代理的任务。现阶段我们根本没有资源来完成这样的任务。
是否可以在 Azure DevOps 上升级到性能更高的 Microsoft 托管构建代理?
可能只是我们需要优化构建构建的方式,然后缩短构建时间 - 但想知道这样的选项是否可用。
谢谢你!
我正在尝试根据条件在特定池上执行 Azure DevOps 作业。目标是在自托管代理和微软代理之间切换。这是配置:
parameters:
custom_agent: true
jobs:
- job: Test
displayName: Test job
- ${{ if eq(parameters.custom_agent, true) }}:
- pool:
name: mypool
demands:
- agent.os -equals Linux
- ${{ if eq(parameters.custom_agent, false) }}:
- pool:
vmImage: 'ubuntu-latest'
steps:
- task: npmAuthenticate@0
Run Code Online (Sandbox Code Playgroud)
有任何想法吗 ?
阶段 A->B->C->D。
C 失败并出现错误,暗示阶段 B 的输出存在问题,尽管它成功了。作为失败的阶段,我可以重新运行 C,如果成功,D 将运行(在本例中它仍然失败)。我可以重新运行 B,它再次成功,但是 C 和 D 被“跳过”,我找不到(重新)运行它们的方法。
我如何重新运行 B 以便 C 和 D 能够成功?
azure-devops ×10
azure-pipelines ×10
azure ×4
build-agent ×1
circleci ×1
devops ×1
docker ×1
electron ×1
msbuild ×1
nuget ×1
upgrade ×1
variables ×1
xcode ×1