QR code

How AppVeyor Helps Me to Validate Pull Requests Before Rultor Merges Them

  • Translated by to

AppVeyor 是一个很棒的云持续集成服务,用于构建 Windows 项目。Rultor 是一个 DevOps 助手,使用 Docker 容器自动化发布、合并和部署操作。这些文章解释了 Rultor 是如何工作的以及它的用途:Rultor.com,一个合并机器人和主分支必须是只读的。

问题在于 Rultor 在 Docker 容器中运行所有脚本,而 Docker 无法构建 Windows 项目。唯一且最好的逻辑解决方案是在运行所有其他脚本之前触发 AppVeyor。如果 AppVeyor 给出绿灯,我们将继续使用我们常规的 Docker 脚本。否则,整个构建将失败。下面我将解释如何在 Takes 框架 中配置了这个自动化过程。

首先,我从我的 AppVeyor 账户获取了一个令牌(写作时的链接是这里)。我创建了一个名为 curl-appveyor.cfg 的文本文件,内容如下(里面并不是我的真实令牌,只是一个示例):

然后,我使用 rultor 命令行工具对这个文件进行了加密:

我创建的文件名为curl-appveyor.cfg.asc。我将其提交并推送到yegor256/takes GitHub存储库中。

然后,我从Docker脚本中配置了AppVeyor的“pinging”。这就是我在.rultor.yml中所做的事情:

这里没有什么魔法,很简单。首先,我使用AppVeyor REST API/api/builds端点开始一个新的构建。${pull_id}是一个来自Rultor的环境变量,它包含当前拉取请求的整数编号。

我在使用jq来解析AppVeyor的JSON输出。

一旦构建开始,我会获取其唯一的version并开始循环检查其状态。我会等待successfailed。其他任何情况都意味着构建仍在进行中,我应该继续循环。

你可以在这个拉取请求中看到它是如何工作的,例如:yegor256/takes#93

Translated by ChatGPT gpt-3.5-turbo/42 on 2026-02-18 at 13:44

sixnines availability badge  GitHub stars