Go語言中,公司gitlab私有倉庫依賴拉取配置

為什么要考慮私有倉庫

Go語言目前都已經采用了官方統一的 go modules 來管理依賴,后續也不太可能出現比較亂的生態, 因此了解下如何讓這個依賴管理正常工作是非常必要的。

對于Github或者其他公有倉庫,依賴管理是非常直接和方便的,設置好GOPROXY后,使用 go get去直接操作依賴,是不會報錯的,很方便直接, 但是對于一些公司或者組織,一些代碼不能公開的, 那就涉及到私有依賴管理了, 通常而言,直接使用go get 肯定會報錯,去網上搜搜也不太全,設置完git url替換 之后,依然會報錯。 本文主要是講述,如何進行開發設置而不報錯。

對于沒有子目錄的gitlab項目

如下面這種方式:

# 倉庫地址
https://gitlab.com/group/project# gomodule 名稱為
gitlab.com/group/project

可以使用如下命令進行設置, 設置完成之后,則可以通過?go get自動獲取到依賴

# 設置GOPRIVATE環境變量
go env -w  GOPRIVATE=gitlab.com
go env -w  GOPRIVATE=gitlab.bitmartpro.com# 設置URL替換,把https轉為ssh獲取依賴
git config --global url."git@gitlab.com".insteadOf "https://gitlab.com"
git config --global url."git@gitlab.bitmartpro.com:".insteadOf "https://gitlab.bitmartpro.com/"# 如果遇到https報錯,可以設置如下,如果本身就是正常的https就不用去管了
git config --global http.sslVerify false

按照如上方法設置一下,你就能輕松通過?go get來獲取到私有的依賴,但這種方式有一個弊端,就是如果項目放在子目錄下面,則依賴獲取仍然會失敗,下面就會講一下兩種在子目錄存在的情況下,如何正常去獲取私有依賴的方法。

對于子目錄的gitlab項目

如下面這種方式

# 項目地址
https://gitlab.com/group/subgroup/project# go module 名稱
gitlab.com/group/subgroup/project

即使我們設置了正常的ssh key,和git的url替換,仍然會得到報錯

The project you were looking for could not be found or you don't have permissions to view it.

當我們用搜索引擎去搜去解決問題的時候,我們基本上搜到的結果都是讓你去改 go module 的名稱,如下

rm go.mod go.sum
go mod init gitlab.com/myuser/foogroup/barlib.git
go mod tidycd /go/src/another_project
go get gitlab.com/myuser/foogroup/barlib.git

它要求,必須要以 .git結尾,這樣是一種比較簡單的解決方案,但是正常的go module 命名一般是不帶 .git 結尾的。 發生這種情況的原因是,它go get嘗試發現給定路徑上的模塊以找到請求的 Go 模塊存儲庫。只有找到存儲庫后,工具才會執行git clone或git checkout使用 SSH 密鑰進行身份驗證。問題歸結為這樣一個事實:如果沒有 Gitlab 訪問令牌,就無法列出/查看私有Gitlab 子組。 所以這個時候,我們就要用到下面這種方法。

  1. 在gitlab中創建token Gitlab->Preferences->Access Tokens
  2. 對于windows系統, 你可以先設置一個HOME的環境變量,指向你的用戶目錄,然后在用戶目錄下創建 _netrc文件; 對于Mac/Linux 則可以直接創建 ~/.netrc 文件
  3. 按照如下方式編輯 ~/.netrc 文件
machine gitlab.comlogin my_gitlab_usernamepassword my_gitlab_token
  • 上述machine是指你的gitlab倉庫的地址
  • login 則為你的gitlab的用戶名
  • password就是第一步創建的gitlab訪問token

結合如上幾種方式,你應該可以完整的解決掉你的go 獲取私有依賴的問題。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/24165.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/24165.shtml
英文地址,請注明出處:http://en.pswp.cn/web/24165.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

C++ 依賴的C庫查看和下載

