Golang编写客户端SDK,并开源发布包到GitHub,供其他项目import使用

news2024/11/27 21:33:05

目录

  • 编写客户端SDK,并开源发布包到GitHub
    • 1. 创建 GitHub 仓库
    • 2. 构建项目,编写代码
      • Go 代码示例:
      • 项目目录结构展示:
    • 3. 提交代码到 GitHub仓库
    • 4. 发布版本
    • 5. 现在其他人可以引用使用你的模块包了

编写客户端SDK,并开源发布包到GitHub

如果希望其他项目能够使用该SDK,可以将该SDK打包为一个Go模块,并将其发布到Go模块仓库中。这将使其他项目能够通过Go的模块依赖机制来使用该SDK。可以轻松地引用和使用你的代码。

1. 创建 GitHub 仓库

  1. 登录到你的 GitHub 帐户。
  2. 在 GitHub 主页点击右上角的加号(+),然后选择 “New repository”(新建仓库)。
  3. 给你的仓库起一个名称,选择是公共的,然后点击 “Create repository”(创建仓库)按钮。
  • 克隆项目到本地:使用 git clone 命令来克隆仓库到本地。需要提供 GitHub 仓库的 URL,可以在仓库页面的右上角找到 “Code” 按钮,然后选择 HTTPS 或 SSH URL。
  • 使用 HTTPS URL 克隆仓库:
    git clone https://github.com/用户名/仓库名.git
    
  • 使用 SSH URL 克隆仓库(需要配置 SSH 密钥):
    git clone git@github.com:用户名/仓库名.git
    

2. 构建项目,编写代码

克隆成功后,此时项目是一个空仓库,使用 go mod 的方式管理包,对项目进行初始化:

git mod init github.com/用户名/仓库名

初始化成功后,项目根目录下会新增一个 go.mod 文件。
⚠️ 注意:这里的项目名需要为 github.com/用户名/仓库名 (将用户名、仓库名替换为你实际项目中的名称)

Go 代码示例:

package client

type Client struct {
	AccessKey string
	SecretKey string
}

func NewClient(accessKey, secretKey string) *Client {
	return &Client{
		AccessKey: accessKey,
		SecretKey: secretKey,
	}
}

func (c *Client) GetNameByGet(name string) (data interface{}, err error) {
	return "名字是" + name, nil
}

项目目录结构展示:

在这里插入图片描述

3. 提交代码到 GitHub仓库

完成了代码编写及测试正常后,将代码提交到远程仓库中。

  1. 添加文件到暂存区: 使用 git add 命令将你要提交的文件添加到 Git 的暂存区。可以使用以下命令添加所有更改:

    git add .	//这个命令将当前目录下所有文件(包括新添加、修改和删除的文件)添加到暂存区。但它不会包括未跟踪的文件,也就是那些没有被 Git 管理的文件。如果你在项目中新建了文件,使用这个命令将不会将它们添加到暂存区。
    git add -Agit add --all	//这个命令会将当前目录下的所有更改(包括新添加、修改、删除的文件)以及未跟踪的文件全部添加到暂存区。它是一个更全面的命令,适用于确保所有更改都被提交到 Git。
    

    或者,如果你只想添加特定文件,可以使用:

    git add 文件名
    
  2. 提交更改: 使用 git commit 命令将暂存区的更改提交到本地仓库,并添加提交消息来描述你的更改。例如:

    git commit -m "添加了一个新功能"
    
  3. 推送到远程仓库: 使用 git push 命令。例如:

    git push -u origin 分支名
    

    将 “分支名” 替换为你要推送的分支名称。通常,main 或 master 是默认的主分支名称。

  4. 📢 注意,如果你是第一次提交到 GitHub 仓库,需要配置 Git 以关联本地仓库和远程仓库。使用 git remote 命令来添加远程仓库的别名。例如:

    git remote add origin 仓库URL
    

    “origin” 是远程仓库的别名,可以自定义。“仓库URL” 是你 GitHub 仓库的 URL。
    一旦关联了远程仓库,就使用 git push 将更改推送到远程仓库

