gpt4 book ai didi

drone - 使用 "Drone Conditions"运行构建存储库的一部分

转载 作者:行者123 更新时间:2023-12-03 13:42:30 24 4
gpt4 key购买 nike

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

build:
when:
branch:
- master
- our-project/*

问题是当我们尝试从“our-project/”分支向“master”拉取请求时,构建不会运行,我猜是因为它是在不在 master 或“our -项目/”

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

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

最佳答案

这个问题现在有多种解决方案。
首先,您可以使用 exit (78)跳过管道中后续步骤的代码,但此解决方法要求您定义多个可以跳过的管道。
例子:

- name: Check_src_for_changes
image: alpine/git
commands:
- if (git diff --exit-code $DRONE_COMMIT_BEFORE $DRONE_COMMIT_AFTER -- src); then exit 78; fi
此外,由于称为配置插件的 Drone 插件的新类别,目前可以处理多个扩展:
  • docs.drone.io/extensions/conversion
  • docs.drone.io/extensions/configuration

  • 任何人都可以使用无人机入门项目创建扩展
  • drone/boilr-convert
  • drone/boilr-config

  • 扩展可用于覆盖 Drone 获取 yaml 的方式,允许您即时创建或修改 yaml 文件。今天有多个扩展可以解决这个问题,您可以使用。以下是一些:
  • meltwater/drone-convert-pathschanged
  • bitsbeats/drone-tree-config
  • microadam/drone-config-changeset-conditional

  • 有关此问题的更多信息,请参阅 issue#1021

    关于drone - 使用 "Drone Conditions"运行构建存储库的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35706190/

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