发布golang第三方包详细流程

举报
PayneWu 发表于 2021/03/31 02:59:43 2021/03/31
【摘要】 减少项目耦合性,第三方包化

事情是这样的,随着公司的业务的增长。各种重复的工作越来约多。CV久了就想在进一步的那啥,毕竟我懒,不是。我就想着能不能把那些重复cv的干脆写成一个第三方包,进行调用。咱不谈那些啥封装啥的,我也想过,我也做过。但无论咋封装,总不可能跨项目吧,还是需要。。。

所幸,还是有方法的,来吧,让我们发表第一个golang工具包

创建项目仓库

  1. 首先输入仓库的名字,我这里输入simpleExample,用来做演示
  2. 这里选择public,公开。要不并不好拉
  3. 选择需要添加的文件(可选)
  4. 鼠标左键点击create repository创建此仓库

完成后就有一个名为simpleExample的项目仓库,如下图所示。

如果第三步全都没选的话就是另外一个图了

这一步还是很简单的,毕竟github,全球最大的程序员交友网站不是。2110年了相信大家还是都会用的,是实在不会的,可自行百度,或者Google。

拉取仓库,编辑示例代码

第一步,鼠标左键点击code

第二步,点击后面类似于粘贴板的东西,复制https的URL

然后在cd到GOPATH中使用git,把这个项目clone下来

例如,我在这里的使用的git命令如下

git clone https://github.com/Golzaes/simpleExample.git

执行成功后使用 ls命令查看一下

使用编辑器打开simpleExample这个项目文件夹,如下图所示

go module初始化

+ go mod init "github.com/Golzaes/simpleExample"
- go mod init "github.com/组织名/项目名" 

注意:这里的一定是"github.com/组织名/项目名"这样的格式

创建文件夹与示例代码

// Example/example.go
package exampleCode

import "math/rand"

// ReadNumber create random number
func ReadNumber() int {
	// random number range
	rnr := 10
	//  returns, as an int, a non-negative pseudo-random number in [0,n)
	return rand.Intn(rnr)
}

注意这里的函数名ReadNumber,首字母必须大写!!!

否则无法再外部调用此函数

来个简单的单元测试

// Example/example_test.go
package exampleCode

import "testing"

func TestReadNumber(t *testing.T) {
	tests := []struct {
		name string
		want int
	}{
		// TODO: Add test cases.
		{
			"exampleCode1",
			1,
		}, {
			"exampleCode2",
			2,
		}, {
			"exampleCode3",
			3,
		}, {
			"exampleCode4",
			4,
		},{
			"exampleCode5",
			5,
		},
	}
	for _, tt := range tests {
		t.Run(tt.name, func(t *testing.T) {
			if got := ReadNumber(); got != tt.want {
				t.Errorf("ReadNumber() = %v, want %v", got, tt.want)
			}
		})
	}
}

运行测试

有个测试过了,说明我们的代码没有问题,也可以外部调用

推送与发布代码

使用以下命令,提交与push

git add exampleCode/
git commit -am "add exampleCode"
git push origin master

仔细对比就会发现,这里多了个exampleCode文件夹。到这里我们就已经将代码push到了github,接下来我们发布一个,这样我们可以在另外一个项目中以第三方包的形式使用

第一步,点击releases下面的create a new releases

先 填写标签号(常规格式是 x.y.z)例如我的v0.0.1,

填写发表的标题,一般是项目名

填写简介

然后鼠标左键点击 左下方的publish release,进行发布,发布完成后会自动跳转到如下图所示的发布栏

至此,发布部分就已经完成了。那么自己来测试一下这个第三方包

使用发布的第三方包

新建一个项目、go mod init初始化、创建文件夹就不过多赘述了

下载我们发布的包

go get github.com/Golzaes/simpleExample/exampleCode

在项目中import 这个包

小结

本文从创建仓库开始到发布第三方包后到使用第三方包,这样我们就可以跨项目使用啦。

如果测试未完成,请重新查阅。尤其是注意点!!!

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。