Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Java 11 预览支持已在 Jenkins 2.155+ 中可用

Java 11 预览支持已在 Jenkins 2.155+ 中可用

作者头像
LinuxSuRen
发布于 2019-04-19 08:20:08
发布于 2019-04-19 08:20:08
96700
代码可运行
举报
文章被收录于专栏:JenkinsJenkins
运行总次数:0
代码可运行

NOTE: 这是由 Java 11 支持团队 联合撰写的博客。 在 12 月 18 号(UTC时间下午4点)我们也会在 Jenkins 在线 Meetup 展示对 Java 11 的预览支持。

Jenkins 作为领先的开源自动化服务器之一,目前仍然只支持到 Java 8。在 9 月 25 日 OpenJDK 11 发布了。这是一个长期支持版本,并将持续多年,我们想要在 Jenkins 项目中对这个版本进行全面的支持。在过去的一年中,许多贡献者一直致力于在项目中支持 Java 11(Jenkins JEP-211)。这是一条艰辛的道路,但是现在,代表 Jenkins Platform SIG,我们很高兴地宣布在 Jenkins 每周发布提供 Java 11 预览!

为什么我们需要 Java 11 的预览?

这是因为它可以提供给 Jenkins 贡献者和早期使用者一个在明年年初(译者注:此文发布于 2018 年)GA 发布之前尝试这些变化的途径。它也可以帮助我们进行更多的探索性测试,并且有希望在 Jenkins 正式地提供 Java 11 支持之前,解决大部分的问题。

在这篇文章中,我们将会介绍如何在 Java 11 环境下运行 Jenkins,还有如何调查兼容性问题并报告它们。

背景

你可能还记得,在 2018 年 6 月我们举办了一个针对 Java 10+ 支持的在线黑客马拉松。作为黑客马拉松的一部分,我们提供了 Java 11 的实验性支持。这次活动对我们来说非常成功。我们可以在 Java 10 和 Java 11-ea 环境下运行 Jenkins 以及一些主要的功能 —— 包括流水线、JobDSL、Docker/Kubernetes plugin、Configuration as Code、BlueOcean 等。它让我们相信我们可以在 Jenkins 中提供Java 11支持而不会发生破坏性变化。在这场马拉松之后 Oleg Nenashev 创建了 "Java 10+ support in Jenkins"(之后修改为只针对支持 Java 11)。Jenkins Platform SIG 也已成立,以协调 Java 11 的支持工作和其他平台的支持工作(打包,操作系统支持等)。

一组贡献者一直持续致力于 Java 11 支持,他们主要在关注上游的功能性补丁、在开发工具中提供 Java 11 支持、测试和解决已知的兼容性问题。详细的状态的更新,请参阅 Platform SIG 的会议记录。从 Jenkins 2.148 开始,Jenkins 在多个不同的 LinuxWindows 平台下成功的在最新的 OpenJDK 11 版本下运行。我们进行了大量的自动化和探索性测试,除了一些例外(见下文),大部分 Jenkins 插件运行良好。GA 版本发布需要的自动化测试工作还在进行,但是我们已经成功的运行了 Jenkins core 的测试,通过了全部的 Acceptance Test Harness,以及在推荐插件上运行通过了 Plugin Compat Tester。我们也部署了一个临时的为 Java 11 搭建的 Experimental Update Center,可以为 Java 11 的早期采用者提供快速的问题修复。使用Java 11 运行时,Jenkins 2.155+ 将会默认使用此更新中心,这就是我们宣布此版本的预览可用性的原因。

在 2018 年 11 月 19 日,我们在 Platform SIG 会议的幻灯片上展示了当前的 Java 11 支持的状态,我们同意发布 Java 11 的可用性预览,以便我们可以提供内容让 Jenkins 用户得以进行评估。 在 12 月 4 日的下一次会议上,所有障碍都已得到解决,Platform SIG 会议签署发布了Java 11 预览版。

在 Docker 中运行 Jenkins 和 Java 11

