Jenkins的Agent服务器环境配置

简介: 本文介绍Jenkins Agent服务器的完整环境配置,涵盖Maven、Node、Ant构建工具部署,Docker及docker-compose离线安装,Kubernetes(kubectl)与Helm客户端配置,CCE连接认证,以及JDK安全策略调整以支持旧版SVN。适用于自动化编译、镜像构建与集群部署。

Jenkins的Agent服务器环境配置

Jenkins节点服务器配置作为Jenkins的节点,需要承担以下任务。编译系统:使用Maven打包编译后台项目(直接解压Maven即可)使用Node打包编译Vue项目(直接解压Node即可)使用Docker制作镜像、推送CCE使用CCE客户端登录CCE使用kubectl更新远程CCE上的deployment编译本系统之外其他项目:使用Ant打包编译移动端等传统非maven项目(直接解压Ant即可)安装CCE客户端从CCE页面(镜像管理-Linux客户端上传)得到CCE客户端的下载链接,例如:x86_64版客户端将该文件上传到服务器上。在服务器上创建$HOME/.kube文件夹(即/root/.kube文件夹)。在服务器上配置hosts映射(在/etc/hosts文件中加入192.168.xxx.xxx cce.test.com)。在服务器上执行CCE的初始化命令:

填写 cce的地址(即cce.test.com)等信息。登录验证:退出登录:离线安装Docker下载安装从docker官网(或者国内镜像站)下载对应linux版本的安装包,例如docker-27.0.3.tgz。将安装包上传到服务器,解压:解压出来的文件的所有者可能不是root,修改为root用户:将解压的文件移动到/usr/bin下:也可以放到/usr/local/bin下,系统便不会控制docker的更新。但是docker.service中默认配置的docker启动命令在/usr/bin下,如果移动到了/usr/local/bin下,则需要调整docker.service文件中的启动命令路径。启动测试:配置成系统服务将docker添加到systemd:编辑文件/usr/lib/systemd/system/docker.service。文件内容参考:github的docker-ce官方文档如果前面将docker命令复制到了/usr/local/bin而不是/usr/bin下,下面的ExecStart中的命令路径也需要对应进行调整为docker.service添加执行权限:配置docker.socket编辑文件/usr/lib/systemd/system/docker.socket。文件内容参考:github的docker-ce官方文档配置docker创建docker组:编辑daemon.json配置文件:文件:/etc/docker/daemon.json重载配置:启动docker并设置开机自启启动docker:设置开机自启:检验:配置命令自动补全从docker的github官方仓库获取命令补全的文件:docker将该文件放到/usr/share/bash-completion/completions,启用该文件:安装docker-compose(非必须)Docker-Compose的版本需要和Docker引擎版本对应,可以参照官网上的对应关系。安装Compose:卸载Compose:直接删除 usr/local/bin/docker-compose文件即可安装docker-buildx(非必须)docker build已经被标记为过时,可以使用docker buildx build进行替换。docker build 只能编译同Linux内核的镜像,在x86_64内核的Linux上就只能编译linux/amd64内核镜像,在arm64内核的linux上只能编译linux/arm64内核镜像。如果想要跨平台编译,就需要使用docker buildx build。如果安装的是Docker桌面版,则自带了docker-buildx。如果是linux离线安装的docker时,需要单独安装docker-buildx插件。从github docker-buildx下载对应系统的docker-buildx的编译后的插件包。例如linux x86_64版安装包根据README.md文档的步骤:将安装包放到服务器的$HOME/.docker/cli-plugins文件夹中将安装包名称修改为docker-buildx,并添加执行权限验证:离线安装kubectl查看CCE上的kubectl版本登录CCE页面,点击kubectl连接页面,执行以下命令查看kubectl版本:可以看到输出结果:kubectl工具的版本为v1.21.7下载安装kubectl从K8S官网下载v1.21.7版本、内核为x86_64(即amd64)的kubectl工具:下载sha256验证文件:将下载的kubectl、kubectl.sha256文件上传到服务器,进行sha256验证下载的完整性:如果验证成功,则执行命令进行安装:安装完后查看版本:验证连接CCE当服务器上的cce客户端执行过cce init之后,会在$HOME/.cce(即/root/.cce)下生成连接的配置文件。当服务器上的cce客户端执行过cce login登录之后,会在$HOME/.kube/下生成kubectl连接配置文件。(即/root/.kube/config)将需要连接到的K8S配置文件设置为环境变量KUBECONFIG:kubectl命令便可以连接到CCE上,执行kubectl命令操作CCE:安装Helm客户端(非必须)下载Helm是一个K8S应用程序包管理器。安装Helm后可以创建Helm模板来简化部署、升级、管理K8S程序。cce使用的是Helm V3,可以到Helm官网查看V3最新的稳定版。例如下载 Helm V3.14.0 amd64版。安装将下载下来的压缩包上传到服务器上解压:解压出来的linux-amd64文件夹中有3个文件:helm:Helm命令文件README.md:Helm说明文档LICENSE:license声明将helm命令文件移动到/usr/local/bin目录下:验证需要先登录CCE,并配置环境变量。将需要连接到的K8S配置文件设置为环境变量KUBECONFIG:验证:常用命令helm常用命令:


