美文网首页git创建组件依赖
go module,使用gitlab私有仓库作为项目的依赖包

go module,使用gitlab私有仓库作为项目的依赖包

作者: zhoushuaime | 来源:发表于2019-01-22 01:05 被阅读0次

    自从golang 1.11推出go moudle机制来更好的管理项目依赖后,就开始小范围尝试使用go mod来替换曾经的dep,实话实说还不错,很稳定,比起dep以及第三方的govendor来说也更加方便和快速。

    在曾经使用的项目上中,有一部分项目的依赖是放在github中的公开仓库的(如中间件、工具包),放入公开仓库中然通过dep将依赖拉取到vendor中。

    最近内部又做了个相关的依赖包,也不算工具,但这次多少跟业务有点结合,这次肯定不能放在github public仓库,于是就想着,放入内部的gitlab私有仓库中,想着以后能不能把github中的某一部分也迁移过来。

    比如,通过RPC或HTTP调用服务时可以把公共的struct,service,method放入gitlab私有仓库中,这是必然的。

    在public仓库好说,在go mod init gitlab.com/groupName/projectName后,不做任何处理直接直接 go mod vendor会自动拉取第三方依赖。但是如果是gitlab等私有仓库中是get不下来的。

    这本质上还是解决go get的问题。所以,接下来,我们要解决go get私有仓库:

    • 获取gitlab的access token

    进入Gitlab—>Settings—>Access Tokens,然后创建一个personal access token,这里权限最好选择只读(read_repository)。

    • git配置添加access token

    有了access token后,我们还需要在git中进行配置,这样才能go get下了私有仓库的包,需要把刚刚的token添加进git的请求头中,操作如下:

    git config --global http.extraheader "PRIVATE-TOKEN: YOUR_PRIVATE_TOKEN"
    
    • 配置git将请求从ssh转换为http
      配置如下:
    git config --global url."git@gitlab.com:groupName/projectName.git".insteadOf "https://gitlab.com/groupName/projectName.git"`
    

    也可以直接全局替换,那么可以拉取域名下的所有包,如:

    git config --global url."git@gitlab.yoursite.com:".insteadof "https://gitlab.yoursite.com/"
    

    上述配置已经完成了,可以试着拉取gitlab私有仓库的代码:

    go get -u -v gitlab.com/groupName/projectName
    

    此时,执行go mod vendor也是可以正常拉取的。

    相关文章

      网友评论

        本文标题:go module,使用gitlab私有仓库作为项目的依赖包

        本文链接:https://www.haomeiwen.com/subject/ubykjqtx.html