触发器
Q1: gitlab触发插件无法触发流水线
检查分支是否匹配
查看下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 的安全限制。
Q3:gitlab webhook 报错
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解析
Q4:偶现 webhook 触发不生效
经排查日志,发现是流水线并行数量超过了限制的50个任务并发。
可以修改数据库 update devops_process.T_PIPELINE_SETTING set MAX_CON_RUNNING_QUEUE_SIZE=100 where PIPELINE_ID='${pipeline_id}'; 建议最大不超过100
Q5: 定时触发的流水线,时间显示不对,触发时间也不对
最后更新于