gpt4 book ai didi

java - 用于具有多个项目的单一存储库的 Azure Pipelines 仅构建更新的一个

转载 作者:行者123 更新时间:2023-12-01 14:27:53 26 4
gpt4 key购买 nike

我正在尝试使用 Azure 管道为一个存储库中包含的多个 Java 项目构建 CI/CD。

为此,需要创建一个管道,该管道将使用 Maven@3 任务构建每个项目。问题是,当我们添加新项目时,我希望只构建这个项目,而不是之前的每个项目。我的文件看起来像:

    resources:
- repo: self
clean: true
lfs: true

trigger:
branches:
include:
- feature/*

variables:
- group: vars

stages:
- stage: Build
pool:
vmImage: 'image'
jobs:
- job: Build
strategy:
maxParallel: 4
steps:
- task: replacetokens@3
inputs:
targetFiles: 'settings.xml'
- task: Maven@3
inputs:
jdkVersionOption: 1.8
mavenPomFile: 'project1/pom.xml'
options: '-s $(Build.SourcesDirectory)\settings.xml'
goals: 'clean package'
- task: Maven@3
inputs:
jdkVersionOption: 1.8
mavenPomFile: 'project2/pom.xml'
options: '-s $(Build.SourcesDirectory)\settings.xml'
goals: 'clean package'

例如project1在develop中已经alraedy了,所以我不想为它做mvn包,而只为project2做mvn包,它没有合并并且有功能分支。

现在这个 yml 不起作用,因为 project1 和 project2 在同一个 repo 中,这两个任务将运行,我不想避免。

有没有办法说“onChange”???

最佳答案

不幸的是,这是不可能的,说实话,这是一种耻辱。

处理此问题的最简单方法是创建两个单独的构建。您要构建的每个项目都位于同一存储库中,并使用如下路径过滤器进行构建:

trigger:
branches:
include:
- master
- releases/*
paths:
include:
- docs/*
exclude:
- docs/README.md

使用步骤模板并定义单个构建任务或作业,然后您可以在多个构建中使用该任务或作业,以便在多个项目具有相同构建步骤时更易于维护。

文档链接:
https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema?view=azure-devops&tabs=schema%2Cparameter-schema#step-templates

然而,互联网上有一些指南,人们在其中编写了一些 Powershell 脚本来实现 mono repo 单一构建解决方案。

一个例子是这样的:

https://dev.to/nikolicbojan/azure-devops-yaml-build-for-mono-repository-with-multiple-projects-146g

关于java - 用于具有多个项目的单一存储库的 Azure Pipelines 仅构建更新的一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60490816/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com