4. 发布版本

push成功后,刷新GitHub上的仓库,确认项目代码已经上传成功。然后点击tags 创建标签和构建release版本。
在这里插入图片描述
接着点击:Create a new release
在这里插入图片描述
然后,添加一个版本号打上tag,完善描述信息后,点击 Publish release 发布。
![在这里插入图片描述](https://img-blog.csdnimg.cn/3404adc6ff7048acac4ecc897506066e.pn

5. 现在其他人可以引用使用你的模块包了

成功发布后,其他人就可以像平时使用第三方包一样直接go getimport 我们的模块包了。

go get github.com/用户名/仓库名

或者

require (
    github.com/用户名/仓库名 v1.0.0
)

然后运行 go get 命令下载该依赖。

使用该模块包:

package main
import "github.com/xiaoxiongmao5/xapi-clientsdk/client"

func main() {
	accessKey, secretKet := "zs", "123456"
	clientsdk = client.NewClient(accessKey, secretKey)
	data, err := clientsdk.GetNameByGet(name)
	if err != nil {
		fmt.Println("ERROR: Failed to read response, err=", err)
		return
	}
	fmt.Printf("SUCCESS: data=%T data=%v \n", data, data)
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/976288.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

记一次以太网连接失败修复

症状: 很久没用这个电脑了,开机以后,发现连不上校园网。 遂检查网线,发现网线连在自己笔记本是可以用的,说明网线没问题。 但是网线连在主机是红灯常亮黄灯闪烁,怀疑是网卡有问题(后证明不是&#xff0c…

成都车展:比亚迪“豹力美学”杀入硬派SUV市场

在熙熙攘攘人头攒动的2023成都国际车展上,如果要评选一家人气最旺的车企展台,那必然非比亚迪莫属。 在比亚迪现场展示的多款车型中,作为比亚迪旗下方程豹品牌的首款车型,以“超级混动硬派SUV”著称的方程豹5,自然吸引了…

nuxt中extendRoutes添加多个扩展路由

文档中https://www.nuxtjs.cn/api/configuration-router有写使用extendRoutes添加多个路由 添加多个路由,数组拼接只能使用push,其实均不管用

【王道】操作系统笔记 第一章 操作系统概述

1.1.1 操作系统的概念和功能 我们熟悉的操作系统有哪些? 从计算机系统的层次结构上看操作系统: 以一台电脑的诞生为例: 第一步,厂家组装一台裸机 第二步,出售前安装操作系统 第三步,用户安装应用程序 第四…

一日一技:Python如何同时调用多个GPT的API?

相信很多同学或多或少都在Python中使用过GPT API,通过Python安装openai库,来调用GPT模型。 OpenAI官方文档中给出了一个示例,如下图所示: OpenAI API 测试 如果你只有一个API账号,那么你可能不觉得这样写有什么问题。…

其他计算机系统基础知识

其他计算机系统基础知识 概述计算机语言多媒体系统工程系统工程方法切克兰德方法并行工程方法综合集成法WSR方法 系统工程的生命周期基于模型的系统工程 概述 不考 学系统工程就行 整体来说考的概率不大,以了解为主 计算机语言 多媒体 15年之前考过 系统工程 系统工…

systemverilog仿真时候传递参数

$test$plusargs和$value$plusarg的区别和使用 本文参考的文章vcs2021 user guiger 别的版本可能会有不一样 纯学习笔记 文章原文 ( t e s t test testplusargs) 在运行时启用调试功能 在“ifdef”编译器指令的位置使用 t e s t test testplusargs系…

web靶场——xss-labs靶机平台的搭建和代码审计

目录 一、web靶场-xss-labs靶机平台的搭建 1、将下载好的压缩包放置php的WWW根目录下 2、配置网站 3、启动MYSQL和Nginx 4、完成后我们就可以在浏览器输入127.0.0.1:8088进入靶场 二、xss-labs靶场通关攻略 第一关: 1、输入代码进行测试&#xf…

Linux——(第三章)Vi和Vim编辑器

目录 1.Vi和Vim的基本介绍 2.Vi和Vim三种模式的切换 3.一般模式 4.编辑模式 5.指令模式 1.Vi和Vim的基本介绍 Vi是Unix操作系统和类Unix操作系统中最通用的文本编辑器。 Vim编辑器是从Vi发展出来的一个性能更强大的文本编辑器。可以主动的以字体颜色辨别语法的正确性&…

Python怎么实现更高效的数据结构和算法? - 易智编译EaseEditing

要实现更高效的数据结构和算法,你可以考虑以下几个方面的优化: 选择合适的数据结构: 选择最适合你问题的数据结构至关重要。例如,如果需要频繁插入和删除操作,可能链表比数组更合适。如果需要高效查找操作&#xff0…

加餐1|辞职问题:古人怎么写高端辞职信?

好诗相伴,千金不换。你好,我是天博。 我们这一讲是加餐,我想聊的是,古人是怎么处理我们现实生活里的一些难题的,比如古人是怎么面试的,怎么辞职的。在加餐里,我不会主讲某首诗,而是…

跨源资源共享(CORS)Access-Control-Allow-Origin

1、浏览器的同源安全策略 没错,就是这家伙干的,浏览器只允许请求当前域的资源,而对其他域的资源表示不信任。那怎么才算跨域呢? 请求协议http,https的不同域domain的不同端口port的不同 好好好,大概就是这么回事啦&…

高效能,一键批量剪辑,AI智剪让创作更轻松

在今天的数字化时代,视频制作已经成为各种行业和领域的必备技能。然而,视频剪辑过程往往繁琐且耗时,大大降低了我们的工作效率。幸运的是,随着人工智能技术的发展,我们有了新的解决方案——AI智剪软件。 AI智剪软件&am…

4年外包出来人废了,5个面试挂了4个....

我的情况 大概介绍一下个人情况,男,毕业于普通二本院校非计算机专业,18年跨专业入行测试,第一份工作在湖南某软件公司,做了接近4年的外包测试工程师,今年年初,感觉自己不能够再这样下去了&…

Spring源码解析-构造函数

1、构造函数概述 构造函数中,主要创建两个对象分别用来读取注解参数和classpath下的文件 AnnotatedBeanDefinitionReader 专门读取注解参数的Reader ClassPathBeanDefinitionScanner 专门读取classpath下的文件,例如yml、properties等。 AnnotationC…

hive指定字段插入数据,包含了分区表和非分区表

1、建表 语句如下: CREATE EXTERNAL TABLE ods_lineitem_full (l_shipdate date,l_orderkey bigint,l_linenumber int,l_partkey int,l_suppkey int,l_quantity decimal(15, 2),l_extendedprice decimal(15, 2),l_discount de…

专题:跨域数据管理

点击上方蓝字关注我们 2023年2月,中共中央、国务院印发《数字中国建设整体布局规划》,指出建设数字中国是数字时代推进中国式现代化的重要引擎,加快数字中国建设,对全面建设社会主义现代化国家、全面推进中华民族伟大复兴具有重要…

JVM详细教程

JVM 前言 还在完善中先发布 JVM虚拟机厂家多钟多样,具体实现细节可能不一样,这里主要讲的是虚拟机的规范,以下内容融合了各个平台发布的内容和周志明老师的《深入理解java虚拟机》 JVM概述 如何理解jvm跨平台? 编译成汇编代码…

供应商多样性:减少电子元器件供应链风险

供应商多样性是为了减少电子元器件供应链风险而采取的一项重要战略。以下是一些关于如何通过供应商多样性来降低风险的方法: 多供应商采购策略: 不要依赖于单一供应商,而是寻找多个可靠的供应商。这有助于分散风险,当一个供应商出…

大数据的关键技术之——大数据采集

大数据的关键技术之——大数据采集 本文目录: 一、写在前面的话 二、大数据采集概念 三、大数据采集步骤 3.1、大数据采集步骤(总体角度) 3.2、大数据采集步骤(数据集角度) 3.3、大数据采集步骤(数据…