从 Jenkins 2.155 开始,我们开始为 Jenkins master 和 agent 提供 Docker 镜像。 所有这些镜像都基于官方的由 Docker 社区维护的 openjdk:11-jdk 镜像。这里有一些关于迁移到其他基本镜像的讨论,但是我们决定在预览可用性的范围中将其排除。基于同样的原因,我们目前不提供 Alpine 镜像。

Jenkins master 镜像

官方的 jenkins/jenkins 镜像现在已经提供了 Java 11 的支持。你可以像下面这样简单在 Java 11 的环境中运行 Jenkins。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
docker run -p 8080:8080 -p 50000:50000 jenkins/jenkins:jdk11

可以使用下面这些标签:

  • jdk11 - 最新的包含 Java 11 支持的每周发布
  • 2.155-jdk11 - 包含 Java 11 支持的每周发布

这些镜像完全和 jenkins/jenkins documentation 兼容。例如:你可以使用 plugins.txt 来安装插件、挂载卷或者通过环境变量传递额外选项。

Agent 镜像

如果你通过 Docker 或 Kubernetes 插件使用容器化的 agent,我们也发布了 Jenkins agent 的官方 Docker 镜像:

  • jenkins/slave
  • jenkins/jnlp-slave
  • jenkins/ssh-slave

所有的镜像都可以使用 latest-jdk11 标签来获取 JDK 11 的捆绑。同时为这些过时的名字抱歉!

实验性 Jenkins master 镜像

为了简化测试,我们也在 DockerHub 提供了一些实验性的镜像。 对于这些镜像,我们为其搭建好了持续交付流水线,所以不需要等待 Jenkins 的每周发布,就可以获得补丁。

  • jenkins4eval/blueocean-platform-support - 等同于 jenkinsci/blueocean
    • 标签: latest-jdk11
    • 这个镜像捆绑了在 Java 11 上运行时需要的所有的 Jenkins 流水线和 Blue Ocean 的补丁
    • 如果你想要使用流水线,使用这个镜像
  • jenkins/jenkins-experimental - 等同于 jenkins/jenkins
    • 标签: latest-jdk11
    • 这个镜像是从 Jenkins core 的 java11-support 分支中发布的
    • 这个分支可能轻微的领先或落后于 master 分支,我们可能会用这个分支去快速发布补丁给 Java 11 用户

我们最终会把这个实验性流水线移到新的在 jep:217 中创建的 jenkins4eval 组织中去。

在 Java 11 中运行 jenkins.war

在 Docker 外运行 Jenkins 并没有那么简单。这是因为 Jenkins 依赖一些在 Java 11 中已经被移除的模块。我们计划在 GA 发布中以某种方式解决掉这个问题 (参见 JENKINS-52186),但是现在,我们还需要一些手动操作才能在 Java 11 中运行 Jenkins WAR。

  1. 下载 2.155 版本的 Jenkins WAR
  2. 下载下面这些库到 jenkins.war 所在的目录中去
    • jaxb-api-2.3.0.jar (保存为 jaxb-api.jar)
    • jaxb-core-2.3.0.1.jar (保存为 jaxb-core.jar)
    • jaxb-impl-2.3.0.1.jar (保存为 jaxb-impl.jar)
    • javax.activation v.1.2.0 (保存为 javax.activation.jar)
  3. 运行下列命令
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Run Jenkins with ${JAVA11_HOME}/bin/java \
    -p jaxb-api.jar:javax.activation.jar --add-modules java.xml.bind,java.activation \
    -cp jaxb-core.jar:jaxb-impl.jar \
    -jar jenkins.war --enable-future-java --httpPort=8080 --prefix=/jenkins

已知的兼容性问题

为了帮助用户追踪兼容性问题,我们新创建了 Known Java 11 Compatibility Issues wiki 页面。

几个重要的问题和障碍:

  • Pipeline: Support Plugin 有一个已知的在 Java 11 中运行会产生的上下文持久性问题 (JENKINS-51998)
    • 我们已经在 Experimental Update Center for Java 11 中部署了一个临时的修复版本。修复版本号: 3.0-java11-alpha-1
    • 如果你使用 Jenkins 流水线,请确认你使用了这个版本,否则你的 Job 会几乎立即失败
    • 当你更新实例到 Java 11 时,请确认没有正在运行的流水线。
  • JENKINS-54305 - JDK Tool Plugin 不提供 JDK 11 的安装器
  • JENKINS-52282 - Java Web Start 在 Java 11 中已经不再可用, 所以我们不再可能在网页图形界面中启动 agent。我们也没有计划提供一个替代品。