# 查看版本号

helm version

# 查看helm中的模板

helm list

# 查看helm连接到的远程helm仓库列表

helm repo list

# 为helm添加内网Nexus远程仓库

helm repo add myproject http://192.168.xxx.xxx:9091/repository/my-helm/

# 更新helm仓库

helm repo update

# 搜索远程仓库中名字带有myproject的chart(如果是新上传到仓库的chart,需要先执行更新仓库命令才能搜索到)

helm search repo myproject

# 查看远程仓库中myproject/myproject-vue的信息(myproject是配置的本地helm远程repo名称,myproject-vue是远程仓库中的chart名称)

helm show chart myproject/myproject-vue

# 或者填写tgz文件的完整路径

helm show chart http://192.168.xxx.xxx:9091/repository/myproject/myproject-vue-1.0.20240803.tgz


# 创建一个chart(会在linux本地创建一个文件夹mychart,里面存放有示例模板文件)

helm create mychart

# 删除mychart文件夹中的templates内的示例文件,将自己deployment、service等yaml放到templates中

# 按需调整Chart.yaml中配置的该helm模板名称、版本、描述等信息

# 按需从templates中抽取需要复用的变量,在values.yaml中统一配置

# 之后可以执行helm的安装

# (CCE上无法使用Jenkins节点服务器上的文件夹进行安装,也无法直接连接到nexus私仓或CCE私仓进行安装,报错连接已关闭)

helm install mydep mychart/

# 打包成tgz文件,可以上传到仓库中

helm package mychart/

修改JDK的配置项目上的SVN server版本比较旧,使用的是TLS1.0协议。使用Jenkins连接该SVN时会报错。Jenkins配置页面显示Unable to access the repository,连接时控制台报错:

1

org.tmatesoft.svn.core.SVNException: svn: E175002: SSL handshake failed: 'The server selected protocol version TLS10 is not accepted by client preferences [TLS13, TLS12]'

原因:高版本的JDK的安全策略中,禁用了低版本的TLS 1.0、TLS 1.1,只能接受 TLS 1.2、TLS 1.3等。解决方案:修改JDK的配置文件,将 TLS 1.0、 TLS 1.1 从禁止项中移除。修改文件/root/build/jenkins/jdk-17.0.12/conf/security/java.security,找到jdk.tls.disabledAlgorithms项,删除其中的TLSv1, TLSv1.1,。Jenkins管理员页面断开重新连接该节点即可。

