前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >从 0 到 1 创建、测试并发布属于自己的 Go 开源库

从 0 到 1 创建、测试并发布属于自己的 Go 开源库

原创
作者头像
陈明勇
修改2024-04-29 09:27:32
2490
修改2024-04-29 09:27:32
举报
文章被收录于专栏:Go 技术Go技术干货

前言

在日常开发中,我们经常使用由组织或个人开发和维护的第三方开源库,这些库大大提高了我们的开发效率,让我们能够专注于实现业务逻辑而不是重复造轮子。如果你对提高代码复用感兴趣,并希望将自己封装的高质量代码发布为一个开源库,那么这篇文章正是为你准备的。

接下来,我将详细探讨如何从 01 创建、测试并发布属于自己的 Go 开源库。本文以 go-mongox 仓库为例进行讲解。

准备好了吗?准备一杯你最喜欢的咖啡或茶,随着本文一探究竟吧。

总体步骤

0 到 1 创建、测试并发布属于自己的 Go 库,需要以下步骤:

  • 1、在 Github(或 Gitee,本文以 Github 为例) 上创建一个空仓库;
  • 2、本地初始化 Go 项目;
  • 3、本地初始化 Git 仓库;
  • 4、编写代码和测试用例;
  • 5、提交代码并推送到 Github
  • 6、发布版本;
  • 7、验证发布成功。

当然,如果我们本地已经存在一个准备好的 Go 项目仓库,我们可以直接在 Github 上面创建仓库并推送最新内容,然后从第六步开始。

创建 Github 仓库

GitHub 上创建仓库是发布你的 Go 库的第一步。

首先,访问 GitHub 仓库并点击 New 按钮。在创建页面,为你的仓库输入名称和简短描述。确保选择 Public 选项,将其设置为一个公开仓库。由于我们的目的是创建一个空仓库,所以不需要勾选初始化 READMEgitignore 以及 licence 版权的信息。

完成这些设置后,GitHub 将显示一个新页面,提供几种初始化仓库的选项。对我们来说,重点是如何将本地仓库与远程仓库连接。以下是一个以 go-mongox 仓库为例的连接教程:

代码语言:bash
复制
git remote add origin git@github.com:chenmingyong0423/go-mongox.git
git branch -M main
git push -u origin main

本地初始化 Go 项目

使用 go mod init 命令初始化 Go 项目。

代码语言:go
复制
go mod init github.com/chenmingyong0423/go-mongox

模块名称推荐使用 github.com/${用户名 | 组织名}/${仓库名} 的格式。

编写代码和测试用例

go-mongox 仓库为例,创建路径为 builder/query/bson_build.go.go 文件,在该文件里编写一个 Id 函数,用于快速构建基于 Id 查询数据的 BSON 语句。

代码语言:go
复制
func Id(value any) bson.D {
    return bson.D{bson.E{Key: types.Id, Value: value}}
}

然后在测试文件 builder/query/bson_build_test.go 里编写测试代码:

代码语言:go
复制
func TestId(t *testing.T) {
    testCases := []struct {
        name  string
        value any
        want  bson.D
    }{
        {
            name:  "test id",
            value: "Mingyong Chen",
            want:  bson.D{bson.E{Key: "_id", Value: "Mingyong Chen"}},
        },
    }
    for _, tc := range testCases {
        t.Run(tc.name, func(t *testing.T) {
            assert.Equal(t, tc.want, Id(tc.value))
        })
    }
}

运行测试用例,确保可以得到预期的运行结果。

除了功能性的代码之外,我们还可以考虑添加一个 .gitignore 文件,用于过滤掉不必要的文件和目录,比如编译产生的临时文件或者编辑器生成的配置文件。此外,添加版权信息也是一个重要决策。可以在源代码文件的头部添加版权声明,以及在仓库中包含一个 LICENSE 文件,明确指出其他人使用你的代码的许可和条件。

提交代码并推送到 Github

编写代码并测试通过之后,我们就可以把代码推送到远程的 Github 仓库啦。

代码语言:bash
复制
git remote add origin git@github.com:chenmingyong0423/go-mongox.git
git branch -M main
git push -u origin main

发布版本

Github 仓库接收到最新的代码之后,我们就可以为自己的 Go 库发布第一个版本啦。

总体流程是这样的:访问仓库主页 → 点击 Releases 访问版本列表页 → 点击 Draft a new release 编辑版本 → 输入 tagRelease title 和版本描述 → 点击 Publish release 按钮发布版本。

下面是详细的步骤描述:

首先,访问 go-mongox 来到仓库主页,点击右下方的 Releases 选项,进入到版本列表页。

进入到列表页之后,点击右上方的 Draft a new release 按钮进入到版本发布页。

接着选择 tag(输入不存在的 tag 将被自动创建),命名格式推荐 vx.x.x。然后输入版本号 Release title(和 tag 命名一致)和编写版本描述,最后点击 Publish release 按钮进行版本的发布。

验证发布成功

发布我们自己的 Go 库之后,我们就可以在其他项目中安装并使用它啦。

  • 安装模块
代码语言:shell
复制
> go get github.com/chenmingyong0423/go-mongox

go: downloading github.com/chenmingyong0423/go-mongox v0.18.1
···
···
  • 使用
代码语言:go
复制
package main

import "github.com/chenmingyong0423/go-mongox/builder/query"

func main() {
        b := query.Id("陈明勇")
}

小结

本文详细探讨了如何从 01 创建、测试并发布属于自己的 Go 开源库。整个流程并不复杂,但需特别注意的地方是 module 模块的命名规范以及 tag 标签和版本号的命名规范性。此外,添加一个.gitignore 文件和版权信息,有助于用于过滤掉不必要的文件和目录,明确指出其他人使用你的代码的许可和条件。

为了进一步提升开源库的质量和维护性,我们可以考虑扩展一些额外的功能。例如,利用 Git 钩子(Git hooks)自动对代码进行格式校验或运行测试,确保只有通过测试的代码才能提交到仓库。

此外,我们还可以使用 Makefile 来简化构建和部署过程。通过定义 make 命令,你可以一键完成构建、测试、部署等多项任务,这样不仅提升了开发效率,也保证了操作的一致性和可重复性。详情可参考 go-mongox 项目。

我正在参与2024腾讯技术创作特训营最新征文,快来和我瓜分大奖!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 总体步骤
  • 创建 Github 仓库
  • 本地初始化 Go 项目
  • 编写代码和测试用例
  • 提交代码并推送到 Github
  • 发布版本
  • 验证发布成功
  • 小结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档