如何使用 Mend Renovate 管理 ORDS 和 Oracle APEX 版本?
可以用 Renovate 的 regex custom manager 更新这两个 ARG,但需要先提供与 Oracle 下载包对应的版本来源。还要核对原配置中 github-releases 指向的仓库:正则匹配成功,不代表能发现正确的更新。
以下配置基于官方机制,需要接入自己的版本清单并验证下载地址。现有材料不足以确认一份已用于实际生产环境的 ORDS/APEX 配置。
为什么原配置可能找不到更新?
github-releases 查询的是指定 GitHub 仓库的 Releases,不会根据后面的 wget 地址自动到 Oracle 下载站查找版本。因此,需要确认 oracle/oracle-db-examples 和 oracle/apex 的 Releases 是否确实提供所需产品的版本。Renovate GitHub Releases 文档
oracle/apex 的 README 将仓库内容描述为示例应用、示例代码和插件,并按 APEX 版本提供分支。分支名称不能直接作为该仓库发布完整 APEX 安装包的依据。Oracle APEX 仓库说明
还需要核对下载包使用的版本字符串。APEX 23.2 官方安装指南列出的文件名是 apex_23.2.zip 和 apex_23.2_en.zip,而原代码会拼出 apex_23.2.0.zip。产品版本与制品文件名不能直接画等号。APEX 23.2 安装指南
如何配置可控的版本来源?
如果没有合适的现成数据源,可以用 customDatasources 读取自行维护的 JSON 清单。清单应根据 Oracle 官方发布信息和实际制品整理,也可以由独立任务定期生成。
假设你在自己的 HTTPS 服务上提供两个文件:
https://versions.example.com/oracle/ords.jsonhttps://versions.example.com/oracle/apex.json
以上地址都是占位地址,必须替换。清单的最小结构如下:
{
"releases": [
{ "version": "23.2" }
]
}
这是 APEX 清单的结构示例。ORDS 清单采用相同结构,但应填写已核对过的 ORDS 完整制品版本。需要持续加入新的真实版本,Renovate 才有更新可供选择。自定义数据源文档
Dockerfile 和 Renovate 配置怎么写?
先将依赖指向自定义数据源:
# renovate: datasource=custom.oracle depName=ords
ARG ORDS_VERSION=24.1.0
# renovate: datasource=custom.oracle depName=apex
ARG APEX_VERSION=23.2
这里保留原问题中的 ORDS 值,仅用于展示提取方式。它是否能直接用于下载包地址,仍需另行核对。APEX 示例使用安装指南中的基础安装包版本字符串。
对应的 renovate.json:
{
"customManagers": [
{
"customType": "regex",
"managerFilePatterns": ["/(^|/)Dockerfile$/"],
"matchStrings": [
"#\\s*renovate:\\s*datasource=(?<datasource>\\S+)[ \\t]+depName=(?<depName>\\S+)[ \\t]*\\r?\\n[ \\t]*ARG[ \\t]+(?:ORDS|APEX)_VERSION=(?<currentValue>[^\\s#]+)"
],
"versioningTemplate": "loose"
}
],
"customDatasources": {
"oracle": {
"defaultRegistryUrlTemplate": "https://versions.example.com/oracle/{{{packageName}}}.json",
"format": "json"
}
}
}
该正则要求注释紧邻 ARG,且版本值不带引号。它直接捕获 datasource、depName 和 currentValue,因此无需另填对应的两个模板字段。如果配置了 enabledManagers,还需将 custom.regex 加入允许列表。regex manager 文档
loose 用于处理可能不符合标准 SemVer 的制品版本。接入真实版本清单后,仍应检查排序是否符合预期。
当前文档使用 managerFilePatterns,原来的 fileMatch 是旧名称。现行 Renovate 支持迁移已有配置,因此不能仅凭这个字段认定原配置失败。配置字段说明
如何确认更新链路正常?
依次检查以下环节:
- 在 Renovate 日志中确认 Dockerfile 被扫描,并提取出
ords、apex及其当前版本。 - 确认 Renovate 运行环境能访问版本清单,且返回内容符合
releases[].version结构。 - 在清单中加入一个经过核验且高于当前值的版本,观察 Renovate 是否提出更新。
- 对更新后的 Dockerfile 执行构建,检查下载地址、ZIP 内容和安装流程。
Renovate 能发现新版本,并不保证通过字符串拼接得到的下载地址有效。ORDS 应以官方实际下载链接为准;APEX 的基础安装包与补丁包也应分别处理。合并版本更新前,还需确认目标 ORDS、APEX、数据库及 Java 的兼容要求。ORDS 官方下载页面
备注:内容仅供参考。
