0

我是 Azure Devops 的第一次用户,我需要为 Azure Repos 上托管的单一存储库项目创建 CI/CD 流程。这是一个简短的描述

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

回购协议

LinuxProject

FirmwareProject

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

  • LinuxProject YAML 文件的要求是

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

这里的任何人都可以帮助我解决这个要求或指出任何例子吗?我将衷心感谢您的帮助

4

1 回答 1

2

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

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

2,从您的 azure 项目门户创建一个 yaml 管道。

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

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

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

完成向导的步骤并选择现有的 Azure Pipelines Yaml 文件。并LinuxProject-pipeline.yml在提示窗口中选择第一步创建的文件。

在此处输入图像描述

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 发生更改时触发。有关触发器的更多信息,请参见此处

pool ,将其值定义为您的自托管代理(RepoABuild)所在的代理池的名称。(如果您在代理池中有多个自托管代理,请检查此线程以使用需求)

添加bash任务以运行 bash 命令

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

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

请查看入门文档以开始使用。

以下是关键的管道基本概念。

是 Yaml 架构参考。

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

于 2020-05-26T03:57:38.857 回答