使用“无人机条件”运行构建部分存储库

Mer*_*sen 7 drone.io drone

我们的项目嵌套在单一存储库中。想象一下,我们在“projects”文件夹中有一个项目。例如“项目/我们的项目”。好吧,我们希望能够将我们的 .drone.yml 检查到“我们的项目”中,但看起来 Drone 想要项目根目录下的配置文件,这没关系,我们可以通过更改“命令”部分。我们遇到的麻烦是我们只想在“我们的项目”中的某些内容发生变化时运行构建。我找不到用 Drone 精确做到这一点的方法,所以我们下一个最接近的赌注是条件,我想我们可以为“我们的项目”创建命名空间的所有分支,比如“我们的项目/某个分支”。然后我们可以设置一个条件,只在“our-project/some-branch”和“master”上运行构建,这将限制我们从其他项目分支运行的“假构建”的数量:

build:
  when:
    branch:
      - master
      - our-project/*
Run Code Online (Sandbox Code Playgroud)

问题是当我们尝试将请求从“our-project/ ”分支拉到“master”时,构建不会运行,我猜是因为它是在不在 master 或“我们的”中的合并提交上运行的-项目/

我的问题有两个方面:1. 使用单存储库模式(多个项目,一个存储库)利用无人机的最佳方法是什么 2. 如果 Drone 不支持该模式或不是为它设计的,那么什么是限制“假构建”的最佳解决方法

注意:我们可以在构建开始时检查子文件夹中的更改,如果没有则返回绿色。我这是推荐的方法吗?

Dan*_*edo -1

我猜想 Drone 会强制执行特定的项目布局,因为有一个限制:

  • Drone 由以下事件触发:推送、拉取请求、标记、部署。所有触发器都是存储库级别事件。

以下两个约束也很重要,但在这种情况下不是决定性的:

  • 一个存储库,一个.drone.yml,一个管道
  • .drone.yml必须位于项目根目录中

如果您有一个包含多个项目的存储库,无论结构如何,您都无法根据正在更新的特定资产触发构建管道。

如果您有大型多模块项目,并且不想在每次推送时构建整个项目,最好的办法是重构项目,将每个模块放置在自己的存储库中,并配置 Drone 管道以触发下游/上游构建根据需要依赖于依赖项/依赖项。