解决 Jenkins 插件安装中的 HTTP2 Framing Layer 错误

118次阅读
没有评论

问题描述

在创建自定义 Jenkins Docker 镜像时,您需要安装一些 Jenkins 插件。为此,您通过将以下行添加到 Dockerfile 中来执行安装操作:

COPY plugins.txt /usr/share/jenkins/ref/
ENV CURL_CONNECTION_TIMEOUT=60
RUN /usr/local/bin/install-plugins.sh < /usr/share/jenkins/ref/plugins.txt

然而,在尝试安装插件时,您遇到了 HTTP2 Framing Layer 错误,导致插件下载失败。您在多个插件的情况下多次遇到这个错误,有时安装会在某个点上无进展。

解决方案

在解决这个问题之前,您可以尝试将插件下载从 HTTP2 强制更改为 HTTP 1.1。以下是可能的解决方法:

解决方案 1:强制使用 HTTP 1.1 下载插件

Dockerfile 中添加以下内容来将插件下载从 HTTP2 更改为 HTTP 1.1:

COPY plugins.txt /usr/share/jenkins/ref/
ENV CURL_OPTIONS -sSfL --http1.1
ENV CURL_CONNECTION_TIMEOUT 60
RUN /usr/local/bin/install-plugins.sh < /usr/share/jenkins/ref/plugins.txt

这样做将在插件下载时使用 HTTP 1.1,可能能够避免 HTTP2 Framing Layer 错误。

注意: 在进行任何更改之前,强烈建议您在进行操作前备份相关文件或镜像,以便可以回滚到以前的状态。

解决方案 2:检查网络和代理设置

HTTP2 Framing Layer 错误可能与网络连接或代理设置有关。确保您的网络连接稳定,并且没有阻止插件下载的代理设置。您还可以尝试在不同的网络环境下进行安装,以查看问题是否有所改善。

解决方案 3:查看脚本和工具

您可以审查 Jenkins Docker 镜像的插件安装脚本 install-plugins.sh,以了解是否有任何与 HTTP2 相关的问题。此外,您还可以考虑尝试使用不同的工具或方法来管理插件的下载和安装,可能会有不同的结果。

总结

通过在 Dockerfile 中强制使用 HTTP 1.1 下载插件,您可以尝试解决 HTTP2 Framing Layer 错误,从而使插件安装成功。如果问题仍然存在,您还可以检查网络连接和代理设置,以及审查相关的脚本和工具,以寻找更多解决方法。

提示: 请注意,不同版本的 Docker 和相关工具可能会导致操作细节或结果的差异。在进行任何更改之前,请务必详细查阅相关文档并做好备份工作。

本文提供的解决方案旨在帮助您尝试解决问题。如果问题仍然存在,建议您在相关技术社区或论坛上寻求更多帮助和建议。

正文完