[Go] Go Private module

๊ด€๋ จ ํฌ์ŠคํŠธ
https://blog.naver.com/sssang97/223260691513
๋น„๊ณต๊ฐœ ๋ชจ๋“ˆ์„ ์˜ฌ๋ฆฌ๊ณ  ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ ๊ฐ„๋žตํ•˜๊ฒŒ ์ •๋ฆฌํ•ด๋ณธ๋‹ค.




๋ชจ๋“ˆ ๋ฐฐํฌ

์ผ๋‹จ ๋ชจ๋“ˆ์„ ๋ฐฐํฌํ•˜๋Š” ๋ฐฉ์‹ ์ž์ฒด๋Š” public ๋ชจ๋“ˆ๊ณผ ๊ทธ๋ฆฌ ๋‹ค๋ฅผ๊ฑด ์—†๋‹ค.
๊ทธ๋ƒฅ ์˜ฌ๋ฆฌ๊ณ , ํƒœ๊ทธ ๋”ฐ์„œ ๋ฒ„์ „ ์˜ฌ๋ฆฌ๋ฉด ๋œ๋‹ค.




๋ชจ๋“ˆ ๊ฐ€์ ธ์˜ค๊ธฐ

๊ฐ€์ ธ์˜ฌ๋•Œ๋Š” ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ go get ๊ฐ™์€๊ฑธ๋กœ ๊ฐ€์ ธ์˜ค๋ฉด ๋˜๋Š”๋ฐ...

๋ณดํ†ต์€ ๊ทธ๋ƒฅ ๋˜์ง€ ์•Š๋Š”๋‹ค.

์ด๊ฑด golang์˜ ํ”„๋ก์‹œ ๊ตฌ์กฐ์— ๊ธฐ์ธํ•œ๋‹ค.

go-cli๋Š” github์—์„œ ์ฝ”๋“œ๋ฅผ ๊ฐ€์ ธ์˜จ๋‹ค๊ณ  ํ•ด์„œ ์ง์ ‘ github์— ์ ‘์†ํ•˜์ง€๋Š” ์•Š๋Š”๋‹ค.
go-proxy๋ผ๊ณ  ํ•˜๋Š” ํƒˆ์ค‘์•™ํ™”์Šค๋Ÿฌ์šด ์ค‘์•™ํ™” ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์— ์ ‘๊ทผํ•ด์„œ, ๊ทธ๊ฑธ ํ†ตํ•ด์„œ ์ฝ”๋“œ๋ฅผ ๊ฐ€์ ธ์˜ค๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

๋ฌธ์ œ๋Š”, ์ด๊ฒŒ ๋ณธ์งˆ์ ์œผ๋กœ public ๋ชจ๋“ˆ๋“ค์—๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด๋ž€ ์ ์ด๋‹ค.
์ € ํ”„๋ก์‹œ๋ž€ ๋†ˆ์€ go-cli๋ฅผ ํ†ตํ•ด ๋กœ๋“œ๋œ ์ฝ”๋“œ๋“ค์„ ๊ณต๊ฐœ ์ธํ„ฐ๋„ท์— ๋ฐ•์ œํ•˜๋Š” ๊ฒƒ์„ ์—…์œผ๋กœ ์‚ผ๋Š”๋‹ค.
๋ชจ๋‘์—๊ฒŒ ๊ณต๊ฐœ๋œ๋‹ค ์ด๋ง์ด๋‹ค.

๊ทธ๋ž˜์„œ privateํ•˜๊ฒŒ ๋‚ด๋ถ€์ ์œผ๋กœ๋งŒ ์“ฐ๋ ค๋ฉด ์ค‘๊ฐ„์—์„œ ํ”„๋ก์‹œ๋ฅผ ๋‚ ๋ ค๋ฒ„๋ ค์•ผ ํ•œ๋‹ค.

์ผ๋‹จ ๊ทธ๋Ÿฌ๋ ค๋ฉด ๋จผ์ € ssh๋กœ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๊ฒŒ๋” ์„ค์ •์„ ํ•ด์ค˜์•ผ ํ•˜๋Š”๋ฐ. ~/.gitconfig๋ฅผ ์ฐพ์•„์„œ ์ด๋Ÿฐ์‹์œผ๋กœ ์ถ”๊ฐ€๋ฅผ ํ•˜๊ฑฐ๋‚˜

[url "git@github.com:myyrakle/go-privatge.git"]
 insteadOf = https://github.com/myyrakle/go-private

git-cli๋กœ ๋ฐ”๋กœ ์ˆ˜์ •์„ ํ•ด์ค˜๋„ ๋œ๋‹ค.

git config --global url."git@github.com:myyrakle/go-privatge.git".insteadOf "https://github.com/myyrakle/go-private"

