今日接盘一些历史项目遇到一些奇怪的事情,因为要更换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
升级过程跟普通版本切换一样 不细述