我们也在其它插件中发现了一些次要的不兼容问题,但是我们不认为它们对于预览可用性来说是一个阻碍。

报告兼容性问题

如果你碰到了任何有关 Java 11 兼容性的问题,请在我们的 bug 跟踪工具中报告问题。并为这类问题添加 java11-compatibility 标签,这样它们会自动出现在 wiki 页面中,并被分级。

对于安全性问题,请使用标准的 漏洞报告流程。尽管我们在预览发布时,会公开修复 Java 11 相关的问题,但是遵守这个安全流程也会帮助我们调查它对 Java 8 用户的影响。

Java 11 支持团队

一旦 Java 11 支持发布,我们希望会有插件和 Jenkins core 的回归 (regression)报告。我们关心的部分之一就是不同平台的本地库,还有其它的 Java 的版本的问题。同样,这里也存在第三方库和 Java 11 不兼容的风险。为了减轻这些风险,我们创建了 Java 11 支持团队。这个团队将会专注于对到来的问题进行分级、帮助 review PR、在一些情况下也会修复问题。这个团队的工作流程可在 JEP-211 文档中看到。

我们不希望 Java 11 支持团队 去修复所有的发现的问题,我们将会和 Jenkins core 和插件的维护者一起解决它们。假如你有兴趣加入这个团队,可以在 Platform SIG Gitter Channel 中联系我们。

贡献

我们感谢任何一种对 Java 11 支持的贡献, 包括在 Java 11 下运行 Jenkins,报告和解决兼容性问题。

  • 假如你想要进行一些探索性测试,我们推荐你在你的其中一个测试实例中尝试 Java 11 支持。我们对这样的测试感激不尽。我们在上面提供了问题报告的准则。
  • 假如你是一个插件的开发者/维护者,我们非常感谢你能在 Java 11 中测试你的插件。为了帮助你,我们创建了 Java 11 Developer guidelines。这个页面阐述了如何在 Java 11 下测试你的插件,同时它也列出了在开发工具中的已知的问题。

无论你做什么,请通过向 Platform SIG mailing list 发送邮件告诉我们你的体验。这些信息将帮助我们跟踪变化和贡献。有关迁移复杂性的任何其他反馈将不胜感激!

下一步是什么?

在 12 月 18 号(UTC时间下午4点)我们也会在 Jenkins 在线 Meetup 展示对 Java 11 预览支持。在这个 meetup 上我们将会总结目前的 Java 11 预览支持的状态。如果你是插件开发者,我们还将会组织单独的会议讨论有关在 Java 11 下测试插件以及有关修复兼容性问题的常见最佳实践。如果你有兴趣,请关注 Platform SIG 的公告。

