给网站首页图片做外网超链接_为什么会弹出一个服务器登录窗口,基础软件开发,花店网页设计代码,免费的在线学习网站我们的项目是标准的CI/CD流程#xff0c;也即是GitlabJenkinsHarborDocker的容器自动化部署。
经历了上上周的docker灾难#xff0c;上周的服务器磁盘空间灾难#xff0c;这次又发生了jenkins卡住的灾难。
当然#xff0c;这些灾难有一定的连锁反应#xff0c;是先发生的d…我们的项目是标准的CI/CD流程也即是GitlabJenkinsHarborDocker的容器自动化部署。
经历了上上周的docker灾难上周的服务器磁盘空间灾难这次又发生了jenkins卡住的灾难。
当然这些灾难有一定的连锁反应是先发生的docker灾难然后因为要测试导致镜像堆满服务器磁盘空间磁盘空间满又导致了jenkins卡住的问题。下面将我的解决过程记录下来希望可以帮到可能会发生同样发生问题的大家。 图1
如上图所示jenkins的121号版本编译成功之后修改了几行代码传到gitlab后用jenkins进行编译。结果报错jenkins报错的信息Console Output如下 这是将镜像推送到镜像仓库Harbor发生的问题。
因为之前我观察到Harbor所在阿里云服务器磁盘使用率已达到92%因此首先查看该服务器的情况。一看不得了磁盘使用率已是100%。我删除了很多过期镜像也删除了服务器本地拉取的一些镜像但磁盘空间没变化于是花了一些时间解决了这个问题【dockerlinux实战】阿里云服务器磁盘空间满了 – 经云的清净小站 (skycreator.top)。
就在我大呼万岁准备开庆功宴的时刻jenkins编译一直进行中。正常只需十几分钟就可以正常部署这次花了半小时也没打包成功见下图#123。我又试了一次这次1h 38min也没完成下图#124。 我打开#123和#124的Console Output发现jenkins卡在了load build definition from Dockerfile这一行。
我一个游戏程序员对于jenkins的操作不熟悉啊。于是有病乱投医我进行了下面一系列的弯弯绕绕的操作。
1.docker版本问题
首先我怀疑可能和docker版本有关。阿里云上三个服务器的docker版本都是1.24而我本地windows上是1.26。本地windows上的这个项目docker build可以正常通过而linux上不能通过因此自然想到可能是docker的问题。
我们的服务器分为s1s2s3。其中s1是项目servers2是gm后台servers3是gitlab、Harbor、jenkins所在的server。因为是打包gm后台server因此我选择s2升级docker。
升级前先删除旧版本的docker删除后更新不到新docker了。是的太郁闷了旧问题没解决又产生了新问题。
曾经使用yum安装docker的路子走不通了。难道docker也下载不了了我有些绝望甚至想到了将安装包本地下载再将它拷贝到阿里云上。
幸好网上找到dnf的安装方法成功升级了docker。 进入jenkins再次编译依然不通过。该方法失败
2.配置检查
上一个问题无果后我又想到了可能是docker的配置问题或许该服务器没有设置私有仓库呢
打开/etc/docker/daemon.json里面确实设置了。
查看jenkins的pipeline将项目server和gm后台server相互对比也是没区别。
3.代码回退
#123的版本我提交了一些代码不会是提交的代码导致卡住吧
虽然我的内心不认为会是这个原因但试一试万一成功了呢
于是我使用git回退了代码这里又复习了一下git的回退操作再次编译还是卡住。
4.新建任务
既然是jenkins的卡住我怀疑可能是jenkins的这个任务有问题。于是我新建了一个jenkins任务复制了gm后台的pipeline。
再次编译依然故我
5.改变焦点
由于对jenkins不熟对于jenkins的docker build一知半解。这次我重新看了看jenkins的pipeline。
// 1.从gitlab上取代码
// 2.镜像编译
sh echo 镜像名称${image_server_gm_server} docker build -f ./server/Dockerfile -t ${image_server_gm_server} ./server
sh echo 镜像名称${image_server_gm_web} docker build -f ./web/Dockerfile -t ${image_server_gm_web} ./web
// 3.登陆Harbor向Harbor推送镜像
// 4.登陆gm服务器从私有仓库拉取镜像
从上下文来看gitlab上取了代码后对代码进行了镜像编译。这时还没登陆镜像仓库也没有登陆gm服务器。那么代码应该存放于jenkins所在s3服务器而不是s2啊。
我尝试寻找代码所在位置在jenkins所在目录的jenkins_home/workspace找到了jenkins的相关任务任务中即是代码。于是我进入相应文件夹使用docker build进行编译打包。 卡住了。问题找到了。估计是由于之前磁盘空间满docker内部某个逻辑没走通一直卡住因此只要重启docker估计问题就能解决。
不过这个s3的docker版本较低顺便先升级吧。按照之前的操作升级s3服务器的docker到最新。然后重启docker再次编译问题解决如下图所示 直接ctrlc关掉。从浏览器进入jenkins执行任务编译。成功 这次虽然解决了问题但中间弯弯绕绕浪费了好久。若是对jenkins充分了解时间上可以更快。
这次特别感谢d u x t他给我提出了不少新思路让我思路开阔了很多。