依賴庫查詢:ldd 指令 # ldd libcyber.solinux-vdso.so.1 (0x0000ffff86b52000)libopt_proto.so > /home/caros/cyberrt/lib/libopt_proto.so (0x0000ffff84c4a000)libboost_filesystem.so.1.73.0 > /opt/orin/usr/local/lib/libboost_filesystem.so.1.73.0 (…

Java版工程項目管理平臺:以源碼驅動,引領工程企業數字化轉型

在當今數字化時代,隨著企業的擴張和業務的增長,傳統的工程項目管理方法已顯不足。為了提升管理效率、減輕工作負擔、增強信息處理的快速性和精確度,工程企業亟需借助數字化技術進行轉型升級。本文將向您展示一款基于Spring Cloud、Spring Boo…

SS2D反向傳播問題記錄【未解決】

使用SS2D寫了一個簡單的神經網絡進行訓練,但是訓練報錯: NotImplementedError: You must implement either the backward or vjp method for your custom autograd.Function to use it with backward mode AD. 環境: CUDA11.8 torch2.0.0 mam…

AI大模型日報#0607:10家國產大模型、GPT-4o挑戰高考作文 | OpenAI公開破解GPT-4新方法

導讀:AI大模型日報,爬蟲LLM自動生成,一文覽盡每日AI大模型要點資訊!目前采用“文心一言”(ERNIE 4.0)、“零一萬物”(Yi-Large)生成了今日要點以及每條資訊的摘要。歡迎閱讀&#xf…

TS 系列:使用元祖生成聯合類型

需求:有這么個需求,我們有兩個數組,一個記錄撲克牌花色,一個記錄撲克牌點數,需要有一個函數,傳遞兩個值,根據傳遞的值生成撲克牌,需要我們定義參數的類型檢查。 思路:肯…

2024速通python之python高階技巧

文章目錄 一、閉包1.什么是閉包2.優缺點3.nonlocal關鍵字 二、裝飾器1.什么是裝飾器2.舉例3.傳統方式4.裝飾器方式5.語法糖寫法 三、多線程1.線程參數2.多線程編程 四、網絡編程1.Socket服務端編程2.Socket客戶端編程 「章節總覽」 ??????【2024速通python之python基礎…

超過20W個高質量組件的開源PCB庫

項目介紹 Celestial Altium Library是由Altium行業專家Mark Harris創建的一個龐大的免費開源數據庫庫,專為Altium Designer而設計,庫中包含超過20萬個優質組件 . 特點 高質量數據:Celestial Altium Library注重數據的質量,用戶可…

Day14:響應式網頁

通過媒體查詢、Bootstrap 框架完成騰訊全端網頁響應式布局。 一、響應式布局方案 1、什么是響應式布局 它的主要特點是能夠使網頁根據不同的設備屏幕尺寸(如桌面電腦、平板電腦、手機等)和分辨率自動調整布局和顯示效果,以提供最佳的用戶體…

python的plt.axis()、plt.xlim() 和 plt.ylim()函數

