在 GitLab 服务上快速构建 Go 项目的私有化包
文章目录
【注意】最后更新于 November 7, 2023,文中内容可能已过时,请谨慎使用。
在这篇文章中,我们将介绍如何在 GitLab 服务上构建 Go 项目的私有化包,以及如何在另一个Go项目中使用这个私有包。以下是详细的步骤和注意事项。
1. 准备工作
- Gitlab 服务:https://gitlab.domain.com
- 项目:titan
- 私有包:ga-omni
以我司为例,有 ToB、ToC 业务,又有内部项目,这些业务有些是重合的,那么这部分代码的重用,使用私有化包就可以解决。
私有化包的好处:
- 代码保密性: 私有化包可以包含敏感信息或专有算法,防止未经授权的访问。
- 版本控制: 可以通过私有化包实现对项目中代码的精确版本控制。
- 团队协作: 通过私有化包,可以更轻松地在团队内部分享和重用代码。
2. 创建私有化包
以 ga-omni 为例,创建私有化包 ga-omni 的步骤如下:
2.1 创建私有化包项目 在GitLab上创建一个新的仓库,命名为 ga-omni
|
|
注意:ga-omni 包的深度不可以为三级,错误示例如下:
gitlab.domain.com/backend/package/ga-omni
2.2 编写 ga-omni 包代码
编写你的Go包代码,并确保包含go.mod文件用于管理依赖。
|
|
2.3 提交并推送ga-omni包代码
将代码提交到GitLab仓库,并推送。
|
|
2.4 设置Go环境 在titan项目中执行以下步骤设置Go环境:
|
|
设置后,go env
查看配置项中,GOPRIVATE、GOINSECURE、GONOPROXY、GONOSUMDB 四个配置值是否都已变更为目标值。
|
|
3. 测试 ga-omni 包
在任何Go项目中,你可以通过以下方式测试 ga-omni 包是否正常工作:
|
|
直接这样拉取需私有包要输入 gitlab 认证账号和密码,为避免 https 协议每次需要认证的麻烦,可以配置 git host 为 gitlab.domain.com
时,走 ssh 协议,通过 key 的方式认证。
3.1 配置 Git SSH认证,方式一
确保你的GitLab帐户配置了SSH密钥,并且Go使用SSH进行包拉取。在~/.ssh/config
文件中添加以下内容:
|
|
3.2 配置 Git SSH认证,方式二
|
|
配置后,查看 git 配置文件会增加一条如下配置行
|
|
再次拉取 ga-omni
包测试,以项目 titan 为例,创建 main.go
文件
|
|
输出:Hello from ga-omni!
,恭喜你搞定了 👏🏻👏🏻 🎉🎉
4. 私有包开发
开发机,titan
项目和私有包 ga-omni
目录位置:
|
|
开发阶段为了在 IDE 可跳转到私有包 ga-omni
,编辑 titan 项目 go.mod
文件,追加如下内容
|
|
go.mod
增加 replace 后,再回到代码中,在 IDE 中点击私有包的代码,已经可使代码直接跳转到私有包了,我使用的是 goland ,如果没有你可以在主项目下额外再打开一个窗口,选择 Attch 方式,如下图所示
titan
和ga-omni
项目在 goland IDE 所在位置
- 如果没有
ga-omni
,手动打开ga-omni
项目,选择(Attch)附加到已经打开的项目,如示
开发结束后,代码推送的 Gitlab 版本库,CI/CD自动测试至服部署,参考这篇文章 [[gitlab-devops-go]]Gitlab Go 项目CICD 集成
参考文章
文章作者 BING
上次更新 2023-11-07