-
检查分支是否匹配
-
查看下devops_ci_process.T_PIPELINE_WEBHOOK表是否有注册这条流水线, SELECT * FROM devops_ci_process.T_PIPELINE_WEBHOOK WHERE pipeline_id = ${pipeline_id},${pipeline_id}可以从url地址获取
-
如果没有注册
-
查看repository服务到gitlba的网络是否能通,比如是否配置gitlab的域名解析
-
查看gitlab仓库的权限是否是master权限。生成accesstoken的用户需要是仓库的
maintainer
角色,且accesstoken 的 Scopes需要具有api
权限 -
在repository服务部署的机器上,执行grep "Start to add the web hook of " $BK_HOME/logs/ci/repository/repository-devops.log查找注册失败原因,$BK_HOME默认是/data/bkce
-
-
如果已注册,还是没有触发,
-
到gitlab的webhook页面,查看是否有注册成功,如图1
-
如果gitlab中有注册的url,url是 http://域名/external/scm/codegit/commit 然后点击编辑,查看View detail,如图2
-
查看发送的错误详情,如图3。检查gitlab到蓝盾机器的网络是否可达,如gitlab服务器是否能解析蓝盾域名。
-
-
如果上面都没问题,在process服务部署的机器上,执行grep "Trigger gitlab build" $BK_HOME/logs/ci/process/process-devops.log 搜索日志,查找触发的入口日志,查看gitlab push过来的请求体。
注意查看gitlab push过来的请求体,对比请求体中的
http_url
字段和代码库里代码仓库的地址是否完全匹配,如果一个是域名形式的url,另一个是ip形式的url,则不匹配。如图4、图5
6、gitlab 的 hook记录中,报错 Hook execution failed
这是因 gitlab 10.6 版本后为了安全,默认不允许向本地网络发送 webhook。需要解开 gitlab 的安全限制。
URL 'http://devops.bktencent.com/ms/process/api/external/scm/gitlab/commit' is blocked: Host cannot be resolved or invalid
gitlab 无法解析蓝盾的域名。
需要在gitlab的机器上配置devops.bktencent.com的hosts解析
经排查日志,发现是流水线并行数量超过了限制的50个任务并发。
可以修改数据库 update devops_process.T_PIPELINE_SETTING set MAX_CON_RUNNING_QUEUE_SIZE=100 where PIPELINE_ID='${pipeline_id}'; 建议最大不超过100