标签: azure-pipelines

VSTS持续集成触发器无法正常工作

我很确定这个设置对我们来说是有效的.我稍微更改了我们的构建以反映一些操作更改,现在CI git分支触发器无法正常工作.我试图得到它,所以当PR合并到master时它会触发发布版本.我可以手动触发此构建,但不能从dev向master提交PR然后接受PR(在github上).

是否有其他人有问题或知道什么是错的?

在此输入图像描述

azure-devops azure-pipelines

8
推荐指数
1
解决办法
2206
查看次数

如果天蓝色管道中的“测试失败”,如何使构建管道失败?

如果单个测试因天蓝色管道失败,我想使构建管道失败。

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-devops azure-pipelines-build-task azure-pipelines

8
推荐指数
2
解决办法
2007
查看次数

如何在池需求中使用矩阵变量?

对于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 azure-pipelines-build-task azure-pipelines

8
推荐指数
2
解决办法
344
查看次数

在Azure DevOps(VSTS)的发行阶段之间共享文件

大图:我们正在使用Azure DevOps发布过程(到目前为止,我们在设计器中创建步骤,而不是在YAML管道中创建步骤)。我们发布到具有3个不同数据库的3个环境。该发行版的一部分是从DACPAC文件部署数据库。由于使用SqlPackage.exe直接发布到数据库不是很透明(您不会看到并查看实际的SQL脚本),因此我们希望分两个阶段进行发布:

  1. 从DACPAC创建SQL脚本并对其进行检查
  2. 批准后,从先前生成的脚本运行app和db部署。

问题:如何在阶段之间共享sql脚本文件,以及如何查看该脚本以进行批准。可以在不同的代理上触发阶段。

我已经试过

  1. 将脚本发布为构建工件-这将无法正常工作,因为生成生成脚本需要连接到数据库,并且连接到脚本不应该是构建过程的一部分,尤其是连接到生产数据库。
  2. 作为发布步骤将工件发布到Azure Pipelines-不允许在发布时发布,仅适用于版本发布
  3. 将工件发布到文件共享-我不确定这是如何工作的,文档做得不好。而且,常规的Windows文件共享很难在我们的基础结构中设置,我宁愿避免这样做。

还有其他建议吗?

azure-devops azure-pipelines azure-pipelines-release-task

8
推荐指数
1
解决办法
794
查看次数

Build Artifact和Pipeline Artifact任务之间有什么区别?

在Azure DevOps中,我们具有下载 / 发布生成工件任务和下载 / 发布管道工件任务。

构建工件任务和管道工件任务之间有什么区别?何时选择一个而又一个呢?

azure-devops azure-pipelines

8
推荐指数
1
解决办法
935
查看次数

Azure Devops:是否可以将 yaml 模板嵌套在另一个 yaml 模板中?

是否可以将 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: …

yaml azure-devops azure-pipelines

8
推荐指数
1
解决办法
6653
查看次数

从标志值构建无效:构建的拉取访问被拒绝,存储库不存在或可能需要“docker 登录”

我正在尝试在 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)

visual-studio devops azure-devops azure-pipelines azure-aks

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

Azure DevOps YAML 管道参数不适用于 REST API 触发器

我正在尝试创建一个基于 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-devops azure-pipelines azure-devops-rest-api

8
推荐指数
2
解决办法
5127
查看次数

Azure Pipelines YAML:意外值“变量”

我使用 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 列):意外值“变量”

为什么这不起作用?我做错了什么?

azure azure-devops azure-pipelines azure-pipelines-yaml

8
推荐指数
1
解决办法
7650
查看次数

Azure DevOps - 清理构建目录

顺便提一下,我正在使用自托管代理来运行我的构建和发布管道。

问题是当我运行任何构建并且由于管道中的某些问题而失败时。来自远程的克隆分支位于 _work 目录中。第二次运行也选择了相同的工作目录,我已经从 agent _work 目录手动检查没有克隆新目录,我还可以从 Azure Pipeline 日志中验证它们使用的是相同的旧目录。

我临时解决了这个问题,我进入旧目录(即/home/user/_work/13)并手动删除那13个目录然后azure拿起它新文件夹说_work下的14,我可以看到最新的从远程克隆代码。

那么如何在发生任何故障时自动删除工作文件夹(代理构建目录,即 _work 下的 13/14)。

PS:当我的管道成功完成时,我已经有清理步骤,我在最后运行。另外,我正在编写基于 .yml 的管道。

如果需要任何信息以更好地理解,请告诉我。

azure-devops azure-pipelines

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