发布支持旧版软件包版本的错误修复
编辑发布支持旧版软件包版本的错误修复编辑
在某些情况下,当我们不再支持旧版堆栈版本,但后来发现需要为某个旧版软件包版本添加错误修复时,我们需要手动进行一些更改才能将错误修复发布给用户。例如:在这个 PR (AWS 软件包版本 1.23.4)中,对 Kibana 版本 7.x 的支持已被删除,并且 AWS 软件包版本从 1.19.5 提升到了 1.20.0。但是,我们在 EC2 仪表板中发现了一个错误,需要使用 Kibana 版本 7.x 修复。因此,我们不需要添加新的 AWS 软件包版本 1.23.5,而需要在 1.19.5 和 1.20.0 之间进行修复。
请按照以下详细步骤发布给定软件包版本的修复程序
-
查找需要修复的 Git 提交(软件包版本)
在上例中,要修复的提交是更新软件包
aws
的此 PR 之前的提交。-
使用网页
-
查找 PR 的合并提交
- https://github.com/elastic/integrations/commit/aa63e1f6a61d2a017e1f88af2735db129cc68e0c
- 它可以在 PR 的最后几条消息中找到
- 然后显示该软件包文件夹(例如
packages/aws
)中该变更集的先前提交。 - https://github.com/elastic/integrations/commits/aa63e1f6a61d2a017e1f88af2735db129cc68e0c/packages/aws/
-
-
使用命令行
cd packages/<package_name> git log --grep "#<pr_id>" . git log -n 1 <merge_commit>^ . # following the example $ cd packages/aws $ git log --grep "#3688" commit aa63e1f6a61d2a017e1f88af2735db129cc68e0c Author: Joe Reuter <[email protected]> Date: Mon Aug 8 17:14:55 2022 +0200 Inline all aws dashboards (#3688) * inline all aws dashboards * format * apply the right format * inline again * format $ git log -n 1 aa63e1f6a61d2a017e1f88af2735db129cc68e0c^ . commit 8cb321075afb9b77ea965e1373a03a603d9c9796 Author: Mario Castro <[email protected]> Date: Thu Aug 4 16:52:06 2022 +0200 Move lightweight manifest to integration for EBS data stream (#3856)
-
-
运行 integrations-backport 管道 https://buildkite.com/elastic/integrations-backport 以创建回退分支。
请注意!,如果只运行管道,它将等待您的输入,如果没有输入,将不会发生任何事情。
管道的输入
-
DRY_RUN (默认值: "true"),如果 DRY_RUN 定义为 "true",它将检查
- 软件包是否已发布,
- 输入的提交是否存在,
- 回退分支是否存在。此外,它还将创建本地分支,使用
.buildkite
和.ci
文件夹更新分支,并删除除定义的软件包之外的其他软件包(如果设置为输入)。在此模式下,此本地分支不会被推送到上游存储库。
如果 DRY_RUN 定义为 "false",除了上面所述的操作之外,它还将创建一个提交并将本地分支推送到上游存储库 https://github.com/elastic/integrations.git。在这种情况下,分支的名称将是
+backport-${PACKAGE_NAME}-${TRIMMED_PACKAGE_VERSION}+
,例如backport-aws-1.19
。- BASE_COMMIT (默认值: "") - 输入上一步的提交(8cb321075afb9b77ea965e1373a03a603d9c9796)
- PACKAGE_NAME (默认值: "") - 输入软件包名称,例如 aws
- PACKAGE_VERSION (默认值: "") - 输入软件包版本,例如:1.19.7、1.0.0-beta1
- REMOVE_OTHER_PACKAGES (默认值: "false") 如果 REMOVE_OTHER_PACKAGES 定义为 "true",则 packages 文件夹中的所有软件包(除定义的软件包外)将从创建的分支中删除。
-
-
为错误修复创建 PR
在您自己的远程仓库中创建一个新分支(建议 不要使用 以
backport-
开头的分支名称),并在其中应用错误修复。请记住在软件包清单中更新版本(更新补丁版本,例如1.19.<x+1>
)并为此补丁版本添加新的变更日志条目。准备就绪后,打开一个 PR,选择上面创建的分支作为基线分支:
backport-<package_name>-<package_major_version>.<package_minor_version>
(例如backport-aws-1.19
)。此 PR 合并后,此新版本的软件包将按照通常的 CI/CD 作业自动发布。
如果需要为此版本发布新的修复程序,则无需创建新分支。只需创建一个新 PR 将新分支合并到之前创建的相同回退分支。
-
在 main 中更新变更日志
PR 合并到相应的回退分支后(例如
backport-aws-1.9
)并发布软件包后,应手动创建一个新的拉取请求以更新 main 分支中的变更日志,以包括在回退分支中发布的新版本。请注意,应按照版本顺序添加变更日志条目。为了跟踪,此新 PR 在其描述中也应该包含对回退 PR 的引用(相关)。
-
已知问题及其解决方案
-
缺少 shellinit 命令
-
错误示例:https://buildkite.com/elastic/integrations/builds/7634#018c87f4-7b0c-4d6f-8ddd-b779a9a7a019/507-512
错误:无法创建 Kibana 客户端:未定义的环境变量:ELASTIC_PACKAGE_KIBANA_HOST。如果您使用 elastic-package 工具启动了 Elastic 堆栈,请使用“eval "$(elastic-package stack shellinit)“ 加载堆栈环境变量,或手动设置其值
-
解决方案:在
.buildkite/scripts/common.sh
中添加 elastic-package stack shellinit 命令。-
eval "$(elastic-package stack shellinit)"
-
-
-
找不到许可证文件
-
错误示例:https://buildkite.com/elastic/integrations/builds/7644#018c883c-546f-4d32-ab4a-71e919ddebf8/270-309
错误:检查软件包失败:构建软件包失败:复制许可证文本文件:查找许可证“licenses/Elastic-2.0.txt”失败:找不到存储库许可证:stat /opt/buildkite-agent/builds/bk-agent-prod-gcp-1703092724145948143/elastic/integrations/licenses/Elastic-2.0.txt:没有此文件或目录
-
解决方案:删除定义
ELASTIC_PACKAGE_REPOSITORY_LICENSE
环境变量的行。
-
-