เดนเต เดนเดฌเตผ!
เดเดงเตเดจเดฟเด เดฏเดพเดฅเดพเตผเดคเตเดฅเตเดฏเดคเตเดคเดฟเตฝ, เดตเดฟเดเดธเดจ เดชเตเดฐเดเตเดฐเดฟเดฏเดเดณเดฟเตฝ เดเดฃเตเดเตเดฏเตโเดจเดฑเตเดธเตเดทเดจเตเดฑเต เดตเตผเดฆเตเดงเดฟเดเตเดเตเดตเดฐเตเดจเตเดจ เดชเดเตเดเต เดเดพเดฐเดฃเด, เดเดฃเตเดเตเดฏเตโเดจเดฑเตเดเดณเตเดฎเดพเดฏเดฟ เดฌเดจเตเดงเดชเตเดชเตเดเตเด เดตเดฟเดตเดฟเดง เดเดเตเดเดเตเดเดณเตเดเตเดฏเตเด เดเดจเตเดฑเดฟเดฑเตเดฑเดฟเดเดณเตเดเตเดฏเตเด เดธเตเดฐเดเตเดท เดเดฑเดชเตเดชเดพเดเตเดเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดชเตเดฐเดถเตโเดจเด เดเดฑเตเดฑเดตเตเด เดชเตเดฐเดงเดพเดจเดชเตเดชเตเดเตเด เดชเตเดฐเดถเตโเดจเดฎเดฒเตเดฒ. เดฎเดพเดจเตเดตเตฝ เดชเดฐเดฟเดถเตเดงเดจเดเตพ เดจเดเดคเตเดคเตเดจเตเดจเดคเต เดธเดฎเดฏเดฎเตเดเตเดเตเดเตเดจเตเดจเดคเดพเดฃเต, เด เดคเดฟเดจเดพเตฝ เด เดชเตเดฐเดเตเดฐเดฟเดฏ เดเดเตเดเตเดฎเตเดฑเตเดฑเต เดเตเดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดชเตเดฐเดพเดฐเดเดญ เดจเดเดชเดเดฟเดเดณเตเดเตเดเดฟเดฒเตเด เดเดเตเดเตเดเตเดจเตเดจเดคเต เดจเดฒเตเดฒเดคเดพเดฃเต.
เด เดฒเตเดเดจเดคเตเดคเดฟเตฝ, เดจเดฟเดฐเดตเดงเดฟ เดกเตเดเตเดเตผ เดธเตเดเตเดฏเตเดฐเดฟเดฑเตเดฑเดฟ เดฏเตเดเตเดเดฟเดฒเดฟเดฑเตเดฑเดฟเดเตพ เดจเดเดชเตเดชเดฟเดฒเดพเดเตเดเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดฑเตเดกเดฟเดฎเตเดฏเตเดกเต เดธเตเดเตเดฐเดฟเดชเตเดฑเตเดฑเตเดเดณเตเด เด เดชเตเดฐเดเตเดฐเดฟเดฏ เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเดพเดฏเดฟ เดเดฐเต เดเตเดฑเดฟเดฏ เดกเตเดฎเต เดธเตเดฑเตเดฑเดพเตปเดกเต เดเดเตเดเดจเต เดตเดฟเดจเตเดฏเดธเดฟเดเตเดเดฃเดฎเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดจเดฟเตผเดฆเตเดฆเตเดถเดเตเดเดณเตเด เดเดพเตป เดชเดเตเดเดฟเดเตเด. เดกเตเดเตเดเตผเดซเตเตฝ เดเดฟเดคเตเดฐเดเตเดเดณเตเดเตเดฏเตเด เดจเดฟเตผเดฆเตเดฆเตเดถเดเตเดเดณเตเดเตเดฏเตเด เดธเตเดฐเดเตเดท เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเตเดจเตเดจ เดชเตเดฐเดเตเดฐเดฟเดฏ เดเดเตเดเดจเต เดธเดเดเดเดฟเดชเตเดชเดฟเดเตเดเดพเดฎเตเดจเตเดจเต เดชเดฐเตเดเตเดทเดฟเดเตเดเดพเตป เดจเดฟเดเตเดเตพเดเตเดเต เดฎเตเดฑเตเดฑเตเดฐเดฟเดฏเดฒเตเดเตพ เดเดชเดฏเตเดเดฟเดเตเดเดพเด. เดเดฒเตเดฒเดพเดตเดฐเตเดเตเดฏเตเด เดตเดฟเดเดธเดจเดตเตเด เดจเดเดชเตเดชเดพเดเตเดเดฒเตเด เด
เดเดฟเดธเตเดฅเดพเดจ เดธเตเดเดฐเตเดฏเดเตเดเตพ เดตเตเดฏเดคเตเดฏเดธเตเดคเดฎเดพเดฃเตเดจเตเดจเต เดตเตเดฏเดเตเดคเดฎเดพเดฃเต, เด
เดคเดฟเดจเดพเตฝ เดคเดพเดดเต เดเดพเตป เดธเดพเดงเตเดฏเดฎเดพเดฏ เดจเดฟเดฐเดตเดงเดฟ เดเดชเตเดทเดจเตเดเตพ เดจเตฝเดเตเด.
เดธเตเดฐเดเตเดทเดพ เดชเดฐเดฟเดถเตเดงเดจ เดฏเตเดเตเดเดฟเดฒเดฟเดฑเตเดฑเดฟเดเตพ
เดกเตเดเตเดเตผ เดเตปเดซเตเดฐเดพเดธเตเดเตเดฐเดเตเดเดฑเดฟเดจเตเดฑเต เดตเดฟเดตเดฟเดง เดตเดถเดเตเดเดณเดฟเตฝ เดชเดฐเดฟเดถเตเดงเดจ เดจเดเดคเตเดคเตเดจเตเดจ เดตเดฟเดตเดฟเดง เดธเดนเดพเดฏ เดเดชเตเดฒเดฟเดเตเดเตเดทเดจเตเดเดณเตเด เดธเตเดเตเดฐเดฟเดชเตเดฑเตเดฑเตเดเดณเตเด เดงเดพเดฐเดพเดณเด เดเดฃเตเดเต. เด
เดตเดฏเดฟเตฝ เดเดฟเดฒเดคเต เดฎเตเดฎเตเดชเดคเตเดคเต เดฒเตเดเดจเดคเตเดคเดฟเตฝ เดตเดฟเดตเดฐเดฟเดเตเดเดฟเดเตเดเตเดฃเตเดเต (
เดนเดพเดกเตเดฒเดฟเดจเตเดฑเต
เดกเตเดเตเดเตผเดซเดฟเตฝ เดจเดฟเตผเดฆเตเดฆเตเดถเดเตเดเดณเตเดเต เดเตเดคเตเดฏเดคเดฏเตเด เดธเตเดฐเดเตเดทเดฟเดคเดคเตเดตเดตเตเด (เดเดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เด เดเดเตเดเตเดค เดเดฎเตเดเต เดฐเดเดฟเดธเตเดเตเดฐเดฟเดเตพ เดฎเดพเดคเตเดฐเด เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเดคเต เดธเตเดกเต เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเดคเต) เดเดฆเตเดฏ เดเดเดฆเตเดถเดฎเตเดจเตเดจ เดจเดฟเดฒเดฏเดฟเตฝ, เดตเดณเดฐเต เดฒเดณเดฟเดคเดฎเดพเดฏ เดเดฐเต เดเตบเดธเตเตพ เดฏเตเดเตเดเดฟเดฒเดฟเดฑเตเดฑเดฟ.
เดกเตเดเตเดเดฟเตพ
เดเดฐเต เดเดฎเตเดเดฟเดจเตเดชเตเดชเด (เด
เดฒเตเดฒเตเดเตเดเดฟเตฝ เดเดฐเต เดเดฎเตเดเดฟเดจเตเดฑเต เดธเดเดฐเดเตเดทเดฟเดเตเด เดเดพเตผ เดเตผเดเตเดเตเดตเดฟเดจเตเดชเตเดชเด) เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเดจเตเดจ เดเดฐเต เดเตบเดธเตเตพ เดฏเตเดเตเดเดฟเดฒเดฟเดฑเตเดฑเดฟ, เด
เดคเต เดเดฐเต เดชเตเดฐเดคเตเดฏเตเด เดเดฟเดคเตเดฐเดคเตเดคเดฟเดจเตเดฑเต เดเตเดคเตเดฏเดคเดฏเตเด เดธเตเดฐเดเตเดทเดฏเตเด เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเตเดจเตเดจเต, เด
เดคเดฟเดจเตเดฑเต เดฒเตเดฏเดฑเตเดเดณเตเด เดเตเตบเดซเดฟเดเดฑเตเดทเดจเตเด เดตเดฟเดถเดเดฒเดจเด เดเตเดฏเตเดฏเตเดจเตเดจเต - เดเดคเต เดเดชเดฏเตเดเตเดคเดพเดเตเดเดณเดพเดฃเต เดธเตเดทเตเดเดฟเดเตเดเดคเต, เดเดคเต เดจเดฟเตผเดฆเตเดฆเตเดถเดเตเดเดณเดพเดฃเต เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเดคเต, เดเดคเต เดตเตเดณเตเดฏเดเตเดเตพ เดฎเตเดฃเตเดเต เดเตเดฏเตโเดคเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต, เดถเตเดจเตเดฏเดฎเดพเดฏ เดชเดพเดธเตโเดตเตเดกเดฟเดจเตเดฑเต เดธเดพเดจเตเดจเดฟเดฆเตเดงเตเดฏเด เดฎเตเดคเดฒเดพเดฏเดต. เดกเดฟ. เดเดคเตเดตเดฐเตเดฏเตเดณเตเดณ เดเตเดเตเดเตเดเดณเตเดเต เดเดฃเตเดฃเด เดตเดณเดฐเต เดตเดฒเตเดคเดฒเตเดฒ, เดฎเดพเดคเตเดฐเดฎเดฒเตเดฒ เดเดเตเดเดณเตเดเต เดธเตเดตเดจเตเดคเด เดเตเดเตเดเตเดเดณเตเดเตเดฏเตเด เดถเตเดชเดพเตผเดถเดเดณเตเดเตเดฏเตเด เด
เดเดฟเดธเตเดฅเดพเดจเดคเตเดคเดฟเดฒเดพเดฃเต
เดเตเดฐเดฟเดตเดฟ
เดฐเดฃเตเดเต เดคเดฐเดคเตเดคเดฟเดฒเตเดณเตเดณ เดเตเดเตเดชเดพเดเตเดเตพ เดเดฃเตเดเตเดคเตเดคเตเดจเตเดจเดคเดฟเดจเดพเดฃเต เด เดฏเตเดเตเดเดฟเดฒเดฟเดฑเตเดฑเดฟ เดฒเดเตเดทเตเดฏเดฎเดฟเดเตเดจเตเดจเดคเต - OS เดฌเดฟเตฝเดกเตเดเดณเดฟเดฒเต เดชเตเดฐเดถเตเดจเดเตเดเตพ (Alpine, RedHat (EL), CentOS, Debian GNU, Ubuntu เดชเดฟเดจเตเดคเตเดฃเดฏเตเดเตเดเตเดจเตเดจเต), เดกเดฟเดชเตปเดกเตปเดธเดฟเดเดณเดฟเดฒเต เดชเตเดฐเดถเตเดจเดเตเดเตพ (Gemfile.lock, Pipfile.lock, composer.lock, เดชเดพเดเตเดเตเดเต -lock.json , yarn.lock, cargo.lock). เดเตเดฐเดฟเดตเดฟเดเตเดเต เดฑเดฟเดชเตเดชเตเดธเดฟเดฑเตเดฑเดฑเดฟเดฏเดฟเดฒเต เดเดฐเต เดเดฟเดคเตเดฐเดตเตเด เดเดฐเต เดชเตเดฐเดพเดฆเตเดถเดฟเด เดเดฟเดคเตเดฐเดตเตเด เดธเตเดเดพเตป เดเตเดฏเตเดฏเดพเตป เดเดดเดฟเดฏเตเด, เดเตเดเดพเดคเต เดกเตเดเตเดเตผ เดเดฎเตเดเต เดเดชเดฏเตเดเดฟเดเตเดเต เดเตเดฎเดพเดฑเตเดฑเด เดเตเดฏเตเดค .tar เดซเดฏเดฒเดฟเดจเต เด เดเดฟเดธเตเดฅเดพเดจเดฎเดพเดเตเดเดฟ เดธเตเดเดพเตป เดเตเดฏเตเดฏเดพเดจเตเด เดเดดเดฟเดฏเตเด.
เดฏเตเดเตเดเดฟเดฒเดฟเดฑเตเดฑเดฟเดเตพ เดจเดเดชเตเดชเดฟเดฒเดพเดเตเดเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดเดชเตเดทเดจเตเดเตพ
เดตเดฟเดตเดฐเดฟเดเตเด เดเดชเตเดฒเดฟเดเตเดเตเดทเดจเตเดเตพ เดเดฐเต เดเดฑเตเดฑเดชเตเดชเตเดเตเด เดชเดฐเดฟเดคเดธเตเดฅเดฟเดคเดฟเดฏเดฟเตฝ เดชเดฐเตเดเตเดทเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเต, เดเตเดฑเดเตเดเต เดฒเดณเดฟเดคเดฎเดพเดฏ เดชเตเดฐเดเตเดฐเดฟเดฏเดฏเดฟเตฝ เดเดฒเตเดฒเดพ เดฏเตเดเตเดเดฟเดฒเดฟเดฑเตเดฑเดฟเดเดณเตเด เดเตปเดธเตเดฑเตเดฑเดพเตพ เดเตเดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดจเดฟเตผเดฆเตเดฆเตเดถเดเตเดเตพ เดเดพเตป เดจเตฝเดเตเด.
เดกเดตเดฒเดชเตโเดฎเตเดจเตเดฑเต เดธเดฎเดฏเดคเตเดคเต เดธเตเดทเตโเดเดฟเดเตเด เดกเตเดเตเดเตผเดซเดฏเดฒเตเดเดณเตเดเตเดฏเตเด เดกเตเดเตเดเตผ เดเดฟเดคเตเดฐเดเตเดเดณเตเดเตเดฏเตเด เดธเตเดตเดฏเดฎเตเดตเดฏเตเดณเตเดณ เดเดณเตเดณเดเดเตเด เดชเดฐเดฟเดถเตเดงเดจ เดเดเตเดเดจเต เดจเดเดชเตเดชเดฟเดฒเดพเดเตเดเดพเด เดเดจเตเดจเต เดเดพเดฃเดฟเดเตเดเตเด เดเดจเตเดจเดคเดพเดฃเต เดชเตเดฐเดงเดพเดจ เดเดถเดฏเด.
เดเตเดเตเดเต เดคเดจเตเดจเต เดเดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เดเดเตเดเดเตเดเตพ เดเตพเดเตเดเตเดณเตเดณเตเดจเตเดจเต:
- เดเดฐเต เดฒเดฟเดจเตเดฑเตผ เดฏเตเดเตเดเดฟเดฒเดฟเดฑเตเดฑเดฟ เดเดชเดฏเตเดเดฟเดเตเดเต Dockerfile เดจเดฟเตผเดฆเตเดฆเตเดถเดเตเดเดณเตเดเต เดเตเดคเตเดฏเดคเดฏเตเด เดธเตเดฐเดเตเดทเดฏเตเด เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเตเดจเตเดจเต เดนเดพเดกเตเดฒเดฟเดจเตเดฑเต
- เดเดฐเต เดฏเตเดเตเดเดฟเดฒเดฟเดฑเตเดฑเดฟ เดเดชเดฏเตเดเดฟเดเตเดเต เด เดจเตเดคเดฟเดฎ, เดเดจเตเดฑเตผเดฎเตเดกเดฟเดฏเดฑเตเดฑเต เดเดฟเดคเตเดฐเดเตเดเดณเตเดเต เดเตเดคเตเดฏเดคเดฏเตเด เดธเตเดฐเดเตเดทเดฟเดคเดคเตเดตเดตเตเด เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเตเดจเตเดจเต เดกเตเดเตเดเดฟเตพ
- เด เดเดฟเดธเตเดฅเดพเดจ เดเดฎเตเดเดฟเตฝ เดชเตเดคเตเดตเดพเดฏเดฟ เด เดฑเดฟเดฏเดชเตเดชเตเดเตเดจเตเดจ เดเตเดเตเดชเดพเดเตเดเดณเตเดเต (CVE) เดธเดพเดจเตเดจเดฟเดงเตเดฏเดตเตเด เดจเดฟเดฐเดตเดงเดฟ เดกเดฟเดชเตปเดกเตปเดธเดฟเดเดณเตเด เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเตเดจเตเดจเต - เดฏเตเดเตเดเดฟเดฒเดฟเดฑเตเดฑเดฟ เดเดชเดฏเตเดเดฟเดเตเดเต เดเตเดฐเดฟเดตเดฟ
เด เดเดเตเดเดเตเดเตพ เดจเดเดชเตเดชเดฟเดฒเดพเดเตเดเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดฎเตเดจเตเดจเต เดเดชเตเดทเดจเตเดเตพ เดฒเตเดเดจเดคเตเดคเดฟเตฝ เดชเดฟเดจเตเดจเตเดเต เดเดพเตป เดจเตฝเดเตเด:
เดเดฐเต เดเดฆเดพเดนเดฐเดฃเดฎเดพเดฏเดฟ GitLab เดเดชเดฏเตเดเดฟเดเตเดเต CI/CD เดชเตเดชเตเดชเตเดฒเตเตป เดเตเตบเดซเดฟเดเตผ เดเตเดฏเตเดฏเตเดเดฏเดพเดฃเต เดเดฆเตเดฏเดคเตเดคเตเดคเต (เดเดฐเต เดเตเดธเตเดฑเตเดฑเต เดเตปเดธเตเดฑเตเดฑเตปเดธเต เดเดฏเตผเดคเตเดคเตเดจเตเดจ เดชเตเดฐเดเตเดฐเดฟเดฏเดฏเตเดเต เดตเดฟเดตเดฐเดฃเดคเตเดคเตเดเต).
เดฐเดฃเตเดเดพเดฎเดคเตเดคเตเดคเต เดเดฐเต เดทเตเตฝ เดธเตเดเตเดฐเดฟเดชเตเดฑเตเดฑเต เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเต.
เดกเตเดเตเดเตผ เดเดฎเตเดเตเดเตพ เดธเตเดเดพเตป เดเตเดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเดพเดฏเดฟ เดเดฐเต เดกเตเดเตเดเตผ เดเดฎเตเดเต เดจเดฟเตผเดฎเตเดฎเดฟเดเตเดเตเดจเตเดจเดคเต เดฎเตเดจเตเดจเดพเดฎเดคเตเดคเตเดคเดฟเตฝ เดเตพเดชเตเดชเตเดเตเดจเตเดจเต.
เดจเดฟเดเตเดเตพเดเตเดเต เดเดฑเตเดฑเดตเตเด เด
เดจเตเดฏเตเดเตเดฏเดฎเดพเดฏ เดเดชเตเดทเตป เดคเดฟเดฐเดเตเดเตเดเตเดเตเดเดพเดจเตเด เด
เดคเต เดจเดฟเดเตเดเดณเตเดเต เดเตปเดซเตเดฐเดพเดธเตเดเตเดฐเดเตเดเดฑเดฟเดฒเตเดเตเดเต เดฎเดพเดฑเตเดฑเดพเดจเตเด เดจเดฟเดเตเดเดณเตเดเต เดเดตเดถเตเดฏเดเตเดเตพเดเตเดเต เด
เดจเตเดฏเตเดเตเดฏเดฎเดพเดเตเดเดพเดจเตเด เดเดดเดฟเดฏเตเด.
เดเดตเดถเตเดฏเดฎเดพเดฏ เดเดฒเตเดฒเดพ เดซเดฏเดฒเตเดเดณเตเด เด
เดงเดฟเด เดจเดฟเตผเดฆเตเดฆเตเดถเดเตเดเดณเตเด เดถเตเดเดฐเดคเตเดคเดฟเตฝ เดธเตเดฅเดฟเดคเดฟเดเตเดฏเตเดฏเตเดจเตเดจเต:
GitLab CI/CD-เดฏเดฟเดฒเตเดเตเดเตเดณเตเดณ เดธเดเดฏเตเดเดจเด
เดเดฆเตเดฏ เดเดชเตเดทเดจเดฟเตฝ, เดเดฆเดพเดนเดฐเดฃเดฎเดพเดฏเดฟ GitLab เดฑเดฟเดชเตเดชเตเดธเดฟเดฑเตเดฑเดฑเดฟ เดธเดฟเดธเตเดฑเตเดฑเด เดเดชเดฏเตเดเดฟเดเตเดเต เดจเดฟเดเตเดเตพเดเตเดเต เดเดเตเดเดจเต เดธเตเดฐเดเตเดทเดพ เดชเดฐเดฟเดถเตเดงเดจเดเตพ เดจเดเดชเตเดชเดฟเดฒเดพเดเตเดเดพเดฎเตเดจเตเดจเต เดเดเตเดเตพ เดจเตเดเตเดเตเด. เดเดตเดฟเดเต เดเดเตเดเตพ เดเดเตเดเดเตเดเดณเดฟเดฒเตเดเต เดเดเดจเตเดจเตเดชเตเดเตเดเดฏเตเด เดเดฆเตเดฏเด เดฎเตเดคเตฝ GitLab เดเดชเดฏเตเดเดฟเดเตเดเต เดเดฐเต เดเตเดธเตเดฑเตเดฑเต เดเตปเดตเดฏเตเตบเดฎเตเดจเตเดฑเต เดเดเตเดเดจเต เดเตปเดธเตเดฑเตเดฑเดพเตพ เดเตเดฏเตเดฏเดพเด, เดเดฐเต เดธเตเดเดพเดจเดฟเดเดเต เดชเตเดฐเดเตเดฐเดฟเดฏ เดธเตเดทเตเดเดฟเดเตเดเตเดเดฏเตเด เดเตเดธเตเดฑเตเดฑเต Dockerfile, เดเดฐเต เดฑเดพเตปเดกเด เดเดฎเตเดเต เดเดจเตเดจเดฟเดต เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดฏเตเดเตเดเดฟเดฒเดฟเดฑเตเดฑเดฟเดเตพ เดธเดฎเดพเดฐเดเดญเดฟเดเตเดเตเดเดฏเตเด เดเตเดฏเตเดฏเตเด - JuiceShop เดเดชเตเดฒเดฟเดเตเดเตเดทเตป.
GitLab เดเตปเดธเตเดฑเตเดฑเดพเตพ เดเตเดฏเตเดฏเตเดจเตเดจเต
1. เดกเตเดเตเดเตผ เดเตปเดธเตเดฑเตเดฑเดพเตพ เดเตเดฏเตเดฏเตเด:
sudo apt-get update && sudo apt-get install docker.io
2. เดจเดฟเดฒเดตเดฟเดฒเต เดเดชเดฏเตเดเตเดคเดพเดตเดฟเดจเต เดกเตเดเตเดเตผ เดเตเดฐเตเดชเตเดชเดฟเดฒเตเดเตเดเต เดเตเตผเดเตเดเตเด, เด เดคเตเดตเดดเดฟ เดจเดฟเดเตเดเตพเดเตเดเต เดธเตเดกเต เดเดชเดฏเตเดเดฟเดเตเดเดพเดคเต เดกเตเดเตเดเดฑเตเดฎเดพเดฏเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเดพเตป เดเดดเดฟเดฏเตเด:
sudo addgroup <username> docker
3. เดจเดฟเดเตเดเดณเตเดเต เดเดชเดฟ เดเดฃเตเดเตเดคเตเดคเตเด:
ip addr
4. เดเดฃเตเดเตเดฏเตโเดจเดฑเดฟเตฝ GitLab เดเตปเดธเตเดฑเตเดฑเดพเตพ เดเตเดฏเตโเดคเต เดธเดฎเดพเดฐเดเดญเดฟเดเตเดเตเด, เดนเตเดธเตเดฑเตเดฑเต เดจเตเดฏเดฟเดฎเดฟเดฒเต IP เดตเดฟเดฒเดพเดธเด เดจเดฟเดเตเดเดณเตเดเต เดธเตเดตเดจเตเดคเด เดเดชเดฏเตเดเดฟเดเตเดเต เดฎเดพเดฑเตเดฑเดฟเดธเตเดฅเดพเดชเดฟเดเตเดเตเด:
docker run --detach
--hostname 192.168.1.112
--publish 443:443 --publish 80:80
--name gitlab
--restart always
--volume /srv/gitlab/config:/etc/gitlab
--volume /srv/gitlab/logs:/var/log/gitlab
--volume /srv/gitlab/data:/var/opt/gitlab
gitlab/gitlab-ce:latest
เดเดตเดถเตเดฏเดฎเดพเดฏ เดเดฒเตเดฒเดพ เดเตปเดธเตเดฑเตเดฑเดฒเตเดทเตป เดจเดเดชเดเดฟเดเตเดฐเดฎเดเตเดเดณเตเด GitLab เดชเตเตผเดคเตเดคเดฟเดฏเดพเดเตเดเตเดจเตเดจเดคเต เดตเดฐเต เดเดเตเดเตพ เดเดพเดคเตเดคเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต (เดฒเตเดเต เดซเดฏเตฝ เดเดเตเดเตเดชเตเดเตเดเต เดตเดดเดฟ เดจเดฟเดเตเดเตพเดเตเดเต เดชเตเดฐเดเตเดฐเดฟเดฏ เดจเดฟเดฐเตเดเตเดทเดฟเดเตเดเดพเตป เดเดดเดฟเดฏเตเด: เดกเตเดเตเดเตผ เดฒเตเดเตเดเตพ -f gitlab).
5. เดฌเตเดฐเตเดธเดฑเดฟเตฝ เดจเดฟเดเตเดเดณเตเดเต เดชเตเดฐเดพเดฆเตเดถเดฟเด IP เดคเตเดฑเดจเตเดจเต เดฑเตเดเตเดเต เดเดชเดฏเตเดเตเดคเดพเดตเดฟเดจเตเดณเตเดณ เดชเดพเดธเตโเดตเตเดกเต เดฎเดพเดฑเตเดฑเดพเตป เดเดตเดถเตเดฏเดชเตเดชเตเดเตเดจเตเดจ เดเดฐเต เดชเตเดเต เดเดพเดฃเตเด:
เดเดฐเต เดชเตเดคเดฟเดฏ เดชเดพเดธเตโเดตเตเดกเต เดธเดเตเดเตเดเดฐเดฟเดเตเดเต GitLab-เดฒเตเดเตเดเต เดชเตเดเตเด.
6. เดเดฐเต เดชเตเดคเดฟเดฏ เดชเตเดฐเตเดเดเตโเดฑเตเดฑเต เดธเตเดทเตโเดเดฟเดเตเดเตเด, เดเดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต cicd-เดเตเดธเตเดฑเตเดฑเต, เดเดฐเดเดญ เดซเดฏเตฝ เดเดชเดฏเตเดเดฟเดเตเดเต เด
เดคเต เดเดฐเดเดญเดฟเดเตเดเตเด README.md:
7. เดเดชเตเดชเตเตพ เดจเดฎเตเดฎเตพ GitLab Runner เดเตปเดธเตเดฑเตเดฑเดพเตพ เดเตเดฏเตเดฏเตเดฃเตเดเดคเตเดฃเตเดเต: เด
เดญเตเดฏเตผเดคเตเดฅเดจ เดชเตเดฐเดเดพเดฐเด เดเดตเดถเตเดฏเดฎเดพเดฏ เดเดฒเตเดฒเดพ เดชเตเดฐเดตเตผเดคเตเดคเดจเดเตเดเดณเตเด เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเดเตเดเตเดจเตเดจ เดเดฐเต เดเดเดจเตเดฑเต.
เดเดฑเตเดฑเดตเตเด เดชเตเดคเดฟเดฏ เดชเดคเดฟเดชเตเดชเต เดกเตเตบเดฒเตเดกเต เดเตเดฏเตเดฏเตเด (เด เดธเดพเดนเดเดฐเตเดฏเดคเตเดคเดฟเตฝ, Linux 64-เดฌเดฟเดฑเตเดฑเดฟเดจเดพเดฏเดฟ):
sudo curl -L --output /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64
8. เดเดคเต เดเดเตเดธเดฟเดเตเดฏเตเดเตเดเดฌเดฟเตพ เดเดเตเดเตเด:
sudo chmod +x /usr/local/bin/gitlab-runner
9. เดฑเดฃเตเดฃเดฑเดฟเดจเดพเดฏเดฟ เดเดฐเต OS เดเดชเดฏเตเดเตเดคเดพเดตเดฟเดจเต เดเตเตผเดคเตเดคเต เดธเตเดตเดจเด เดเดฐเดเดญเดฟเดเตเดเตเด:
sudo useradd --comment 'GitLab Runner' --create-home gitlab-runner --shell /bin/bash
sudo gitlab-runner install --user=gitlab-runner --working-directory=/home/gitlab-runner
sudo gitlab-runner start
เดเดคเต เดเดคเตเดชเตเดฒเตเดฏเดพเดฏเดฟเดฐเดฟเดเตเดเดฃเด:
local@osboxes:~$ sudo gitlab-runner install --user=gitlab-runner --working-directory=/home/gitlab-runner
Runtime platform arch=amd64 os=linux pid=8438 revision=0e5417a3 version=12.0.1
local@osboxes:~$ sudo gitlab-runner start
Runtime platform arch=amd64 os=linux pid=8518 revision=0e5417a3 version=12.0.1
10. เดเดชเตเดชเตเตพ เดเดเตเดเตพ เดฑเดฃเตเดฃเดฑเต เดฐเดเดฟเดธเตเดฑเตเดฑเตผ เดเตเดฏเตเดฏเตเดจเตเดจเต, เด
เดคเตเดตเดดเดฟ เด
เดคเดฟเดจเต เดเดเตเดเดณเตเดเต GitLab เดเดฆเดพเดนเดฐเดฃเดตเตเดฎเดพเดฏเดฟ เดธเดเดตเดฆเดฟเดเตเดเดพเตป เดเดดเดฟเดฏเตเด.
เดเดคเต เดเตเดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต, Settings-CI/CD เดชเตเดเต เดคเตเดฑเดเตเดเตเด (http://OUR_IP_ADDRESS/root/cicd-test/-/settings/ci_cd) เดฑเดฃเตเดฃเตเดดเตเดธเต เดเดพเดฌเดฟเตฝ URL เดเด เดฐเดเดฟเดธเตเดเตเดฐเตเดทเตป เดเตเดเตเดเดฃเตเด เดเดฃเตเดเตเดคเตเดคเตเด:
11. URL, เดฐเดเดฟเดธเตเดเตเดฐเตเดทเตป เดเตเดเตเดเตบ เดเดจเตเดจเดฟเดต เดฎเดพเดฑเตเดฑเดฟ เดฑเดฃเตเดฃเตผ เดฐเดเดฟเดธเตเดฑเตเดฑเตผ เดเตเดฏเตเดฏเตเด:
sudo gitlab-runner register
--non-interactive
--url "http://<URL>/"
--registration-token "<Registration Token>"
--executor "docker"
--docker-privileged
--docker-image alpine:latest
--description "docker-runner"
--tag-list "docker,privileged"
--run-untagged="true"
--locked="false"
--access-level="not_protected"
เดคเตฝเดซเดฒเดฎเดพเดฏเดฟ, เดเดเตเดเตพเดเตเดเต เดเดฐเต เดฑเตเดกเดฟเดฎเตเดฏเตเดกเต เดตเตผเดเตเดเดฟเดเดเต GitLab เดฒเดญเดฟเดเตเดเตเดจเตเดจเต, เด เดคเดฟเตฝ เดเดเตเดเดณเตเดเต เดฏเตเดเตเดเดฟเดฒเดฟเดฑเตเดฑเดฟเดเตพ เดเดฐเดเดญเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเต เดจเดฟเตผเดฆเตเดฆเตเดถเดเตเดเตพ เดเตเตผเดเตเดเตเดฃเตเดเดคเตเดฃเตเดเต. เด เดกเตเดฎเตเดฏเดฟเตฝ เดเดชเตเดฒเดฟเดเตเดเตเดทเตป เดจเดฟเตผเดฎเตเดฎเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเตเด เด เดคเต เดเดฃเตเดเตเดฏเตโเดจเดฑเตเดธเต เดเตเดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเดฎเตเดณเตเดณ เดเดเตเดเดเตเดเดณเตเดจเตเดจเตเด เดเดเตเดเตพเดเตเดเดฟเดฒเตเดฒ, เดเดจเตเดจเดพเตฝ เดฏเดฅเดพเตผเดคเตเดฅ เดชเดฐเดฟเดคเดธเตเดฅเดฟเดคเดฟเดฏเดฟเตฝ เดเดต เดธเตเดเดพเดจเดฟเดเดเต เดเดเตเดเดเตเดเตพเดเตเดเต เดฎเตเดฎเตเดชเดพเดฏเดฟ เดเดฟเดคเตเดฐเดเตเดเดณเตเด เดตเดฟเดถเดเดฒเดจเดคเตเดคเดฟเดจเดพเดฏเดฟ เดเดฐเต เดกเตเดเตเดเตผเดซเดฏเดฒเตเด เดธเตเดทเตเดเดฟเดเตเดเตเด.
เดชเตเดชเตเดชเตเดฒเตเตป เดเตเตบเดซเดฟเดเดฑเตเดทเตป
1. เดฑเดฟเดชเตเดชเตเดธเดฟเดฑเตเดฑเดฑเดฟเดฏเดฟเดฒเตเดเตเดเต เดซเดฏเดฒเตเดเตพ เดเตเตผเดเตเดเตเด mydockerfile.df (เดเดคเต เดเดเตเดเตพ เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเตเดจเตเดจ เดเดฐเต เดเตเดธเตเดฑเตเดฑเต เดกเตเดเตเดเตผเดซเดฏเดฒเตเด) GitLab CI/CD เดชเตเดฐเตเดธเดธเต เดเตเตบเดซเดฟเดเดฑเตเดทเตป เดซเดฏเดฒเตเด .gitlab-cicd.yml, เดเดคเต เดธเตเดเดพเดจเดฑเตเดเตพเดเตเดเตเดณเตเดณ เดจเดฟเตผเดฆเตเดฆเตเดถเดเตเดเตพ เดชเดเตเดเดฟเดเดชเตเดชเตเดเตเดคเตเดคเตเดจเตเดจเต (เดซเดฏเตฝ เดจเดพเดฎเดคเตเดคเดฟเดฒเต เดกเตเดเตเดเต เดถเตเดฐเดฆเตเดงเดฟเดเตเดเตเด).
YAML เดเตเตบเดซเดฟเดเดฑเตเดทเตป เดซเดฏเดฒเดฟเตฝ เดฎเตเดจเตเดจเต เดฏเตเดเตเดเดฟเดฒเดฟเดฑเตเดฑเดฟเดเตพ (เดนเดพเดกเตเดฒเดฟเดจเตเดฑเต, เดกเตเดเตเดเดฟเตพ, เดเตเดฐเดฟเดตเดฟ) เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดจเดฟเตผเดฆเตเดฆเตเดถเดเตเดเตพ เด
เดเดเตเดเดฟเดฏเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต, เด
เดคเต เดคเดฟเดฐเดเตเดเตเดเตเดคเตเดค เดกเตเดเตเดเตผเดซเดฏเดฒเตเด เดกเตเดเตเดเตผเดซเตเตฝ เดตเตเดฐเดฟเดฏเดฌเดฟเดณเดฟเตฝ เดตเตเดฏเดเตเดคเดฎเดพเดเตเดเดฟเดฏ เดเดฟเดคเตเดฐเดตเตเด เดตเดฟเดถเดเดฒเดจเด เดเตเดฏเตเดฏเตเด. เดเดตเดถเตเดฏเดฎเดพเดฏ เดเดฒเตเดฒเดพ เดซเดฏเดฒเตเดเดณเตเด เดถเตเดเดฐเดคเตเดคเดฟเตฝ เดจเดฟเดจเตเดจเต เดเดเตเดเตเดเดพเด:
เดเดจเตเดจเดคเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เดเดฆเตเดงเดฐเดฃเดฟ mydockerfile.df (เดเดคเต เดฏเตเดเตเดเดฟเดฒเดฟเดฑเตเดฑเดฟเดฏเตเดเต เดชเตเดฐเดตเตผเดคเตเดคเดจเด เดชเตเดฐเดเดเดฎเดพเดเตเดเดพเตป เดฎเดพเดคเตเดฐเด เดเดฐเต เดเตเดเตเดเด เด
เดจเดฟเดฏเดจเตเดคเตเดฐเดฟเดคเดฎเดพเดฏ เดจเดฟเตผเดฆเตเดฆเตเดถเดเตเดเดณเตเดณเตเดณ เดเดฐเต เด
เดฎเตเตผเดคเตเดค เดซเดฏเดฒเดพเดฃเต). เดซเดฏเดฒเดฟเดฒเตเดเตเดเตเดณเตเดณ เดจเตเดฐเดฟเดเตเดเตเดณเตเดณ เดฒเดฟเดเตเดเต:
mydockerfile.df-เดจเตเดฑเต เดเดณเตเดณเดเดเตเดเด
FROM amd64/node:10.16.0-alpine@sha256:f59303fb3248e5d992586c76cc83e1d3700f641cbcd7c0067bc7ad5bb2e5b489 AS tsbuild
COPY package.json .
COPY yarn.lock .
RUN yarn install
COPY lib lib
COPY tsconfig.json tsconfig.json
COPY tsconfig.app.json tsconfig.app.json
RUN yarn build
FROM amd64/ubuntu:18.04@sha256:eb70667a801686f914408558660da753cde27192cd036148e58258819b927395
LABEL maintainer="Rhys Arkins <[email protected]>"
LABEL name="renovate"
...
COPY php.ini /usr/local/etc/php/php.ini
RUN cp -a /tmp/piik/* /var/www/html/
RUN rm -rf /tmp/piwik
RUN chown -R www-data /var/www/html
ADD piwik-cli-setup /piwik-cli-setup
ADD reset.php /var/www/html/
## ENTRYPOINT ##
ADD entrypoint.sh /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]
USER root
YAML เดเตเตบเดซเดฟเดเดฑเตเดทเตป เดเดคเตเดชเตเดฒเต เดเดพเดฃเดชเตเดชเตเดเตเดจเตเดจเต (เดซเดฏเตฝ เดคเดจเตเดจเต เดเดตเดฟเดเต เดจเตเดฐเดฟเดเตเดเตเดณเตเดณ เดฒเดฟเดเตเดเต เดตเดดเดฟ เดเดฃเตเดเตเดคเตเดคเดพเดจเดพเดเตเด:
.gitlab-ci.yml-เดจเตเดฑเต เดเดณเตเดณเดเดเตเดเด
variables:
DOCKER_HOST: "tcp://docker:2375/"
DOCKERFILE: "mydockerfile.df" # name of the Dockerfile to analyse
DOCKERIMAGE: "bkimminich/juice-shop" # name of the Docker image to analyse
# DOCKERIMAGE: "knqyf263/cve-2018-11235" # test Docker image with several CRITICAL CVE
SHOWSTOPPER_PRIORITY: "CRITICAL" # what level of criticality will fail Trivy job
TRIVYCACHE: "$CI_PROJECT_DIR/.cache" # where to cache Trivy database of vulnerabilities for faster reuse
ARTIFACT_FOLDER: "$CI_PROJECT_DIR"
services:
- docker:dind # to be able to build docker images inside the Runner
stages:
- scan
- report
- publish
HadoLint:
# Basic lint analysis of Dockerfile instructions
stage: scan
image: docker:git
after_script:
- cat $ARTIFACT_FOLDER/hadolint_results.json
script:
- export VERSION=$(wget -q -O - https://api.github.com/repos/hadolint/hadolint/releases/latest | grep '"tag_name":' | sed -E 's/.*"v([^"]+)".*/1/')
- wget https://github.com/hadolint/hadolint/releases/download/v${VERSION}/hadolint-Linux-x86_64 && chmod +x hadolint-Linux-x86_64
# NB: hadolint will always exit with 0 exit code
- ./hadolint-Linux-x86_64 -f json $DOCKERFILE > $ARTIFACT_FOLDER/hadolint_results.json || exit 0
artifacts:
when: always # return artifacts even after job failure
paths:
- $ARTIFACT_FOLDER/hadolint_results.json
Dockle:
# Analysing best practices about docker image (users permissions, instructions followed when image was built, etc.)
stage: scan
image: docker:git
after_script:
- cat $ARTIFACT_FOLDER/dockle_results.json
script:
- export VERSION=$(wget -q -O - https://api.github.com/repos/goodwithtech/dockle/releases/latest | grep '"tag_name":' | sed -E 's/.*"v([^"]+)".*/1/')
- wget https://github.com/goodwithtech/dockle/releases/download/v${VERSION}/dockle_${VERSION}_Linux-64bit.tar.gz && tar zxf dockle_${VERSION}_Linux-64bit.tar.gz
- ./dockle --exit-code 1 -f json --output $ARTIFACT_FOLDER/dockle_results.json $DOCKERIMAGE
artifacts:
when: always # return artifacts even after job failure
paths:
- $ARTIFACT_FOLDER/dockle_results.json
Trivy:
# Analysing docker image and package dependencies against several CVE bases
stage: scan
image: docker:git
script:
# getting the latest Trivy
- apk add rpm
- export VERSION=$(wget -q -O - https://api.github.com/repos/knqyf263/trivy/releases/latest | grep '"tag_name":' | sed -E 's/.*"v([^"]+)".*/1/')
- wget https://github.com/knqyf263/trivy/releases/download/v${VERSION}/trivy_${VERSION}_Linux-64bit.tar.gz && tar zxf trivy_${VERSION}_Linux-64bit.tar.gz
# displaying all vulnerabilities w/o failing the build
- ./trivy -d --cache-dir $TRIVYCACHE -f json -o $ARTIFACT_FOLDER/trivy_results.json --exit-code 0 $DOCKERIMAGE
# write vulnerabilities info to stdout in human readable format (reading pure json is not fun, eh?). You can remove this if you don't need this.
- ./trivy -d --cache-dir $TRIVYCACHE --exit-code 0 $DOCKERIMAGE
# failing the build if the SHOWSTOPPER priority is found
- ./trivy -d --cache-dir $TRIVYCACHE --exit-code 1 --severity $SHOWSTOPPER_PRIORITY --quiet $DOCKERIMAGE
artifacts:
when: always # return artifacts even after job failure
paths:
- $ARTIFACT_FOLDER/trivy_results.json
cache:
paths:
- .cache
Report:
# combining tools outputs into one HTML
stage: report
when: always
image: python:3.5
script:
- mkdir json
- cp $ARTIFACT_FOLDER/*.json ./json/
- pip install json2html
- wget https://raw.githubusercontent.com/shad0wrunner/docker_cicd/master/convert_json_results.py
- python ./convert_json_results.py
artifacts:
paths:
- results.html
เดเดตเดถเตเดฏเดฎเตเดเตเดเดฟเตฝ, เดจเดฟเดเตเดเตพเดเตเดเต เดเดฐเต .tar เดเตผเดเตเดเตเดตเดฟเดจเตเดฑเต เดฐเตเดชเดคเตเดคเดฟเตฝ เดธเดเดฐเดเตเดทเดฟเดเตเด เดเดฟเดคเตเดฐเดเตเดเตพ เดธเตเดเดพเตป เดเตเดฏเตเดฏเดพเดจเตเด เดเดดเดฟเดฏเตเด (เดเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด, YAML เดซเดฏเดฒเดฟเดฒเต เดฏเตเดเตเดเดฟเดฒเดฟเดฑเตเดฑเดฟเดเตพเดเตเดเดพเดฏเดฟ เดจเดฟเดเตเดเตพ เดเตปเดชเตเดเตเดเต เดชเดพเดฐเดพเดฎเตเดฑเตเดฑเดฑเตเดเตพ เดฎเดพเดฑเตเดฑเตเดฃเตเดเดคเตเดฃเตเดเต)
NB: Trivy เดเตปเดธเตเดฑเตเดฑเดพเตพ เดเตเดฏเตเดฏเตเดฃเตเดเดคเตเดฃเตเดเต เดเตผเดชเดฟเดเด ะธ เดเดฟเดฑเตเดฑเดฟเดจเต. เด เดฒเตเดฒเตเดเตเดเดฟเตฝ, RedHat-เด เดงเดฟเดทเตโเด เดฟเดค เดเดฎเตเดเตเดเตพ เดธเตเดเดพเตป เดเตเดฏเตเดฏเตเดฎเตเดชเตเดดเตเด เดฆเตเตผเดฌเดฒเดค เดกเดพเดฑเตเดฑเดพเดฌเตเดธเดฟเดฒเตเดเตเดเตเดณเตเดณ เด เดชเตโเดกเตเดฑเตเดฑเตเดเตพ เดธเตเดตเตเดเดฐเดฟเดเตเดเตเดฎเตเดชเตเดดเตเด เดเดคเต เดชเดฟเดถเดเตเดเตพ เดธเตเดทเตเดเดฟเดเตเดเตเด.
2. เดฑเดฟเดชเตเดชเตเดธเดฟเดฑเตเดฑเดฑเดฟเดฏเดฟเดฒเตเดเตเดเต เดซเดฏเดฒเตเดเตพ เดเตเตผเดคเตเดค เดถเตเดทเด, เดเดเตเดเดณเตเดเต เดเตเตบเดซเดฟเดเดฑเตเดทเตป เดซเดฏเดฒเดฟเดฒเต เดจเดฟเตผเดฆเตเดฆเตเดถเดเตเดเตพ เด เดจเตเดธเดฐเดฟเดเตเดเต, GitLab เดฏเดพเดจเตเดคเตเดฐเดฟเดเดฎเดพเดฏเดฟ เดฌเดฟเตฝเดกเต, เดธเตเดเดพเตป เดชเตเดฐเดเตเดฐเดฟเดฏ เดเดฐเดเดญเดฟเดเตเดเตเด. CI/CD โ เดชเตเดชเตเดชเต เดฒเตเดจเตเดเตพ เดเดพเดฌเดฟเตฝ เดจเดฟเดเตเดเตพเดเตเดเต เดจเดฟเตผเดฆเตเดฆเตเดถเดเตเดเดณเตเดเต เดชเตเดฐเตเดเดคเดฟ เดเดพเดฃเดพเตป เดเดดเดฟเดฏเตเด.
เดคเตฝเดซเดฒเดฎเดพเดฏเดฟ, เดเดเตเดเตพเดเตเดเต เดจเดพเดฒเต เดเตเดฒเดฟเดเดณเตเดฃเตเดเต. เด
เดตเดฏเดฟเตฝ เดฎเตเดจเตเดจเตเดฃเตเดฃเด เดธเตเดเดพเดจเดฟเดเดเตเดฎเดพเดฏเดฟ เดจเตเดฐเดฟเดเตเดเต เดเดเดชเตเดเตเดจเตเดจเต, เด
เดตเดธเดพเดจเดคเตเดคเตเดคเต (เดฑเดฟเดชเตเดชเตเตผเดเตเดเต) เดธเตเดเดพเดจเดฟเดเดเต เดซเดฒเดเตเดเดณเตเดณเตเดณ เดเดฟเดคเดฑเดฟเดเตเดเดฟเดเดเตเดเตเดจเตเดจ เดซเดฏเดฒเตเดเดณเดฟเตฝ เดจเดฟเดจเตเดจเต เดเดฐเต เดฒเดณเดฟเดคเดฎเดพเดฏ เดฑเดฟเดชเตเดชเตเตผเดเตเดเต เดถเตเดเดฐเดฟเดเตเดเตเดจเตเดจเต.
เดกเดฟเดซเตเตพเดเตเดเดพเดฏเดฟ, เดเดฟเดคเตเดฐเดคเตเดคเดฟเดฒเต เดกเดฟเดชเตปเดกเตปเดธเดฟเดฏเดฟเดฒเต เดเตเดฐเตเดคเดฐเดฎเดพเดฏ เดเตเดเตเดชเดพเดเตเดเตพ เดเดฃเตเดเตเดคเตเดคเดฟเดฏเดพเตฝ เดเตเดฐเดฟเดตเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเดจเตเดจเดคเต เดจเดฟเตผเดคเตเดคเตเดจเตเดจเต. เด
เดคเต เดธเดฎเดฏเด, เดนเดพเดกเตเดฒเดฟเดจเตเดฑเต เดเดฒเตเดฒเดพเดฏเตเดชเตเดชเตเดดเตเด เดเดฐเต เดตเดฟเดเดฏ เดเตเดกเต เดจเตฝเดเตเดจเตเดจเต, เดเดพเดฐเดฃเด เด
เดคเต เดเดฒเตเดฒเดพเดฏเตเดชเตเดชเตเดดเตเด เด
เดญเดฟเดชเตเดฐเดพเดฏเดเตเดเดณเดฟเตฝ เดเดฒเดพเดถเดฟเดเตเดเตเดจเตเดจเต, เดเดคเต เดฌเดฟเตฝเดกเต เดจเดฟเตผเดคเตเดคเตเดจเตเดจเดคเดฟเดจเต เดเดพเดฐเดฃเดฎเดพเดเตเดจเตเดจเต.
เดจเดฟเดเตเดเดณเตเดเต เดจเดฟเตผเดฆเตเดฆเดฟเดทเตเด เดเดตเดถเตเดฏเดเดคเดเดณเต เดเดถเตเดฐเดฏเดฟเดเตเดเต, เดจเดฟเดเตเดเตพเดเตเดเต เดเดฐเต เดเดเตเดธเดฟเดฑเตเดฑเต เดเตเดกเต เดเตเตบเดซเดฟเดเตผ เดเตเดฏเตเดฏเดพเตป เดเดดเดฟเดฏเตเด, เด
เดคเตเดตเดดเดฟ เด เดฏเตเดเตเดเดฟเดฒเดฟเดฑเตเดฑเดฟเดเตพ เดเดฐเต เดจเดฟเดถเตเดเดฟเดค เดจเดฟเตผเดฃเดพเดฏเดเดคเดฏเตเดเต เดชเตเดฐเดถเตเดจเดเตเดเตพ เดเดฃเตเดเตเดคเตเดคเตเดฎเตเดชเตเตพ, เด
เดต เดจเดฟเตผเดฎเตเดฎเดพเดฃ เดชเตเดฐเดเตเดฐเดฟเดฏเดฏเตเด เดจเดฟเตผเดคเตเดคเตเดจเตเดจเต. เดเดเตเดเดณเตเดเต เดเดพเดฐเตเดฏเดคเตเดคเดฟเตฝ, SHOWSTOPPER เดตเตเดฐเดฟเดฏเดฌเดฟเดณเดฟเตฝ เดเดเตเดเตพ เดตเตเดฏเดเตเดคเดฎเดพเดเตเดเดฟเดฏ เดเตเดฐเดฟเดเตเดเดฟเดเตเดเดฒเดฟเดฑเตเดฑเดฟ เดเดชเดฏเตเดเดฟเดเตเดเต Trivy เดเดฐเต เด
เดชเดเดเดธเดพเดงเตเดฏเดค เดเดฃเตเดเตเดคเตเดคเดฟเดฏเดพเตฝ เดฎเดพเดคเตเดฐเดฎเต เดฌเดฟเตฝเดกเต เดจเดฟเตผเดคเตเดคเตเดเดฏเตเดณเตเดณเต. .gitlab-ci.yml.
เดเดฐเต เดฏเตเดเตเดเดฟเดฒเดฟเดฑเตเดฑเดฟเดฏเตเดเตเดฏเตเด เดซเดฒเด เดเดฐเต เดธเตโเดเดพเดจเดฟเดเดเต เดเดพเดธเตโเดเตเดเดฟเดจเตเดฑเตเดฏเตเด เดฒเตเดเดฟเดฒเต, เดเตผเดเตเดเดฟเดซเดพเดเตโเดเตโเดธเต เดตเดฟเดญเดพเดเดคเตเดคเดฟเดฒเต json เดซเดฏเดฒเตเดเดณเดฟเดฒเต, เด
เดฒเตเดฒเตเดเตเดเดฟเตฝ เดฒเดณเดฟเดคเดฎเดพเดฏ เดเดฐเต HTML เดฑเดฟเดชเตเดชเตเตผเดเตเดเดฟเดฒเต (เดคเดพเดดเตเดฏเตเดณเตเดณเดคเดฟเตฝ เดเตเดเตเดคเตฝ):
3. เดฏเตเดเตเดเดฟเดฒเดฟเดฑเตเดฑเดฟ เดฑเดฟเดชเตเดชเตเตผเดเตเดเตเดเตพ เดเตเดฑเดเตเดเต เดเตเดเตเดคเตฝ เดฎเดจเตเดทเตเดฏเตผเดเตเดเต เดตเดพเดฏเดฟเดเตเดเดพเตป เดเดดเดฟเดฏเตเดจเตเดจ เดฐเตเดชเดคเตเดคเดฟเตฝ เด
เดตเดคเดฐเดฟเดชเตเดชเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเต, เดฎเตเดจเตเดจเต JSON เดซเดฏเดฒเตเดเดณเต เดเดฐเต เดเดเตเดเตเดเดฟเดเดเดเตฝ เดซเดฏเดฒเดพเดฏเดฟ เดชเดฐเดฟเดตเตผเดคเตเดคเดจเด เดเตเดฏเตเดฏเดพเตป เดเดฐเต เดเตเดฑเดฟเดฏ เดชเตเดคเตเดคเตบ เดธเตเดเตเดฐเดฟเดชเตเดฑเตเดฑเต เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเต.
เด เดธเตโเดเตเดฐเดฟเดชเตเดฑเตเดฑเต เดเดฐเต เดชเตเดฐเดคเตเดฏเตเด เดฑเดฟเดชเตเดชเตเตผเดเตเดเต เดเดพเดธเตโเดเต เดฎเตเดเตเดจเดฏเดพเดฃเต เดธเดฎเดพเดฐเดเดญเดฟเดเตเดเดคเต, เด
เดคเดฟเดจเตเดฑเต เด
เดจเตเดคเดฟเดฎ เดเตผเดเตเดเดฟเดซเดพเดเตเดฑเตเดฑเต เดเดฐเต เดฑเดฟเดชเตเดชเตเตผเดเตเดเตเดณเตเดณ เดเดฐเต HTML เดซเดฏเดฒเดพเดฃเต. เดธเตโเดเตเดฐเดฟเดชเตเดฑเตเดฑเต เดเดฑเดตเดฟเดเดตเตเด เดถเตเดเดฐเดคเตเดคเดฟเดฒเตเดฃเตเดเต, เดจเดฟเดเตเดเดณเตเดเต เดเดตเดถเตเดฏเดเตเดเตพเดเตเดเตเด เดจเดฟเดฑเดเตเดเตพเดเตเดเตเด เดฎเดฑเตเดฑเตเด เด
เดจเตเดฏเตเดเตเดฏเดฎเดพเดเตเดเดพเตป เดเดดเดฟเดฏเตเด.
เดทเตเตฝ เดธเตเดเตเดฐเดฟเดชเตเดฑเตเดฑเต
CI/CD เดธเดฟเดธเตเดฑเตเดฑเดคเตเดคเดฟเดจเต เดชเตเดฑเดคเตเดคเตเดณเตเดณ เดกเตเดเตเดเตผ เดเดฎเตเดเตเดเตพ เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเตเดฃเตเดเดฟเดตเดฐเตเดฎเตเดชเตเตพ เด เดฒเตเดฒเตเดเตเดเดฟเตฝ เดนเตเดธเตเดฑเตเดฑเดฟเตฝ เดจเตเดฐเดฟเดเตเดเต เดจเดเดชเตเดชเดฟเดฒเดพเดเตเดเดพเตป เดเดดเดฟเดฏเตเดจเตเดจ เดเดฐเต เดซเตเดฎเดฟเตฝ เดจเดฟเดเตเดเตพเดเตเดเต เดเดฒเตเดฒเดพ เดจเดฟเตผเดฆเตเดฆเตเดถเดเตเดเดณเตเด เดเดฃเตเดเดพเดฏเดฟเดฐเดฟเดเตเดเตเดฃเตเด เดธเดจเตเดฆเตผเดญเดเตเดเดณเดฟเตฝ เดฐเดฃเตเดเดพเดฎเดคเตเดคเต เดเดชเตเดทเตป เด เดจเตเดฏเตเดเตเดฏเดฎเดพเดฃเต. เดเดฐเต เดตเตเดคเตเดคเดฟเดฏเตเดณเตเดณ เดตเตเตผเดเตเดตเตฝ (เด เดฒเตเดฒเตเดเตเดเดฟเตฝ เดฏเดฅเดพเตผเดคเตเดฅเดฎเดพเดฏเดคเต เดชเตเดฒเตเด) เดฎเตเดทเตเดจเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเดเตเดเดพเตป เดเดดเดฟเดฏเตเดจเตเดจ เดเดฐเต เดฑเตเดกเดฟเดฎเตเดฏเตเดกเต เดทเตเตฝ เดธเตเดเตเดฐเดฟเดชเตเดฑเตเดฑเต เด เดเดเตเดเดฟเดเด เดเตพเดเตเดเตเดณเตเดณเตเดจเตเดจเต. เดฎเตเดเดณเดฟเตฝ เดตเดฟเดตเดฐเดฟเดเตเด เดเดฟเดฑเตเดฑเตโเดฒเดพเดฌเต-เดฑเดฃเตเดฃเดฑเดฟเดจเตเดฑเต เด เดคเต เดจเดฟเตผเดฆเตเดฆเตเดถเดเตเดเตพ เดธเตโเดเตเดฐเดฟเดชเตเดฑเตเดฑเต เดจเดเดชเตเดชเดฟเดฒเดพเดเตเดเตเดจเตเดจเต.
เดธเตเดเตเดฐเดฟเดชเตเดฑเตเดฑเต เดตเดฟเดเดฏเดเดฐเดฎเดพเดฏเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเต, เดธเดฟเดธเตเดฑเตเดฑเดคเตเดคเดฟเตฝ เดกเตเดเตเดเตผ เดเตปเดธเตเดฑเตเดฑเดพเตพ เดเตเดฏเตเดฏเตเดเดฏเตเด เดจเดฟเดฒเดตเดฟเดฒเต เดเดชเดฏเตเดเตเดคเดพเดตเต เดกเตเดเตเดเตผ เดเตเดฐเตเดชเตเดชเดฟเตฝ เดเดฃเตเดเดพเดฏเดฟเดฐเดฟเดเตเดเตเดเดฏเตเด เดตเตเดฃเด.
เดธเตเดเตเดฐเดฟเดชเตเดฑเตเดฑเต เดคเดจเตเดจเต เดเดตเดฟเดเต เดเดพเดฃเดพเด:
เดซเดฏเดฒเดฟเดจเตเดฑเต เดคเตเดเดเตเดเดคเตเดคเดฟเตฝ, เดเดคเต เดเดฎเตเดเดพเดฃเต เดธเตเดเดพเตป เดเตเดฏเตเดฏเตเดฃเตเดเดคเตเดจเตเดจเตเด เดเดคเต เดเตเดฐเดฟเดเตเดเดพเดฒเดฟเดฑเตเดฑเดฟ เดตเตเดเดฒเตเดฏเดเตเดเตพ เดเตเดฐเดฟเดตเดฟ เดฏเตเดเตเดเดฟเดฒเดฟเดฑเตเดฑเดฟเดฏเต เดจเดฟเตผเดฆเตเดฆเดฟเดทเตเด เดชเดฟเดถเดเต เดเตเดกเดฟเดจเตเดชเตเดชเด เดชเตเดฑเดคเตเดคเตเดเดเดเตเดเตเดฎเตเดจเตเดจเตเด เดตเตเดฐเดฟเดฏเดฌเดฟเดณเตเดเตพ เดตเตเดฏเดเตเดคเดฎเดพเดเตเดเตเดจเตเดจเต.
เดธเตเดเตเดฐเดฟเดชเตเดฑเตเดฑเต เดเดเตเดธเดฟเดเตเดฏเตเดทเตป เดธเดฎเดฏเดคเตเดคเต, เดเดฒเตเดฒเดพ เดฏเตเดเตเดเดฟเดฒเดฟเดฑเตเดฑเดฟเดเดณเตเด เดกเดฏเดฑเดเตเดเดฑเดฟเดฏเดฟเดฒเตเดเตเดเต เดกเตเตบเดฒเตเดกเต เดเตเดฏเตเดฏเดชเตเดชเตเดเตเด เดกเตเดเตเดเตผ_เดเตเดณเตเดเตพ, เด เดตเดฐเตเดเต เดเตเดฒเดฟเดฏเตเดเต เดซเดฒเดเตเดเตพ เดกเดฏเดฑเดเตเดเดฑเดฟเดฏเดฟเดฒเดพเดฃเต docker_tools/json, เดฑเดฟเดชเตเดชเตเตผเดเตเดเดฟเดจเตเดชเตเดชเด HTML เดซเดฏเดฒเดฟเดฒเตเดฃเตเดเดพเดเตเด results.html.
เดเดฆเดพเดนเดฐเดฃ เดธเตเดเตเดฐเดฟเดชเตเดฑเตเดฑเต เดเดเตเดเตเดชเตเดเตเดเต
~/docker_cicd$ ./docker_sec_check.sh
[+] Setting environment variables
[+] Installing required packages
[+] Preparing necessary directories
[+] Fetching sample Dockerfile
2020-10-20 10:40:00 (45.3 MB/s) - โDockerfileโ saved [8071/8071]
[+] Pulling image to scan
latest: Pulling from bkimminich/juice-shop
[+] Running Hadolint
...
Dockerfile:205 DL3015 Avoid additional packages by specifying `--no-install-recommends`
Dockerfile:248 DL3002 Last USER should not be root
...
[+] Running Dockle
...
WARN - DKL-DI-0006: Avoid latest tag
* Avoid 'latest' tag
INFO - CIS-DI-0005: Enable Content trust for Docker
* export DOCKER_CONTENT_TRUST=1 before docker pull/build
...
[+] Running Trivy
juice-shop/frontend/package-lock.json
=====================================
Total: 3 (UNKNOWN: 0, LOW: 1, MEDIUM: 0, HIGH: 2, CRITICAL: 0)
+---------------------+------------------+----------+---------+-------------------------+
| LIBRARY | VULNERABILITY ID | SEVERITY | VERSION | TITLE |
+---------------------+------------------+----------+---------+-------------------------+
| object-path | CVE-2020-15256 | HIGH | 0.11.4 | Prototype pollution in |
| | | | | object-path |
+---------------------+------------------+ +---------+-------------------------+
| tree-kill | CVE-2019-15599 | | 1.2.2 | Code Injection |
+---------------------+------------------+----------+---------+-------------------------+
| webpack-subresource | CVE-2020-15262 | LOW | 1.4.1 | Unprotected dynamically |
| | | | | loaded chunks |
+---------------------+------------------+----------+---------+-------------------------+
juice-shop/package-lock.json
============================
Total: 20 (UNKNOWN: 0, LOW: 1, MEDIUM: 6, HIGH: 8, CRITICAL: 5)
...
juice-shop/package-lock.json
============================
Total: 5 (CRITICAL: 5)
...
[+] Removing left-overs
[+] Making the output look pretty
[+] Converting JSON results
[+] Writing results HTML
[+] Clean exit ============================================================
[+] Everything is done. Find the resulting HTML report in results.html
เดเดฒเตเดฒเดพ เดฏเตเดเตเดเดฟเดฒเดฟเดฑเตเดฑเดฟเดเดณเตเดฎเตเดณเตเดณ เดกเตเดเตเดเตผ เดเดฟเดคเตเดฐเด
เดเดฐเต เดฎเตเดจเตเดจเดพเด เดฌเดฆเดฒเดพเดฏเดฟ, เดธเตเดฐเดเตเดทเดพ เดฏเตเดเตเดเดฟเดฒเดฟเดฑเตเดฑเดฟเดเดณเตเดณเตเดณ เดเดฐเต เดเดฎเตเดเต เดธเตเดทเตเดเดฟเดเตเดเดพเตป เดเดพเตป เดฐเดฃเตเดเต เดฒเดณเดฟเดคเดฎเดพเดฏ เดกเตเดเตเดเตผเดซเดฏเดฒเตเดเตพ เดธเดฎเดพเดนเดฐเดฟเดเตเดเต. เดเดฐเต เดถเตเดเดฐเดคเตเดคเดฟเตฝ เดจเดฟเดจเตเดจเต เดเดฐเต เดเดฟเดคเตเดฐเด เดธเตเดเดพเตป เดเตเดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดเดฐเต เดธเตเดฑเตเดฑเต เดจเดฟเตผเดฎเตเดฎเดฟเดเตเดเดพเตป เดเดฐเต เดกเตเดเตเดเตผเดซเดฟเตฝ เดธเดนเดพเดฏเดฟเดเตเดเตเด, เดฐเดฃเตเดเดพเดฎเดคเตเดคเตเดคเต (Dockerfile_tar) เดเดฐเต เดเดฎเตเดเต เดเดชเดฏเตเดเดฟเดเตเดเต เดเดฐเต เดเดพเตผ เดซเดฏเตฝ เดธเตเดเดพเตป เดเตเดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเดพเดฏเดฟ เดเดฐเต เดธเตเดฑเตเดฑเต เดจเดฟเตผเดฎเตเดฎเดฟเดเตเดเดพเตป เดธเดนเดพเดฏเดฟเดเตเดเตเด.
1. เดฑเดฟเดชเตเดชเตเดธเดฟเดฑเตเดฑเดฑเดฟเดฏเดฟเตฝ เดจเดฟเดจเตเดจเต เด
เดจเตเดฌเดจเตเดง เดกเตเดเตเดเตผ เดซเดฏเดฒเตเด เดธเตเดเตเดฐเดฟเดชเตเดฑเตเดฑเตเดเดณเตเด เดเดเตเดเตเดเตเด
2. เด
เดธเดเดฌเตเดฒเดฟเดเตเดเดพเดฏเดฟ เดเดเตเดเตพ เดเดคเต เดธเดฎเดพเดฐเดเดญเดฟเดเตเดเตเดจเตเดจเต:
docker build -t dscan:image -f docker_security.df .
3. เด เดธเดเดฌเตเดฒเดฟ เดชเตเตผเดคเตเดคเดฟเดฏเดพเดเตเดเดฟเดฏ เดถเตเดทเด, เดเดฟเดคเตเดฐเดคเตเดคเดฟเตฝ เดจเดฟเดจเตเดจเต เดเดเตเดเตพ เดเดฐเต เดเดฃเตเดเตเดฏเตเดจเตผ เดเดฃเตเดเดพเดเตเดเตเดจเตเดจเต. เด เดคเต เดธเดฎเดฏเด, เดเดเตเดเตพ เดคเดพเตฝเดชเตเดชเดฐเตเดฏเดฎเตเดณเตเดณ เดเดฟเดคเตเดฐเดคเตเดคเดฟเดจเตเดฑเต เดชเตเดฐเดฟเดจเตเดชเตเดชเด DOCKERIMAGE เดเตปเดตเดฏเตเตบเดฎเตเดจเตเดฑเต เดตเตเดฐเดฟเดฏเดฌเดฟเตพ เดเตเดฎเดพเดฑเตเดเดฏเตเด เดเดเตเดเดณเตเดเต เดฎเตเดทเตเดจเดฟเตฝ เดจเดฟเดจเตเดจเต เดซเดฏเดฒเดฟเดฒเตเดเตเดเต เดตเดฟเดถเดเดฒเดจเด เดเตเดฏเตเดฏเดพเตป เดเดเตเดฐเดนเดฟเดเตเดเตเดจเตเดจ Dockerfile เดฎเตเดฃเตเดเต เดเตเดฏเตเดฏเตเดเดฏเตเด เดเตเดฏเตเดฏเตเดจเตเดจเต. /เดกเตเดเตเดเตผเดซเดฟเตฝ (เด เดซเดฏเดฒเดฟเดฒเตเดเตเดเตเดณเตเดณ เดธเดฎเตเดชเตเตผเดฃเตเดฃ เดชเดพเดค เดเดตเดถเตเดฏเดฎเดพเดฃเตเดจเตเดจเต เดถเตเดฐเดฆเตเดงเดฟเดเตเดเตเด):
docker run --rm -v $(pwd)/results:/results -v $(pwd)/docker_security.df:/Dockerfile -e DOCKERIMAGE="bkimminich/juice-shop" dscan:image
[+] Setting environment variables
[+] Running Hadolint
/Dockerfile:3 DL3006 Always tag the version of an image explicitly
[+] Running Dockle
WARN - DKL-DI-0006: Avoid latest tag
* Avoid 'latest' tag
INFO - CIS-DI-0005: Enable Content trust for Docker
* export DOCKER_CONTENT_TRUST=1 before docker pull/build
INFO - CIS-DI-0006: Add HEALTHCHECK instruction to the container image
* not found HEALTHCHECK statement
INFO - DKL-LI-0003: Only put necessary files
* unnecessary file : juice-shop/node_modules/sqlite3/Dockerfile
* unnecessary file : juice-shop/node_modules/sqlite3/tools/docker/architecture/linux-arm64/Dockerfile
* unnecessary file : juice-shop/node_modules/sqlite3/tools/docker/architecture/linux-arm/Dockerfile
[+] Running Trivy
...
juice-shop/package-lock.json
============================
Total: 20 (UNKNOWN: 0, LOW: 1, MEDIUM: 6, HIGH: 8, CRITICAL: 5)
...
[+] Making the output look pretty
[+] Starting the main module ============================================================
[+] Converting JSON results
[+] Writing results HTML
[+] Clean exit ============================================================
[+] Everything is done. Find the resulting HTML report in results.html
เดซเดฒเดเตเดเตพ
เดกเตเดเตเดเตผ เดเตผเดเตเดเดฟเดซเดพเดเตโเดฑเตเดฑเตเดเตพ เดธเตเดเดพเตป เดเตเดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดเดฐเต เด เดเดฟเดธเตเดฅเดพเดจ เดฏเตเดเตเดเดฟเดฒเดฟเดฑเตเดฑเดฟเดเตพ เดฎเดพเดคเตเดฐเดฎเดพเดฃเต เดเดเตเดเตพ เดจเตเดเตเดเดฟเดฏเดคเต, เดเดจเตเดฑเต เด เดญเดฟเดชเตเดฐเดพเดฏเดคเตเดคเดฟเตฝ, เดเดฎเตเดเต เดธเตเดฐเดเตเดทเดพ เดเดตเดถเตเดฏเดเดคเดเดณเตเดเต เดฎเดพเดจเตเดฏเดฎเดพเดฏ เดเดฐเต เดญเดพเดเด เดตเดณเดฐเต เดซเดฒเดชเตเดฐเดฆเดฎเดพเดฏเดฟ เดเตพเดเตเดเตเดณเตเดณเตเดจเตเดจเต. เดเดฐเต เดชเดฐเดฟเดถเตเดงเดจเดเตพ เดจเดเดคเตเดคเดพเดจเต เดฎเดจเตเดนเดฐเดฎเดพเดฏ เดฑเดฟเดชเตเดชเตเตผเดเตเดเตเดเตพ เดตเดฐเดฏเตเดเตเดเดพเดจเต เดเตบเดธเตเตพ เดฎเตเดกเดฟเตฝ เดชเตเตผเดฃเตเดฃเดฎเดพเดฏเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเดพเดจเต เดเดฃเตเดเตเดฏเตโเดจเตผ เดฎเดพเดจเตเดเตโเดฎเตเดจเตเดฑเต เดธเดเดตเดฟเดงเดพเดจเดเตเดเตพ เดฎเตเดคเดฒเดพเดฏเดตเดฏเตโเดเตเดเตเดฒเตเดฒเดพเด เดเดดเดฟเดฏเตเดจเตเดจ เดชเดฃเดฎเดเดเตเดเดคเตเด เดธเตเดเดจเตเดฏเดตเตเดฎเดพเดฏ เดเตเดณเตเดเดณเตเด เดงเดพเดฐเดพเดณเด เดเดฃเตเดเต. เด เดเตเดณเตเดเดณเตเดเต เดเดฐเต เด เดตเดฒเตเดเดจเดตเตเด เด เดต เดเดเตเดเดจเต เดธเดเดฏเตเดเดฟเดชเตเดชเดฟเดเตเดเดพเด เดเดจเตเดจเดคเตเด เดเตเดฑเดเตเดเต เดเดดเดฟเดเตเดเต เดฆเตเดถเตเดฏเดฎเดพเดฏเตเดเตเดเดพเด. .
เดฒเตเดเดจเดคเตเดคเดฟเตฝ เดตเดฟเดตเดฐเดฟเดเตเดเดฟเดฐเดฟเดเตเดเตเดจเตเดจ เดเดชเดเดฐเดฃเดเตเดเดณเตเดเต เดเตเดเตเดเดคเตเดคเตเดเตเดเตเดฑเดฟเดเตเดเตเดณเตเดณ เดจเดฒเตเดฒ เดเดพเดฐเตเดฏเด, เด เดตเดฏเตเดฒเตเดฒเดพเด เดเดชเตเดชเตบ เดธเตเดดเตโเดธเต เดเตเดกเดฟเดฒเดพเดฃเต เดจเดฟเตผเดฎเตเดฎเดฟเดเตเดเดฟเดฐเดฟเดเตเดเตเดจเตเดจเดคเต, เดจเดฟเดเตเดเดณเตเดเต เดเดตเดถเตเดฏเดเดคเดเตพเดเตเดเตเด เด เดเดฟเดธเตเดฅเดพเดจ เดธเตเดเดฐเตเดฏ เดธเดตเดฟเดถเตเดทเดคเดเตพเดเตเดเตเด เด เดจเตเดฏเตเดเตเดฏเดฎเดพเดฏเดต เดเดฃเตเดเตเดคเตเดคเตเดจเตเดจเดคเดฟเดจเต เด เดตเดฏเตเด เดธเดฎเดพเดจเดฎเดพเดฏ เดฎเดฑเตเดฑเต เดเดชเดเดฐเดฃเดเตเดเดณเตเด เดเดชเดฏเตเดเดฟเดเตเดเต เดจเดฟเดเตเดเตพเดเตเดเต เดชเดฐเตเดเตเดทเดฟเดเตเดเดพเด. เดคเตเตผเดเตเดเดฏเดพเดฏเตเด, เดเดฃเตเดเตเดคเตเดคเดฟเดฏ เดเดฒเตเดฒเดพ เดเตเดเตเดชเดพเดเตเดเดณเตเด เดจเดฟเตผเดฆเตเดฆเดฟเดทเตเด เดตเตเดฏเดตเดธเตเดฅเดเดณเดฟเตฝ เดชเตเดฐเดฏเตเดเดเตเดทเดฎเดคเดฏเตเดเตเดเดพเดฏเดฟ เดชเด เดฟเดเตเดเตเดฃเตเดเดคเดพเดฃเต, เดเดจเตเดจเดพเตฝ เดเดคเต เดญเดพเดตเดฟเดฏเดฟเดฒเต เดตเดฒเดฟเดฏ เดฒเตเดเดจเดคเตเดคเดฟเดจเตเดณเตเดณ เดตเดฟเดทเดฏเดฎเดพเดฃเต.
เด เดเตเดกเตเด เดธเตโเดเตเดฐเดฟเดชเตเดฑเตเดฑเตเดเดณเตเด เดฏเตเดเตเดเดฟเดฒเดฟเดฑเตเดฑเดฟเดเดณเตเด เดจเดฟเดเตเดเดณเต เดธเดนเดพเดฏเดฟเดเตเดเตเดฎเตเดจเตเดจเตเด เดเดฃเตเดเตเดฏเตโเดจเดฑเตเดธเตเดทเตป เดฎเตเดเดฒเดฏเดฟเตฝ เดเตเดเตเดคเตฝ เดธเตเดฐเดเตเดทเดฟเดคเดฎเดพเดฏ เดเตปเดซเตเดฐเดพเดธเตเดเตเดฐเดเตเดเตผ เดธเตเดทเตเดเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดเดฐเต เดเดฐเดเดญ เดชเตเดฏเดฟเดจเตเดฑเดพเดฏเดฟ เดฎเดพเดฑเตเดฎเตเดจเตเดจเตเด เดเดพเตป เดชเตเดฐเดคเตเดเตเดทเดฟเดเตเดเตเดจเตเดจเต.
เด
เดตเดฒเดเดฌเด: www.habr.com