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

The following text is a partial translation of the original English article, performed by ChatGPT (gpt-3.5-turbo) and this Jekyll plugin:

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

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

首先,我从我的 AppVeyor 账户获取了一个令牌(撰写本文时位于此处)。我创建了一个名为 curl-appveyor.cfg 的文本文件,内容如下(其中并非是我的真实令牌,只是一个示例):

然后,我使用rultor命令行工具对该文件进行了加密。

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

然后,我从Docker脚本中配置了AppVeyor的“ping”功能。这是我在.rultor.yml中所做的。

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

为了解析AppVeyor的JSON输出,我使用jq

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

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

Translated by ChatGPT gpt-3.5-turbo/42 on 2023-12-15 at 06:48

sixnines availability badge   GitHub stars