标签: azure-pipelines-yaml

PublishPipelineArtifact 已弃用 - 将本地目录或文件发布为当前管道的命名工件

我有以下 Azure Pipelines 作业:

- stage: Production
  dependsOn: Test
  jobs:
  - job: Publish
    pool:
      vmImage: 'Ubuntu 16.04'
    steps:
    - task: UseDotNet@2
      displayName: Setup
      inputs:
        packageType: sdk
        version: 3.1.x
    - task: DotNetCoreCLI@2
      displayName: Publish
      inputs:
        command: publish
        publishWebProjects: false
        projects: 'src/**/*.csproj'
        arguments: '--configuration production --output $(Build.ArtifactStagingDirectory)'
        zipAfterPublish: true
    - task: PublishPipelineArtifact@0
      displayName: Export
      inputs:
        artifactName: Production
        targetPath: '$(Build.ArtifactStagingDirectory)'
  - deployment: Deploy
    dependsOn: Publish
    pool:
      vmImage: Ubuntu-16.04
    environment: Production
    strategy:
      runOnce:
        deploy:
          steps:
          - task: DownloadPipelineArtifact@1
            displayName: Import
            inputs:
              artifactName: Production
          - …
Run Code Online (Sandbox Code Playgroud)

azure-devops azure-pipelines azure-pipelines-yaml

7
推荐指数
1
解决办法
606
查看次数

Azure DevOps:如何在 YAML 模板管道上禁用 CI 触发器?

在模板管道中,您不能放置任何触发器语句,例如trigger: noneMicrosoft文档中指定的禁用 ci 触发器,所以我想知道您如何防止每次更新这些管道或同一分支中的任何其他 yaml 文件时执行这些管道?

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

7
推荐指数
4
解决办法
6799
查看次数

从 YAML 配置 azure-pipelines 中的构建中排除项目

我试图排除一些项目在天蓝色管道中构建。

我尝试了以下选项...

  • 尝试仅构建核心下的项目?
- script: dotnet build **/Core/*.csproj --configuration $(buildConfiguration)
Run Code Online (Sandbox Code Playgroud)

- script: dotnet build **/Core/**/*.csproj --configuration $(buildConfiguration)
Run Code Online (Sandbox Code Playgroud)

但找不到好的例子。

我想要构建的项目位于不同的子文件夹下,如../../Core/Domain/Domain.csproj ../../Core/Presentation/Presentation.csproj

有什么我想念的吗,有可能吗?或者我只是做错了什么。

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

6
推荐指数
1
解决办法
8013
查看次数

在 Azure Devops 上完成拉取请求后如何自动“git tag -a”?

我们如何添加自定义注释标记master,一旦引入请求(PR)完成后,会自动

更多背景:

  • 使用 azure-pipelines.yml
  • master强制使用 PR 的分支策略
  • 我们有一个存储 Azure Devops 管道模板的存储库(“devops 模板存储库”)
  • 其他存储库有一个引用“devops 模板”存储库的根管道文件
  • 我们使用 SEMVER 来标记我们的产品,包括 devops 模板存储库
  • 在根管道中,我们希望固定到 devops 模板存储库的 SEMVER 版本
  • 我们目前使用以下每个手动标记以指向 PR 完成后发生的合并提交
    • “V MAJORMINORPATCH
    • “诉MAJORMINOR
    • “v MAJOR

引脚上MAJOR唯一的例子:

resources:
  repositories:
    - repository: templates
      type: git
      name: template_devops_pipelines
      ref: "refs/tags/v1"
Run Code Online (Sandbox Code Playgroud)

azure-devops azure-pipelines azure-pipelines-yaml

6
推荐指数
1
解决办法
1634
查看次数

触发 CI 特定分支并排除 Azure-Pipelines.YML 问题中的其他分支

