我很确定这个设置对我们来说是有效的.我稍微更改了我们的构建以反映一些操作更改,现在CI git分支触发器无法正常工作.我试图得到它,所以当PR合并到master时它会触发发布版本.我可以手动触发此构建,但不能从dev向master提交PR然后接受PR(在github上).
是否有其他人有问题或知道什么是错的?
如果单个测试因天蓝色管道失败,我想使构建管道失败。
Azure可以成功检测到我的测试进入了失败状态,但是它为整个构建管道提供了成功状态:
问题是,如果测试阶段失败,如何使azure给出失败的构建状态?
这是我的azure-pipelines.yml:
# Build ASP.NET Core project using Azure Pipelines
# https://docs.microsoft.com/azure/devops/pipelines/languages/dotnet-core?view=vsts
pool:
vmImage: 'Ubuntu 16.04'
variables:
buildConfiguration: 'Release'
steps:
- script: |
dotnet build --configuration $(buildConfiguration)
dotnet test dotnetcore-tests --configuration $(buildConfiguration) --logger trx
dotnet publish --configuration $(buildConfiguration) --output $BUILD_ARTIFACTSTAGINGDIRECTORY
- task: PublishTestResults@2
inputs:
testRunner: VSTest
testResultsFiles: '**/*.trx'
- task: PublishBuildArtifacts@1
Run Code Online (Sandbox Code Playgroud) 对于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)
是否支持在池需求中使用这些变量?还是应该使用其他变量或表达式?
大图:我们正在使用Azure DevOps发布过程(到目前为止,我们在设计器中创建步骤,而不是在YAML管道中创建步骤)。我们发布到具有3个不同数据库的3个环境。该发行版的一部分是从DACPAC文件部署数据库。由于使用SqlPackage.exe直接发布到数据库不是很透明(您不会看到并查看实际的SQL脚本),因此我们希望分两个阶段进行发布:
问题:如何在阶段之间共享sql脚本文件,以及如何查看该脚本以进行批准。可以在不同的代理上触发阶段。
我已经试过:
还有其他建议吗?
是否可以将 yaml 模板嵌套在另一个 yaml 模板中?
我在不同的 Git 存储库中有多个 NuGet 项目,我正在尝试模板化在 nuget.org 上发布 NuGet 的过程。
所以我创建了一个名为“devops-templates”的 git 仓库,做了第一个 yaml 模板,确保它可以工作,然后将它分成 4 个 yaml 模板(构建解决方案,生成包,运行单元测试,发布),并将它们引用到全局 yaml 模板。
问题是当我尝试在我的管道中使用这个全局模板时,我得到了错误
/Net/Utilities/BuildSolution.yml@templates (Line: 33, Col: 18): A template expression is not allowed in this context,/Net/Utilities/BuildSolution.yml@templates (Line: 36, Col: 21): A template expression is not allowed in this context,/Net/Utilities/BuildSolution.yml@templates (Line: 48, Col: 24): A template expression is not allowed in this context,/Net/Utilities/BuildSolution.yml@templates (Line: 53, Col: 28): A template expression is not allowed in this context,/Net/Utilities/BuildSolution.yml@templates (Line: …
我正在尝试在 azure DevOps 管道中构建一个简单的 docker 控制台项目,但我无法构建该项目。
当我尝试复制代码时,出现此错误:
从标志值构建无效:构建的拉取访问被拒绝,存储库不存在或可能需要“docker login”:拒绝:请求的资源访问被拒绝
这里是完整的 docker 文件:
FROM mcr.microsoft.com/dotnet/core/runtime:2.2-nanoserver-1809 AS base
WORKDIR /app
FROM mcr.microsoft.com/dotnet/core/sdk:2.2-nanoserver-1809 AS build
WORKDIR /src
COPY --from=build "ConsoleApp/ConsoleApp.csproj", "ConsoleApp/" #throws the error here. I added --from=build parameter because it couldn't find the project file.
RUN dotnet restore "ConsoleApp/ConsoleApp.csproj"
COPY . .
WORKDIR "/src/ConsoleApp"
RUN dotnet build "ConsoleApp.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "ConsoleApp.csproj" -c Release -o /app/publish
FROM base AS final
WORKDIR /app
COPY --from=publish …Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个基于 YAML 的管道,该管道采用一个参数,然后触发管道从 Azure DevOps REST API 运行。我能够看到构建已排队,但参数并未从我的 POST 正文中覆盖。
我的模板my-template.yaml。
parameters:
- name: testParam
type: string
default: 'N/A'
steps:
- script: echo ${{ parameters.testParam }}
Run Code Online (Sandbox Code Playgroud)
我的管道 yaml 扩展了模板。
trigger:
- master
extends:
template: my-template.yaml
Run Code Online (Sandbox Code Playgroud)
然后我使用queue buildREST API触发这个管道:https://dev.azure.com/{organization}/{project}/_apis/build/builds?api-version=5.1POST 主体如下。
{
"parameters": "{\"testParam\": \"hello world\"}",
"definition": {
"id": 50642
},
"sourceBranch": "refs/heads/master"
}
Run Code Online (Sandbox Code Playgroud)
所以我期待管道执行会回显hello world而不是N/A. 不幸的是,我仍然N/A在管道中看到结果。
任何人都知道发生了什么?我错过了什么吗?
我使用 Azure Pipelines 作为 Azure DevOps 的一部分。我试图在我的模板文件中定义变量,因为我需要多次使用相同的值。
这是我的stage-template.yml:
parameters:
- name: param1
type: string
- name: param2
type: string
variables:
var1: path/${{ parameters.param2 }}/to-my-file.yml
stages:
- stage: Deploy${{ parameters.param2 }}
displayName: Deploy ${{ parameters.param1 }}
jobs:
...
Run Code Online (Sandbox Code Playgroud)
尝试使用此管道时,我收到一条错误消息:
/stage-template.yml(第 7 行,第 1 列):意外值“变量”
为什么这不起作用?我做错了什么?
顺便提一下,我正在使用自托管代理来运行我的构建和发布管道。
问题是当我运行任何构建并且由于管道中的某些问题而失败时。来自远程的克隆分支位于 _work 目录中。第二次运行也选择了相同的工作目录,我已经从 agent _work 目录手动检查没有克隆新目录,我还可以从 Azure Pipeline 日志中验证它们使用的是相同的旧目录。
我临时解决了这个问题,我进入旧目录(即/home/user/_work/13)并手动删除那13个目录然后azure拿起它新文件夹说_work下的14,我可以看到最新的从远程克隆代码。
那么如何在发生任何故障时自动删除工作文件夹(代理构建目录,即 _work 下的 13/14)。
PS:当我的管道成功完成时,我已经有清理步骤,我在最后运行。另外,我正在编写基于 .yml 的管道。
如果需要任何信息以更好地理解,请告诉我。
azure-devops ×10
azure-pipelines ×10
azure ×1
azure-aks ×1
azure-pipelines-release-task ×1
devops ×1
yaml ×1