【golang】go mod私有倉庫配置

文章目錄

  • Golang版本控制
    • go mod使用私有倉庫(gitlab)依賴設置
    • 配置代碼托管站點
      • Go mod尋找代碼倉庫原理
      • 使用代理實現代碼托管站點訪問

Golang版本控制

go version v1.22.0

當我們新建一個go項目時,在項目根目錄下執行go mod init可以初始化go.mod文件用于管理包依賴。后續執行go mod tidy更新并下載所有的依賴包。
如果我們沒有進行配置,則只能訪問公共開源倉庫。如果想要下載私有倉庫依賴包則需要進行一些配置。

go mod使用私有倉庫(gitlab)依賴設置

假如想配置托管站點gitlab.example.cn,按照如下步驟操作:

  1. 設置GOPRIVATE環境變量,防止走代理:
    • go env -w GOPRIVATE=*.gitlab.example.cn/*
    • go env -w GONOPROXY=*.gitlab.example.cn/*
  2. 配置倉庫訪問權限,有兩種方式:
    • 方式一(推薦): 配置git將請求從ssh轉換為https:git config --global url."ssh://git@gitlab.example.cn/".insteadof "https://gitlab.example.cn/"
    • 方式二:添加倉庫訪問Token: git config --global http.extraheader "PRIVATE-TOKEN: YOUR_PRIVATE_TOKEN"
  3. 由于訪問不到驗證服務器,如下方式二選一:
    • 方式一:go env -w GONOSUMDB=gitlab.example.com/*
    • 方式二:關閉驗證服務 go env -w GOSUMDB=off
  4. 如果私有庫不支持https協議,設置跳過CA證書校驗:go env -w GOINSECURE='gitlab.example.com/*'

配置完成后可以git config -l查看git配置,也可以通過.gitconfig直接編輯git配置:

[http]extraheader = PRIVATE-TOKEN:UsQsxy5q_Nqy-pXHtu-V[url "ssh://git@gitlab.example.cn/"]insteadof = https://gitlab.example.cn/

通過go env查看環境變量配置,也可以直接通過profile配置環境變量:

export GOPRIVATE=*.gitlab.example.com/*
export GONOPROXY=*.gitlab.example.com/*
export GOINSECURE=*.gitlab.example.com/*
export GONOSUMDB=*.gitlab.example.com/*

配置代碼托管站點

Go mod尋找代碼倉庫原理

https://pkg.go.dev/cmd/go#hdr-Remote_import_paths

如果import路徑不是已知的代碼托管站點并且也缺少版本控制限定符,則go工具會嘗試通過https/http獲取導入并在文檔的HTML <head>中查找<meta>標記。

元標記的形式如下:

<meta name="go-import" content="import-prefix vcs repo-root">

使用mod時,會識別go-import元標記的附加變體,并且優先級高于那些默認的版本控制系統。該變體使用mod作為內容值中的vcs,如下所示:

<meta name="go-import" content="example.org mod https://code.org/moduleproxy">

此標簽表示從 URLhttps://code.org/moduleproxy上的模塊代理中獲取路徑以 example.org開頭的模塊。有關代理協議的詳細信息, 請參閱https://golang.org/ref/mod#goproxy-protocol 。

查找模塊路徑的存儲庫:https://go.dev/ref/mod#vcs-find

使用代理實現代碼托管站點訪問

一般主流的代碼托管站站點如github,gitlab,Gitee等,都默認支持返回站點的golang mod元數據。
如果無法對外暴露站點的域名,且甚至無法擁有更改站點訪問地址的權限。比如,部署站點的時候是以ip+port的方式訪問。這時需要配置一個虛擬的域名作為go mod的引用包路徑,這時可以使用Nginx配置站點的內網訪問代理,返回帶有元標記的靜態頁面。例如要訪問站點gitlab.example.com

if ($args ~* "^go-get=1") {set $condition goget;}if ($uri ~ "(/[^/]+/[^/]+)(/.*)?") {set $condition "${condition}path";}if ($condition = gogetpath) {return 200 "<!DOCTYPE html><html><head><meta content='gitlab.example.com$1 git https://gitlab.example.com$1.git' name='go-import'></head></html>";}

參考:https://stackoverflow.com/questions/26347516/using-go-get-on-a-personal-git-repo

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

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

相關文章

Spring Data與多數據源配置

Spring Data與多數據源配置 大家好&#xff0c;我是免費搭建查券返利機器人省錢賺傭金就用微賺淘客系統3.0的小編&#xff0c;也是冬天不穿秋褲&#xff0c;天冷也要風度的程序猿&#xff01;今天我們來探討如何在Spring Data中配置和使用多個數據源。 在現代應用程序中&…

計算機相關術語科普之什么叫網關(Gateway)

網關&#xff08;Gateway&#xff09;是一個在計算機網絡中起到關鍵作用的設備或系統&#xff0c;它扮演著網絡間連接器或協議轉換器的角色。 一、定義與功能 1&#xff09;定義&#xff1a; 網關是在不同網絡之間實現互連的復雜設備&#xff0c;僅用于兩個高層協議不同的網…

【PYG】Planetoid中邊存儲的格式,為什么打印前十條邊用edge_index[:, :10]

edge_index 是 PyTorch Geometric 中常用的表示圖邊的張量。它通常是一個形狀為 [2, num_edges] 的二維張量&#xff0c;其中 num_edges 表示圖中邊的數量。每一列表示一條邊&#xff0c;包含兩個節點的索引。 實際上這是COO存儲格式&#xff0c;官方文檔里也有寫&#xff0c;…

Web 品質標準

Web 品質標準 引言 隨著互聯網的快速發展,Web應用已經滲透到我們生活的方方面面。為了確保Web應用的質量,提高用戶體驗,Web品質標準應運而生。這些標準涵蓋了多個方面,包括性能、安全性、可訪問性、用戶體驗等。本文將詳細介紹這些標準,并探討它們在實際開發中的應用。 …

上位機圖像處理和嵌入式模塊部署(mcu 項目1:固件編寫)

【 聲明&#xff1a;版權所有&#xff0c;歡迎轉載&#xff0c;請勿用于商業用途。 聯系信箱&#xff1a;feixiaoxing 163.com】 說完了上位機的開發&#xff0c;接下來就是固件的開發。前面我們說過&#xff0c;目前使用的開發板是極海apm32f103的開發板。它自身包含了iap示例…

一些迷你型信息系統

只有一個表&#xff0c;比較簡單易用&#xff1b; 1 博物館信息查詢系統 信息錄入&#xff0c;瀏覽&#xff0c;添加&#xff0c;更新&#xff0c;刪除&#xff1b; 下載&#xff0c; https://download.csdn.net/download/bcbobo21cn/89505217

中國網絡安全審查認證和市場監管大數據中心數據合規官CCRC-DCO

關于CCRC-DCO證書的頒發機構&#xff0c;它是由中國網絡安全審查認證與市場監管大數據中心&#xff08;簡稱CCRC&#xff09;負責。 該中心在2006年得到中央機構編制委員會辦公室的批準成立&#xff0c;隸屬于國家市場監督管理總局&#xff0c;是其直轄的事業單位。 依據《網絡…

計算機的錯誤計算(十八)

摘要 計算機的錯誤計算&#xff08;四&#xff09;指出一元二次方程的計算精度問題。本節給出其一種解決方案。 計算機的錯誤計算&#xff08;四&#xff09;與&#xff08;十七&#xff09;分別指出一元二次方程的求解是具有挑戰性的難題&#xff0c;其出錯原因是因為相減相消…

YOLOv10(7):YOLOv10訓練(以訓練VOC數據集為例)

YOLOv10&#xff08;1&#xff09;&#xff1a;初探&#xff0c;訓練自己的數據_yolov10 訓練-CSDN博客 YOLOv10&#xff08;2&#xff09;&#xff1a;網絡結構及其檢測模型代碼部分閱讀_yolov10網絡結構圖-CSDN博客 YOLOv10&#xff08;4&#xff09;&#xff1a;損失&…

汽車之家論壇評論全面采集實戰指南:Python爬蟲篇

聚焦汽車之家&#xff0c;解鎖評論寶藏 在這個數據為王的時代&#xff0c;每一個角落的信息都可能成為寶貴的洞察來源。汽車之家&#xff0c;作為汽車行業內的權威論壇&#xff0c;其海量的用戶評論不僅是消費者購車的重要參考&#xff0c;也是汽車品牌與市場研究者不可忽視的…

【Android面試八股文】在你之前的Android項目中,你是如何進行性能優化的?

在之前的Android項目中,優化和提升性能是一個重要且常見的任務。 以下是一些常用的性能優化方法和策略: 分析和測量: 使用Android Studio中的Profiling工具(如Profiler、Trace等)進行性能分析,識別CPU、內存和網絡使用情況。使用第三方工具(如Systrace)來分析系統層面…

iOS 練習項目 Landmarks (四):添加 AutoLayout 約束

iOS 練習項目 Landmarks &#xff08;四&#xff09;&#xff1a;添加 AutoLayout 約束 iOS 練習項目 Landmarks &#xff08;四&#xff09;&#xff1a;添加 AutoLayout 約束新增 topLabel圖片視圖圓形裁切陰影使用 AutoLayout 為詳情頁的組件添加約束DetailViewControllerDe…

如何在 Logback 和 Log4j 中獲取日志:一個開發者指南

日志記錄是軟件開發中的關鍵實踐&#xff0c;它幫助我們監控應用程序的行為&#xff0c;定位問題并優化性能。在 Java 生態系統中&#xff0c;Logback 和 Log4j 是兩個廣泛使用的日志框架&#xff0c;它們都基于 SLF4J API 提供日志服務。本文將指導你如何在這兩個框架中獲取日…

7-490 將字符串“software“賦給一個字符指針,并從第一個字母開始間隔地輸出該串(簡單字符串)

編程將字符串"software"賦給一個字符指針 然后從第一個字母開始間隔地輸出該串 請用指針法完成。 輸入樣例: 在這里給出一組輸入。例如&#xff1a; 無輸入輸出樣例: 在這里給出相應的輸出。例如&#xff1a; sfwr #include <stdio.h> #include <stri…

Linux環境下快速部署Spring Boot應用:高效命令組合實踐

概要&#xff1a; 本文旨在介紹一種高效的Linux命令組合&#xff0c;用于簡化Spring Boot項目的部署與管理流程。通過結合使用nohup、java -jar、輸出重定向以及進程管理命令&#xff0c;我們能夠實現Spring Boot應用的快速后臺啟動及便捷的進程控制&#xff0c;尤其適合于自動…

什么是 JVM( Java 虛擬機),它在 Java 程序執行中扮演什么角色?

JVM&#xff0c;全稱Java Virtual Machine&#xff0c;中文譯作“Java虛擬機”&#xff0c;它是運行Java程序的軟件環境&#xff0c;也是Java語言的核心部分之一。 想象一下&#xff0c;如果你是一位環球旅行家&#xff0c;每到一個新的國家&#xff0c;都需要學習當地的語言才…

【Linux】初識操作系統

一、馮?諾依曼體系結構 在學習操作系統之前&#xff0c;我們先來認識一下馮?諾依曼體系結構&#xff0c;我們常見的計算機&#xff0c;如筆記本。我們不常見的計算機&#xff0c;如服務器&#xff0c;大部分都遵守馮諾依曼體系。 截至目前&#xff0c;我們所認識的計算機&am…

神經網絡訓練(一):基于殘差連接的圖片分類網絡(ResNet18)

目錄 一、簡介:二、圖片分類網絡1.記載訓練數據(torch自帶的cifa10數據集)2.數據增強3.模型構建4.模型訓練三、完整源碼及文檔一、簡介: 基于殘差連接的圖片分類網絡,本網絡使用ResNet18作為基礎模塊,根據cifa10的特點進行改進網絡,使用交叉熵損失函數和SGD優化器。本網…

使用pyqt5編寫一個七彩時鐘

使用pyqt5編寫一個七彩時鐘 效果代碼解析定義 RainbowClockWindow 類初始化用戶界面顯示時間方法 完整代碼 在這篇博客中&#xff0c;我們將使用 PyQt5 創建一個簡單的七彩數字時鐘。 效果 代碼解析 定義 RainbowClockWindow 類 class RainbowClockWindow(QMainWindow):def _…

【TB作品】溫濕度監控系統設計,ATMEGA16單片機,Proteus仿真

題2:溫濕度監控系統設計 功能要求: 1)開機顯示時間(小時、分)、時分可修改; 2)用兩個滑動變阻器分別模擬溫度傳感器(測量范 圍0-100度)與濕度傳感器(0-100%),通過按鍵 可以在數碼管切換顯示當前溫度值、濕度值; 3)當溫度低于20度時,紅燈長亮; 4)當濕度高于70%時,黃燈長亮; 5)當…