热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Gitlab下私有Gomodules的搭建配置

Gitlab下私有Gomodules的搭建配置-前言团队目前使用GitlabCE作为Golang代码仓库使用,需要把一些常用的公共代码块(工具类、RPC接口等)独立成模块供其他

前言
  • 团队目前使用GitlabCE作为Golang代码仓库使用,需要把一些常用的公共代码块(工具类、RPC接口等)独立成模块供其他二方系统调用.这样能复用代码块,方便扩展与维护.因此考虑使用Gitlab配合go mod,实现私有而方包的管理.

准备
  • Gitlab 13.10.3
  • Golang 1.16.3
  • 指向Gitlab的HTTPS域名,这里我们模拟域名为:my.gitlab.private
  • Nginx 1.18.0

链路

原理
  • go get 下载路径为域名+项目路径的格式,而且默认使用https下载,所以我们可以使用nginx搭建https服务,将请求通过http转发给gitlab,实现二方包的下载.

实践

Gitlab准备

启用 go proxy

  • 登录gitlab-rails console启用go proxy功能

准备go module工程

  • 这里假定工程的完成路径为:my.gitlab.private/mytest/mysu…
  • 我们的go.mod文件的module名要设置为module my.gitlab.private/mytest/mysubtest/myproject.git
    • 注意⚠️:go module的名称要和gitlab的路径保持一致

  • 给工程打上tag,用于区分版本用

配置用户的AccessToken

  • 注意⚠️:Scopes选择api;用户要有能访问上文仓库的权限.

Nginx配置

