繁体   English   中英

YAML 用于 Azure 自托管代理上 MonoRepo 代码的管道

[英]YAML for Azure Pipeline for MonoRepo code on a self-hosted agent

我是 Azure Devops 的第一次用户,我需要为托管在 Azure 存储库上的单一存储库项目创建 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”目录中的工件

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

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

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

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

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

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

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

完成向导的步骤并选择现有的 Azure 管道 Yaml 文件 和 select 文件LinuxProject-pipeline.yml在提示 window 的第一步创建。

在此处输入图像描述

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 )。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM