golang 项目引入私有仓库包

news/2024/11/15 4:16:06/文章来源:https://www.cnblogs.com/changfan/p/18425452

场景:

当你多个项目,都需要使用一个或者多个方法,那么可以将公共方法,抽成一个包,进行管理(类似Log模块等)。这时候可以将你的包上传到私有的仓库,其他项目引入该包即可。下面来介绍下,如何引用私有仓库的包。

1. 创建一个新的 Git 标签

假设你已经在你的私有 GitLab 仓库目录中,并且你已经提交了所有的更改(运行了 git addgit commit)。现在你可以通过如下命令创建一个新的标签。

git tag v0.1.0

 

如果你想要附加注释到该标签,可以使用:

 
git tag -a v0.1.0 -m "Initial release"

 

2. 推送标签到 GitLab:

创建标签之后,需要将其推送到远程仓库:

 
git push origin v0.1.0
 
这样标签 v0.1.0 就会被推送到远程仓库,你的模块版本也就设置好了。
 

3. 在 go.mod 文件中使用这个版本号

在你需要调用这个私有模块的项目中,更新 go.mod 文件,指向这个特定的版本号。这可以通过 go get 命令自动完成:

 
go get gitlab.com/yourusername/yourrepository@v0.1.0

 

或者手动编辑 go.mod 文件:

 
module your-other-projectgo 1.18require (gitlab.com/yourusername/yourrepository v0.1.0
)

在这里需要注意,gitlab.com/yourusername/yourrepository这里的包名一定需要和依赖的包名保持一致

 

4. 更新依赖

 
go mod tidy

 

5.注意事项 

5.1 访问GitLab仓库认证失败

fatal: could not read Username for 'https://gitlab.xxxx.cn': terminal prompts disabled
Confirm the import path was entered correctly.
If this is a private repository, see https://golang.org/doc/faq#git_https for additional information.

出现此错误通常是在访问私有 GitLab 仓库时认证失败。要解决这个问题,可以通过以下方法来确保 go get 能够正确地通过 HTTPS 认证访问私有仓库。

这里介绍一种设置环境变量的方法
 

1. 创建一个 Shell 脚本文件来返回访问令牌: 

echo 'echo <your_personal_access_token>' > /path/to/git-askpass.sh
chmod +x /path/to/git-askpass.sh
 
 
拓展如何获得access_token:
  1. 登录到你的 GitLab 账户。
  2. 点击右上角的用户头像,然后选择 "Settings"。
  3. 在左侧导航栏中选择 "Access Tokens"。
  4. 输入 token 名称,选择相应的作用域(至少需要 read_repository 权限)。
  5. 点击 "Create personal access token"。

 

2. 设置环境变量
export GIT_ASKPASS='/path/to/git-askpass.sh'
export GIT_TERMINAL_PROMPT=0

 

3.配置 GOPRIVATE