HTTPS配置

 server {
        listen    443 ssl;
        server_name  my.gitlab.private;
        ssl_certificate     /etc/nginx/conf.d/gitlab-ssl.crt;
        ssl_certificate_key   /etc/nginx/conf.d/gitlab-ssl.key;

        ssl_session_timeout  5m;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers on;

        location / {
            proxy_pass http://127.0.0.1:80; #gitlab的http地址
            if ($args ~* "^go-get=1") {
                set $condition goget;
            }
            if ($uri ~ ^/([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/.*$) {
                set $condition "${condition}path";   
            }
            if ($cOndition= gogetpath) {
             return 200 "$1/$2 git https://my.gitlab.private/$1/$2.git' name='go-import'>";
            }
        }
}
  • 当可以通过浏览器访问my.gitlab.private 到达gitlab的页面,证明配置成功了.

Golang环境配置

Golang全局环境配置

环境变量内容
GO111MODULEon
GOPROXYgoproxy.cn
GOPRIVATEmy.gitlab.private
  • 使用GOPRIVATE,让私有库从my.gitlab.private上获取.

配置.netrc文件

  • 此文件是让go get访问gitlab的仓库使用的
  • 路径为 ~/.netrc
  • 内容为: machine login password

  • 比如:machine my.gitlab.private login admin password fqq3d7LsMxxa-hoK_sNvk

测试依赖包获取

  • 运行命令: go get my.gitlab.private/mytest/mysubtest/myproject.git
  • 打开$GOPATH/pkg/mod/my.gitlab.private,可以看到私有库的依赖已被下载到本地

总结
  • go get 需要用域名的方式,内网用户需要自己在内网搭建DNS解析服务
  • go get 的时候,最后的.git不能忽略

参考
  • blog.zhaoweiguo.com/2019/09/24/…

推荐阅读
  • 本文介绍了如何使用JSONObiect和Gson相关方法实现json数据与kotlin对象的相互转换。首先解释了JSON的概念和数据格式,然后详细介绍了相关API,包括JSONObject和Gson的使用方法。接着讲解了如何将json格式的字符串转换为kotlin对象或List,以及如何将kotlin对象转换为json字符串。最后提到了使用Map封装json对象的特殊情况。文章还对JSON和XML进行了比较,指出了JSON的优势和缺点。 ... [详细]
  • Android实战——jsoup实现网络爬虫,糗事百科项目的起步
    本文介绍了Android实战中使用jsoup实现网络爬虫的方法,以糗事百科项目为例。对于初学者来说,数据源的缺乏是做项目的最大烦恼之一。本文讲述了如何使用网络爬虫获取数据,并以糗事百科作为练手项目。同时,提到了使用jsoup需要结合前端基础知识,以及如果学过JS的话可以更轻松地使用该框架。 ... [详细]
  • Gitlab接入公司内部单点登录的安装和配置教程
    本文介绍了如何将公司内部的Gitlab系统接入单点登录服务,并提供了安装和配置的详细教程。通过使用oauth2协议,将原有的各子系统的独立登录统一迁移至单点登录。文章包括Gitlab的安装环境、版本号、编辑配置文件的步骤,并解决了在迁移过程中可能遇到的问题。 ... [详细]
  • 工作经验谈之-让百度地图API调用数据库内容 及详解
    这段时间,所在项目中要用到的一个模块,就是让数据库中的内容在百度地图上展现出来,如经纬度。主要实现以下几点功能:1.读取数据库中的经纬度值在百度上标注出来。2.点击标注弹出对应信息。3 ... [详细]
  • 编者注:疲于应付各种漏洞影响,欢迎使用gitee.com漏洞预警GitlabWikiAPI远程代码执 ... [详细]
  • 我们正在合并到公司的Git中。我们有这种特定的情况,其中我们的主分支是我们 ... [详细]
  • 使用在线工具jsonschema2pojo根据json生成java对象
    本文介绍了使用在线工具jsonschema2pojo根据json生成java对象的方法。通过该工具,用户只需将json字符串复制到输入框中,即可自动将其转换成java对象。该工具还能解析列表式的json数据,并将嵌套在内层的对象也解析出来。本文以请求github的api为例,展示了使用该工具的步骤和效果。 ... [详细]
  • 服务器上的操作系统有哪些,如何选择适合的操作系统?
    本文介绍了服务器上常见的操作系统,包括系统盘镜像、数据盘镜像和整机镜像的数量。同时,还介绍了共享镜像的限制和使用方法。此外,还提供了关于华为云服务的帮助中心,其中包括产品简介、价格说明、购买指南、用户指南、API参考、最佳实践、常见问题和视频帮助等技术文档。对于裸金属服务器的远程登录,本文介绍了使用密钥对登录的方法,并提供了部分操作系统配置示例。最后,还提到了SUSE云耀云服务器的特点和快速搭建方法。 ... [详细]
  • 本文介绍了OpenStack的逻辑概念以及其构成简介,包括了软件开源项目、基础设施资源管理平台、三大核心组件等内容。同时还介绍了Horizon(UI模块)等相关信息。 ... [详细]
  • 模板引擎StringTemplate的使用方法和特点
    本文介绍了模板引擎StringTemplate的使用方法和特点,包括强制Model和View的分离、Lazy-Evaluation、Recursive enable等。同时,还介绍了StringTemplate语法中的属性和普通字符的使用方法,并提供了向模板填充属性的示例代码。 ... [详细]
  • AstridDAO 专访:波卡稳定币黑马 BAI
    加入Pol ... [详细]
  • Thisworkcameoutofthediscussioninhttps://github.com/typesafehub/config/issues/272 ... [详细]
  • adfs是什么_培训与开发的概念
    adfs是什么_培训与开发的概念(如您转载本文,必须标明本文作者及出处。如有任何疑问请与我联系me@nap7.com)ADFS相关开发技术的中文资料相对匮乏,之前在弄这个东西的时候 ... [详细]
  • OWASP(安全防护、漏洞验证工具)开放式Web应用程序安全项目(OWASP,OpenWebApplicationSecurityProject)是一个组织 ... [详细]
  • gitlab安装步骤1.下载:地址:https:bitnami.comstackgitlabinstaller下载的版本为:bitnami-gitlab-8.5.7-0-linux-x64- ... [详细]
author-avatar
浅唱_夏染_744
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有