相关文章
|
5月前
|
人工智能 IDE API
OpenCode 是什么?——终端里的开源 AI 编程 Agent 完全解读
2026年,Anthropic封禁第三方调用Claude Code,引爆开发者对“供应商锁定”的焦虑。开源工具OpenCode应运而生——MIT协议、终端原生、支持75+模型,首创Plan/Build双模式,将模型选择权、成本控制权与数据主权彻底交还开发者。
|
监控 Linux 应用服务中间件
Linux多节点多硬盘部署MinIO:分布式MinIO集群部署指南搭建高可用架构实践
通过以上步骤,已成功基于已有的 MinIO 服务,扩展为一个 MinIO 集群。该集群具有高可用性和容错性,适合生产环境使用。如果有任何问题,请检查日志或参考MinIO 官方文档。作者联系方式vx:2743642415。
4555 57
|
12月前
|
JSON 数据挖掘 API
闲鱼商品列表API秘籍!轻松获取列表数据
闲鱼商品列表API(Goodfish.item_list)基于RESTful架构,支持GET请求,返回JSON格式数据,可获取商品标题、价格、图片、卖家信息等,适用于电商比价与数据分析,助力开发者高效集成闲鱼商品数据。
|
人工智能 资源调度 API
AnythingLLM:34K Star!一键上传文件轻松打造个人知识库,构建只属于你的AI助手,附详细部署教程
AnythingLLM 是一个全栈应用程序,能够将文档、资源转换为上下文,支持多种大语言模型和向量数据库,提供智能聊天功能。
11616 76
|
移动开发 jenkins 持续交付
jenkins配置git
通过上述步骤,您可以在 Jenkins 中成功配置 Git,从而实现自动拉取代码并进行构建和部署。这些配置不仅提高了开发效率,还保证了代码的连续集成和交付。确保每一步配置正确,以避免在实际使用中遇到问题。
2608 1
|
文字识别 网络协议 开发工具
GitHub封锁?推荐5个国产的Git仓库替代平台
近日,GitHub对中国区IP的部分限制引发了广泛关注。未登录用户被拒,已登录用户功能受限,南北网络环境差异更显“内卷”。为应对这一挑战,本文推荐了多个国产Git平台:Gitee(码云)、GitCode(CSDN旗下)、CODING(腾讯系)、CodeUP(阿里云支持)及微信代码管理工具。这些平台功能全面、稳定性强,是开发者迁移项目的理想选择。通过同步代码、配置CI/CD流水线等简单步骤,可确保项目平稳过渡。此次事件提醒我们,掌握核心技能与支持国产平台同样重要!
21347 11
|
文字识别 BI API
3.4K star!全能PDF处理神器开源!文档转换/OCR识别一键搞定
PDF-Guru 是一款开箱即用的全能型PDF处理工具,支持跨平台文档转换、智能OCR识别、多格式解析等核心功能。项目采用模块化架构设计,提供简洁的Web界面和API接口,开发者可快速集成到现有系统中。
1482 1
|
Prometheus Cloud Native Linux
Prometheus+Grafana新手友好教程:从零开始搭建轻松掌握强大的警报系统
本文介绍了使用 Prometheus 和 Grafana 实现邮件报警的方案,包括三种主要方法:1) 使用 Prometheus 的 Alertmanager 组件;2) 使用 Grafana 的内置告警通知功能;3) 使用第三方告警组件如 OneAlert。同时,详细描述了环境准备、Grafana 安装配置及预警设置的步骤,确保用户能够成功搭建并测试邮件报警功能。通过这些配置,用户可以在系统或应用出现异常时及时收到邮件通知,保障系统的稳定运行。
2705 1
|
程序员
阿里发布通义千问!1行代码,免费对话GPT大模型
阿里发布通义千问!1行代码,免费对话GPT大模型
2190 1
 阿里发布通义千问!1行代码,免费对话GPT大模型
|
负载均衡 网络协议 安全
slb监听协议tcp
SLB的TCP监听协议适用于WebSocket支持和通用TCP服务,如FTP、SMTP。配置时设定监听端口,健康检查通过TCP握手检测服务器可用性。会话保持基于源IP,可配置SSL/TLS卸载或端到端加密。注意特定HTTP头传递和平台限制。适用于需要传输层流量管理和不依赖HTTP的应用。
811 3