在下一周,我们将会专注于处理来自早期使用者的反馈并且修复一些发现的兼容性问题。我们还将继续为明年的 GA 发布开发 Java 11 支持补丁 (JENKINS-51805)。除此之外,我们将会开始在子项目中提供 Java 11 支持,包括 Jenkins X 和 Jenkins Evergreen。

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

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

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
一文详解 Jenkins 与 Docker 的自动化 CI/CD 实战
要想做到一个高效的 CI/CD 流程,需要有能力整合 DevOps 工具链及多环境适配,并且设计之初以自动化为原则,如一键部署、一键升级。
DevOps时代
2021/05/07
3.8K0
一文详解 Jenkins 与 Docker 的自动化 CI/CD 实战
基于Docker平台的Jenkins安装与Blue Ocean使用入门(1)
https://blog.csdn.net/qq_44895681/article/details/105540702
非著名运维
2022/06/22
1.8K0
基于Docker平台的Jenkins安装与Blue Ocean使用入门(1)
CICD之Jenkins使用
jenkins把项目拉倒jenkins服务器,放到workspace(一般我们的源代码都在这里),开始进行流水线处理。
全栈程序员站长
2022/09/02
5260
【云原生 | Devops篇】Jenkins安装与实战
Jenkins,之前叫做Hudson,由SUN公司启动,2010年oracle收购SUN导致hudson商标归oracle保留,hudson的主要贡献者基于hudson更名为jenkins并持续更新。很长一段时间内lenkins和Hudson继续作为两个独立的项目,每个都认为对方是自己的分支。目前Hudson已经停止开发,最新的版本发布于2016年,而Jenkins的社区和开发却异常活跃。Jenkins是目前市场上使用最多的CICD工具。
Lansonli
2022/05/21
6790
【云原生 | Devops篇】Jenkins安装与实战
Jenkins-安装和运维
/usr/lib/systemd/system目录下新建一个 jenkins.service的文件
suveng
2021/12/06
4050
软件测试|Jenkins创建Pipeline
近期使用Jenkins帮业务团队搭建过一次Pipline,并将测试流程加入到了Pipline中,将搭建过程的做了简单记录。考虑到项目的保密性,该文章仅演示搭建步骤和工具使用,文中的代码均为伪代码。
霍格沃兹测试开发Muller老师
2023/01/09
1.5K1
使用Jenkins进行自动构建
介绍自动构建之前先来聊一聊什么是手动构建,姜同学作为一名开发人员我们写完代码之后会把代码提交到Git上,然后push到我们自己的远程仓库,比如gitlab。如果姜同学的工作只是写写代码,push结束之后你的一个阶段工作也就结束了,但是这时候最新的代码还仅仅是保留在了git上,没有以应用的形式展现出来,无法体现你的工作展现你的价值。so,以java代码为例姜同学还要使用最新的代码打个包,然后放到服务器上,停掉旧的应用,启动新的应用,假设一个集群有三个应用实例,滚动更新,上面的步骤姜同学还要在重复两遍。以上的整个步骤便是手动构建,那么什么是自动构建呢,就是让另外一个应用代替姜同学完成上面的步骤,当然写代码除外-_-。 代替姜同学便是Jenkins。
姜同学
2022/12/08
1.2K0
使用Jenkins进行自动构建
Jenkins学习笔记(一)
jenkins是一款非常优秀的CI工具。但是我们如何去安装jenkins?这里我们学习一下。
写一点笔记
2020/11/10
9320
Jenkins学习笔记(一)
Linux-安装 jenkins
Jenkins是一款开源 CI&CD 软件,用于自动化各种任务,包括构建、测试和部署软件。 Jenkins 支持各种运行方式,可通过系统包、Docker 或者通过一个独立的 Java 程序。
acc8226
2022/05/17
1.9K0
Linux-安装 jenkins
锅总详解Jenkins应用
Jenkins架构是怎样的?Jenkins用了哪些调度设计?Jenkins调度最佳实践有哪些?如何写一个Go或Java项目的管道?Jenkins的声明式与脚本化流水线有哪些内容?Jenkins发展历史是怎样的?希望本文能给到您答案!
锅总
2024/08/14
3690
锅总详解Jenkins应用
从0搭建属于自己的Jenkins持续集成平台
Jenkins在日常工作中占据了一个非常重要的角色,帮助我们节省了大量用于构建的时间。有些公司有运维大哥对Jenkins进行维护,如果没有那只能自己动手了。俗话说的好自己动手丰衣足食,所以本文就从0开始搭建属于自己的Jenkins持续平台。主要包含,普通项目构建、流水线构建、多分支流水线构建并将构建结果辅以钉钉通知。
不一样的科技宅
2020/07/08
1K1
Custom WAR Packager
今天,我打算给 Jenkins 管理员和开发者们介绍一个新的工具 Custom WAR Packager。该工具可以打包 Jenkins 的自定义 WAR 发行版、 Docker 镜像以及 Jenkinsfile Runner 包。它可以打包 Jenkins、插件以及配置为开箱即用的发行版。 Custom WAR Packager 是我们曾在一篇博客-- A Cloud Native Jenkins --中介绍过的无状态 Jenkins master 工具链的一部分。这个工具链已在 Jenkins X 中被用于构建 serverless 镜像。
LinuxSuRen
2019/04/19
8330
Custom WAR Packager
使用 Jenkins 构建 CI/CD 之多分支流水线指北
由于公司的 Jenkins 配置没有部署成功的通知,在我学了几天的 Jenkins 后终于是对公司的 Jenkins 配置下手了,结果我刚装完 dingtalk 插件自动重启后,发现之前主管配置的构建项目数据都丢失了,正好给了我练手的机会,于是就有了以下从0到1的辛酸历程。
DevOps时代
2021/04/20
2.2K0
使用 Jenkins 构建 CI/CD 之多分支流水线指北
【Jenkins+Blue Ocean】docker部署Jenkins,编写Jenkinsfile创建流水线,一篇解决“贼带劲”
@toc 前言 作者主页:https://blog.csdn.net/qq_48450494?type=blog 个人博客:http://ygcloud.work/ Jenkins 是一个持续集成工具
秋意零
2022/05/21
1.7K0
【Jenkins+Blue Ocean】docker部署Jenkins,编写Jenkinsfile创建流水线,一篇解决“贼带劲”
收下这份Jenkins保姆级教程,拿下阿里厂牌,进场干活!
    软件开发生命周期又叫做SDLC(Software Development Life Cycle),它是集合了计划、开发、测试和部署过程的集合。
