์ง์์ ์ธ ๋ฐฐํฌ๋ ์ํํธ์จ์ด์ ๋ค์ํ ๊ธฐ๋ฅ์ ๋น ๋ฅด๊ณ ์์ ํ๋ฉฐ ํจ์จ์ ์ผ๋ก ๊ตฌํํ๋ ๋ฐ ์ฌ์ฉ๋๋ ์ํํธ์จ์ด ๊ฐ๋ฐ์ ํน๋ณํ ์ ๊ทผ ๋ฐฉ์์
๋๋ค.
์ฃผ์ ์์ด๋์ด๋ ๊ฐ๋ฐ์๊ฐ ์์ฑ๋ ์ ํ์ ์ฌ์ฉ์์๊ฒ ์ ์ํ๊ฒ ์ ๊ณตํ ์ ์๋ ์ ๋ขฐํ ์ ์๋ ์๋ํ ํ๋ก์ธ์ค๋ฅผ ๋ง๋๋ ๊ฒ์
๋๋ค. ๋์์ ํ๋ก๋์
์ ์ง์์ ์ธ ๋ณ๊ฒฝ์ด ์ด๋ฃจ์ด์ง๋๋ค. ์ด๋ฅผ ์ง์์ ์ ๋ฌ ํ์ดํ๋ผ์ธ(CD ํ์ดํ๋ผ์ธ)์ด๋ผ๊ณ ํฉ๋๋ค.
Skillbox๋ ๋ค์์ ๊ถ์ฅํฉ๋๋ค. ์ค๊ธฐ ์ฝ์ค
"๋ชจ๋ฐ์ผ ๊ฐ๋ฐ์ PRO" .์๋ฆผ: "Habr"์ ๋ชจ๋ ๋ ์๋ฅผ ์ํ - "Habr" ํ๋ก๋ชจ์ ์ฝ๋๋ฅผ ์ฌ์ฉํ์ฌ Skillbox ๊ณผ์ ์ ๋ฑ๋กํ ๋ 10 ๋ฃจ๋ธ ํ ์ธ.
ํ๋ฆ์ ์ ์ดํ๊ธฐ ์ํด ์ ๋ฃ ๋ฐ ์์ ๋ฌด๋ฃ๋ฅผ ํฌํจํ ๋ค์ํ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ด ๊ธฐ์ฌ์์๋ ๋ชจ๋ ํ๋ก๊ทธ๋๋จธ์๊ฒ ์ ์ฉํ ์ ์์ผ๋ฉฐ ๊ฐ๋ฐ์๋ค ์ฌ์ด์์ ๊ฐ์ฅ ์ธ๊ธฐ ์๋ ์ธ ๊ฐ์ง ์๋ฃจ์
์ ๋ํด ์ค๋ช
ํฉ๋๋ค.
์ ํจ์ค
์์ ๋ ๋ฆฝํ ์คํ ์์ค ์๋ํ ์๋ฒ์ ๋๋ค. ์ํํธ์จ์ด ๊ตฌ์ถ, ํ ์คํธ, ๋ฐฐ์ก ๋๋ ๋ฐฐํฌ์ ๊ด๋ จ๋ ๋ชจ๋ ์ข ๋ฅ์ ์์ ์ ์๋ํํ๋ ค๋ฉด ํ๋ ฅํ ๊ฐ์น๊ฐ ์์ต๋๋ค.
์ต์ PC ์๊ตฌ ์ฌํญ :
- 256MB RAM, 1GB ํ์ผ ๊ณต๊ฐ.
์ต์ :
- 1GB RAM, 50GB ํ๋ ๋๋ผ์ด๋ธ.
์์ ํ๋ ค๋ฉด JRE(Java Runtime Environment) ๋ฒ์ 8์ด๋ผ๋ ์ถ๊ฐ ์ํํธ์จ์ด๋ ํ์ํฉ๋๋ค.
์ํคํ
์ฒ(๋ถ์ฐ ์ปดํจํ
)๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
Jenkins Server๋ GUI ํธ์คํ
์ ๋ฌผ๋ก ์ ์ฒด ๋น๋ ๊ตฌ์ฑ ๋ฐ ์คํ์ ๋ด๋นํ๋ ์ค์น์
๋๋ค.
Jenkins ๋ ธ๋/์ฌ๋ ์ด๋ธ/๋น๋ ์๋ฒ - ๋ง์คํฐ(๋ฉ์ธ ๋ ธ๋)๋ฅผ ๋์ ํ์ฌ ๋น๋ ์์ ์ ์ํํ๋๋ก ๊ตฌ์ฑํ ์ ์๋ ์ฅ์น์ ๋๋ค.
๋ฆฌ๋ ์ค์ฉ ์ค์น
๋จผ์ ์์คํ ์ Jenkins ์ ์ฅ์๋ฅผ ์ถ๊ฐํด์ผ ํฉ๋๋ค.
CD /tmp && wget -q -O โ
ํจํค์ง ์ ์ฅ์ ์ ๋ฐ์ดํธ:
sudo apt update
Jenkins๋ฅผ ์ค์นํฉ๋๋ค.
sudo apt ์ค์น ์ ํจ์ค
๊ทธ ํ์ Jenkins๋ ๊ธฐ๋ณธ ํฌํธ 8080์ ํตํด ์์คํ ์์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๊ธฐ๋ฅ์ ํ์ธํ๋ ค๋ฉด ๋ธ๋ผ์ฐ์ ์์ ์ฃผ์๋ฅผ ์ด์ด์ผ ํฉ๋๋ค.
์ด์ ๋ชจ๋ ์ค๋น๊ฐ ์๋ฃ๋์์ผ๋ฏ๋ก CI/CD ํ๋ฆ ์์ฑ์ ์์ํ ์ ์์ต๋๋ค. ์ํฌ๋ฒค์น์ ๊ทธ๋ํฝ ์ธํฐํ์ด์ค๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ ํจ์ค์ ๊ฐ์ :
- ๋ง์คํฐ/์ฌ๋ ์ด๋ธ ์ํคํ ์ฒ๊ฐ ์ ๊ณตํ๋ ํ์ฅ์ฑ
- REST XML/JSON API์ ๊ฐ์ฉ์ฑ;
- ํ๋ฌ๊ทธ์ธ ๋๋ถ์ ์๋ง์ ํ์ฅ ๊ธฐ๋ฅ์ ์ฐ๊ฒฐํ ์ ์์ต๋๋ค.
- ํ๋ฐํ๊ณ ๋์์์ด ๋ฐ์ ํ๋ ์ปค๋ฎค๋ํฐ.
๋จ์ :
- ๋ถ์ ๋ธ๋ก์ด ์์ต๋๋ค.
- ๋งค์ฐ ์ฌ์ฉ์ ์นํ์ ์ธ ์ธํฐํ์ด์ค๋ ์๋๋๋ค.
TeamCity
JetBrains์ ์์ฉ ๊ฐ๋ฐ. ์๋ฒ๋ ๊ฐ๋จํ ์ค์ ๊ณผ ๋ฐ์ด๋ ์ธํฐํ์ด์ค๋ก ํ๋ฅญํฉ๋๋ค. ๊ธฐ๋ณธ ๊ตฌ์ฑ์๋ ๋ง์ ๊ธฐ๋ฅ์ด ํฌํจ๋์ด ์์ผ๋ฉฐ ์ฌ์ฉ ๊ฐ๋ฅํ ํ๋ฌ๊ทธ์ธ ์๊ฐ ์ง์์ ์ผ๋ก ์ฆ๊ฐํ๊ณ ์์ต๋๋ค.
JRE(Java Runtime Environment) ๋ฒ์ 8์ด ํ์ํฉ๋๋ค.
์๋ฒ ํ๋์จ์ด ์๊ตฌ ์ฌํญ์ ์ค์ํ์ง ์์ต๋๋ค.
- RAM - 3,2GB;
- ํ๋ก์ธ์ - ๋์ผ ์ฝ์ด, 3,2GHz;
- 1Gb/s ์ฉ๋์ ํต์ ์ฑ๋.
์๋ฒ๋ฅผ ์ฌ์ฉํ๋ฉด ๋์ ์ฑ๋ฅ์ ์ป์ ์ ์์ต๋๋ค.
- 60๊ฐ์ ๋น๋ ๊ตฌ์ฑ์ ๊ฐ์ถ 300๊ฐ์ ํ๋ก์ ํธ;
- ๋น๋ ๋ก๊ทธ์ 2MB ํ ๋น;
- ๋น๋ ์์ด์ ํธ 50๊ฐ;
- ์น ๋ฒ์ ์์๋ 50๋ช ์ ์ฌ์ฉ์, IDE์์๋ 30๋ช ์ ์ฌ์ฉ์์ ์์ ํ ์ ์์ต๋๋ค.
- ์ธ๋ถ VCS(์ผ๋ฐ์ ์ผ๋ก Perforce ๋ฐ Subversion) ์ฐ๊ฒฐ 100๊ฐ. ํ๊ท ๋ณ๊ฒฝ ์๊ฐ์ 120์ด์ ๋๋ค.
- ํ๋ฃจ์ 150๊ฐ ์ด์์ ์์ ;
- ํ ์๋ฒ์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์
- JVM ์๋ฒ ํ๋ก์ธ์ค ์ค์ : -Xmx1100m -XX:MaxPermSize=120m.
์์ด์ ํธ ์๊ตฌ ์ฌํญ์ ์คํ ์ค์ธ ์ด์ ๋ธ๋ฆฌ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํฉ๋๋ค. ์๋ฒ์ ์ฃผ์ ์์ ์ ์ฐ๊ฒฐ๋ ๋ชจ๋ ์์ด์ ํธ๋ฅผ ๋ชจ๋ํฐ๋งํ๊ณ ํธํ์ฑ ์๊ตฌ ์ฌํญ์ ๋ฐ๋ผ ๋๊ธฐ์ด์ ์๋ ์ด์ ๋ธ๋ฆฌ๋ฅผ ์ด๋ฌํ ์์ด์ ํธ์ ๋ฐฐํฌํ๊ณ ๊ฒฐ๊ณผ๋ฅผ ๋ณด๊ณ ํ๋ ๊ฒ์ ๋๋ค. ์์ด์ ํธ๋ ๋ค์ํ ํ๋ซํผ๊ณผ ์ด์ ์ฒด์ , ๊ทธ๋ฆฌ๊ณ ์ฌ์ ๊ตฌ์ฑ๋ ํ๊ฒฝ์ผ๋ก ์ ๊ณต๋ฉ๋๋ค.
๋น๋ ๊ฒฐ๊ณผ์ ๋ํ ๋ชจ๋ ์ ๋ณด๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅ๋ฉ๋๋ค. ์ฃผ๋ก ์ด๋ ๊ธฐ๋ก ๋ฐ ๊ธฐํ ์ ์ฌํ ๋ฐ์ดํฐ, VCS ๋ณ๊ฒฝ ์ฌํญ, ์์ด์ ํธ, ๋น๋ ๋๊ธฐ์ด, ์ฌ์ฉ์ ๊ณ์ ๋ฐ ๊ถํ์ ๋๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค์๋ ๋น๋ ๋ก๊ทธ์ ์ํฐํฉํธ๋ง ํฌํจ๋์ง ์์ต๋๋ค.
๋ฆฌ๋
์ค์ฉ ์ค์น
Tomcat ์๋ธ๋ฆฟ ์ปจํ
์ด๋์ ํจ๊ป TeamCity๋ฅผ ์๋์ผ๋ก ์ค์นํ๋ ค๋ฉด TeamCity ์์นด์ด๋ธ TeamCity .tar.gz๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค. ๋ค์ด๋ก๋
tar -xfz TeamCity.tar.gz
/bin/runAll. sh [์์|์ค์ง]
์ฒ์ ์์ํ ๋ ์ด์ ๋ธ๋ฆฌ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ํ์ ์ ํํด์ผ ํฉ๋๋ค.
๊ธฐ๋ณธ ๊ตฌ์ฑ์ ๋ค์์์ ์คํ๋ฉ๋๋ค.
TeamCity์ ๊ฐ์ :
- ๊ฐ๋จํ ์ค์ ;
- ์ฌ์ฉ์ ์นํ์ ์ธ ์ธํฐํ์ด์ค;
- ๋ค์์ ๋ด์ฅ ๊ธฐ๋ฅ;
- ์ง์ํ๋ค;
- RESTful API๊ฐ ์์ต๋๋ค.
- ์ข์ ๋ฌธ์;
- ์ข์ ๋ณด์.
๋จ์ :
- ์ ํ๋ ํตํฉ;
- ์ด๊ฒ์ ์ ๋ฃ ๋๊ตฌ์ ๋๋ค.
- ์์ ์ปค๋ฎค๋ํฐ(๊ทธ๋ฌ๋ ์ฑ์ฅ ์ค).
๊ณ ์จ๋
์ค์น ๋ฐ ์ด์์ ์ํด JRE(Java Runtime Environment) ๋ฒ์ 8์ด ํ์ํ ์คํ ์์ค ํ๋ก์ ํธ์ ๋๋ค.
์์คํ ์๊ตฌ ์ฌํญ :
- RAM - ์ต์ 1GB, ๋ง์์๋ก ์ข์ต๋๋ค.
- ํ๋ก์ธ์ - ์ฝ์ด ์ฃผํ์๊ฐ 2GHz์ธ ๋์ผ ์ฝ์ด;
- ํ๋ ๋๋ผ์ด๋ธ - ์ต์ 1GB์ ์ฌ์ ๊ณต๊ฐ.
์์ด์ ํธ :
- RAM - ์ต์ 128MB, ๋ง์์๋ก ์ข์ต๋๋ค.
- ํ๋ก์ธ์ - ์ต์ 2GHz.
์๋ฒ๋ ์์ด์ ํธ์ ์๋์ ๋ณด์ฅํ๊ณ ์ฌ์ฉ์์๊ฒ ํธ๋ฆฌํ ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํฉ๋๋ค.
๋จ๊ณ/์์
/๊ณผ์ :
๋ฆฌ๋
์ค์ฉ ์ค์น
์์ฝ "deb
์ปฌ
์ถ๊ฐ-์ ํฉ-์ ์ฅ์ ppa:openjdk-r/ppa
apt-get์ ์ ๋ฐ์ดํธ
apt-get ์ค์น -y openjdk-8-jre
apt-get ์ค์น go-server
apt-get ์ค์น go-agent
/etc/init.d/go-server [์์|์ค์ง|์ํ|๋ค์ ์์]
/etc/init.d/go-agent [์์|์ค์ง|์ํ|๋ค์ ์์]
๊ธฐ๋ณธ์ ์ผ๋ก GoCd๋ ๋ค์์์ ์คํ๋ฉ๋๋ค.
GoCd์ ๊ฐ์ :
- ์คํ ์์ค;
- ๊ฐ๋จํ ์ค์น ๋ฐ ๊ตฌ์ฑ;
- ์ข์ ๋ฌธ์;
- ํ๋ฅญํ ์ฌ์ฉ์ ์ธํฐํ์ด์ค:
- ํ๋์ ๋ณด๊ธฐ์์ ๋จ๊ณ๋ณ GoCD ๋ฐฐํฌ ๊ฒฝ๋ก๋ฅผ ํ์ํ๋ ๊ธฐ๋ฅ:
- ํ์ดํ๋ผ์ธ ๊ตฌ์กฐ์ ํ์ํ ํ์:
- GoCD๋ Docker, AWS๋ฅผ ํฌํจํ์ฌ ๊ฐ์ฅ ๋๋ฆฌ ์ฌ์ฉ๋๋ ํด๋ผ์ฐ๋ ํ๊ฒฝ์์ CD ์์ ํ๋ฆ์ ์ต์ ํํฉ๋๋ค.
- ์ด ๋๊ตฌ๋ฅผ ์ฌ์ฉํ๋ฉด ์ปค๋ฐ๋ถํฐ ๋ฐฐํฌ๊น์ง ๋ชจ๋ ๋ณ๊ฒฝ ์ฌํญ์ ์ค์๊ฐ์ผ๋ก ์ถ์ ํ์ฌ ํ์ดํ๋ผ์ธ์ ๋ฌธ์ ๋ฅผ ์์ ํ ์ ์์ต๋๋ค.
๋จ์ :
- ์ต์ํ ํ๋์ ์์ด์ ํธ๊ฐ ํ์ํฉ๋๋ค.
- ์๋ฃ๋ ๋ชจ๋ ์์ ์ ํ์ํ๋ ์ฝ์์ด ์์ต๋๋ค.
- ๊ฐ ๋ช ๋ น์ ์คํํ๋ ค๋ฉด ํ์ดํ๋ผ์ธ ๊ตฌ์ฑ์ ์ํ ํ๋์ ์์ ์ ์์ฑํด์ผ ํฉ๋๋ค.
- ํ๋ฌ๊ทธ์ธ์ ์ค์นํ๋ ค๋ฉด .jar ํ์ผ์ ๋ค์์ผ๋ก ์ด๋ํด์ผ ํฉ๋๋ค. /plugins/external ๋ฐ ์๋ฒ๋ฅผ ๋ค์ ์์ํฉ๋๋ค.
- ์๋์ ์ผ๋ก ์์ ์ปค๋ฎค๋ํฐ.
๊ฒฐ๋ก ์ผ๋ก
์ด๊ฒ์ ์ธ ๊ฐ์ง ๋๊ตฌ์ผ ๋ฟ์ด๋ฉฐ ์ค์ ๋ก๋ ๋ ๋ง์ ๋๊ตฌ๊ฐ ์์ต๋๋ค. ์ ํํ๊ธฐ๊ฐ ์ด๋ ต๊ธฐ ๋๋ฌธ์ ๋ฐ๋์ ์ถ๊ฐ์ ์ธ ์ธก๋ฉด์ ์ฃผ์๋ฅผ ๊ธฐ์ธ์ฌ์ผ ํฉ๋๋ค.
๋๊ตฌ์ ์คํ ์์ค ์ฝ๋๋ฅผ ์ฌ์ฉํ๋ฉด ๋๊ตฌ๊ฐ ๋ฌด์์ธ์ง ์ดํดํ๊ณ ์๋ก์ด ๊ธฐ๋ฅ์ ๋ ๋น ๋ฅด๊ฒ ์ถ๊ฐํ ์ ์์ต๋๋ค. ํ์ง๋ง ๋ญ๊ฐ๊ฐ ํจ๊ณผ๊ฐ ์๋ค๋ฉด ์์ ๊ณผ ์ปค๋ฎค๋ํฐ์ ๋์์๋ง ์์กดํด์ผ ํฉ๋๋ค. ์ ๋ฃ ๋๊ตฌ๋ ๋๋ก๋ ์ค์ํ ์ ์๋ ์ง์์ ์ ๊ณตํฉ๋๋ค.
๋ณด์์ด ์ต์ฐ์ ์ฌํญ์ด๋ผ๋ฉด ๋ก์ปฌ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ๊ทธ๋ ์ง ์๋ค๋ฉด SaaS ์๋ฃจ์ ์ ์ ํํ๋ ๊ฒ์ด ์ข์ ์ ํ์ ๋๋ค.
๋ง์ง๋ง์ผ๋ก, ์ ๋ง ํจ๊ณผ์ ์ธ ์ง์์ ๋ฐฐํฌ ํ๋ก์ธ์ค๋ฅผ ๋ณด์ฅํ๋ ค๋ฉด ์ฌ์ฉ ๊ฐ๋ฅํ ๋๊ตฌ ๋ฒ์๋ฅผ ์ขํ ์ ์๋ ๊ตฌ์ฒด์ ์ธ ๊ธฐ์ค์ ๊ณต์ํํด์ผ ํฉ๋๋ค.
Skillbox๋ ๋ค์์ ๊ถ์ฅํฉ๋๋ค.
- XNUMX๋ ์ค์ต ์ฝ์ค
"์ ๋ PRO ์น ๊ฐ๋ฐ์์ ๋๋ค" .- ์จ๋ผ์ธ ์ฝ์ค
"C# ๊ฐ๋ฐ์" .- ์ค๊ธฐ ์ฝ์ค
"0์์ PRO๋ก์ PHP ๊ฐ๋ฐ์" .
์ถ์ฒ : habr.com