วิธีการตั้งค่าตัวแปรสภาพแวดล้อม GOPRIVATE


15

ฉันเริ่มทำงานในGoโครงการและใช้โมดูลส่วนตัวบางส่วนจาก repos ส่วนตัว Github และเมื่อใดก็ตามที่ฉันพยายามเรียกใช้go run main.goให้410 Goneข้อผิดพลาดด้านล่าง:

การยืนยัน github.com/repoURL/go-proto@v2.86.0+incompatible/go.mod: github.com/repoURL/go-proto@v2.86.0+incompatible/go.mod: อ่านhttps: //sum.golang org/lookup/github.com/!repoURL/go-proto@v2.86.0+incompatible : 410 Gone

ฉันสามารถโคลน repo ส่วนตัวจากเทอร์มินัลได้อย่างง่ายดายซึ่งหมายความว่าsshคีย์ของฉันได้รับการกำหนดค่าอย่างถูกต้อง ฉันอ่านที่นี่ว่าฉันต้องตั้งค่าGOPRIVATEตัวแปรสภาพแวดล้อม แต่ฉันไม่แน่ใจว่าจะทำอย่างไร

ทุกคนสามารถตอบหรือชี้ไปที่บทช่วยสอนที่เกี่ยวข้องได้หรือไม่

ไป: v1.13, OS: macOS Mojave


man $(basename $SHELL)
ปีเตอร์

1
มีความช่วยเหลือเป็นไปเพื่อ:go help module-private
Soroush

คำตอบ:


24

คำตอบสั้น ๆ :

go env -w GOPRIVATE=github.com/repoURL/private-repo

หรือ

หากคุณต้องการอนุญาตให้ repos ส่วนตัวทั้งหมดจากองค์กรของคุณ

go env -w GOPRIVATE=github.com/<OrgNameHere>/*

คำตอบยาว:

ตรวจสอบ"โมดูลการกำหนดค่าสำหรับโมดูลที่ไม่ใช่แบบสาธารณะ"สำหรับข้อมูลเพิ่มเติม:

ตัวแปรสภาวะแวดล้อม GOPRIVATE ควบคุมโมดูลที่คำสั่ง go พิจารณาว่าเป็นไพรเวต (ไม่พร้อมใช้งานแบบสาธารณะ) และดังนั้นจึงไม่ควรใช้ฐานข้อมูลพร็อกซีหรือเช็กซัม ตัวแปรเป็นรายการของรูปแบบ glob ที่คั่นด้วยจุลภาค (ในไวยากรณ์ของ path.atch ของ Go) ของคำนำหน้าพา ธ ของโมดูล ตัวอย่างเช่น,

 GOPRIVATE=*.corp.example.com,rsc.io/private

ทำให้คำสั่ง go ถือเป็นโมดูลส่วนบุคคลใด ๆ ที่มีคำนำหน้าพา ธ ตรงกันทั้งสองรูปแบบรวมถึง git.corp.example.com/xyzzy, rsc.io/private และ rsc.io/private/quux

. .

คำสั่ง 'go env -w' (ดูที่ 'go help env') สามารถใช้เพื่อตั้งค่าตัวแปรเหล่านี้สำหรับการเรียกใช้คำสั่ง go ในอนาคต


หมายเหตุเกี่ยวกับการใช้ ssh:

หากคุณใช้sshเพื่อเข้าถึง git repo (โฮสต์ในพื้นที่) คุณอาจต้องการเพิ่มสิ่งต่อไปนี้ใน~/.gitconfig:

[url "ssh://git@git.local.intranet/"]
       insteadOf = https://git.local.intranet/

เพื่อให้goคำสั่งสามารถเข้าถึงเซิร์ฟเวอร์ git ได้


1
ขอบคุณ! ทำงานอยู่ตอนนี้เคล็ดลับคือใช้ wildcard url กับชื่อองค์กร go env -w GOPRIVATE=github.com/{OrgNameHere}/*
UsamaAmjad
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.