CICD ๋๊ตฌ ๊ฐ๋ฐ์๋ ์ข ์ข Microsoft, Oculus, Red Hat, ์ฌ์ง์ด Ferrari ๋ฐ NASA์ ๊ฐ์ ๋๊ธฐ์ ์ ํด๋ผ์ด์ธํธ๋ก ๋์ดํฉ๋๋ค. ๊ทธ๋ฌํ ๋ธ๋๋๋ ๋ ๋ช ์ ๊ฐ๋ฐ์์ ๋์์ด๋๋ก ๊ตฌ์ฑ๋ ์คํํธ์ ์ด ๊ฐ๋นํ ์ ์๋ ๊ฐ๋น์ผ ์์คํ ์์๋ง ์๋ํ๋ ๊ฒ์ฒ๋ผ ๋ณด์ ๋๋ค. ๊ทธ๋ฌ๋ ๋๊ตฌ์ ์๋น ๋ถ๋ถ์ ์๊ท๋ชจ ํ์์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์๋์์ ์ฃผ์ํ ์ ์ ๋ํด ์๋ ค๋๋ฆฌ๊ฒ ์ต๋๋ค.
์ฌ์ง โ
PHP ๊ฒ์ด
PHP์์ ํ๋ก์ ํธ๋ฅผ ์ฝ๊ฒ ๋น๋ํ ์ ์๊ฒ ํด์ฃผ๋ ์คํ ์์ค CI ์๋ฒ์
๋๋ค. ์ด๊ฒ์ ํ๋ก์ ํธ์ ํฌํฌ์
๋๋ค.
PHP Censor๋ GitHub, GitLab, Mercurial ๋ฐ ๊ธฐํ ์ฌ๋ฌ ์ ์ฅ์์ ํจ๊ป ์๋ํ ์ ์์ต๋๋ค. ์ฝ๋๋ฅผ ํ
์คํธํ๊ธฐ ์ํด ๋๊ตฌ๋ Atoum, PHP Spec, Behat, Codeception ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ฌ๊ธฐ
test:
atoum:
args: "command line arguments go here"
config: "path to config file"
directory: "directory to run tests"
executable: "path to atoum executable"
๋ ์ค
Rex๋ ์๊ฒฉ ์คํ(Remote Execution)์ ์ฝ์์ ๋๋ค. ์ด ์์คํ ์ ์์ง๋์ด์ธ Ferenc Erki๊ฐ ๋ฐ์ดํฐ ์ผํฐ์ ํ๋ก์ธ์ค๋ฅผ ์๋ํํ๊ธฐ ์ํด ๊ฐ๋ฐํ์ต๋๋ค. Rex๋ Perl ์คํฌ๋ฆฝํธ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ์ง๋ง ๋๊ตฌ์ ์ํธ ์์ฉํ๊ธฐ ์ํด ์ด ์ธ์ด๋ฅผ ์ ํ์๋ ์์ต๋๋ค. ๋๋ถ๋ถ์ ์์ (์: ํ์ผ ๋ณต์ฌ)์ ํจ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ค๋ช ๋์ด ์์ผ๋ฉฐ ์คํฌ๋ฆฝํธ๋ ๋๊ฐ XNUMX์ค์ ๋ง์ต๋๋ค. ๋ค์์ ์ฌ๋ฌ ์๋ฒ์ ๋ก๊ทธ์ธํ๊ณ ๊ฐ๋ ์๊ฐ์ ์คํํ๋ ์์ ๋๋ค.
use Rex -feature => ['1.3'];
user "my-user";
password "my-password";
group myservers => "mywebserver", "mymailserver", "myfileserver";
desc "Get the uptime of all servers";
task "uptime", group => "myservers", sub {
my $output = run "uptime";
say $output;
};
๋ค์๊ณผ ๊ฐ์ด ๋๊ตฌ์ ๋ํด ์์๋ณด๋ ๊ฒ์ด ์ข์ต๋๋ค.
์คํ ๋น๋ ์๋น์ค(OBS)
์ด๋ ๋ฐฐํฌํ ๊ฐ๋ฐ์ ์ต์ ํํ๊ธฐ ์ํ ํ๋ซํผ์
๋๋ค. ํด๋น ์ฝ๋๋ ๊ณต๊ฐ๋์ด ์์ผ๋ฉฐ ์ ์ฅ์์ ์์ต๋๋ค.
๊ทธ๋ฌ๋ ์กด์ฌํ๋ ๋์ ์ด ๋๊ตฌ๋ ๊ด๋ฒ์ํ ์ปค๋ฎค๋ํฐ๋ฅผ ํ๋ณดํ ์ ์ด ์์ต๋๋ค. ํ์ง๋ง
๋ฐ๋ฐํฌ
๋๊ตฌ ์ด๊ธฐ(
์์คํ ์ ๋ค์์์ ์ฌ์ฉ๋ฉ๋๋ค.
์ํธ ๋์ฆ๋ ํ์ฌ ,์ธ์ผ์ฆ ํฌ์ค ะธTickโโetmaster . ํ์ง๋ง ์ด ํ๋ก์ ํธ๋ ์คํํธ์ ์๋ ์ ํฉํฉ๋๋ค. ์ด๋ Rundeck์ด Apache v2.0 ๋ผ์ด์ ์ค์ ๋ฐ๋ผ ๋ผ์ด์ ์ค๊ฐ ๋ถ์ฌ๋์๊ธฐ ๋๋ฌธ์ ๋๋ค. ๊ฒ๋ค๊ฐ ์ด ๋๊ตฌ๋ ์ฌ์ฉํ๊ธฐ ๋งค์ฐ ์ฝ์ต๋๋ค.
Rundeck๊ณผ โโํจ๊ป ์ผํ๋ Reddit ๊ฑฐ์ฃผ์,
์จ๋ผ์ธ์ผ๋ก ๋๊ตฌ๋ฅผ ์ค์ ํ๋ ๋ฐฉ๋ฒ์ ๋ํ ๊ฐ๋ตํ ๊ฐ์ด๋๋ฅผ ์ฐพ์ ์๋ ์์ต๋๋ค.
๊ณ ์จ๋
๋๊ตฌ ์ด๊ธฐ(
GoCD๋ ์จ๋ผ์ธ ์๋์ฐจ ํ๋งค ์ฌ์ดํธ AutoTrader, ๊ณ๋ณด ์๋น์ค Ancestry ๋ฐ ์ ์ฉ์นด๋ ์ ๊ณต์
์ฒด Barclaycard์ ์์ง๋์ด๋ค์ด ์ฌ์ฉํฉ๋๋ค. ๊ทธ๋ฌ๋ ๋๊ตฌ ์ฌ์ฉ์์ XNUMX๋ถ์ XNUMX์
์คํํธ์
์ฌ์ด์์ ์ด ์๋น์ค์ ์ธ๊ธฐ๋ ๊ฐ๋ฐฉ์ฑ์ผ๋ก ์ค๋ช
ํ ์ ์์ต๋๋ค. ์ด ์๋น์ค๋ Apache v2.0 ๋ผ์ด์ ์ค์ ๋ฐ๋ผ ๋ฐฐํฌ๋ฉ๋๋ค. ๋์์ GoCD
์ฌ์ง โ
GoCD๋ฅผ ์ค์ ๋ก ์ฌ์ฉํด ๋ณด๊ณ ์ถ๋ค๋ฉด ํ๋ก์ ํธ ์น์ฌ์ดํธ์์ ์ฐพ์ ์ ์์ต๋๋ค.
์ ํจ์ค
Jenkins๋ ๋๋ฆฌ ์๋ ค์ ธ ์์ผ๋ฉฐ
์ค๋์ ์ ํจ์ค์ ํจ๊ป
์
๊ธฐ๊ฐ ์กด์ฌํ๋ ๋์ ๊ทธ ์ฃผ์์๋ ๋๊ท๋ชจ ์ปค๋ฎค๋ํฐ๊ฐ ํ์ฑ๋์์ต๋๋ค. ์ฌ์ฉ์๋ ์ค๋ ๋๋ฅผ ํตํด ์ ๊ทน์ ์ผ๋ก ์ปค๋ฎค๋์ผ์ด์
ํฉ๋๋ค.
Jenkins ์์ํ๊ธฐ: ๊ณต์ ๊ฐ์ด๋ ;Jenkins์ ๋ํ ์ ์ฒด ๊ฐ์ด๋ ;- ๊ฐ์ด๋
์ด๋ณด์๋ฅผ ์ํ ์ ํจ์ค - ๋ธ๋ ํธ ๋ฌ์คํฐ์ ์ฑ
์ ํจ์ค 2. ์์ํด ๋ณด์ "; - Rafal Leshko์ ์ฑ
"
Docker ๋ฐ Jenkins๋ฅผ ํตํ ์ง์์ ์ ๋ฌ: ํ์ฅ ๊ฐ๋ฅํ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ณต ".
Jenkins์๋ ๋ช ๊ฐ์ง ์ ์ฉํ ์ธก๋ฉด ํ๋ก์ ํธ๊ฐ ์์ต๋๋ค. ์ฒซ ๋ฒ์งธ๋ ํ๋ฌ๊ทธ์ธ์
๋๋ค.
๋น๋ ๋ด
์ด๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋น๋ ๋ฐ ํ ์คํธ ์ฃผ๊ธฐ๋ฅผ ์๋ํํ๊ธฐ ์ํ ์ง์์ ์ธ ํตํฉ ์์คํ ์ ๋๋ค. ์ฝ๋๊ฐ ๋ณ๊ฒฝ๋ ๋๋ง๋ค ์ฝ๋์ ๊ธฐ๋ฅ์ ์๋์ผ๋ก ํ์ธํฉ๋๋ค.
์ด ๋๊ตฌ์ ์์ฑ์๋ ์์ง๋์ด Brian Warner์์ต๋๋ค. ์ค๋ ๊ทธ ์ฌ๋์ ๊ทผ๋ฌด ์ค์ด์ผ
๋น๋ ๋ด
๋ฌผ๋ก , ๊ทธ๊ฒ ๋ค๊ฐ ์๋์ผ ์๊ท๋ชจ ์กฐ์ง๊ณผ ์คํํธ์ ์ด ์ฃผ๋ชฉํด์ผ ํ DevOps ๋๊ตฌ์ ๋๋ค. ๋๊ธ๋ก ๊ฐ์ฅ ์ข์ํ๋ ๋๊ตฌ๋ฅผ ์๋ ค์ฃผ์๋ฉด ๋ค์ ์๋ฃ ์ค ํ๋๋ฅผ ํตํด ํด๋น ๋๊ตฌ์ ๋ํด ์ด์ผ๊ธฐํด ๋ณด๊ฒ ์ต๋๋ค.
ํ์ฌ ๋ธ๋ก๊ทธ์ ์ฐ๋ฆฌ๊ฐ ์ฐ๋ ๋ด์ฉ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์นจํฌ ํ ์คํธ - ์ธ๋ถ ๋ณด์ ๊ฐ์ฌ NetApp MAX DATA: ์๋ฃจ์ ๊ธฐ๋ฅ ๊ฐ์ ์ปจํ ์ด๋์ ๊ฐ๋ตํ ์ญ์ฌ: Chroot์์ Kubernetes๊น์ง ๊ณต๊ธ์ ํด๋ผ์ฐ๋์ DDoS ๋ณดํธ
์ถ์ฒ : habr.com