YAML for Azure Pipeline for MonoRepo code on a self-hosted agent
YAML for Azure Pipeline for MonoRepo code on a self-hosted agent
我是 Azure Devops 的新用户,我需要为托管在 Azure Repos 上的单存储库项目创建一个 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" 目录中的工件
这里的任何人都可以帮助我解决这个要求或指出任何例子吗?非常感谢您的帮助
您可以按照以下步骤为 LinuxProject 创建 yaml 管道:
1,创建一个 yaml 文件并提交到您的 azure 存储库 (eg.LinuxProject-pipeline.yml)。
2,从您的 Azure 项目门户创建一个 yaml 管道。
Sign in to your Azure DevOps organization and navigate to your project.
In your project, navigate to the Pipelines page. Then choose the action to create a new pipeline.
Walk through the steps of the wizard by first selecting Azure Repos Git as the location of your source code.
Walk through the steps of the wizard and Choose Existing Azure Pipelines Yaml file. And select file LinuxProject-pipeline.yml
created in the 1st step in the prompted 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 中发生更改时被触发。有关 触发器
的更多信息,请参阅 here
池,将其值定义为您的自托管代理 (RepoABuild) 所在的代理池的名称。 (如果代理池中有多个自托管代理,请选中 以使用需求)
将 bash 任务添加到 运行 bash 命令
添加 ArchiveFiles 任务以存档您的构建结果。
您可能需要根据您的项目稍微更改上面的 yaml 文件。您可以参考以下步骤为其他两个项目创建管道。
请先查看 get started document。
Here 是关键的流水线基本概念。
Here 是 Yaml 架构参考。
Here 是您可以直接在您的管道中使用的预定义变量(例如上面存档文件任务中的 $(Build.ArtifactStagingDirectory) 是指代理机器中的 foler c:\agent_work\a
) .
我是 Azure Devops 的新用户,我需要为托管在 Azure Repos 上的单存储库项目创建一个 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" 目录中的工件
这里的任何人都可以帮助我解决这个要求或指出任何例子吗?非常感谢您的帮助
您可以按照以下步骤为 LinuxProject 创建 yaml 管道:
1,创建一个 yaml 文件并提交到您的 azure 存储库 (eg.LinuxProject-pipeline.yml)。
2,从您的 Azure 项目门户创建一个 yaml 管道。
Sign in to your Azure DevOps organization and navigate to your project.
In your project, navigate to the Pipelines page. Then choose the action to create a new pipeline.
Walk through the steps of the wizard by first selecting Azure Repos Git as the location of your source code.
Walk through the steps of the wizard and Choose Existing Azure Pipelines Yaml file. And select file
LinuxProject-pipeline.yml
created in the 1st step in the prompted 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 中发生更改时被触发。有关 触发器
的更多信息,请参阅 here池,将其值定义为您的自托管代理 (RepoABuild) 所在的代理池的名称。 (如果代理池中有多个自托管代理,请选中
将 bash 任务添加到 运行 bash 命令
添加 ArchiveFiles 任务以存档您的构建结果。
您可能需要根据您的项目稍微更改上面的 yaml 文件。您可以参考以下步骤为其他两个项目创建管道。
请先查看 get started document。
Here 是关键的流水线基本概念。
Here 是 Yaml 架构参考。
Here 是您可以直接在您的管道中使用的预定义变量(例如上面存档文件任务中的 $(Build.ArtifactStagingDirectory) 是指代理机器中的 foler c:\agent_work\a
) .