[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