前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Jenkins Docker 镜像重大更新

Jenkins Docker 镜像重大更新

作者头像
LinuxSuRen
发布2021-04-13 14:29:07
9500
发布2021-04-13 14:29:07
举报
文章被收录于专栏:JenkinsJenkins

从 Jenkins 2.279 和 2.263.4 开始,Jenkins 项目会更新基础操作系统和 Java 的版本,涉及到的镜像包括:jenkins/jenkins:latestjenkins/jenkins:lts。会将 OpenJDK 8u242 替换为 AdoptOpenJDK 8u282,将 Debian 9 ("Stretch") 替换为 Debian 10 ("Buster")。

为什么?

我们更改基础镜像,是为了可以有更好的操作系统的支持,以及包含更多 Java 发行版本。

更好的操作系统支持

由 Jenkins 提供的 Docker 镜像依赖于操作系统提供者对于系统安全的维护。

我们的 Docker 镜像已经使用了 Debian 9 ("Stretch") 很多年。Debian 9 的安全更新已于 2020 年 7 月 6 日停止更新。Debian 9 长期支持版本的安全更新也将于 2022 年 6 月停止更新。使用 Debian 10 可以让我们得到由操作系统安全团队更好的维护。

更多 Java 发行版

Debian 9 Docker 镜像是基于 openjdk:8-jdk-stretch 的。它的最后一次更新是在一年前,包含 JDK 8u242. 我们需要一个及时维护的 Docker 基础镜像,和 JDK 发布以及操作系统的更新保持一定的节奏,这样控制器就可以运行在最新的 Java 以及操作系统的之上。

其他 Jenkins 控制器的基础镜像已经从 openjdk 切换为由 Eclipse Adoptium 提供的镜像。Eclipse Adoptium 是 AdoptOpenJDK 加入 Eclipse 基金会后成立的。镜像 jenkins/jenkins:latest 和 jenkins/jenkins:lts 已经采用了基础镜像 Adoptium JDK,与此同时使用 JDK 11 的 Jenkins 镜像也同样采用了新的基础镜像,例如:jenkins/jenkins:lts-jdk11。这是 Jenkins Platform SIG 和 Eclipse Adoptium 项目合作的成果。我们期待继续和对方合作。

非常感谢 Alex Earl 和 Jim Crowley 为镜像构建做了基础重构的工作,使得镜像升级变得容易。同时,也非常感谢 Oleg Nenashev 和其他贡献者在此过程中 review 已经测试工作。

发行包变更

基于 Debian 10 ("Buster") 的 Jenkins Docker 镜像中所包含的软件包会与 Debian 9 ("Stretch") 的有一些不同。部分软件包由于对应社区不再提供支持,已经被移除。另外有一些软件包则由于不再被广泛使用而移除。Jenkins Docker 镜像的用户如果还需要那些软件包的话,则需要自行定制镜像。

被移除的 SCM 软件包

Jenkins 控制器镜像 jenkins/jenkins:latest 以及 jenkins/jenkins:lts 中已经不再包含如下的软件配置管理包:

  • bzr
  • mercurial
  • subversion

其他被移除的软件包

Jenkins 控制器镜像中不再包含的其他软件包有:

  • bzip2
  • mime-support
  • python (the Python project stopped supporting Python 2 January 1, 2020)
  • xz-utils

你可以从 Pull Request 中看到完整的列表。

升级与兼容

Jenkins 控制器镜像设计时考虑到了可扩展性,以方便满足用户的需求。自定义 Jenkins 控制器镜像时,可以添加 Jenkins 插件以及其他操作系统软件包。

例如,在自定义 Docker 镜像中可以通过 Docker 的指令可以安装 Blue Ocean 插件和一些操作系统软件包。

带有 Subversion 的 Docker 镜像

下面的 Docker 镜像基于最新的 Jenkins 长期支持版,以及 subversion 插件和 subversion 命令:

代码语言:javascript
复制
FROM jenkins/jenkins:lts
USER root
RUN apt-get update && \
    apt-get install -y --no-install-recommends subversion
USER jenkins
RUN jenkins-plugin-cli --plugins subversion:2.14.0

从这个 Dockerfile 构建出一个新的镜像,并给一个合适的名称,例如:"myjenkins-subversion:1.1"

docker build -t myjenkins-subversion:1.1 .

带有 Mercurial 的 Docker 镜像

下面的 Docker 镜像基于最新的 Jenkins 长期支持版,以及 mercurial 插件和 hg 命令:

代码语言:javascript
复制
FROM jenkins/jenkins:latest
USER root
RUN apt-get update && \
    apt-get install -y --no-install-recommends mercurial
USER jenkins
RUN jenkins-plugin-cli --plugins mercurial:2.12

从这个 Dockerfile 构建出一个新的镜像,并给一个合适的名称,例如:"myjenkins-mercurial:1.1"

docker build -t myjenkins-mercurial:1.1 .

下一步?

Java 有新的版本发布后,我们会继续更新 Jenkins 的 Docker 镜像。

如果你对 Jenkins Docker 打包的新特性感兴趣的话,请持续关注后续的公告!你可以在 Jenkins 公开的 roadmap 上看到有多个正在进行中的计划。部分如下:

  • Switching to AdoptOpenJDK.
  • General availability of Windows images.
  • Support for more platforms (AArch64, IBM s390x, PowerPC).
  • Introducing multi-platform Docker images.

如果你对如上的任意项目感兴趣,并想要贡献的话,请联系平台特别兴趣小组,共同协作推进。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-04-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Jenkins 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 为什么?
  • 更好的操作系统支持
  • 更多 Java 发行版
  • 发行包变更
  • 被移除的 SCM 软件包
  • 其他被移除的软件包
  • 升级与兼容
  • 带有 Subversion 的 Docker 镜像
  • 带有 Mercurial 的 Docker 镜像
  • 下一步?
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档