我正在尝试创建一个 azure 管道,该管道在特定分支中的更改时触发但排除其他分支。示例场景是,我有多个分支,例如dev, test,beta分支。所以我在我的azure-pipelines.yml

trigger:
  branches: 
    include: 
      - dev
    exclude:
      - test
      - beta
Run Code Online (Sandbox Code Playgroud)

它工作正常,它dev在我的 azure devops 中触发了 CI 构建。但问题是,在我切换到机器上的其他分支后,假设test我更新了azure-pipelines.yml这样的内容:

trigger:
  branches: 
    include: 
      - test
    exclude:
      - dev
      - beta
Run Code Online (Sandbox Code Playgroud)

并将其推送到原点,CI fortestdevare trigger 并且它们的分支标记在test分支中。这是错误的,因为dev不应包含或触发CI 。

我还确保每个 CI 构建都使用azure-pipelines.yml指定给特定分支的那个。这就是为什么我不知道为什么它不能正常工作。

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

6
推荐指数
1
解决办法
2942
查看次数

在 Azure DevOps YAML 管道上分配特定代理

我正在尝试在我的代理池中分配一个特定的代理,但我不知道该怎么做。有人知道吗?

我试过这个但不起作用:

- stage: Deploy
  pool: alm-aws-pool
    agent.name: deploy-05-agent1
Run Code Online (Sandbox Code Playgroud)

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

6
推荐指数
2
解决办法
3792
查看次数

Azure Pipelines 将 YAML 用于具有不同变量值但没有 YAML 重复的多个环境(阶段)

假设我在 Azure 上有 3 个环境:Dev、Test 和 Prod。我有相同的管道来为每个环境构建和部署资源和代码,但有两个不同之处:

  • 不同的触发分支
  • 不同的变量值

这种情况的正确方法是什么?因为我想到了至少 3 个,没有一个是完美的:

选项 1:我想我可以在 Azure DevOps 上创建单个管道(由 3 个分支中的任何一个触发),每个环境有 3 个阶段,并为每个阶段添加一个根据源分支运行的条件,如下所示:

condition: eq(variables['Build.SourceBranch'], 'refs/heads/a-branch-name')

并在每个阶段引用不同的变量。但这会在每个阶段引入代码重复 - 在添加或修改步骤时,我必须记住编辑 3 个阶段 - 不可取。

选项 2:在我的存储库中创建 3 个单独的 YAML 文件,每个文件都具有指定的触发器分支并引用相同的变量名称,然后在 Azure DevOps 上创建 3 个不同的管道,每个管道具有不同的变量值。但这也会引入代码重复。

选项 3:build-and-deploy.yaml使用其中定义的步骤创建 1 个文件作为模板,然后创建另外 3 个引用该模板的 YAML 文件,每个文件在每个 Azure Pipeline 中都有不同的触发器分支和不同的变量值,如下所示:

trigger:
  branches:
    include:
    - a-branch-name

steps:
- template: build-and-deploy.yaml
  parameters:
      parameterName1: $(parameterValue1)
      parameterName2: $(parameterValue2)
Run Code Online (Sandbox Code Playgroud)

这似乎是最好的选择,但我没有看到它在示例中的任何地方使用过,所以也许我只是不知道它的缺点,如果有的话。

yaml continuous-deployment azure-devops azure-pipelines azure-pipelines-yaml

6
推荐指数
2
解决办法
3746
查看次数

我可以在我的 Azure 管道中使用 2 个代理池吗?

我有一个自托管代理。它用作一种部署代理。我们软件的所有发行版本均由该代理构建,然后复制到网络位置。

问题:有没有办法可以在管道中同时利用“azure-pipelines”Microsoft 托管池和我自己的自托管池中的代理?

编辑

不幸的是,目前这是不可能的。这就是为什么您应该对功能请求进行投票https://developercommunity.visualstudio.com/t/allow-agent-pools-to-contain-microsoft-hosted-and/396893

azure-devops azure-pipelines azure-pipelines-yaml

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

