【问题标题】:Bamboo Can not detect repository commit when flask application is running烧瓶应用程序运行时,Bamboo 无法检测存储库提交
【发布时间】:2019-11-25 06:57:28
【问题描述】:

我正在制定一个有两个任务的Bamboo 计划,

  1. 从 git 查看源代码

  2. 运行烧瓶 (Python) 应用程序

当 git 存储库中发生新的提交时,我想在 Bamboo 中执行上述计划。

我已经按照Bamboo Documentation配置了我的项目

但是,在执行第二个任务(Python 应用程序)后,Bamboo 无法检测到提交更改,也没有执行任务。

只有在所有任务都停止时才有效。

【问题讨论】:

  • Bamboo 任务是完成运行还是“挂起”在您运行 Flask 应用程序的任务上(即构建是成功完成还是继续运行)?
  • @WesleyRolnick:它一直在运行。因此,我认为 Bamboo 无法检测到 Git 上的另一个提交。我该如何解决这个问题?
  • @WesleyRolnick:关于如何解决这个问题的任何想法。

标签: python git flask continuous-integration bamboo


【解决方案1】:

Bamboo 本身正在运行 Flask 应用程序,而不是您的系统。结果,Bamboo 构建永远不会完成,并且与此构建计划相关的所有其他 Bamboo 线程都被锁定。 Bamboo 任务通常会一直运行,直到收到退出代码,而这在您的 Flask 应用程序运行时永远不会发生。

您应该在竹子之外运行烧瓶应用程序,而不是尝试从 Bamboo 运行代码。然后,您可以在源代码更改时从 Bamboo 中触发重新加载您的烧瓶应用程序。这将需要:

  1. 设置 Bamboo 检测设置以触发代码更改(您有此设置,即使当前已被阻止,它听起来也能正常工作)。
  2. 有一个检查源代码的任务 - 但检查它到您将要运行 Flask 应用程序的目录。
  3. 配置您的烧瓶应用程序以在 Bamboo 之外查看此源代码文件夹。当源代码更新时,它将重新加载应用程序。 Flask documentation 解释了这一点,但你也可以用这一行来做到这一点:
$ FLASK_APP=main.py FLASK_DEBUG=1 python -m flask run

这里有几个关于如何使用最新代码更改重新加载烧瓶应用程序的好答案:

Auto reloading python Flask app upon code changes

How to reload python module in flask?

【讨论】:

  • 3.使用脚本任务触发Flask应用程序的重新加载,如果我将其添加为任务,我的问题是一旦flask应用程序开始运行,它无法识别Git中的提交.
  • @VineeshTP:我的答案的第 3 部分已更新以进行澄清。更新 Flask python 代码或至少让它监视文件夹中的代码更改。 Bamboo 根本不应该运行 python,因为它会阻塞。
【解决方案2】:

通过在 Bamboo 中使用 docker 解决。工作正常。

完成以下操作。

  • 从存储库中签出源代码

  • 在 Bamboo 中创建 docker 容器作为任务

  • 使用竹子运行 docker 容器。

使用 docker 文件安装 python 依赖项

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-12-25
    • 1970-01-01
    • 2021-12-22
    • 1970-01-01
    • 2018-12-13
    • 1970-01-01
    • 1970-01-01
    • 2020-04-16
    相关资源
    最近更新 更多