CI Weekly #17 | flow.ci 支持 Java 构建以及 Docker/DevOps 实践分享

本周分享中,flow.ci新增Java构建支持,提供了默认模板。文章探讨了创业团队使用Docker的原因,分享了携程容器云实践、持续集成与自动化测试的经验,并介绍了DevOps平台的自动化部署设计。同时,ThoughtWorks发布了技术雷达Vol.16,关注最新技术动态。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这周一,我们迫不及待写下了最新的 changelog —— 项目语言新增「Java」。创建 Java 项目工作流和其它语言项目配置很相似,flow.ci 提供了默认的 Java 项目构建流程模版,快去试试吧~

最近 flow.ci 2017 招聘计划正式启动,我们需要高级 Ruby 工程师、 高级前端工程师、DevOps 运维开发工程师、产品经理、初级工程师的加入,一起赋予 flow.ci 更稳定流畅的体验,更简洁的形象和更未来的气质,职位详情见 这里,欢迎自荐或推荐 :)

这期 CI Weekly 收录了即刻技术团队 Docker 实践、携程容器云实践、持续集成与自动化测试、DevOps平台的自动化部署设计等技术分享,一起来看看~

创业公司小团队为什么要使用Docker

Docker几乎就是一个进程简单的包装,只有很少的额外开销,启动速度也几乎相当于直接启动应用进程。对于没有专职运维的即刻团队,很自然的从项目开始就使用 Docker 来做服务的发布工具。(via:即刻技术团队

docker 搭建测试环境的实践

容器技术慢慢开始普及的今天,对测试人员有什么变革性的影响。这篇文章作者聊了下Docker在公司的测试环境中扮演了的角色。 (via: Testerhome @ycwdaaaa) ​​​​

携程容器云实践

这篇文章介绍了携程技术团队容器云的相关实践,包括实践在线旅游与弹性需求、容器云定位、容器部署基本原则、容器编排选型&取舍、容器网络选型、Docker遇到的问题、容器监控方案、CDOS Overview。(via:公众号携程技术中心)

持续集成CI与自动化测试

很多公司对持续集成、自动化测试都有不同的研究,这篇 Slide 记录了关于持续集成CI与自动化测试的一些思考与经验。(via:博客园@PetterLiu

DevOps平台中的自动化部署框架设计

为实现 DevOps 以产品为核心,以项目管理为驱动,将需求、设计、交付、运维整个链路打通,看看他们如何设计DevOps平台中的自动化部署框架。(via : 微信公众号EAWorld)

ThoughtWorks技术雷达 Vol.16

ThoughtWorks 发布了最新一期的技术雷达,帮助你了解 IT 技术、工具、平台和语言及框架的最新动向。(via : ThoughtWorks

Chrome DevTools 代码覆盖率功能详解

本文介绍了 Chrome Canary 新增的代码覆盖率功能、如何收集数据、如何基于它收集的数据来改进 WEB 应用的性能。(via : 知乎王仕军

Security 101 for SaaS startups

这是一篇写给 SaaS 型初创企业的安全建议, 按照初创企业的成长阶段, 罗列了应该需要注意的安全事项,值得一看。

英文原文: Security 101 for SaaS startups

中文翻译: SaaS型初创企业安全101


以上是 CI Weekly #17 的所有技术分享,
如有问题,请联系我们~

Happy building!
flow.ci

CI Weekly 围绕『 软件工程效率提升』 进行一系列技术内容分享,包括国内外持续集成、持续交付,持续部署、自动化测试、 DevOps 等实践教程、工具与资源,以及一些工程师文化相关的程序员 Tips 。同步于 flow.ci Blog、微信公众号、官方微博知乎专栏简书,欢迎关注或投稿:)

<think>好的,我现在需要帮助用户解决如何在Mac上将Java控制面板切换至JDK 17的问题。用户之前已经安装了JDK 1.8,现在安装了JDK 17,但控制面板可能仍然显示旧版本。用户已经执行了`/usr/libexec/java_home -V`命令,显示出三个JDK版本,其中两个是JDK 1.8,一个是JDK 17。 首先,我需要确认用户当前的环境。用户使用的是Mac系统,并且可能使用的是ARM架构的芯片,如M1/M2,因为输出中提到了“arm64”。接下来,用户列出的三个JDK中,有两个是1.8版本,路径不同。一个是`/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/...`,这可能是浏览器插件使用的JRE,另一个是标准的JDK 1.8安装路径。而JDK 17安装在`/Library/Java/JavaVirtualMachines/jdk-17.jdk`下。 用户的主要问题是如何将控制面板切换到JDK 17。我需要考虑Java控制面板的来源。在macOS中,Java控制面板通常与JRE一起安装,特别是当用户通过DMG安装JDK 1.8时,可能会包含浏览器插件相关的组件。而JDK 17可能不包含这些组件,因此控制面板可能仍然关联到旧的JRE。 首先,我需要指导用户如何设置默认的JDK版本。根据用户之前的回答,使用`java_home`命令和修改环境变量是常用的方法。用户可能已经尝试过这些方法,但控制面板仍然显示旧版本,所以需要进一步解决控制面板的问题。 可能的解决方案包括: 1. 确保JDK 17被正确设置为系统默认,通过环境变量或符号链接。 2. 检查Java控制面板的来源,可能需要卸载旧版本的JRE或禁用浏览器插件。 3. 清理缓存和配置文件,因为旧的配置可能仍然被系统使用。 4. 使用第三方工具如jEnv来管理多个JDK版本,确保一致性。 另外,需要注意用户提到的控制面板可能是指系统偏好设置中的Java控制面板,这通常由JRE安装生成,而JDK 17可能没有安装这个面板,因此用户可能需要单独安装JRE或确保控制面板更新到与JDK 17兼容的版本。 可能还需要指导用户如何验证当前Java版本是否正确,包括终端命令`java -version`和`javac -version`,以及检查`JAVA_HOME`环境变量。如果这些显示正确,但控制面板仍然有问题,可能需要更深入的清理步骤,比如删除旧的配置文件或缓存。 最后,用户可能遇到的问题包括:控制面板无法正确显示新版本,终端和IDE中的版本不一致,或者系统安全设置阻止了更改。需要逐一排查这些问题,并提供相应的解决方案,例如使用jEnv工具、修改IDE配置或调整系统安全设置。</think>--- ### 一、当前环境分析 从你的 `java_home` 输出可以看出: ```bash Matching Java Virtual Machines (3): 17.0.14 (arm64) "Oracle Corporation" - "Java SE 17.0.14" /Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home 1.8.441.07 (arm64) "Oracle Corporation" - "Java" /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home 1.8.0_411 (arm64) "Oracle Corporation" - "Java SE 8" /Library/Java/JavaVirtualMachines/jdk-1.8.jdk/Contents/Home ``` - **JDK 17**:完整开发环境,路径:`/Library/Java/JavaVirtualMachines/jdk-17.jdk` - **JDK 1.8**:两个版本共存,其中`/Library/Internet Plug-Ins/...` 是浏览器插件使用的JRE --- ### 二、核心问题定位 **控制面板显示旧版本的原因**: 1. 系统默认仍指向JDK 1.8 2. 浏览器插件JRE与控制面板绑定 3. 环境变量未正确配置 --- ### 三、完整解决方案 #### ▶ 第一步:设置全局默认JDK ```bash # 1. 查看所有可用JDK版本 /usr/libexec/java_home -V # 2. 临时切换(仅当前终端生效) export JAVA_HOME=$(/usr/libexec/java_home -v 17) # 3. 永久切换(推荐) # 修改shell配置文件(以zsh为例) echo &#39;export JAVA_HOME=$(/usr/libexec/java_home -v 17)&#39; >> ~/.zshrc echo &#39;export PATH="$JAVA_HOME/bin:$PATH"&#39; >> ~/.zshrc source ~/.zshrc ``` #### ▶ 第二步:清理旧版本关联 ```bash # 禁用浏览器插件JRE(解决/Library/Internet Plug-Ins/...残留) sudo mkdir -p /Library/Internet\ Plug-Ins/disabled sudo mv /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin /Library/Internet\ Plug-Ins/disabled/ # 删除旧版本缓存 rm -rf ~/Library/Caches/Java rm -rf ~/Library/Preferences/com.oracle.java.* ``` #### ▶ 第三步:强制刷新系统配置 ```bash # 重建符号链接(针对M1/M2芯片优化) sudo ln -sfn /Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home /Library/Java/Home # 重启Finder和系统服务 killall Dock killall SystemUIServer ``` --- ### 四、控制面板更新验证 #### 方法1:终端验证 ```bash # 检查运行时版本 java -version # 期望输出:java version "17.0.14"... # 检查编译环境 javac -version # 期望输出:javac 17.0.14 ``` #### 方法2:图形界面验证 1. 打开 **系统偏好设置** 2. 点击 **Java** 图标(如果存在) 3. 在 **General > About** 中确认版本号应为17 --- ### 五、高级管理方案(推荐长期开发者) #### 使用 `jenv` 管理多版本 ```bash # 安装jenv brew install jenv # 配置环境变量 echo &#39;export PATH="$HOME/.jenv/bin:$PATH"&#39; >> ~/.zshrc echo &#39;eval "$(jenv init -)"&#39; >> ~/.zshrc source ~/.zshrc # 添加已安装的JDK jenv add /Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home jenv add /Library/Java/JavaVirtualMachines/jdk-1.8.jdk/Contents/Home # 设置全局默认版本 jenv global 17 ``` --- ### 六、故障排除指南 #### 问题现象:控制面板仍显示1.8 **解决方案**: 1. 完全卸载Oracle JRE: ```bash sudo rm -rf /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin sudo rm -rf /Library/PreferencePanes/JavaControlPanel.prefPane ``` 2. 重启后重新配置环境变量 #### 问题现象:`java`命令报错 **诊断命令**: ```bash # 检查命令实际路径 which java # 正确应显示:/Library/Java/JavaVirtualMachines/jdk-17.jdk/.../bin/java # 检查符号链接 ls -l /usr/bin/java # 正确应指向:/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java ``` --- ### 七、版本兼容性建议 - **保留JDK 1.8**:用于旧项目兼容(通过`jenv local 1.8`切换) - **主要使用JDK 17**:新项目开发 - **定期清理**:每季度执行`sudo periodic daily weekly monthly`维护脚本 通过上述操作,可完整实现控制面板与运行时环境的版本统一。若仍遇到问题,建议提供 `echo $PATH` 和 `java -verbose -version` 的输出进一步诊断。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值