์ถ๊ฐ ์์ธ URL์ ๋ํ ์ธ์ฆ์ ์ถ๊ฐ ์์ธ URL ์์ฒด์ ์ธ์ฆ์ด ์ง์ ๋ ๊ฒฝ์ฐ์๋ ์ฌ์ฉ์ ๋ํ์ ์ธ์ฆ์ ์์ฒญํฉ๋๋ค.
Python 3.6.3
pipenv, version 8.3.2
๋ด๊ฐ ์ถ๊ฐํ๋ฉด [[source]]
์ธ์ฆ ์ ๋ณด๋ฅผ (์๋ฅผ ๋ค์ด์๋ URL๋ก https://user:password@host/pypi/simple
), ์ธ์ฆ ์ ๋ณด๋ฅผ ์๊ตฌํด์๋ ์๋๋ค.
$ pipenv lock --verbose
Locking [dev-packages] dependenciesโฆ
Using pip: -i https://pypi.python.org/simple --extra-index-url https://xxxUSERxxx:xxxPASSWORDxxx@xxxHOSTxxx/xxxPATHxxx/pypi/simple
ROUND 1
Current constraints:
xxx
xxx
xxx
Finding the best candidates:
User for xxxxxxxx:
๊ทธ๋ฐ ๋ค์ ์ฌ์ฉ์ ์ ๋ ฅ์ ๊ธฐ๋ค๋ฆฝ๋๋ค.
Pipfile
[[source]]
๋ฅผ ์ถ๊ฐํฉ๋๋ค.Pipfile
ํจํค์ง๋ฅผ ์ถ๊ฐํฉ๋๋ค(์: package_name: {version="*", index="index_name"}
.pipenv lock
ํฉ๋๋ค.์ฃ์กํฉ๋๋ค. ์ด๊ฒ์ pipenv
๋ฌธ์ ๊ฐ ์๋๋๋ค. virtualenv ์ธ๋ถ์ ์ผ๋ฐ pip
์์๋ ๋ฐ์ํฉ๋๋ค.
์ฐธ๊ณ ๋ก CI ๋ฐ ๋์ปค์ ํจ๊ป ๊ฐ์ธ pip
์ ์ฅ์๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๊ถ๊ธํดํ๋ ์ฌ๋์ ์ธ์ฆ๊ณผ ํจ๊ป PIP_EXTRA_INDEX_URL
ํ๊ฒฝ ๋ณ์๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค. ์ด๊ฒ์ VCS์ ์ฒดํฌ์ธ๋์ง ์์ .env
ํ์ผ์ ์ฌ์ฉํ์ฌ ๋ก์ปฌ ํ
์คํธ๋ฅผ ์ํด ์ํํ ์ ์์ผ๋ฉฐ CI ๋๊ตฌ๊ฐ ํ๊ฒฝ ๋ณ์ ์ ์์ ์ฌ์ฉํ๋ ๋ชจ๋ ๊ฒ์ผ๋ก ์๊ฒฉ์ผ๋ก ์ํํ ์ ์์ต๋๋ค(์ผ๋ฐ์ ์ผ๋ก ๋ฆฌํฌ์งํ ๋ฆฌ์ ๋ํ GUI ๋๋ CLI ์ค์ ์์). docker
์ฌ์ฉํ๋ ๊ฒฝ์ฐ --build-arg YOUR_ARG_KEY=$YOUR_ENV_VAR
๋ฅผ ์ฝ์
ํ ์ ์์ต๋๋ค. ๋๋ ์ด๊ฒ์ ๊ด๋ จ ์ด์(#1020)์ ์ถ๊ฐํ ๊ฒ์ด์ง๋ง, ์ด๋ค ์ด์ ๋ก ๋ซํ์ต๋๋ค.
@Californian ๊ด๋ จ ์ ๋ฐ์ดํธ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค. ๋งํฌ๋ฅผ ์ถ๊ฐํ๊ฒ ์ต๋๋ค.
@Californian OT๋ ์ฌ๊ธฐ์ ์์ง๋ง ๋น๋ฐ์ --build-arg
๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ์ข์ง ์์ต๋๋ค. ์ค์ ๋ก ๋น๋ ๊ธฐ๋ก์์ ๋น๋ฐ์ ์ป์ ์ ์์ต๋๋ค. docker history <image>
์๋ํ๋ฉด ๊ฑฐ๊ธฐ์์ ๋ณผ ์ ์์ต๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์ฃ์กํฉ๋๋ค. ์ด๊ฒ์
pipenv
๋ฌธ์ ๊ฐ ์๋๋๋ค. virtualenv ์ธ๋ถ์ ์ผ๋ฐpip
์์๋ ๋ฐ์ํฉ๋๋ค.์ฐธ๊ณ ๋ก CI ๋ฐ ๋์ปค์ ํจ๊ป ๊ฐ์ธ
pip
์ ์ฅ์๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๊ถ๊ธํดํ๋ ์ฌ๋์ ์ธ์ฆ๊ณผ ํจ๊ปPIP_EXTRA_INDEX_URL
ํ๊ฒฝ ๋ณ์๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค. ์ด๊ฒ์ VCS์ ์ฒดํฌ์ธ๋์ง ์์.env
ํ์ผ์ ์ฌ์ฉํ์ฌ ๋ก์ปฌ ํ ์คํธ๋ฅผ ์ํด ์ํํ ์ ์์ผ๋ฉฐ CI ๋๊ตฌ๊ฐ ํ๊ฒฝ ๋ณ์ ์ ์์ ์ฌ์ฉํ๋ ๋ชจ๋ ๊ฒ์ผ๋ก ์๊ฒฉ์ผ๋ก ์ํํ ์ ์์ต๋๋ค(์ผ๋ฐ์ ์ผ๋ก ๋ฆฌํฌ์งํ ๋ฆฌ์ ๋ํ GUI ๋๋ CLI ์ค์ ์์).docker
์ฌ์ฉํ๋ ๊ฒฝ์ฐ--build-arg YOUR_ARG_KEY=$YOUR_ENV_VAR
๋ฅผ ์ฝ์ ํ ์ ์์ต๋๋ค. ๋๋ ์ด๊ฒ์ ๊ด๋ จ ์ด์(#1020)์ ์ถ๊ฐํ ๊ฒ์ด์ง๋ง, ์ด๋ค ์ด์ ๋ก ๋ซํ์ต๋๋ค.