Drone构建失败,一次drone依赖下载超时导致构建失败的爬坑记录
Once upon a time, birds were singing in the forest, and people were dancing under the trees, It's so peaceful
1 发生
1.1 Drone简介
1.2 Context
因为xxx所以Drone构建的所依赖的maven私服停服了,构建界面哀鸿遍野,于是更换构建镜像,换上新的仓库地址,森林仿佛回到了之前的平静
随着新的新的镜像的更换,在构建记录中会偶尔出现构建失败的情况,build的时间也加长了一点,起初并没有很关注这个问题,直到有一天这个问题一直repeat,版本一直推不上去,开发的功能迟迟不能提测,各种压力扑面而来
1.3 现象描述
drone在执行build节点突然中断,没有任何报错日志,第一反应是Drone工具有问题,于是立马在公司的IM上密相关负责人,他们定位日志说应当是私服拉取超时,可能是私服那边做了熔断,这个私服全公司都在用,构建失败需要联系私服那边人一起定位去看,跨部门协同让人头大
drone构建是加了缓存的,且之前一直没有问题,为什么突然就不行了,而且build日志中为什么一直在打印下载依赖的日志,于是果断的放弃跨多部门协同这条路,转身来定位一下问题出现的原因
2 定位
2.1 Drone配置如下
# 工作空间
workspace:
base: /app
path: code
pipeline:
# 恢复cache
restore_cache:
image: appleboy/drone-sftp-cache
server: 172.31.xx.xx
port: xx
username: xxx
password: xxx
path: /home/mavencache/cache
restore: true
mount:
- /app/.m2/
build:
# 这里是更换的新的镜像
image: hub.xxx.com/xxx/cicd-xx:1.1
when:
event:
- push
branch: [dev*, release*, emergency, hotfix*, master]
commands:
# 初始化目录,防止没有
- mkdir -p /app/.m2/
- export NAME=web-center-v4
- export APP_ID=5ee0528eb090259fe0056ac0
- echo $NAME > NAME
- echo $(jx-release-version)-$DRONE_COMMIT_BRANCH.$DRONE_BUILD_NUMBER > VERSION
- cat VERSION
- export COMMIT_ID=$DRONE_COMMIT
- export COMMIT_BRANCH=$DRONE_COMMIT_BRANCH
- export BUILD_NUMBER=$DRONE_BUILD_NUMBER
- cd charts && sh upload.sh && cd ..
- mvn versions:set -DnewVersion=$(cat VERSION)
- mvn package -DskipTests
- echo $(cat VERSION) > .tags
2.2 调试
drone构建的节点是可以执行linux命令的,于是在commonds下加了一句 mvn -X,输出截取如下
……
[DEBUG] Reading global settings from /opt/apache-maven-3.5.3/conf/settings.xml
[DEBUG] Reading user settings from /root/.m2/settings.xml
[DEBUG] Reading global toolchains from /opt/apache-maven-3.5.3/conf/toolchains.xml
[DEBUG] Reading user toolchains from /root/.m2/toolchains.xml
[DEBUG] Using local repository at /root/.m2/repository
[DEBUG] Using manager EnhancedLocalRepositoryManager with priority 10.0 for /root/.m2/repository
……
可以看到 settings.xml 的位置以及 localRepository 的位置,这个和我们配置的workspace不一致
我们配置的是 /app/.m2,怎么会走默认的路径?于是 cat /root/.m2/settings.xml 走起
<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
<!-- localRepository
| The path to the local repository maven will use to store artifacts.
|
| Default: ${user.home}/.m2/repository -->
</settings>
这里问题已经比较明显的,这个settings.xml在本地Repository这一块是默认配置,所以所有的缓存都没有生效
2.3 尝试解决
尝试1:手动编写了一个setting文件,增加命令 cp settings.xml /root/.m2/,提交构建速度恢复正常
<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
<!-- 设置本地仓库的地址 -->
<localRepository>/app/.m2/</localRepository>
</settings>
尝试2:修改缓存挂载路径为/root/.m2/,提交构建速度恢复正常
2.4 问题回头看
一个疑问,这样的修改虽然能够解决,但是为什么之前都没有问题?于是我镜像改为之前的,再次执行cat /root/.m2/settings.xml
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
<!-- localRepository
| The path to the local repository maven will use to store artifacts.
|
| Default: ${user.home}/.m2/repository -->
<localRepository>/app/.m2</localRepository>
</settings>
这下问题实锤了,是新镜像问(的)题(锅),生成的settings.xml没有读取workspace的配置信息
3 解决方案
不细说了,找领导修改构建镜像,祝我好运
Drone构建失败,一次drone依赖下载超时导致构建失败的爬坑记录的更多相关文章
- Jenkins + GitLab 通过 Webhook 自动触发构建爬坑记录
前言 在局域网搭建了一个Jenkins服务,用于自动构建和发布,在调通了构建程序之后,想使用内网的GitLab的Webhook功能触发代码推送事件,然后进行自动构建.后来发现在GitLab上做测试 ...
- 解决Maven依赖下载不全的问题
背景描述 在日常学习过程中使用Maven构建SpringBoot+SpringCloud服务时,有时会使用非正式版的SpringBoot和SpringCloud(非正式版是指不是最终发布的版本,而是测 ...
- 使用maven-pom进行依赖管理与自动构建
使用maven-pom进行依赖管理与自动构建 span.kw { color: #007020; font-weight: bold; } /* Keyword */ code > span.d ...
- [移动网关]2G环境下资源下载有一定概率失败,客户端日志显示收到403错误
2G环境下资源下载有一定概率失败,客户端日志显示收到403错误 问题现象: 测试同学在使用联通号码在移动网络环境下,访问连接得到的response_code出现是403,导致资源读取失败表情显示异常. ...
- maven下载jar包失败后无法再次重新下载
maven下载jar包失败后无法再次重新下载:删除maven 资源库中的 *.lastUpdated文件
- 只用一招让你Maven依赖下载速度快如闪电
一.背景 众所周知,Maven对于依赖的管理让我们程序员感觉爽的不要不要的,但是由于这货是国外出的,所以在我们从中央仓库下载依赖的时候,速度如蜗牛一般,让人不能忍,并且这也是大多数程序员都会遇到的问题 ...
- 只用一招,让你Maven依赖下载速度快如闪电
一.背景 众所周知,Maven对于依赖的管理让我们程序员感觉爽的不要不要的,但是由于这货是国外出的,所以在我们从中央仓库下载依赖的时候,速度如蜗牛一般,让人不能忍,并且这也是大多数程序员都会遇到的问题 ...
- maven清理.lastUpdated文件maven清理下载失败的jar,方便重新下载
因网络或其他的原因,maven下载jar等文件失败后,会在目录中存在 *.jar.lastUpdated ,如:xmlpull-1.1.3.1.jar.lastUpdated,此时,代码编译时会一直 ...
- JSONObject相关依赖架包下载(Maven依赖下载)
一.开发场景Java开发当中经常需要Json格式的数据,这就用到JSONObject类,本文章只提供以下两种JSONObject对应架包的下载方式.1.com.alibaba.fastjson.JSO ...
随机推荐
- CSS 奇思妙想边框动画
今天逛博客网站 -- shoptalkshow,看到这样一个界面,非常有意思: 觉得它的风格很独特,尤其是其中一些边框. 嘿嘿,所以来一篇边框特辑,看看运用 CSS,可以在边框上整些什么花样. bor ...
- buuctf刷题之旅—web—随便注
打开环境 根据提示应该是sql注入 查看数据库名,和数据表 1';show databases;# 1';show tables;# 查看表内字段(1';desc `1919810931114514` ...
- PAT Advanced 1007 Maximum Subsequence Sum
题目 1007 Maximum Subsequence Sum (25分) Given a sequence of K integers { N1, N2, ..., N**K }. A contin ...
- 带你走进memcache,老牌内存缓存技术
一.核心优化概述 什么是优化:以更小的资源支持更大负载网站的运行,以小博大. 思路:尽量减少用户等待时间,节省系统资源开销,节省带宽使用. 优化什么地方?有三方面:Memcache内存缓存技术.静态化 ...
- java.net.NoRouteToHostException: 没有到主机的路由
今天在配置Jenkins 的云服务器的时候提示:java.net.NoRouteToHostException: 没有到主机的路由,网上查到的没有主机路由问题提到的大多是防火墙问题. 查看防火墙状态: ...
- Spring Security 实战干货:分布式对象SharedObject
1. 前言 在上一篇我们对AuthenticationManager的初始化的细节进行了分析,其中里面有一段代码引起了不少同学的注意: ApplicationContext context = htt ...
- 在vSphere中为不同服务器配置IPMI功能
在vSphere HA中如果要配置并启用DPM功能,需要记录服务器远程管理接口的IP地址(不是ESXi的IP地址,而是另一个独立的IP地址,是与ESXi服务器同一网段的另一个IP地址)与MAC地址.远 ...
- MySQL中 utf8与utf8mb4的区别
MySQL中 utf8与utf8mb4的区别 一.简介 MySQL在5.5.3之后增加了这个utf8mb4的编码,mb4就是most bytes 4的意思,专门用来兼容四字节的unicode.好在 ...
- Bitter.Core系列九:Bitter ORM NETCORE ORM 全网最粗暴简单易用高性能的 NETCore 之 WITH 子句支持
有时我们在聚合查询中,经常会有复杂的聚联查询.有时表的聚联查询SQL 子句比较复杂,DBA 会经常告诉们,能否通过WITH 子句优化.WITH 子句,是对SQL 聚联查询的优化.Bitter.Core ...
- jdk安装简洁版
一.jdk是what? jdk其实是个软件语言开发包,包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具. 没有JDK的话,无法编译Java程序(指java源码.java文件),如果想 ...