๊ทธ๋ฆฌ๊ณ  ๋ชจ๋“ˆ์„ ๊ฐ€์ ธ์˜ฌ ๋•Œ๋Š” GOPRIVATE์ด๋ž€ ํ™˜๊ฒฝ๋ณ€์ˆ˜์— github ์กฐ์ง ๊ฒฝ๋กœ๋ฅผ ๋„ฃ์–ด์ฃผ๊ณ  ์‹คํ–‰ํ•˜๋ฉด ๋œ๋‹ค.

$env:GOPRIVATE = "github.com/myyrakle"; go get github.com/myyrakle/go-private@v0.1.0

์ด๊ฑด windows


GOPRIVATE=github.com/myyrakle go get github.com/myyrakle/go-private@v0.1.0

์ด๊ฑด linux

์ด๋Ÿฌ๋ฉด go-proxy๋ฅผ ๋„๊ณ , ์ €์žฅ๋˜์–ด์žˆ๋Š” github credential์„ ํ†ตํ•ด github์— ssh๋กœ ์ ‘๊ทผํ•ด์„œ ์ฝ”๋“œ๋ฅผ ๋”ฐ์˜จ๋‹ค.

๊ทธ๋Ÿผ ์ด์ œ ์ž˜ ๋ฐ›์•„์ง€๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค.




ํ์‡„๋ง?

golang์€ ํ์‡„๋ง์—์„œ ์“ฐ๊ธฐ๊ฐ€ ์ข€ ๋”์ฐํ•œ ํŽธ์ด๋‹ค. ๋ฌผ๋ก  ์›๋ž˜ ํ์‡„๋ง์ด๋ž€๊ฑฐ ์ž์ฒด๊ฐ€ ๋”์ฐํ•œ ํ˜„์ƒ์ด๊ธด ํ•˜๋‹ค.

๋‹ค๋ฅธ ์–ธ์–ด๋“ค์€ ๋ชจ๋“ˆ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ๋ฅผ ์‚ฌ์„ค๋กœ ๋„์šฐ๊ธฐ๋„ ํ•˜๋Š”๋ฐ, golang์€ ๋ช…ํ™•ํ•˜๊ฒŒ ์ค‘์•™ํ™”๋œ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ๋„ ์—†๊ณ , ๊ทธ๋ž˜์„œ ๊ทธ๊ฑธ ํฌํฌ๋– ์„œ ๋กœ์ปฌ์— ๋„์šฐ๊ธฐ๋„ ์• ๋งคํ•˜๋‹ค. ์ผ๋‹จ ๊ทธ๋Ÿฐ ์ ‘๊ทผ๋ฒ•์€ ์ข€ ๊ณ ํ†ต์Šค๋Ÿฌ์šธ ๊ฒƒ์ด๋‹ค.

๊ทธ๋‚˜๋งˆ ๋‚˜์€ ๋ฐฉ๋ฒ•์€ vendor ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•ด์„œ ๋ชจ๋“ˆ์„ ์ „๋ถ€ ๋กœ์ปฌ์— ๋‹ค์šด๋ฐ›๊ณ  ํ†ต์งธ๋กœ ์˜ฎ๊ฒจ์„œ ์“ฐ๋Š” ๊ฒƒ์ด๋‹ค.


go mod vendor๋ฅผ ์“ฐ๋ฉด


์ด๋ ‡๊ฒŒ ๋กœ์ปฌ์— ํŒŒ์ผ์„ ๋‹ค์šด๋ฐ›๋Š”๋‹ค.


ํŽผ์ณ๋ณด๋ฉด ์“ฐ๋˜๊ฒŒ ๋‹ค ๋“ค์–ด์žˆ๋‹ค.


๊ทธ๋ฆฌ๊ณ  modules.txt๋ผ๋Š” ํ†ต์งœ ํ…์ŠคํŠธํŒŒ์ผ์„ ๋งค๋‹ˆํŽ˜์ŠคํŠธ๋กœ ์ƒ์„ฑํ•˜๋Š”๋ฐ, go mod ์‹œ์Šคํ…œ์€ ์ด๊ฑธ ์ฝ์–ด์„œ ๋ฒ„์ „์ด ์ผ์น˜ํ•œ๋‹ค๋ฉด ์ข…์†์„ฑ์œผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค.

์ด ์ƒํƒœ๋กœ .../go/pkg ๊ฒฝ๋กœ์˜ ๋‹ค์šด๋ฐ›์€ ๋ชจ๋“ˆ์„ ์ „๋ถ€ ๋‚ ๋ฆฌ๊ณ  ์‹คํ–‰ํ•ด๋„

vendor์˜ ๋””ํŽœ๋˜์‹œ๋ฅผ ์ฝ์–ด์„œ ์ž˜ ์‹คํ–‰๋  ๊ฒƒ์ด๋‹ค.



์ฐธ์กฐ
https://medium.com/@joeponzio/how-to-use-a-private-github-repo-as-a-go-module-442fbedc80c9
https://mingrammer.com/go-modules-private-repo/
https://go.dev/doc/faq#git_https
https://stackoverflow.com/questions/68204124/golang-offline-import-mod-init