Github 对拉取请求发表评论的 TeamCity 触发器
TeamCity trigger for Github comment on pull request
我在 TeamCity 上有我的 CI。它目前触发基于不同事件的构建(Pull Request
创建,合并到 Develop
分支等)。但是,我想知道是否可以通过编写特定的 comment/labelling a Pull Request
.
来触发特定的构建
目标 是在 Pull Request
获得批准后 运行 一组自动化 UI 测试(来自编码正确性点视图)并且该分支已准备好合并到 Develop
。我不想 运行 该分支上的每个提交的那组自动化 UI 测试,因为 运行 他们需要大约 1 小时,我不想 运行 它仅在合并该 PR 之后,因此我们避免将任何破坏 UI 测试的内容合并到 Develop
.
所需的流程 将是对该 PR 写一个特殊评论,例如 run_UI_test
或使用自定义标签标记 PR,以便在 CI 并且反馈显示在 Github.
的 PR 上
非常感谢您。
我认为 TeamCity 不知道 Github 上的评论,因为评论本身并未直接存储在分支中。我的假设是您有一个与此类似的 VCS Root:
+:refs/heads/master
+:refs/heads/develop
+:...
+:refs/pull/*/head
可以通过 GitHub "Issues API" 访问拉取请求的评论,但是,我认为这会给您的构建过程增加不必要的复杂性,并且会掩盖构建的方式被触发。
我的建议是遵循更传统的CI流程,通过新分支创建另一层"integration"。所以基本上你的流程应该是这样的:
- master(合并拉取请求以发布)
- 集成(运行UI自动化测试)
- 开发(运行 基本单元测试和其他内容)
所以基本上所有的开发都发生在 develop 或其他一些 "feature" 分支上。当所有基本测试都通过并且您准备好 "promote" 时,您可以合并到 integration 分支,这将触发您的 UI 测试。我还想指出,这个“integration”分支实际上可以只是 "pull requests",实际上不需要静态分支,具体取决于您的开发流程设置。
在 TC 中设置触发规则和分支过滤器要容易得多,然后编写一些自定义 REST API 脚本来处理 GitHub 问题 API。
您可以通过设置单独的构建配置来实现类似的功能,该构建配置利用特定的 VCS 触发器来 运行 UI 测试。此构建配置也将具有不同的构建步骤,其中包括执行测试的命令。
例如:在触发器中,您可以使用 +:comment=presubmit:**
添加一个新的 VCS 触发器 这将查找包含 "presubmit" 的任何提交消息并触发您的 UI 测试套件以运行.
我看到一些存储库使用 https://danger.systems 等工具编写自定义规则,这些规则可以在 Github 评论中查找文本并根据评论触发交互。
我在 TeamCity 上有我的 CI。它目前触发基于不同事件的构建(Pull Request
创建,合并到 Develop
分支等)。但是,我想知道是否可以通过编写特定的 comment/labelling a Pull Request
.
目标 是在 Pull Request
获得批准后 运行 一组自动化 UI 测试(来自编码正确性点视图)并且该分支已准备好合并到 Develop
。我不想 运行 该分支上的每个提交的那组自动化 UI 测试,因为 运行 他们需要大约 1 小时,我不想 运行 它仅在合并该 PR 之后,因此我们避免将任何破坏 UI 测试的内容合并到 Develop
.
所需的流程 将是对该 PR 写一个特殊评论,例如 run_UI_test
或使用自定义标签标记 PR,以便在 CI 并且反馈显示在 Github.
非常感谢您。
我认为 TeamCity 不知道 Github 上的评论,因为评论本身并未直接存储在分支中。我的假设是您有一个与此类似的 VCS Root:
+:refs/heads/master
+:refs/heads/develop
+:...
+:refs/pull/*/head
可以通过 GitHub "Issues API" 访问拉取请求的评论,但是,我认为这会给您的构建过程增加不必要的复杂性,并且会掩盖构建的方式被触发。
我的建议是遵循更传统的CI流程,通过新分支创建另一层"integration"。所以基本上你的流程应该是这样的:
- master(合并拉取请求以发布)
- 集成(运行UI自动化测试)
- 开发(运行 基本单元测试和其他内容)
所以基本上所有的开发都发生在 develop 或其他一些 "feature" 分支上。当所有基本测试都通过并且您准备好 "promote" 时,您可以合并到 integration 分支,这将触发您的 UI 测试。我还想指出,这个“integration”分支实际上可以只是 "pull requests",实际上不需要静态分支,具体取决于您的开发流程设置。
在 TC 中设置触发规则和分支过滤器要容易得多,然后编写一些自定义 REST API 脚本来处理 GitHub 问题 API。
您可以通过设置单独的构建配置来实现类似的功能,该构建配置利用特定的 VCS 触发器来 运行 UI 测试。此构建配置也将具有不同的构建步骤,其中包括执行测试的命令。
例如:在触发器中,您可以使用 +:comment=presubmit:**
添加一个新的 VCS 触发器 这将查找包含 "presubmit" 的任何提交消息并触发您的 UI 测试套件以运行.
我看到一些存储库使用 https://danger.systems 等工具编写自定义规则,这些规则可以在 Github 评论中查找文本并根据评论触发交互。