【问题标题】:Bamboo Generic Build Plan竹通用构建计划
【发布时间】:2014-02-23 12:56:54
【问题描述】:

我有很多小项目(~100 个),我希望使用竹子来构建和部署到 nexus。与其在竹子中创建 100 多个构建计划,还有一种方法可以让一个构建计划监控我们的单一源存储库(比如 git)检测其中一个项目(通常只有一个文件)中的更改,签出这个文件并运行通用脚本在这个项目上?

如果这是不可能的,有没有一种方法可以以编程方式生成这些构建计划,而不是使用竹 gui

【问题讨论】:

    标签: git maven build gradle bamboo


    【解决方案1】:

    一种方法是使用 运行所有测试并为您上传档案。假设你的子程序是Foo, Bar

    - 示例 - http://www.gradle.org/docs/current/userguide/multi_project_builds.html

    ======== 分级

    在根处定义 build.gradle 包含您的依赖项,定义 settings.gradle 并只有以下行

    include 'Foo', 'Bar'
    

    对于您的子项目 - 他们可以选择拥有自己的 build.gradle 脚本

    ======== MAVEN

    - 示例 - http://books.sonatype.com/mvnex-book/reference/multimodule.html

    你在根目录声明一个简单的父节点,然后像这样定义模块

    <modules>
        <module>Foo</module>
        <module>Bar</module>
    </modules>
    

    对于您的每个程序,您定义您的 pom 并使用 &lt;artifactId&gt;Foo&lt;/artifactId&gt; 标识

    【讨论】:

    • 我更多的是寻找一些只发布那些已更改的工件的工具。因此,一些脚本或程序可以从这个存储库中的 git/bamboo 获取有关哪些模块已更改的信息,并使用一些通用部署脚本部署这些文件
    • Aah 在这种情况下,您需要为每个构建提供单独的脚本,该脚本仅在事情发生变化时运行。很难只有 1 个构建“知道”发生了什么变化并且只上传它。从理论上讲,您可以对所有工件运行 cksum,检查存储的 txt 文档然后上传,我只是在想它:)
    • 阅读这个文档:confluence.atlassian.com/display/BAMBOO/… 让我觉得竹子可以并且被传递有关存储库更改的信息,如果它可以以某种方式将此信息转发到构建脚本,这是可能的
    • BAMBOO 和其他 CI 的工作方式是在代码服务器上放置一个接收后挂钩。当您将代码发布到 CI 服务器时,BAMBOO 只知道发生了更改并触发了构建。发生了什么变化将不得而知。或者另一种方式是 CI 服务器将轮询代码服务器以找出在过去 5 分钟内是否有任何变化,如果有变化,将触发构建,同样 CI 服务器将不知道发生了什么变化。
    • 如果您使用的是 git,那么在 post-receive 钩子中,您可以添加获取旧版本和新版本 - cf stackoverflow.com/questions/3762084/…janosgyerik.com/…。然后,您可以获得更改的文件列表git diff --name-only $oldrev $newrev,然后您的 bash 脚本可以确定它来自哪个模块并仅上传该模块
    猜你喜欢
    • 2019-07-13
    • 2018-06-13
    • 1970-01-01
    • 2017-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-02
    • 2016-11-02
    相关资源
    最近更新 更多