harbor webhook异常一则 harbor源码构建调试记录

在处理历史项目时,遇到Harbor webhook地址无法更改的问题,即使升级到2.0版本也无法解决。经过前端F12检查和后端日志分析,发现问题出在harbor-core后端。通过源码调试发现响应处理存在缺陷,添加日志输出后发现客户端Do方法返回异常。为修复问题,手动编辑源码并重新编译Harbor,过程中遇到了依赖包错误,最终使用旧版Go编译解决。此过程揭示了另一个潜在的bug。
摘要由CSDN通过智能技术生成

在这里插入图片描述
今日接盘一些历史项目遇到一些奇怪的事情,因为要更换webhook地址,理论上是直接修改webhook就ok。
后面发现webhook有个问题(升级了2.0也没法解决),webhook的地址无法修改,且前端无论修改成哪个地址,都显示测试连接成功
初步怀疑前端问题,
后来通过前端F12发现后端返回200,问题定位到harbor-core的后端,打开日志果然发现端倪。

没办法 只能通过改源码debug了,上图已经是开过debug模式,显示的内容有限 直接看源码

https://github.com/goharbor/harbor/blob/v2.0.0/src/pkg/notification/policy/manager/manager.go

在这里插入图片描述

这么看来应该是client.Do(req) 返回了非resp
测试居然不打印resp内容…只能自己添加了

git clone https://github.com/goharbor/harbor.git
#因为俺的版本是release-2.0.0
git branch -a
git checkout remotes/origin/release-2.0.0
#已经切换到2.0.0了

因为懒得IDE 直接编辑了

 vi src/pkg/notification/policy/manager/manager.go 
#切换到123行
 : 123

在这里插入图片描述

//manager.go:122
func (m *DefaultManager) policyHTTPTest(address string, skipCertVerify bool) error {
        req, err := http.NewRequest(http.MethodPost, address, nil)
        if err != nil {
                return err
        }

        req.Header.Set("Content-Type", "application/json")
        client := http.Client{
                Transport: commonhttp.GetHTTPTransportByInsecure(skipCertVerify),
        }

        resp, err := client.Do(req)
        if err != nil {
                return err
        }
        //加一行
        //完事,注意不要加到err判断上面 否则需要多加个判断
        log.Debugf("resp info: %v", resp)
        defer resp.Body.Close()
        log.Debugf("policy test success with address %s, skip cert verify :%v", address, skipCertVerify)

        return nil
}
:wq 退出

harbor真没令我失望 修bug的时候发现另外一个bug
在这里插入图片描述

编译时引用了一个不存在的包
https://github.com/goharbor/harbor/pull/12936
在这里插入图片描述

换一个法子

#pwd
/$root
# 官网golang版本又是一个巨坑,会报error模块问题,用1.13+编译就好 不细述
make compile GOBUILDIMAGE=golang:1.13 COMPILETAG=compile_golangimage
# 打成离线包
make package_offline GOBUILDIMAGE=golang:1.13 COMPILETAG=compile_golangimage
# done
# harbor-offline-installer-dev.tgz 

升级过程跟普通版本切换一样 不细述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

workman-lu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值