坐標軸相關設置1、plt.axis():坐標軸設置 函數 plt.axis(*v, **kwargs) 主要用于設置坐標軸的屬性,返回值為當前的坐標軸范圍 [xmin, xmax, ymin, ymax],幾種調用方式如下: 調用方式 說明 axis() 返回當前的坐標軸范圍 [xmin, xmax, ymi…

pytorch構建模型訓練數據集

pytorch構建模型訓練數據集 pytorch構建模型訓練數據集1.AlexNet:1.1.導入必要的庫:1.2.數據預處理和增強:1.3.加載數據集:1.4.劃分測試集和訓練集:1.5.創建數據加載器:1.6.加載AlexNet模型:1.7.修改模型以…

qt qDebug兼容LOGE

目錄 普通qDebug用法 qt qDebug兼容LOGE 模板參數2實現 qDebug 實現LOGE一樣的用法,這樣Android和qt同時支持LOGE打印日志 普通qDebug用法 #include <QApplication> #include <QDebug>int main(int argc, char *argv[]) {QApplication app(argc, argv);int ret…

帝國cms接入騰訊云人臉識別認證代碼

利用帝國cms在做一些會員系統的時候&#xff0c;需要做人臉識別認證&#xff0c;之前接入了某api接口&#xff0c;發現身份證識別率真的低&#xff0c;還好充值的少&#xff0c;否則要出問題&#xff0c;后來發現會員注冊率降低了不少&#xff0c;最終還是決定使用騰訊云的人臉…

三十五篇:數字化轉型的引擎:賦能企業的ERP系統全景

數字化轉型的引擎&#xff1a;賦能企業的ERP系統全景 1. 引言 在這個快速變化的數字時代&#xff0c;現代企業面臨著前所未有的挑戰和機遇。企業資源計劃&#xff08;ERP&#xff09;系統&#xff0c;作為數字化轉型的核心&#xff0c;扮演著至關重要的角色。它不僅是企業運營…

第二十六章HTML與CSS書寫規范

1.HTML書寫規范 1.文檔類型聲明及編碼 統一為html5 聲明類型。編碼統一為utf-8。 2.頁面tdk TDK是一個縮寫&#xff0c;其中“T”表示為網頁定義標題&#xff0c;“D”表示為網頁定義描述 description&#xff0c;“K”表示為搜索引擎定義關鍵詞keywords。 1、<title&g…

NFT Insider #133:蘇富比將拍賣BAYC系列NFT,Taiko創世NFT系列已上線

引言&#xff1a;NFT Insider由NFT收藏組織WHALE Members &#xff08;https://twitter.com/WHALEMembers&#xff09;、BeepCrypto &#xff08;https://twitter.com/beep_crypto&#xff09;聯合出品&#xff0c;濃縮每周NFT新聞&#xff0c;為大家帶來關于NFT最全面、最新鮮…

立創·天空星開發板-GD32F407VE-EXTI

本文以 立創天空星開發板-GD32F407VET6-青春版 作為學習的板子&#xff0c;記錄學習筆記。 立創天空星開發板-GD32F407VE-EXTI 中斷硬件觸發中斷示例軟件觸發中斷示例 中斷 中斷分為內部中斷和外部中斷 外部中斷是由外部設備&#xff08;如按鍵、傳感器、通信接口等&#xff09…

rollup.js(入門篇)

前沿 Rollup 是一個用于 JavaScript 的模塊打包工具&#xff0c;它將小的代碼片段編譯成更大、更復雜的代碼&#xff0c;例如庫或應用程序。它使用 JavaScript 的 ES6 版本中包含的新標準化代碼模塊格式&#xff0c;而不是以前的 CommonJS 和 AMD 等特殊解決方案。ES 模塊允許…

如何在Python中處理時間和日期

在Python中處理時間和日期&#xff0c;我們通常使用內置的datetime模塊。這個模塊提供了類來操作日期和時間&#xff0c;包括date、time、datetime、timedelta以及tzinfo。以下是datetime模塊的一些基本用法&#xff1a; 1. 獲取當前日期和時間 python復制代碼 from datetime…

Linux編程for、while循環if判斷以及case語句用法

簡介 語法描述if條件語句if else條件判斷語句if else-if else多條件判斷語句for循環執行命令while循環執行命令until直到條件為真時停止循環case ... esac多選擇語句break跳出循環continue跳出當前循環 1. for 循環 for語句&#xff0c;定量循環&#xff0c;可以遍歷一個列表…

一文讀懂AI時代GPU的內存新寵-HBM

一文讀懂GPU最強輔助&#xff1a;HBM HBM&#xff0c;即高帶寬內存&#xff0c;是一項領先的3D堆疊DRAM技術&#xff0c;專為高性能計算和圖形處理單元&#xff08;GPU&#xff09;設計&#xff0c;滿足其對內存帶寬和容量的極致需求。該技術由AMD與海力士攜手研發&#xff0c;…