์ 3์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฌ์ฉํ์ฌ ์ ์ฅ์์ ์ฐ๊ฒฐํ ๋๋ Artifact Registry์ ์ธ์ฆํด์ผ ํฉ๋๋ค.
Cloud Build ๋๋ Google CloudGoogle Kubernetes Engine ๋ฐ Cloud Run๊ณผ ๊ฐ์ ๋ฐํ์ ํ๊ฒฝ์ ๋ํ ์ธ์ฆ์ ๊ตฌ์ฑํ ํ์๋ ์์ง๋ง ํ์ํ ๊ถํ์ด ๊ตฌ์ฑ๋์ด ์๋์ง ํ์ธํด์ผ ํฉ๋๋ค.
Artifact Registry๋ Python ํจํค์ง ์ ์ฅ์์ ๋ํด ๋ค์๊ณผ ๊ฐ์ ์ธ์ฆ ๋ฐฉ๋ฒ์ ์ง์ํฉ๋๋ค.
- ์ก์ธ์ค ํ ํฐ: ์๋ํ, CI/CD ํ์ดํ๋ผ์ธ, ์ปจํ ์ด๋ ๋น๋ ๋๋ ํค๋ง ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค์น๊ฐ ์ง์๋์ง ์๋ ํ๊ฒฝ์์ ์ก์ธ์ค ํ ํฐ์ ์ฌ์ฉํฉ๋๋ค.
- Python ํค๋ง ๋ผ์ด๋ธ๋ฌ๋ฆฌ (๋ก์ปฌ ๊ฐ๋ฐ์ ๊ถ์ฅ): ๊ฐ๋ฐ์ ์ํฌ์คํ ์ด์ ์์ ์ด ์ต์ ์ ์ฌ์ฉํ์ฌ ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด ์๋ก๊ณ ์นจ์ ์๋์ผ๋ก ์ฒ๋ฆฌํฉ๋๋ค.
- ๋น๋ฐ๋ฒํธ ์ธ์ฆ: ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ ํ๋ฆฌ์ผ์ด์ ๊ธฐ๋ณธ ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด๋ฅผ ์ง์ํ์ง ์์ง๋ง ์ฌ์ฉ์ ์ด๋ฆ๊ณผ ๋น๋ฐ๋ฒํธ๋ฅผ ์ฌ์ฉํ ์ธ์ฆ์ ์ง์ํ๋ ๊ฒฝ์ฐ ์ด ์ต์ ์ ์ฌ์ฉํฉ๋๋ค.
์์ํ๊ธฐ ์ ์
- ๋์ ์ ์ฅ์๊ฐ ์์ผ๋ฉด ์ Python Package Repository๋ฅผ ๋ง๋ญ๋๋ค.
- Python 3์ด ์ค์น๋์ด ์๋์ง ํ์ธํฉ๋๋ค. ์ค์น ์๋ด๋Google Cloud Python ์ค์ ํํ ๋ฆฌ์ผ์ ์ฐธ์กฐํ์ธ์.
- ์ฌ์ฉ ์ค์ธ ์ฌ์ฉ์ ๊ณ์ ์ด๋ ์๋น์ค ๊ณ์ ์ ์ ์ฅ์์ ์ก์ธ์คํ๋ ๋ฐ ํ์ํ ๊ถํ์ด ์๋์ง ํ์ธํฉ๋๋ค.
-
Google Cloud CLI๋ฅผ ์ค์นํฉ๋๋ค. ์ค์น ํ ๋ค์ ๋ช ๋ น์ด๋ฅผ ์คํํ์ฌ Google Cloud CLI๋ฅผ ์ด๊ธฐํํฉ๋๋ค.
gcloud init์ธ๋ถ ID ๊ณต๊ธ์ ์ฒด(IdP)๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ๋จผ์ ์ ํด ID๋ก gcloud CLI์ ๋ก๊ทธ์ธํด์ผ ํฉ๋๋ค.
- (์ ํ์ฌํญ) cloud CLI ๋ช ๋ น์ด์ ๊ธฐ๋ณธ๊ฐ์ ๊ตฌ์ฑํฉ๋๋ค.
์ธ์ฆ์ฉ ํ ํฐ ์์ฑ
Artifact Registry์์ ํจํค์ง๋ฅผ ์ธ์ฆํ๋ ค๋ฉด ๋จผ์ ์ธ์ฆ ํ ํฐ์ ์์ฑํด์ผ ํฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ ํจํค์ง์์ Artifact Registry๋ก ์์ฒญํ ๋ ์ด ํ ํฐ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
Google Cloud ๋ฅผ ์ฌ์ฉํ์ฌ oauth2 ์ก์ธ์ค ํ ํฐ์ ์์ฑํ๊ฑฐ๋ Google Cloud์ธ๋ถ์์ oauth2l ํ ํฐ์ ์์ฑํ ์ ์์ต๋๋ค.
์ก์ธ์ค ํ ํฐ์ 60๋ถ ๋์ ์ ํจํฉ๋๋ค. ์ ์ฅ์์ ์ํธ์์ฉํ๋ ๋ช ๋ น์ด๋ฅผ ์คํํ๊ธฐ ์ง์ ์ ์ก์ธ์ค ํ ํฐ์ ์์ฑํฉ๋๋ค. ์ก์ธ์ค ํ ํฐ์ด ๋ง๋ฃ๋ ๊ฒฝ์ฐ ์ ์ก์ธ์ค ํ ํฐ์ ์์ฑํด์ผ ํฉ๋๋ค.
gcloud๋ฅผ ์ฌ์ฉํ์ฌ ํ ํฐ ์์ฑ
Google Cloud๋ฅผ ์ฌ์ฉํ์ฌ oauth2 ์ก์ธ์ค ํ ํฐ์ ์์ฑํ๋ ค๋ฉด ๋ค์ ๋ช
๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
export ACCESS_TOKEN="oauth2accesstoken:$(gcloud auth print-access-token)"
์ด์ Python ํจํค์ง์์ Artifact Registry๋ก ์์ฒญ์ ๋ณด๋ผ ๋ ACCESS_TOKEN๋ฅผ ์ฐธ์กฐํ ์ ์์ต๋๋ค.
gcloud๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ํ ํฐ ์์ฑ
oauth2l CLI๋ง ์ฌ์ฉํ์ฌ ์ก์ธ์ค ํ ํฐ์ ์์ฑํ๋ ค๋ฉด ๋ค์ ๋จ๊ณ๋ฅผ ๋ฐ๋ฅด์ธ์.
๋ค์ ๋ช ๋ น์ด๋ฅผ ์คํํ์ฌ ์ต์ ๋ฒ์ ์
oauth2l๋ฅผ ์ค์นํฉ๋๋ค.go install github.com/google/oauth2l@latest๋ค์ ๋ช ๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
export ACCESS_TOKEN="oauth2l fetch --scope cloud-platform"Google Cloud ๋ SHA256 ํด์ ํ ํฐ์ ์์ฑํ๊ณ
ACCESS_TOKEN๋ณ์์ ์ ์ฅํฉ๋๋ค. ์ด์ Python ํจํค์ง์์ Artifact Registry๋ก ์์ฒญํ ๋ACCESS_TOKEN๋ฅผ ์ฐธ์กฐํ ์ ์์ต๋๋ค.
pip๋ก ์ธ์ฆ
ACCESS_TOKEN๋ฅผ ๋ด๋ณด๋ธ ํ pip์ ์ ๋ฌํ์ฌ ํจํค์ง๋ฅผ ์ค์นํ ์ ์์ต๋๋ค.
pip install PACKAGE --index-url https://$ACCESS_TOKEN@LOCATION-python.pkg.dev/PROJECT/REPOSITORY/simple/
ํค๋ง์ผ๋ก ์ธ์ฆ
Python ํค๋ง ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์ด์์ฒด์ ๋ฐ ์๋ ํํฐ ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด ์ ์ฅ์๋ฅผ ์๋ฏธํ๋ ํค๋ง ๋ฐฑ์๋์ ์ก์ธ์คํ๋ ๋ฐฉ๋ฒ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ๊ณตํฉ๋๋ค. Artifact Registry๋ keyrings.google-artifactregistry-auth ํค๋ง ๋ฐฑ์๋๋ฅผ ์ ๊ณตํ์ฌ Artifact Registry ์ ์ฅ์์ ์ธ์ฆ์ ์ฒ๋ฆฌํฉ๋๋ค.
์ด ์น์ ์ ์๋ด์์๋ pip์์ ํจํค์ง๋ฅผ ๊ฒ์ํ๋ ์ ์ผํ ํจํค์ง ์์ธ์ผ๋ก pip๋ฅผ ๊ตฌ์ฑํ๋ ๋ฐฉ๋ฒ์ ์ค๋ช ํฉ๋๋ค. pip ๊ตฌ์ฑ ํ์ผ์์ ์ฌ๋ฌ ํจํค์ง ์์ธ์ ๊ตฌ์ฑํ๋ ๋์ ๊ฐ์ ์ ์ฅ์๋ฅผ ์ฌ์ฉํ์ฌ Artifact Registry์ ๋น๊ณต๊ฐ ํจํค์ง์ PyPI์ ๊ณต๊ฐ ํจํค์ง์์ ํจํค์ง๋ฅผ ๊ฒ์ํ๋ ๊ฒ์ด ์ข์ต๋๋ค. pip ๋๊ตฌ๋ ํน์ ์์๋ก ํจํค์ง ์์ธ์ ๊ฒ์ํ์ง ์์ผ๋ฏ๋ก ์๋น์๊ฐ ๋น๊ณต๊ฐ ํจํค์ง ์ค ํ๋์ ์ด๋ฆ์ด ๊ฐ์ ๊ณต๊ฐ ํจํค์ง๋ฅผ ์๋ชป ๋ค์ด๋ก๋ํ๊ฑฐ๋ ์ค์นํ ์ ์์ต๋๋ค. ๊ฐ์ ์ ์ฅ์๋ฅผ ์ฌ์ฉํ๋ฉด ์ ์คํธ๋ฆผ ์์ค์ ์ฐ์ ์์๋ฅผ ๊ตฌ์ฑํ์ฌ ์ด๋ฌํ ์ข ์ ํญ๋ชฉ ํผ๋ ์ํ์ ์ํํ ์ ์์ต๋๋ค.
์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด ๊ฒ์ ์์
Artifact Registry ํค๋ง ๋ฐฑ์๋๋ฅผ ์ฌ์ฉํ๋ฉด ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด๋ Python ํ๋ก์ ํธ์ ์ ์ฅ๋์ง ์์ต๋๋ค. ๋์ Artifact Registry๊ฐ ๋ค์ ์์๋ก ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด๋ฅผ ๊ฒ์ํฉ๋๋ค.
์ ํ๋ฆฌ์ผ์ด์ ๊ธฐ๋ณธ ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด(ADC) - ๋ค์ ์์๋ก ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด๋ฅผ ์ฐพ๋ ์ ๋ต
GOOGLE_APPLICATION_CREDENTIALSํ๊ฒฝ ๋ณ์์ ์ ์๋ ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณดCompute Engine, Google Kubernetes Engine, Cloud Run, App Engine ๋๋ Cloud Run ํจ์์ ๊ธฐ๋ณธ ์๋น์ค ๊ณ์ ์์ ์ ๊ณตํ๋ ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด
gcloud auth application-default login๋ช ๋ น์ด์ ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด๋ฅผ ํฌํจํ Google Cloud CLI์์ ์ ๊ณตํ๋ ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด
GOOGLE_APPLICATION_CREDENTIALS ๋ณ์๋ฅผ ์ฌ์ฉํ๋ฉด ์ธ์ฆ์ฉ ๊ณ์ ์ด ๋ช
์์ ์ผ๋ก ํ์๋์ด ๋ฌธ์ ํด๊ฒฐ์ด ๊ฐํธํด์ง๋๋ค. ์ด ๋ณ์๋ฅผ ์ฌ์ฉํ์ง ์๋ ๊ฒฝ์ฐ ADC์์ ์ฌ์ฉํ ์ ์๋ ๋ชจ๋ ๊ณ์ ์ ํ์ํ ๊ถํ์ด ์๋์ง ํ์ธํฉ๋๋ค. ์๋ฅผ ๋ค์ด Compute Engine VM, Google Kubernetes Engine ๋
ธ๋, Cloud Run ๋ฒ์ ์ ๊ธฐ๋ณธ ์๋น์ค ๊ณ์ ์ ์ ์ฅ์์ ๋ํ ์ฝ๊ธฐ ์ ์ฉ ์ก์ธ์ค ๊ถํ์ด ์์ต๋๋ค. ๊ธฐ๋ณธ ์๋น์ค ๊ณ์ ์ ์ฌ์ฉํ์ฌ ์ด๋ฌํ ํ๊ฒฝ์์ ์
๋ก๋ํ๋ ค๋ฉด ๊ถํ์ ์์ ํด์ผ ํฉ๋๋ค.
ํค๋ง ์ค์
Artifact Registry ํค๋ง ๋ฐฑ์๋๋ก ์ธ์ฆ์ ์ค์ ํ๋ ค๋ฉด ๋ค์ ์๋ด๋ฅผ ๋ฐ๋ฅด์ธ์.
ํค๋ง ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ค์นํฉ๋๋ค.
pip install keyringArtifact Registry ๋ฐฑ์๋๋ฅผ ์ค์นํฉ๋๋ค.
pip install keyrings.google-artifactregistry-auth๋ฐฑ์๋๋ฅผ ๋์ดํ์ฌ ์ค์น๋ฅผ ํ์ธํฉ๋๋ค.
keyring --list-backends์ด ๋ชฉ๋ก์๋ ๋ค์ ํญ๋ชฉ์ด ํฌํจ๋ฉ๋๋ค.
ChainerBackend(priority:10)GooglePythonAuth(priority: 9)
๋ค์ ๋ช ๋ น์ด๋ฅผ ์คํํ์ฌ Python ํ๋ก์ ํธ์ ์ถ๊ฐํ ์ ์ฅ์ ๊ตฌ์ฑ์ ์ถ๋ ฅํฉ๋๋ค.
gcloud artifacts print-settings python --project=PROJECT \ --repository=REPOSITORY \ --location=LOCATION๋ค์ ๊ฐ์ ๋ฐ๊ฟ๋๋ค.
- PROJECT๋ ํ๋ก์ ํธ ID์ ๋๋ค. ์ด ํ๋๊ทธ๋ฅผ ์๋ตํ๋ฉด ํ์ฌ ํ๋ก์ ํธ ๋๋ ๊ธฐ๋ณธ ํ๋ก์ ํธ๊ฐ ์ฌ์ฉ๋ฉ๋๋ค.
- REPOSITORY๋ ์ ์ฅ์ ID์ ๋๋ค. ๊ธฐ๋ณธ Artifact Registry ์ ์ฅ์๋ฅผ ๊ตฌ์ฑํ ๊ฒฝ์ฐ ์ด ํ๋๊ทธ๊ฐ ๋ช ๋ น์ด์์ ์๋ต๋์์ ๋ ์ฌ์ฉ๋ฉ๋๋ค.
- LOCATION์ ์ ์ฅ์์ ๋ฆฌ์ ๋๋ ๋ฉํฐ ๋ฆฌ์ ์์น์ ๋๋ค.
.pypircํ์ผ์ ๋ค์ ์ค์ ์ ์ถ๊ฐํฉ๋๋ค. ๊ธฐ๋ณธ ์์น๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.- Linux ๋ฐ macOS:
$HOME/.pypirc - Windows:
%USERPROFILE%\.pypirc
[distutils] index-servers = PYTHON-REPO-ID [PYTHON-REPO-ID] repository = https://LOCATION-python.pkg.dev/PROJECT/REPOSITORY/๋ค์ ๊ฐ์ ๋ฐ๊ฟ๋๋ค.
- PYTHON-REPO-ID๋ Twine๊ณผ ๊ฐ์ ๋๊ตฌ๋ก ์ฐธ์กฐํ ์ ์๋ ์ ์ฅ์ ID์ ๋๋ค.
- PROJECT๋ ํ๋ก์ ํธ ID์ ๋๋ค. ์ด ํ๋๊ทธ๋ฅผ ์๋ตํ๋ฉด ํ์ฌ ํ๋ก์ ํธ ๋๋ ๊ธฐ๋ณธ ํ๋ก์ ํธ๊ฐ ์ฌ์ฉ๋ฉ๋๋ค.
- REPOSITORY๋ ์ ์ฅ์ ID์ ๋๋ค. ๊ธฐ๋ณธ Artifact Registry ์ ์ฅ์๋ฅผ ๊ตฌ์ฑํ ๊ฒฝ์ฐ ์ด ํ๋๊ทธ๊ฐ ๋ช ๋ น์ด์์ ์๋ต๋์์ ๋ ์ฌ์ฉ๋ฉ๋๋ค.
- LOCATION์ ์ ์ฅ์์ ๋ฆฌ์ ๋๋ ๋ฉํฐ ๋ฆฌ์ ์์น์ ๋๋ค.
- Linux ๋ฐ macOS:
์ ์ฅ์๋ฅผ pip ๊ตฌ์ฑ ํ์ผ์ ์ถ๊ฐํฉ๋๋ค. ํ์ผ ์์น๋ ์ฌ์ฉ์๋ณ ํ์ผ์ด๋ ์ฌ์ฉ ์ค์ธ ๊ฐ์ ํ๊ฒฝ๊ณผ ๊ด๋ จ๋ ํ์ผ์ ์ ๋ฐ์ดํธํ ์ง ์ฌ๋ถ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋๋ค.
์ด์์ฒด์ ์ฌ์ฉ์์ ์ฐ๊ฒฐ๋ ํ์ผ์ ๊ฒฝ์ฐ ๋ค์ ๋ช ๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
- Unix:
$HOME/.config/pip/pip.conf๋๋$HOME/.pip/pip.conf - macOS:
/Library/Application Support/pip/pip.conf๋๋$HOME/.config/pip/pip.conf - Windows:
%APPDATA%\pip\pip.ini๋๋%USERPROFILE%\pip\pip.ini
๊ฐ์ ํ๊ฒฝ์ ๊ฒฝ์ฐ:
- Unix ๋ฐ macOS:
$VIRTUAL_ENV/pip.conf - Windows:
%VIRTUAL_ENV%\pip.ini
์ ์ฅ์๋ง ๊ฒ์ํ๋๋ก pip๋ฅผ ๊ตฌ์ฑํ๋ ค๋ฉด
index-url์ค์ ์ ์ฌ์ฉํ๊ณextra-index-url์ค์ ์ผ๋ก ๊ตฌ์ฑ๋ ๋ค๋ฅธ ํจํค์ง ์์ธ์ด ์๋์ง ํ์ธํฉ๋๋ค.[global] index-url = https://LOCATION-python.pkg.dev/PROJECT/REPOSITORY/simple/์ ์ฅ์ ๊ฒฝ๋ก ๋์ ์๋
/simple/๋ฌธ์์ด์ ์ ์ฅ์์์ Python Simple Repository API๋ฅผ ๊ตฌํํจ์ ๋ํ๋ ๋๋ค.- Unix:
์ด์ Python ํ๊ฒฝ์ด Artifact Registry๋ก ์ธ์ฆํ๋๋ก ๊ตฌ์ฑ๋์์ต๋๋ค.
์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด๋ฅผ ์ฌ์ฉํ ํค๋ง ์ธ์ฆ
ํค๋ง์ ์ค์ ํ ํ์ gcloud CLI์์ ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด๋ก ํค๋ง์ ์ฌ์ฉํ ์ ์์ต๋๋ค. Python Package Repository์ ์ฐ๊ฒฐํ๊ธฐ ์ ์ Google Cloud CLI์ ๋ก๊ทธ์ธํฉ๋๋ค.
๋ค์ ๋ช ๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
gcloud auth login
์๋น์ค ๊ณ์ ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด๋ก ํค๋ง ์ธ์ฆ
ํค๋ง์ ์ค์ ํ ํ์ ์ธ์ฆ์ ์ํ ์๋น์ค ๊ณ์ ์ ์ค์ ํ ์ ์์ต๋๋ค.
- ์๋น์ค ๊ณ์ ์ ๋ง๋ค๊ฑฐ๋ ์๋ํ์ ์ฌ์ฉํ ๊ธฐ์กด ์๋น์ค ๊ณ์ ์ ์ ํํฉ๋๋ค.
- ์ ์ฅ์ ์ก์ธ์ค ๊ถํ์ ๋ถ์ฌํ๊ธฐ ์ํด ์๋น์ค ๊ณ์ ์ ์ ์ ํ Artifact Registry ์ญํ ์ ๋ถ์ฌํฉ๋๋ค.
๋ค์ ์ต์ ์ค ํ๋๋ฅผ ์ฌ์ฉํ์ฌ ์๋น์ค ๊ณ์ ์ผ๋ก ์ธ์ฆํฉ๋๋ค.
์ ํ๋ฆฌ์ผ์ด์ ๊ธฐ๋ณธ ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด(๊ถ์ฅ)
์ ์ฅ์์ ์ฐ๊ฒฐํ ๋ Artifact Registry ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด ๋์ฐ๋ฏธ๊ฐ ํค๋ฅผ ๊ฐ์ ธ์ฌ ์ ์๋๋ก ์๋น์ค ๊ณ์ ํค ํ์ผ ์์น๋ฅผ ๋ณ์
GOOGLE_APPLICATION_CREDENTIALS์ ํ ๋นํฉ๋๋ค.export GOOGLE_APPLICATION_CREDENTIALS=KEY-FILEgcloud CLI ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด
์ ์ฅ์์ ์ฐ๊ฒฐํ๊ธฐ ์ ์ ์๋น์ค ๊ณ์ ์ผ๋ก ๋ก๊ทธ์ธํฉ๋๋ค. Artifact Registry๋ gcloud CLI์์ ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด๋ณด๋ค VM ์๋น์ค ๊ณ์ ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด๋ฅผ ๋จผ์ ์ฐพ์ผ๋ฏ๋ก Compute Engine VM์์ ์ ์ฅ์์ ์ฐ๊ฒฐํ๋ ๊ฒฝ์ฐ ์ด ์ต์ ์ ์ฌ์ฉํ์ง ๋ง์ธ์.
gcloud auth activate-service-account --key-file=KEY-FILE
KEY-FILE์ ์๋น์ค ๊ณ์ ํค ํ์ผ์ ๊ฒฝ๋ก๋ก ๋ฐ๊ฟ๋๋ค.
์๋น์ค ๊ณ์ ํค๋ก ๋น๋ฐ๋ฒํธ ์ธ์ฆ ๊ตฌ์ฑ
์ฌ์ฉ์ ์ด๋ฆ๊ณผ ๋น๋ฐ๋ฒํธ๋ฅผ ์ฌ์ฉํ ์ธ์ฆ์ด ํ์ํ ๊ฒฝ์ฐ ์ด ๋ฐฉ๋ฒ์ ์ฌ์ฉํฉ๋๋ค.
์๋น์ค ๊ณ์ ํค๋ ์ฅ๊ธฐ ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด์ ๋๋ค. ๋ค์ ๊ฐ์ด๋๋ผ์ธ์ ์ฌ์ฉํ์ฌ ์ ์ฅ์์ ๋ํ ์ก์ธ์ค๋ฅผ ์ ํํฉ๋๋ค.
- ์ ์ฅ์์ ์ํธ์์ฉํ ์ ์๋๋ก ์ ์ฉ ์๋น์ค ๊ณ์ ์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
- ์๋น์ค ๊ณ์ ์ ํ์ํ ์ต์ํ์ Artifact Registry ์ญํ ์ ๋ถ์ฌํฉ๋๋ค. ์๋ฅผ ๋ค์ด ์ํฐํฉํธ๋ง ๋ค์ด๋ก๋ํ๋ ์๋น์ค ๊ณ์ ์ Artifact Registry ๋ฆฌ๋๋ฅผ ํ ๋นํฉ๋๋ค.
- ์กฐ์ง์ ๊ทธ๋ฃน์ ํน์ ์ ์ฅ์์ ๋ํ ์ฌ๋ฌ ์ก์ธ์ค ์์ค์ด ํ์ํ ๊ฒฝ์ฐ ํ๋ก์ ํธ ์์ค์ด ์๋ ์ ์ฅ์ ์์ค์์ ์ก์ธ์ค ๊ถํ์ ๋ถ์ฌํฉ๋๋ค.
- ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด ๊ด๋ฆฌ ๊ถ์ฅ์ฌํญ์ ๋ฐ๋ฆ ๋๋ค.
์ธ์ฆ์ ๊ตฌ์ฑํ๋ ค๋ฉด ๋ค์ ์๋ด๋ฅผ ๋ฐ๋ฅด์ธ์.
์ ํ๋ฆฌ์ผ์ด์ ๋์ ์๋ํ๋๋ก ์๋น์ค ๊ณ์ ์ ๋ง๋ค๊ฑฐ๋ ์๋ํ์ ์ฌ์ฉํ ๊ธฐ์กด ์๋น์ค ๊ณ์ ์ ์ ํํฉ๋๋ค.
Artifact Registry๋ก ์ธ์ฆ์ ์ค์ ํ๋ ค๋ฉด ์๋น์ค ๊ณ์ ํค ํ์ผ์ ์์น๊ฐ ํ์ํฉ๋๋ค. ๊ธฐ์กด ๊ณ์ ์ ๊ฒฝ์ฐ ์๋น์ค ๊ณ์ ํ์ด์ง์์ ํค๋ฅผ ๋ณด๊ณ ์ ํค๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค.
์ ์ฅ์ ์ก์ธ์ค ๊ถํ์ ๋ถ์ฌํ๊ธฐ ์ํด ์๋น์ค ๊ณ์ ์ ์ ์ ํ Artifact Registry ์ญํ ์ ๋ถ์ฌํฉ๋๋ค.
๋ค์ ๋ช ๋ น์ด๋ฅผ ์คํํ์ฌ Python ํ๋ก์ ํธ์ ์ถ๊ฐํ ์ ์ฅ์ ๊ตฌ์ฑ์ ์ถ๋ ฅํฉ๋๋ค.
gcloud artifacts print-settings python --project=PROJECT \ --repository=REPOSITORY \ --location=LOCATION \ --json-key=KEY-FILE๋ค์ ๊ฐ์ ๋ฐ๊ฟ๋๋ค.
- PROJECT๋ ํ๋ก์ ํธ ID์ ๋๋ค. ์ด ํ๋๊ทธ๋ฅผ ์๋ตํ๋ฉด ํ์ฌ ํ๋ก์ ํธ ๋๋ ๊ธฐ๋ณธ ํ๋ก์ ํธ๊ฐ ์ฌ์ฉ๋ฉ๋๋ค.
- REPOSITORY๋ ์ ์ฅ์ ID์ ๋๋ค. ๊ธฐ๋ณธ Artifact Registry ์ ์ฅ์๋ฅผ ๊ตฌ์ฑํ ๊ฒฝ์ฐ ์ด ํ๋๊ทธ๊ฐ ๋ช ๋ น์ด์์ ์๋ต๋์์ ๋ ์ฌ์ฉ๋ฉ๋๋ค.
- LOCATION์ ์ ์ฅ์์ ๋ฆฌ์ ๋๋ ๋ฉํฐ ๋ฆฌ์ ์์น์ ๋๋ค.
- KEY-FILE์ ์๋น์ค ๊ณ์ JSON ํค ํ์ผ์ ๊ฒฝ๋ก์ ๋๋ค.
.pypircํ์ผ์ ๋ค์ ์ค์ ์ ์ถ๊ฐํฉ๋๋ค. ์ฌ์ฉ์๋ณ pip ๊ตฌ์ฑ ํ์ผ์ ๊ธฐ๋ณธ ์์น๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.- Linux ๋ฐ macOS:
$HOME/.pypirc - Windows:
%USERPROFILE%\.pypirc
[distutils] index-servers = PYTHON-REPO-ID [PYTHON-REPO-ID] repository = https://LOCATION-python.pkg.dev/PROJECT/REPOSITORY/ username: _json_key_base64 password: KEY๋ค์ ๊ฐ์ ๋ฐ๊ฟ๋๋ค.
- PYTHON-REPO-ID๋ Twine๊ณผ ๊ฐ์ ๋๊ตฌ๋ก ์ฐธ์กฐํ ์ ์๋ ์ ์ฅ์ ID์ ๋๋ค.
- PROJECT๋ ํ๋ก์ ํธ ID์ ๋๋ค. ์ด ํ๋๊ทธ๋ฅผ ์๋ตํ๋ฉด ํ์ฌ ํ๋ก์ ํธ ๋๋ ๊ธฐ๋ณธ ํ๋ก์ ํธ๊ฐ ์ฌ์ฉ๋ฉ๋๋ค.
- REPOSITORY๋ ์ ์ฅ์ ID์ ๋๋ค. ๊ธฐ๋ณธ Artifact Registry ์ ์ฅ์๋ฅผ ๊ตฌ์ฑํ ๊ฒฝ์ฐ ์ด ํ๋๊ทธ๊ฐ ๋ช ๋ น์ด์์ ์๋ต๋์์ ๋ ์ฌ์ฉ๋ฉ๋๋ค.
- LOCATION์ ์ ์ฅ์์ ๋ฆฌ์ ๋๋ ๋ฉํฐ ๋ฆฌ์ ์์น์ ๋๋ค.
- KEY๋ ์๋น์ค ๊ณ์ ํค ํ์ผ์ base64๋ก ์ธ์ฝ๋ฉ๋ ํค์ ๋๋ค.
- Linux ๋ฐ macOS:
์ ์ฅ์๋ฅผ pip ๊ตฌ์ฑ ํ์ผ์ ์ถ๊ฐํฉ๋๋ค. pip ๊ตฌ์ฑ ํ์ผ ์์น๋ ์ฌ์ฉ์๋ณ ํ์ผ ๋๋ ์ฌ์ฉ ์ค์ธ ๊ฐ์ ํ๊ฒฝ๊ณผ ๊ด๋ จ๋ ํ์ผ์ ์ ๋ฐ์ดํธํ ์ง ์ฌ๋ถ์ ๋ฐ๋ผ ๋ค๋ฆ ๋๋ค.
์ด์์ฒด์ ์ฌ์ฉ์์ ์ฐ๊ฒฐ๋ ํ์ผ์ ๊ฒฝ์ฐ ๋ค์ ๋ช ๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
- Unix:
$HOME/.config/pip/pip.conf๋๋$HOME/.pip/pip.conf - macOS:
/Library/Application Support/pip/pip.conf๋๋$HOME/.config/pip/pip.conf - Windows:
%APPDATA%\pip\pip.ini๋๋%USERPROFILE%\pip\pip.ini
๊ฐ์ ํ๊ฒฝ์ ๊ฒฝ์ฐ:
- Unix ๋ฐ macOS:
$VIRTUAL_ENV/pip.conf - Windows:
%VIRTUAL_ENV%\pip.ini
๋ค์ ์ค์ pip ๊ตฌ์ฑ ํ์ผ์ ์ถ๊ฐํฉ๋๋ค.
[global] index-url = https://_json_key_base64:KEY@LOCATION-python.pkg.dev/PROJECT/REPOSITORY/simple/- KEY๋ ์๋น์ค ๊ณ์ ํค ํ์ผ์ ๋น๊ณต๊ฐ ํค์ ๋๋ค.
- ์ ์ฅ์ ๊ฒฝ๋ก ๋์ ์๋
/simple/๋ฌธ์์ด์ ์ ์ฅ์์์ Python Simple Repository API๋ฅผ ๊ตฌํํจ์ ๋ํ๋ ๋๋ค.
- Unix: