Jenkins & Git - 哪个触发器最适合 运行 测试?
Jenkins & Git - Which is the most appropiate trigger to run tests?
我正在为一个主要系统 (Moodle) 开发插件,因此持续集成对我很有用。
我的想法是检查我要为其发布插件的 Moodle 稳定版本分支,以 运行 使用这些版本进行测试。
但是由于我从未使用过 Jenkins 或持续集成,所以我不清楚什么时候是触发 运行 测试构建的最佳时机。这些是 Jenkins 提供的构建触发器:
- 远程触发构建(例如,从脚本)
- 在构建其他项目后构建
- 定期构建(类似 cron;我认为不合适)
- 在将更改推送到 GitHub(可能是)
时构建
- 轮询 SCM(看不出与定期构建的区别)
除此之外,我们还有 Git 个钩子,乍一看我觉得它们比上面的更有趣。
- Pre/post 提交
- Pre/post 合并(仅对某些分支触发构建可能很好)
- Pre/post推
注意: Git Jenkins 插件在获取 Moodle 存储库时总是失败,似乎是因为它的尺寸太长(我不知道是否 Git 插件 es necessary/important 这种方法)。
关于触发器:
完全看你的选择或者项目的场景。但是,我会根据我对 Jenkins
.
的经验告诉你我的想法
Trigger builds remotely (e.g., from scripts)
总是手动触发构建很麻烦
Build after other projects are built
我从来没有用过它。也许它可以在非常特定的场景中使用(例如:当一个项目依赖于另一个项目时,或者如果项目太大而你想 运行 单独使用它)
Build periodically (cron-like; I don't think would be suitable)
将定期构建,如果代码没有更改则事件。如果启用了电子邮件触发器,它会用电子邮件打扰您。如果 mailing list
中还有其他人,那就更糟了
Build when a change is pushed to GitHub (could be)
如果您是一个人开发项目,并且希望在推送更改后立即看到结果,这很有用。但是,此选项有时不起作用。因此,解决方法是让 Poll SCM
每分钟检查一次更改。 (*/1 * * * *
)
Poll SCM (can't see difference with the periodic build)
主要区别在于 Poll SCM 不会在您指定的时间构建,而是首先检查是否有任何更改。如果根本没有变化,它就不会构建,而 Build periodically
会构建。
这是我最常使用的选项。这是一个非常有用的。我通常安排在晚上检查 启用电子邮件触发 并且早上要做的第一件事是检查电子邮件是否有任何构建失败
关于 Git 钩子:
如果您想为某些分支触发构建,您可以选择在 jenkins 上默认构建哪个分支。我也没有遇到过被迫使用 Git hooks 的情况。
我认为最适合您开发场景的触发器是:
- 将更改推送到 GitHub
时构建
因为它能让您尽快检测到集成错误(这是持续集成实践的主要好处之一)。
要充分利用此触发策略,您应该每天多次或至少每天将您的代码集成到共享存储库中。
The idea is to checkout Moodle stable version branches I want to publish the plugin for, to run the test with these versions.
对于这种情况,触发器:
- 每晚定期构建
是最合适的,因为集成测试通常比第一单元更长。
所以回顾一下:
- 运行 推送更改时进行单元测试 到 GitHub(测试您的插件)
- 运行 每晚集成测试(测试您的插件和 Moodle 之间的交互)
对于以下内容:
Apart from these, we have the Git hooks, which at first sight I find them more interesting that what is above.
- Pre/post commit
- Pre/post merge (could be nice for triggering builds only for certain branches)
- Pre/post push
请问另一个问题以更好地阐明它。
对于以下内容:
Note: Git plugin for Jenkins fails always when fetching Moodle repo, it seems because its quite long size (I don't know if Git plugin es necessary/important for this approach).
请问另一个提供堆栈跟踪的问题。
根据我的经验,最好的方法是在将提交推送到存储库时触发 "build"。我认为这就是 "continuous integration" 的意义所在。
最近,Mark Nielsen 开发了一个工具来帮助将 Moodle 插件的测试与 Travis CI 工具 (http://travis-ci.org/) 集成。
"The tool provides a template of the travis configuration file - perfectly documented - as well as excellent usage information." (https://moodle.org/mod/forum/discuss.php?d=323384).
该工具允许您运行 多项测试,如 php 和 js lint、moodle 自己的代码风格检查器以及 php 单元和 behat 测试。它还使用 mysql 和 postgresql 数据库的多个版本 PHP 进行测试。您也可以在不同版本的 Moodle 中测试您的插件,但默认分支是 MOODLE_30_STABLE.
我正在为一个主要系统 (Moodle) 开发插件,因此持续集成对我很有用。
我的想法是检查我要为其发布插件的 Moodle 稳定版本分支,以 运行 使用这些版本进行测试。
但是由于我从未使用过 Jenkins 或持续集成,所以我不清楚什么时候是触发 运行 测试构建的最佳时机。这些是 Jenkins 提供的构建触发器:
- 远程触发构建(例如,从脚本)
- 在构建其他项目后构建
- 定期构建(类似 cron;我认为不合适)
- 在将更改推送到 GitHub(可能是) 时构建
- 轮询 SCM(看不出与定期构建的区别)
除此之外,我们还有 Git 个钩子,乍一看我觉得它们比上面的更有趣。
- Pre/post 提交
- Pre/post 合并(仅对某些分支触发构建可能很好)
- Pre/post推
注意: Git Jenkins 插件在获取 Moodle 存储库时总是失败,似乎是因为它的尺寸太长(我不知道是否 Git 插件 es necessary/important 这种方法)。
关于触发器:
完全看你的选择或者项目的场景。但是,我会根据我对 Jenkins
.
Trigger builds remotely (e.g., from scripts)
总是手动触发构建很麻烦
Build after other projects are built
我从来没有用过它。也许它可以在非常特定的场景中使用(例如:当一个项目依赖于另一个项目时,或者如果项目太大而你想 运行 单独使用它)
Build periodically (cron-like; I don't think would be suitable)
将定期构建,如果代码没有更改则事件。如果启用了电子邮件触发器,它会用电子邮件打扰您。如果 mailing list
Build when a change is pushed to GitHub (could be)
如果您是一个人开发项目,并且希望在推送更改后立即看到结果,这很有用。但是,此选项有时不起作用。因此,解决方法是让 Poll SCM
每分钟检查一次更改。 (*/1 * * * *
)
Poll SCM (can't see difference with the periodic build)
主要区别在于 Poll SCM 不会在您指定的时间构建,而是首先检查是否有任何更改。如果根本没有变化,它就不会构建,而 Build periodically
会构建。
这是我最常使用的选项。这是一个非常有用的。我通常安排在晚上检查 启用电子邮件触发 并且早上要做的第一件事是检查电子邮件是否有任何构建失败
关于 Git 钩子: 如果您想为某些分支触发构建,您可以选择在 jenkins 上默认构建哪个分支。我也没有遇到过被迫使用 Git hooks 的情况。
我认为最适合您开发场景的触发器是:
- 将更改推送到 GitHub 时构建
因为它能让您尽快检测到集成错误(这是持续集成实践的主要好处之一)。
要充分利用此触发策略,您应该每天多次或至少每天将您的代码集成到共享存储库中。
The idea is to checkout Moodle stable version branches I want to publish the plugin for, to run the test with these versions.
对于这种情况,触发器:
- 每晚定期构建
是最合适的,因为集成测试通常比第一单元更长。
所以回顾一下:
- 运行 推送更改时进行单元测试 到 GitHub(测试您的插件)
- 运行 每晚集成测试(测试您的插件和 Moodle 之间的交互)
对于以下内容:
Apart from these, we have the Git hooks, which at first sight I find them more interesting that what is above.
- Pre/post commit
- Pre/post merge (could be nice for triggering builds only for certain branches)
- Pre/post push
请问另一个问题以更好地阐明它。
对于以下内容:
Note: Git plugin for Jenkins fails always when fetching Moodle repo, it seems because its quite long size (I don't know if Git plugin es necessary/important for this approach).
请问另一个提供堆栈跟踪的问题。
根据我的经验,最好的方法是在将提交推送到存储库时触发 "build"。我认为这就是 "continuous integration" 的意义所在。
最近,Mark Nielsen 开发了一个工具来帮助将 Moodle 插件的测试与 Travis CI 工具 (http://travis-ci.org/) 集成。
"The tool provides a template of the travis configuration file - perfectly documented - as well as excellent usage information." (https://moodle.org/mod/forum/discuss.php?d=323384).
该工具允许您运行 多项测试,如 php 和 js lint、moodle 自己的代码风格检查器以及 php 单元和 behat 测试。它还使用 mysql 和 postgresql 数据库的多个版本 PHP 进行测试。您也可以在不同版本的 Moodle 中测试您的插件,但默认分支是 MOODLE_30_STABLE.