如果尚未配置,确保设置 GOPRIVATE 环境变量来指示 Go 不要在 go get 期间使用 Go module proxy。

 
export GOPRIVATE=gitlab.com/yourusername/*

 

通过这种方式,GIT_ASKPASS 脚本会在 Git 认证时返回访问令牌,从而避免手动输入用户名和密码。

 

 

 
 

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

设计模式之——装饰者模式

前言: 装饰者模式是结构性设计模式之一,其在不必改变类文件及不适用继承的情况下,动态的扩展一个对象的功能。它通过创建一个包装对象(即装饰)来包裹真实的对象。 一.定义 动态的给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更加灵活。 装饰者模式的…

解决vsc中文乱码

关于vs code使用code runner运行python代码出现中文乱码的解决办法_code runner 运行乱码-CSDN博客 Code Runner插件设置 "set PYTHONIOENCODING=utf8 && python -u"

CSP-S 2024 提高组初赛第一轮初赛试题及答案解析

CSP-S 2024 提高组初赛第一轮初赛试题及答案解析 一、 单项选择题(共15题,每题2分,共计30分:每题有且仅有一个正确选项) 1 在 Linux 系统中,如果你想显示当前工作目录的路径,应该使用哪个命令?( ) A pwd B cd C ls D echo 答案 A 解析 A pwd:这个命令是“prin…

结对项目:四则运算题目生成

这个作业属于哪个课程 22级计科1班这个作业要求在哪里 作业要求这个作业的目标 自动生成小学四则运算题目github项目链接 链接姓名&学号姓名 学号万凯毅 3122004788周彦安 3122004804PSPPSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)Plannin…

帝国CMS搬家后无法发文章或者上传图片无法显示?

如果你在搬家后遇到无法发文章或上传图片的问题,通常是因为权限设置不当导致的。以下是一些详细的步骤来解决这些问题: 1. 检查目录权限 无法发文章检查栏目目录及子文件夹权限确保栏目目录及其子文件夹具有适当的权限。 通常需要将这些目录设置为 777 权限。shchmod -R 777 …

WordPress数据库连接失败是最常见的错误情况

WordPress数据库连接失败常见原因及解决方法 官方提示的三种情况数据库名、用户名或密码错误解决方法:检查并确认数据库名称、用户名和密码是否正确无误。数据库主机地址错误解决方法:通常填写localhost即可;如果是远程数据库,请根据主机提供商提供的地址进行填写。数据库未…

打靶记录 SickOS 1.1

https://www.vulnhub.com/entry/sickos-11,132/主机发现端口扫描探测存活主机,136是靶机,因为靶机是我最后添加的 nmap -sP 192.168.75.0/24 // Starting Nmap 7.93 ( https://nmap.org ) at 2024-09-22 11:36 CST Nmap scan report for 192.168.75.1 Host is up (0.00038s l…

简单部署Memos

从0到1借助宝塔面板快速部署Memos前言:此处以阿里云为例,利用宝塔面板部署 此文章是部署之后写的,因此有些截图是后补充的,缺少一些执行结果展示和详细步骤的缺失,请根据实际情况做调整准备购买阿里云服务器 ECS着手 创建实例进入阿里云控制台,我的资源→云服务器 ECS; …

发展低空经济,对地理信息技术提出了哪些要求

随着低空经济的快速发展,地理信息技术在其中扮演着越来越重要的角色。低空经济涉及无人机、电动垂直起降(eVTOL)飞行器等航空器的低空飞行活动,其对地理信息技术提出了新的要求和挑战。 1. 高精度定位与导航低空经济中的无人机和eVTOL等航空器需要精确的定位和导航服务。地…

05-信息扫描漏洞探测的工具使用

1、安装并使用Nmap扫描一个地址(本机、VPS、虚拟机环境都可以),提供扫描结果截图在https://nmap.org/ nmap官网下载对应的操作系统版本文件。安装完成后对本机10.0.0.151进行 -A(探测操作系统及版本),-T4(加速扫描),-sS(半连接扫描)。2、安装并使用Xray被动扫描,提供过程…

帝国网站管理系统忘记后台账号和密码怎么办?

如果你忘记了帝国网站管理系统的后台账号和密码,可以通过以下几个步骤来尝试恢复或重置: 情况一:只知道密码忘记了使用数据库管理工具登录phpMyAdmin或其他数据库管理工具。 选择帝国CMS所使用的数据库。 找到用户表,通常为phome_enewsuser,但请注意实际表名可能会根据安装…

帝国CMS提示“Notice: Use of undefined constant”错误说明: php.ini配置问题

当你在 PHP 应用中遇到 “Notice: Use of undefined constant” 的错误提示时,这通常是因为代码中引用了一个未定义的常量。这种错误通常不会导致程序崩溃,但会影响代码的可读性和稳定性。 错误原因未定义的常量代码中引用了一个未定义的常量。错误报告级别当前的错误报告级别…