Docker 卷安装在 Azure DevOps Pipeline 中不起作用

Docker 卷安装在 Azure DevOps Pipeline 中不起作用,请在下面找到我的代码:

\n

我尝试了两种方法在管道中运行我的 docker 容器 - 请参阅下面 - 都返回空卷 - 卷安装没有发生。我不确定我在这里犯了什么错误。如果有人能帮助我解决这个问题,我将不胜感激。

\n

我想将run.sh、test.sh 和 test.txt挂载在/test

\n

entrypoint.sh中- 我列出了docker内的所有文件 - 但它返回空 - 未安装所有这些文件run.sh、test.sh 和 test.txt

\n

在过去的两天里,我一直在努力解决这个问题,但没有得到任何解决方案 - 任何帮助将不胜感激。

\n

这是我的文件夹结构:

\n
my-app/\n\xe2\x94\x9c\xe2\x94\x80 test/\n\xe2\x94\x82  \xe2\x94\x9c\xe2\x94\x80 run.sh\n\xe2\x94\x82  \xe2\x94\x9c\xe2\x94\x80 test.sh\n\xe2\x94\x82  \xe2\x94\x9c\xe2\x94\x80 test.txt\n\xe2\x94\x9c\xe2\x94\x80 azure-pipeline.yml\n
Run Code Online (Sandbox Code Playgroud)\n

测试文件

\n
#!/bin/bash\n\nrootPath=$1\necho "Root path: $rootPath"\n./run.sh $rootPath\n
Run Code Online (Sandbox Code Playgroud)\n

运行sh

\n
#!/bin/bash\n\necho "starting run script"\n\nNAME="testApp"\nIMAGE="sample/test-app:1.1"\nROOTPATH=$1\n\necho "$ROOTPATH"\n# Finally run\ndocker stop $NAME > /dev/null 2>&1\ndocker rm $NAME > /dev/null 2>&1\ndocker run …
Run Code Online (Sandbox Code Playgroud)

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

6
推荐指数
1
解决办法
6165
查看次数

Azure Pipelines - Build.SourceVersionMessage 变量在表达式函数中不起作用

我正在尝试基于运行 Azure DevOps Server 2020 的提交消息片段在管道中插入额外的参数。我尝试使用以下代码来实现它,但没有成功:

variables:
  - name: commitMessage
    value: $(Build.SourceVersionMessage)
steps:
  - template: myTemplate.yaml
    parameters:
      ${{ if contains(variables['commitMessage'], 'SPECIAL_MESSAGE') }}:
        specialParam: 'someValue'
Run Code Online (Sandbox Code Playgroud)

在调查过程中,我发现这些表达式的表现有些出乎意料:

variables:
  - name: commitMessage
    value: $(Build.SourceVersionMessage)
steps:
  - bash: | 
      echo "${{ variables['commitMessage'] }}"
      echo "${{ contains(variables['commitMessage'], 'SPECIAL_MESSAGE') }}"
      echo "${{ contains('test SPECIAL_MESSAGE', 'SPECIAL_MESSAGE') }}"
Run Code Online (Sandbox Code Playgroud)

脚本输出是:

test SPECIAL_MESSAGE
False
True
Run Code Online (Sandbox Code Playgroud)

脚本的第一行正确输出提交消息。但是contains()脚本第二行中的函数似乎无法处理该变量,即使提交消息包含 SPECIAL_MESSAGE,表达式也会返回False

但是,如果我将变量设置为静态字符串而不是$(Build.SourceVersionMessage)变量,则表达式返回True,并且我可以添加额外的参数:

variables:
  - name: commitMessage
    value: 'test SPECIAL_MESSAGE'
Run Code Online (Sandbox Code Playgroud)

知道管道为什么会这样,或者如何让它工作吗?

azure-pipelines azure-pipelines-yaml

6
推荐指数
1
解决办法
2462
查看次数