自托管代理上的YAML for Azure Pipeline for MonoRepo代码

时间:2020-05-25 22:00:37

标签: azure-devops azure-pipelines devops azure-pipelines-build-task azure-pipelines-yaml

我是Azure Devops的首次用户,我需要为Azure Repos上托管的mono-repo项目创建CI / CD流程。这是简短的说明

  • Git存储库中有多个项目,我想在单独的管道中构建它们,因为它们具有单独的makefile,并且没有相互依赖关系。例如。项目布局

RepoA

LinuxProject

FirmwareProject

TestProject
  • 我有一个自托管的Azure代理(RepoABuild),其中已安装了我要在其上构建这些项目的所有工具。

  • LinuxProject YAML文件的要求是

    • 仅在LinuxProject目录中发生源更改时触发构建
    • 使用代理RepoABuild进行构建
    • 执行bash命令“ cd RepoA / LinuxProject”,“ source opt / lib / linux / settings.sh”和“ make images”
    • 存档“ RepoA / LinuxProject / Build”目录中的工件

在座的任何人都可以帮助我解决这个问题吗?非常感谢您的帮助

1 个答案:

答案 0 :(得分:1)

您可以按照以下步骤为LinuxProject创建yaml管道:

1,创建一个Yaml文件并提交到您的Azure库(例如LinuxProject-pipeline.yml)。

2,从azure项目门户创建yaml管道。

登录到Azure DevOps组织并导航到您的项目。

在您的项目中,导航到管道页面。然后选择操作以创建新管道

首先选择 Azure Repos Git 作为源代码的位置,以逐步完成向导的步骤。

按照向导的步骤进行操作,然后选择现有的Azure Pipelines Yaml文件。然后在提示窗口的第一步中选择文件LinuxProject-pipeline.yml

enter image description here

3,在LinuxProject-pipeline.yml文件中添加以下内容。

trigger:
  paths:
    include:
    - LinuxProject/*

pool: your-self-hosted-agent-pool

steps:

- bash: |
    cd RepoA/LinuxProject
    source opt/lib/linux/settings.sh
    make images

- task: ArchiveFiles@2
  inputs:
    rootFolderOrFile: $(Build.SourcesDirectory)/LinuxProject/Build
    archiveFile: $(Build.ArtifactStagingDirectory)/LinuxProject.zip

在上面的yaml文件中,触发定义了一个路径过滤器,该过滤器使管道仅在文件夹LinuxProject中发生更改时才被触发。有关触发

的更多信息,请参见here

,将其值定义为自托管代理(RepoABuild)所在的代理池的名称。 (如果代理池中有多个自托管代理,请选中this thread以使用需求)

添加bash任务以运行bash命令

添加ArchiveFiles任务以存档您的构建结果。

您可能需要根据您的项目在yaml文件上进行一些更改。您可以参考以下步骤为其他两个项目创建管道。

请先查看get started document

Here是关键的管道基本概念。

Here是Yaml模式参考。

Here是可以在管道中直接使用的预定义变量(例如,上述存档文件任务中的$(Build.ArtifactStagingDirectory)指向代理计算机中的c:\agent_work\1\a)。