上分如喝水
2021/08/16
1.2K0
收下这份Jenkins保姆级教程,拿下阿里厂牌,进场干活!
Jenkins 构建自动化 .NET Core 发布镜像
在本章中,将介绍如何在 Linux 下使用 Docker 部署、启动 Jenkins,编写脚本,自动化构建 .NET Core 应用,最终将 .NET Core 应用打包为 Docker 镜像。
痴者工良
2021/06/29
2.5K0
DevOps整合Jenkins+k8s+CICD
基于现在的互联网现状,更推崇敏捷式开发,这样就导致项目的迭代速度更快,但是由于开发团队与运维团队的沟通问题,会导致新版本上线的时间成本很高。这又违背的敏捷式开发的最初的目的。 那么如果让开发团队和运维团队整合到成一个团队,协同应对一套软件呢?这就被称为DevOps。 DevOps,字面意思是Development &Operations的缩写,也就是开发&运维。 然字面意思只涉及到了开发团队和运维团队,其实QA测试团队也是参与其中的。 网上可以查看到DevOps的符号类似于一个无穷大的符号
IT运维技术圈
2022/10/24
2.9K1
5步实现规模化的Kubernetes CI/CD 流水线
在近几年,Kubernetes迅速成为了容器编排的事实上的开源标准。与虚拟机不同,Kubernetes在抽象化基础架构的同时可靠地大规模编排容器,这可以帮助开发人员将工作负载与基础架构的复杂性分开。Kubernetes是CI/CD自动化的理想选择,因为它提供了许多内置功能,这些功能使应用程序部署实现标准化和可重用,提高了开发人员的生产力,并加快了云原生应用程序的采用。
JFrog杰蛙科技
2019/12/23
2K0
5步实现规模化的Kubernetes CI/CD 流水线
Jenkins 企业级 CI/CD 实践:安装、配置与 Kubernetes & Docker 集成
Jenkins 是最流行的开源 CI/CD 工具之一,广泛用于自动化软件构建、测试和部署。然而,由于其配置复杂、插件众多,许多企业在落地 Jenkins 时面临挑战。本指南将详细讲解 Jenkins 的安装、Pipeline 配置、Agent 管理、插件扩展,并演示如何与 Kubernetes、Docker 集成,构建高效的自动化部署流程。
网罗开发
2025/02/07
3010
Jenkins 企业级 CI/CD 实践:安装、配置与 Kubernetes & Docker 集成
Jenkins安装部署go项目
jenkins可以通过web页面进行配置。第一次进入,就会要求,选择安装的插件, 根据自己的需求进行安装。
若与
2019/04/18
2.4K0
Jenkins安装部署go项目
相关推荐
一文详解 Jenkins 与 Docker 的自动化 CI/CD 实战
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验