基于 Kubernetes 部署 Jenkins 动态 slave
后,运行 Jenkins Job 会抛java.nio.channels.ClosedChannelException 异常完整的异常栈如下:
FATAL: java.nio.channels.ClosedChannelException
java.nio.channels.ClosedChannelException
Also: hudson.remoting.Channel$CallSiteStackTrace: Remote call to JNLP4-connect connection from 10.244.8.1/10.244.8.1:55340
at hudson.remoting.Channel.attachCallSiteStackTrace(Channel.java:1741)
at hudson.remoting.Request.call(Request.java:202)
at hudson.remoting.Channel.call(Channel.java:954)
at hudson.FilePath.act(FilePath.java:1071)
at hudson.FilePath.act(FilePath.java:1060)
at hudson.FilePath.mkdirs(FilePath.java:1245)
at hudson.model.AbstractProject.checkout(AbstractProject.java:1202)
at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574)
at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86)
at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499)
at hudson.model.Run.execute(Run.java:1819)
at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
at hudson.model.ResourceController.execute(ResourceController.java:97)
at hudson.model.Executor.run(Executor.java:429)
Caused: hudson.remoting.RequestAbortedException
at hudson.remoting.Request.abort(Request.java:340)
at hudson.remoting.Channel.terminate(Channel.java:1038)
at org.jenkinsci.remoting.protocol.impl.ChannelApplicationLayer.onReadClosed(ChannelApplicationLayer.java:209)
at org.jenkinsci.remoting.protocol.ApplicationLayer.onRecvClosed(ApplicationLayer.java:222)
at org.jenkinsci.remoting.protocol.ProtocolStack$Ptr.onRecvClosed(ProtocolStack.java:832)
at org.jenkinsci.remoting.protocol.FilterLayer.onRecvClosed(FilterLayer.java:287)
at org.jenkinsci.remoting.protocol.impl.SSLEngineFilterLayer.onRecvClosed(SSLEngineFilterLayer.java:172)
at org.jenkinsci.remoting.protocol.ProtocolStack$Ptr.onRecvClosed(ProtocolStack.java:832)
at org.jenkinsci.remoting.protocol.NetworkLayer.onRecvClosed(NetworkLayer.java:154)
at org.jenkinsci.remoting.protocol.impl.NIONetworkLayer.ready(NIONetworkLayer.java:142)
at org.jenkinsci.remoting.protocol.IOHub$OnReady.run(IOHub.java:795)
at jenkins.util.ContextResettingExecutorService$1.run(ContextResettingExecutorService.java:28)
at jenkins.security.ImpersonatingExecutorService$1.run(ImpersonatingExecutorService.java:59)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Finished: FAILURE
抛 java.nio.channels.ClosedChannelException 异常的原因是 Jenkins Slave Pod 在 Jenkins Job 运行时突然挂掉,然后 Master Pod 无法和 Slave Pod 进行通信。那么解决方法就是找到 Slave Pod 经常挂掉的原因,经排查是 Slave Pod 的资源限制不合理,配置的 CPU 和内存太小,导致 Pod 在运行是很容易超出资源限制,然后被 k8s Kill 掉。
打开 Jenkins 设置 Slave Pod 模版的资源限制:
Jenkins->系统管理->系统设置->云->镜像->Kubernetes Pod Template->Container Template->高级,然后根据实际情况调整 CPU 和内存需求。
https://github.com/GoogleCloudPlatform/continuous-deployment-on-kubernetes/issues/118
https://medium.com/@garunski/closedchannelexception-in-jenkins-with-kubernetes-plugin-a7788f1c62a9
持续集成和部署是DevOps的重要组成部分,Jenkins是一款非常流行的持续集成和部署工具,最近试验了一下Jenkins,发现它是我一段时间以来用过的工具中最复杂的。一个可能的原因是它需要与各种其它工具集成才能完成任务,而集成的方法又各不相同。在这些工具中,Docker是最简单的,真的非常好用。kubernetes比较复杂,开始要花些时间熟悉,但它的整体设计十分合理,一旦搞清核心概念,掌握脉络之后,就非常顺利。它的命令格式即规范又统一,使得有些命
Jenkins分布式构建架构基于Lable的Slave集群管理基于Docker插件的容器化实践基于Kubernetes的容器化实践Jenkins分布式架构一个Master和多个SlaveNode分布式的架构。在JenkinsMaster上管理你的项目,可以把你的一些构建任务分担到不同的SlaveNode上运行,Master的性能就提高了。如果单纯的使用Master去构建,除了要承担项目上的编译、测试等开销外,还会大大的影响Jenkins应用本身占用memory和CPU资源。JenkinsSlave连接方式常使用下面两种:通过SSH启动Slave代理在Jenkins上直接配置,相当于从Maste
> git init /root/jenkins/workspace/test-slave1 # timeout=10 ERROR: Error cloning remote repo 'origin'
Starting Kubernetes deployment
Loading configuration: /home/jenkins/agent/workspace/api-appjg7tc/demo-deplpy/deploy-yaml/dev-api.yaml
ERROR: ERROR: java.lang.RuntimeException: io.kubernetes.clie...
Started by user admin
Running as SYSTEM
Building remotely on TestEnv in workspace /root/.jenkins/workspace/DeployOrder
No credentials specified
Cloning the remote Git repository
Cloning reposi...
Jenkins中配置从一个win7的slave节点检出git仓库时报如下错误:
git init E:\jenkins\workspace\Git-backup # timeout=10
ERROR: Error cloning remote repo 'origin'
hudson.plugins.git.GitException: Could not init E:\jenkins\workspace\Git-backup
at org.jenkinsci.plugins.gitclient.Cli
hudson.remoting.Channel$CallSiteStackTrace: Remote call to JNLP4-connect connection from XXXX/XXXX:6051
at hudson.remoting.Channel.attachCallSiteStackTrace(C...
在slave上是git clone ssh是可以成功的,但是jenkins调用slave节点就报如下错误:
ERROR: Error cloning remote repo 'origin'
hudson.plugins.git.GitException: Could not init C:\lebo\workspace\repo1
at org.jenkinsci.plugins.git...
企业级持续集成 自动化框架:java + testng + httpclient + allure 持续集成:git + gitlab + jenkins + pipeline + maven + harbor + docker + k8s
持续集成环境:jenkins使用k8s作为构建环境,也就是说:拉取代码--》mvn打包--》构建镜像--》新镜像发布到k8s--》拉取自动化测试...
背景描述:1、主服务 Jenkins 服务器在Windows上,从服务jenkins-Slave在mac上;现状:在mac上独立使用 pytest test_zbl.py --reruns 3 --alluredir=reports 、allure generate --clean reports 可以生成allure报告。但Jenkins上使用allure模块,报错,求解。ERROR: Ste...
java SDK版本引起的job 无法pull代码问题描述解决方法
官方文档推荐master 使用 jdk8,由于一顿瞎操作,将jdk版本升级到9。在slave使用jdk版本为8,在出发构建时发现,出现以下错误
1:16 [WS-CLEANUP] Done
11:11:16 The recommended git tool is: NONE
11:11:24 Also: hudson.remoting.Channel$CallSiteStackTrace: Remote call to and
源自:5-3 运行部署任务Windows环境中的jenkins构建时报错按照第三章的讲解进行安装配置后,最后尝试连接进行验证时,可以走通。但是到第五章实际实现自动化部署任务时,按照课程的讲解配置完后,构建时报错:StartedbyuseradminRunningasSYSTEM[EnvInject]-Loadingnodeenvironmentvariables.Buildin...
在mac电脑上配置了Jenkins从节点,在该从节点上构建app UI 自动化测试项目,运行一些用例后报如下错误:java.io.EOFExceptionat java.io.ObjectInputStream$PeekInputStream.readFully(ObjectInputStream.java:2638)at java.io.ObjectInputStream$BlockDataIn...