เดนเดฒเตเดพ! เด เดเตเดคเตเดคเดฟเดเต, เดกเตเดเตเดเตผ เดเดฎเตเดเตเดเตพ เดจเดฟเตผเดฎเตเดฎเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเตเด เดเตเดฌเตผเดจเตเดฑเตเดฑเดฟเดฒเตเดเตเดเต เดตเดฟเดจเตเดฏเดพเดธเดคเตเดคเดฟเดจเตเดฎเดพเดฏเดฟ เดจเดฟเดฐเดตเดงเดฟ เดฐเดธเดเดฐเดฎเดพเดฏ เดเดเตเดเตเดฎเตเดทเตป เดเตเดณเตเดเตพ เดชเตเดฑเดคเตเดคเดฟเดฑเดเตเดเดฟเดฏเดฟเดเตเดเตเดฃเตเดเต. เดเดเตเดเดพเดฐเตเดฏเดคเตเดคเดฟเตฝ, เดเดพเตป GitLab-เดจเตเดชเตเดชเด เดเดณเดฟเดเตเดเดพเตป เดคเตเดฐเตเดฎเดพเดจเดฟเดเตเดเต, เด เดคเดฟเดจเตเดฑเต เดเดดเดฟเดตเตเดเตพ เดจเดจเตเดจเดพเดฏเดฟ เดชเด เดฟเดเตเดเตเดเดฏเตเด, เดคเตเตผเดเตเดเดฏเดพเดฏเตเด, เดชเตเดชเตเดชเตเดฒเตเตป เดธเดเตเดเตเดเดฐเดฟเดเตเดเตเดเดฏเตเด เดเตเดฏเตเดคเต.
เดตเตเดฌเตโเดธเตเดฑเตเดฑเดฟเตฝ เดจเดฟเดจเตเดจเต เดชเตเดฐเดเตเดฆเดจเด เดเตพเดเตเดเตเดฃเตเดเดคเดพเดฃเต เด เดชเตเดฐเดตเตเดคเตเดคเดฟ
เดเดฆเตเดฏเด เดฎเตเดคเตฝ เดธเดฎเดพเดจเดฎเดพเดฏ เดเดฐเต เดชเตเดฐเดเตเดฐเดฟเดฏ เดจเดฟเตผเดฎเตเดฎเดฟเดเตเดเดพเตป เดเดพเตป เดถเตเดฐเดฎเดฟเดเตเดเต, เดชเดเตเดทเต เดชเตเตผเดฃเตเดฃเดฎเดพเดฏเตเด เดเดฟเดฑเตเดฑเตโเดฒเดพเดฌเต เดธเดฟเดเดฏเดฟเดฒเตเด เดเตเดฌเตเตผเดจเตเดฑเตเดฑเดธเดฟเดฒเตเดเตเดเต เดเดชเตเดฒเดฟเดเตเดเตเดทเดจเตเดเตพ เดตเดฟเดจเตเดฏเดธเดฟเดเตเดเดพเตป เดเดพเตป เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจ เดธเตเดเดจเตเดฏ เดเตเดณเตเดเดณเดฟเดฒเตเด เดจเดฟเตผเดฎเตเดฎเดฟเดเตเดเดคเดพเดฃเต. เดเดจเตเดจเต เดเดพเตป เด เดตเดฐเตเดเตเดเตเดฑเดฟเดเตเดเต เดเตเดเตเดคเตฝ เดจเดฟเดเตเดเดณเตเดเต เดชเดฑเดฏเตเด.
เดเดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจเดคเตเดชเตเดฒเตเดณเตเดณ เดเดชเดเดฐเดฃเดเตเดเตพ เดฒเตเดเดจเด เดเตผเดเตเด เดเตเดฏเตเดฏเตเด:
เดนเตเดฏเตเดเต, qbec, เดเดพเดฃเดฟเดเตเดเต, git-crypt ะธ เดเดฟเดฑเตเดฑเตโเดฒเดพเดฌเต เดธเดฟ.เด เดเดฒเดจเดพเดคเตเดฎเด เดชเดฐเดฟเดคเดธเตเดฅเดฟเดคเดฟเดเตพ เดธเตเดทเตเดเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเตเดชเตเดชเด.
เดเดณเตเดณเดเดเตเดเด
เดนเตเดฏเตเดเตเดฏเต เดเดฃเตเดเตเดฎเตเดเตเดเตเด เดกเตเดเตเดเตผเดซเดฏเตฝ เดคเดฏเตเดฏเดพเดฑเดพเดเตเดเตเดจเตเดจเต เดเดจเดฟเดเตเดเตเดฏเต เดชเดฐเดฟเดเดฏเดชเตเดชเตเดเตเดจเตเดจเต qbec เดจเต เด เดฑเดฟเดฏเตเดจเตเดจเต เดเตเดฌเตผเดจเตเดฑเตเดฑเดธเต เดเดเตเดธเดฟเดเตเดฏเตเดเตเดเดฑเดฟเดจเตเดชเตเดชเด เดเดฟเดฑเตเดฑเตโเดฒเดพเดฌเต-เดฑเดฃเตเดฃเตผ เดถเตเดฐเดฎเดฟเดเตเดเตเดจเตเดจเต qbec-เดจเตเดชเตเดชเด เดนเตเตฝเด เดเดพเตผเดเตเดเตเดเตพ เดตเดฟเดจเตเดฏเดธเดฟเดเตเดเตเดจเตเดจเต เดเดฟเดฑเตเดฑเต-เดเตเดฐเดฟเดชเตเดฑเตเดฑเต เด เดตเดคเดฐเดฟเดชเตเดชเดฟเดเตเดเตเดจเตเดจเต เดเดฐเต เดเตเตพเดฌเตเดเตเดธเต เดเดฎเตเดเต เดธเตเดทเตเดเดฟเดเตเดเตเดจเตเดจเต เดเดเตเดเดณเตเดเต เดเดฆเตเดฏ เดชเตเดชเตเดชเต เดฒเตเดจเตเด เดเดพเดเตเดเตพ เดตเดดเดฟเดฏเตเดณเตเดณ เดเดฟเดคเตเดฐเดเตเดเดณเตเดเต เด เดธเดเดฌเตเดฒเดฟเดฏเตเด เดตเดฟเดจเตเดฏเดพเดธเด เดเดเตเดเตเดฎเตเดทเตป เดฎเดพเดธเตเดฑเตเดฑเดฑเดฟเดฒเตเดเตเดเต เดคเดณเตเดณเตเดฎเตเดชเตเตพ เดเตผเดเตเดเดฟเดซเดพเดเตเดฑเตเดฑเตเดเดณเตเด เด เดธเดเดฌเตเดฒเดฟเดฏเตเด เดเดฒเดจเดพเดคเตเดฎเด เดชเดฐเดฟเดคเดธเตเดฅเดฟเดคเดฟเดเตพ เดเดชเตเดชเตเดเตพ เด เดตเดฒเตเดเดจเด เดเตเดฏเตเดฏเตเด
1. เดนเตเดฏเตเดเตเดฏเต เด
เดฑเดฟเดฏเตเด
เดเดเตเดเดณเตเดเต เดชเตเดฐเตเดเดเตเดฑเตเดฑเดฟเดจเตเดฑเต เดเดฆเดพเดนเดฐเดฃเดฎเดพเดฏเดฟ, เดนเตเดฏเตเดเตเดฏเดฟเตฝ เดจเดฟเตผเดฎเตเดฎเดฟเดเตเด เดเดฐเต เดกเตเดเตเดฏเตเดฎเตเดจเตเดฑเตเดทเตป เดชเตเดฐเดธเดฟเดฆเตเดงเตเดเดฐเดฃ เดธเตเดฑเตเดฑเต เดธเตเดทเตเดเดฟเดเตเดเดพเตป เดเดเตเดเตพ เดถเตเดฐเดฎเดฟเดเตเดเตเด. เดนเตเดฏเตเดเต เดเดฐเต เดธเตเดฑเตเดฑเดพเดฑเตเดฑเดฟเดเต เดเดฃเตเดเดจเตเดฑเต เดเดจเดฑเตเดฑเตเดฑเดฑเดพเดฃเต.
เดธเตเดฑเตเดฑเดพเดฑเตเดฑเดฟเดเต เดเดจเดฑเตเดฑเตเดฑเดฑเตเดเดณเตเดฎเดพเดฏเดฟ เดชเดฐเดฟเดเดฏเดฎเดฟเดฒเตเดฒเดพเดคเตเดคเดตเตผเดเตเดเต, เดเดพเตป เด เดตเดฐเตเดเตเดเตเดฑเดฟเดเตเดเต เดเตเดฑเดเตเดเตเดเตเดเดฟ เดจเดฟเดเตเดเดณเตเดเต เดชเดฑเดฏเตเด. เดเดฐเต เดกเดพเดฑเตเดฑเดพเดฌเตเดธเตเด เดเดฟเดฒ PHP เดฏเตเด เดเดณเตเดณ เดชเดฐเดฎเตเดชเดฐเดพเดเดค เดตเตเดฌเตโเดธเตเดฑเตเดฑเต เดเดเตเดเดฟเดจเตเดเดณเดฟเตฝ เดจเดฟเดจเตเดจเต เดตเตเดฏเดคเตเดฏเดธเตเดคเดฎเดพเดฏเดฟ, เดเดฐเต เดเดชเดฏเตเดเตเดคเดพเดตเต เด เดญเตเดฏเตผเดคเตเดฅเดฟเดเตเดเตเดฎเตเดชเตเตพ, เดเดเตเดเดฏเดฟเตฝ เดชเตเดเตเดเตพ เดธเตเดทเตเดเดฟเดเตเดเตเดจเตเดจเต, เดธเตเดฑเตเดฑเดพเดฑเตเดฑเดฟเดเต เดเดจเดฑเตเดฑเตเดฑเดฑเตเดเตพ เดเตเดฑเดเตเดเต เดตเตเดฏเดคเตเดฏเดธเตเดคเดฎเดพเดฏเดฟ เดฐเตเดชเดเตฝเดชเตเดชเดจ เดเตเดฏเตโเดคเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต. เดธเตเดฐเตเดคเดธเตเดธเตเดเตพ เดเดเตเดเตเดเดพเตป เด เดตเตผ เดจเดฟเดเตเดเดณเต เด เดจเตเดตเดฆเดฟเดเตเดเตเดจเตเดจเต, เดธเดพเดงเดพเดฐเดฃเดฏเดพเดฏเดฟ เดฎเดพเตผเดเตเดเตเดกเตเตบ เดฎเดพเตผเดเตเดเตเด เดชเตเดชเดฟเดฒเตเด เดคเตเด เดเตเดเดชเตเดฒเตเดฑเตเดฑเตเดเดณเดฟเดฒเตเด เดเดณเตเดณ เดเดฐเต เดเตเดเตเดเด เดซเดฏเดฒเตเดเตพ, เดคเตเดเตผเดจเตเดจเต เด เดต เดชเตเตผเดฃเตเดฃเดฎเดพเดฏเตเด เดชเตเตผเดคเตเดคเดฟเดฏเดพเดฏ เดเดฐเต เดตเตเดฌเตโเดธเตเดฑเตเดฑเดฟเดฒเตเดเตเดเต เดเดเดชเตเตฝ เดเตเดฏเตเดฏเตเด.
เด เดคเดพเดฏเดคเต, เดซเดฒเดฎเดพเดฏเดฟ, เดจเดฟเดเตเดเตพเดเตเดเต เดเดฐเต เดกเดฏเดฑเดเตโเดเดฑเดฟ เดเดเดจเดฏเตเด เดเดจเดฑเตเดฑเตเดฑเตเดเตเดฏเตโเดค HTML เดซเดฏเดฒเตเดเดณเตเดเต เดเดฐเต เดเตเดเตเดเดตเตเด เดฒเดญเดฟเดเตเดเตเด, เด เดคเต เดจเดฟเดเตเดเตพเดเตเดเต เดเดคเต เดตเดฟเดฒเดเตเดฑเดเตเด เดนเตเดธเตเดฑเตเดฑเดฟเดเดเดฟเดฒเตเดเตเดเตเด เด เดชเตโเดฒเตเดกเต เดเตเดฏเตเดฏเดพเดจเตเด เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเดจเตเดจ เดเดฐเต เดตเตเดฌเตโเดธเตเดฑเตเดฑเต เดจเตเดเดพเดจเตเด เดเดดเดฟเดฏเตเด.
เดจเดฟเดเตเดเตพเดเตเดเต เดชเตเดฐเดพเดฆเตเดถเดฟเดเดฎเดพเดฏเดฟ เดนเตเดฏเตเดเต เดเตปเดธเตเดฑเตเดฑเดพเตพ เดเตเดฏเตเดฏเดพเดจเตเด เดชเดฐเตเดเตเดทเดฟเดเตเดเดพเดจเตเด เดเดดเดฟเดฏเตเด:
เดเดฐเต เดชเตเดคเดฟเดฏ เดธเตเดฑเตเดฑเต เดเดฐเดเดญเดฟเดเตเดเตเดจเตเดจเต:
hugo new site docs.example.org
เด เดคเต เดธเดฎเดฏเด git เดถเตเดเดฐเด:
cd docs.example.org
git init
เดเดคเตเดตเดฐเต, เดเดเตเดเดณเตเดเต เดธเตเดฑเตเดฑเต เดชเตเดฐเดพเดเตเดคเดฎเดพเดฃเต, เด เดคเดฟเตฝ เดเดจเตเดคเตเดเตเดเดฟเดฒเตเด เดฆเตเดถเตเดฏเดฎเดพเดเตเดจเตเดจเดคเดฟเดจเต, เดเดเตเดเตพ เดเดฆเตเดฏเด เดเดฐเต เดคเตเด เดเดฃเดเตเดฑเตเดฑเตเดเตเดฏเตเดฏเตเดฃเตเดเดคเตเดฃเตเดเต; เดเดฐเต เดคเตเด เดเดจเตเดจเดคเต เดเดเตเดเดณเตเดเต เดธเตเดฑเตเดฑเต เดธเตเดทเตเดเดฟเดเตเดเตเดจเตเดจ เดเตเดเดชเตเดฒเตเดฑเตเดฑเตเดเดณเตเดเตเดฏเตเด เดจเดฟเตผเดฆเตเดฆเดฟเดทเตเด เดจเดฟเดฏเดฎเดเตเดเดณเตเดเตเดฏเตเด เดเดฐเต เดเตเดเตเดเด เดฎเดพเดคเตเดฐเดฎเดพเดฃเต.
เดคเตเดฎเดฟเดจเดพเดฏเดฟ เดเดเตเดเตพ เดเดชเดฏเตเดเดฟเดเตเดเตเด
เดเดเตเดเดณเตเดเต เดชเตเดฐเตเดเดเตเดฑเตเดฑเดฟเดจเตเดฑเต เดฑเดฟเดชเตเดชเตเดธเดฟเดฑเตเดฑเดฑเดฟเดฏเดฟเตฝ เดคเตเด เดซเดฏเดฒเตเดเตพ เดธเดเดฐเดเตเดทเดฟเดเตเดเตเดฃเตเดเดคเดฟเดฒเตเดฒ เดเดจเตเดจ เดตเดธเตเดคเตเดค เดชเตเดฐเดคเตเดฏเตเดเด เดถเตเดฐเดฆเตเดงเดฟเดเตเดเดพเตป เดเดพเตป เดเดเตเดฐเดนเดฟเดเตเดเตเดจเตเดจเต; เดชเดเดฐเด, เดจเดฎเตเดเตเดเต เดเดคเต เดเดชเดฏเตเดเดฟเดเตเดเต เดเดฃเดเตเดเต เดเตเดฏเตเดฏเดพเด git เดธเดฌเตเดฎเตเดกเตเดฏเตเตพ:
git submodule add https://github.com/matcornic/hugo-theme-learn themes/learn
เด เดคเดฟเดจเดพเตฝ, เดเดเตเดเดณเตเดเต เดถเตเดเดฐเดคเตเดคเดฟเตฝ เดเดเตเดเดณเตเดเต เดชเตเดฐเตเดเดเตเดฑเตเดฑเตเดฎเดพเดฏเดฟ เดจเตเดฐเดฟเดเตเดเต เดฌเดจเตเดงเดชเตเดชเตเดเตเด เดซเดฏเดฒเตเดเตพ เดฎเดพเดคเตเดฐเดฎเต เด เดเดเตเดเดฟเดฏเดฟเดเตเดเตเดณเตเดณเต, เดเตเดเดพเดคเต เดเดฃเดเตเดฑเตเดฑเตเดเตเดฏเตโเดค เดคเตเด เดเดฐเต เดจเดฟเตผเดฆเตเดฆเดฟเดทเตโเด เดถเตเดเดฐเดคเตเดคเดฟเดฒเตเดเตเดเตเดณเตเดณ เดฒเดฟเดเตเดเดพเดฏเตเด เด เดคเดฟเดฒเต เดชเตเดฐเดคเดฟเดฌเดฆเตเดงเดคเดฏเดพเดฏเตเด เดจเดฟเดฒเดจเดฟเตฝเดเตเดเตเด, เด เดคเดพเดฏเดคเต, เดเดคเต เดเดฒเตเดฒเดพเดฏเตเดชเตเดชเตเดดเตเด เดฏเดฅเดพเตผเดคเตเดฅ เดเดฑเดตเดฟเดเดคเตเดคเดฟเตฝ เดจเดฟเดจเตเดจเต เดชเดฟเตปเดตเดฒเดฟเดเตเดเดพเด, เดญเดฏเดชเตเดชเตเดเดฐเตเดคเต. เดชเตเดฐเตเดคเตเดคเดชเตเดชเตเดเดพเดคเตเดค เดฎเดพเดฑเตเดฑเดเตเดเตพ.
เดจเดฎเตเดเตเดเต เดเตเตบเดซเดฟเดเดฑเตเดทเตป เดถเดฐเดฟเดฏเดพเดเตเดเดพเด config.toml:
baseURL = "http://docs.example.org/"
languageCode = "en-us"
title = "My Docs Site"
theme = "learn"
เดเดคเดฟเดจเดเด เด เดเดเตเดเดคเตเดคเดฟเตฝ เดจเดฟเดเตเดเตพเดเตเดเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเดเตเดเดพเตป เดเดดเดฟเดฏเตเด:
hugo server
เดเดชเตเดชเด เดตเดฟเดฒเดพเดธเดคเตเดคเดฟเดฒเตเด
เดเดฐเต เดเดตเตผ เดชเตเดเต เดธเตเดทเตเดเดฟเดเตเดเดพเตป เดถเตเดฐเดฎเดฟเดเตเดเดพเด เดเดณเตเดณเดเดเตเดเด/_index.md:
# My docs site
## Welcome to the docs!
You will be very smart :-)
เดชเตเดคเตเดคเดพเดฏเดฟ เดธเตเดทเตเดเดฟเดเตเด เดชเตเดเดฟเดจเตเดฑเต เดธเตเดเตเดฐเตเตปเดทเตเดเตเดเต
เดเดฐเต เดธเตเดฑเตเดฑเต เดธเตเดทเตเดเดฟเดเตเดเดพเตป, เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเดเตเดเตเด:
hugo
เดกเดฏเดฑเดเตเดเดฑเดฟ เดเดณเตเดณเดเดเตเดเด เดชเตเดคเต/ เดจเดฟเดเตเดเดณเตเดเต เดตเตเดฌเตเดธเตเดฑเตเดฑเต เดเดฏเดฟเดฐเดฟเดเตเดเตเด.
เด
เดคเต, เดตเดดเดฟเดฏเดฟเตฝ, เดจเดฎเตเดเตเดเต เดเดคเต เดเดเตป เดเตเตผเดเตเดเดพเด .เดเดฟเดฑเตเดฑเดฟเดเตเดจเตเตผ:
echo /public > .gitignore
เดเดเตเดเดณเตเดเต เดฎเดพเดฑเตเดฑเดเตเดเตพ เดตเดฐเตเดคเตเดคเดพเตป เดฎเดฑเดเตเดเดฐเตเดคเต:
git add .
git commit -m "New site created"
2. เดกเตเดเตเดเตผเดซเดฏเตฝ เดคเดฏเตเดฏเดพเดฑเดพเดเตเดเตเดจเตเดจเต
เดเดเตเดเดณเตเดเต เดถเตเดเดฐเดฃเดคเตเดคเดฟเดจเตเดฑเต เดเดเดจ เดจเดฟเตผเดตเดเดฟเดเตเดเดพเดจเตเดณเตเดณ เดธเดฎเดฏเดฎเดพเดฃเดฟเดคเต. เดเดพเตป เดธเดพเดงเดพเดฐเดฃเดฏเดพเดฏเดฟ เดเดคเตเดชเตเดฒเตเดณเตเดณ เดเดจเตเดจเต เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเต:
.
โโโ deploy
โ โโโ app1
โ โโโ app2
โโโ dockerfiles
โโโ image1
โโโ image2
- เดกเตเดเตเดเตผ เดซเดฏเดฒเตเดเตพ/ โ เดกเตเดเตเดเตผ เดซเดฏเดฒเตเดเดณเตเดณเตเดณ เดกเดฏเดฑเดเตโเดเดฑเดฟเดเดณเตเด เดเดเตเดเดณเตเดเต เดกเตเดเตเดเตผ เดเดฎเตเดเตเดเตพ เดจเดฟเตผเดฎเตเดฎเดฟเดเตเดเดพเตป เดเดตเดถเตเดฏเดฎเดพเดฏ เดเดฒเตเดฒเดพเด เด เดเดเตเดเดฟเดฏเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต.
- เดตเดฟเดจเตเดฏเดธเดฟเดเตเดเตเด/ โ เดเตเดฌเตผเดจเตเดฑเตเดฑเดธเดฟเดฒเตเดเตเดเต เดเดเตเดเดณเตเดเต เดเดชเตเดฒเดฟเดเตเดเตเดทเดจเตเดเตพ เดตเดฟเดจเตเดฏเดธเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดกเดฏเดฑเดเตเดเดฑเดฟเดเตพ เด เดเดเตเดเดฟเดฏเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต
เด เดเตเดเดจเต, เดชเดพเดคเดฏเดฟเดฒเตเดเต เดเดเตเดเตพ เดเดเตเดเดณเตเดเต เดเดฆเตเดฏเดคเตเดคเต เดกเตเดเตเดเตผเดซเดฏเตฝ เดธเตเดทเตเดเดฟเดเตเดเตเด dockerfiles/website/Dockerfile
FROM alpine:3.11 as builder
ARG HUGO_VERSION=0.62.0
RUN wget -O- https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_${HUGO_VERSION}_linux-64bit.tar.gz | tar -xz -C /usr/local/bin
ADD . /src
RUN hugo -s /src
FROM alpine:3.11
RUN apk add --no-cache darkhttpd
COPY --from=builder /src/public /var/www
ENTRYPOINT [ "/usr/bin/darkhttpd" ]
CMD [ "/var/www" ]
เดจเดฟเดเตเดเตพเดเตเดเต เดเดพเดฃเดพเดจเดพเดเตเดจเตเดจเดคเตเดชเตเดฒเต, เดกเตเดเตเดเตผเดซเดฏเดฒเดฟเตฝ เดฐเดฃเตเดเตเดฃเตเดฃเด เด
เดเดเตเดเดฟเดฏเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต FROM, เด เดธเดตเดฟเดถเตเดทเดคเดฏเต เดตเดฟเดณเดฟเดเตเดเตเดจเตเดจเต
เด
เดคเดฟเดจเดพเตฝ, เด
เดจเตเดคเดฟเดฎ เดเดฟเดคเตเดฐเดคเตเดคเดฟเตฝ เดฎเดพเดคเตเดฐเดฎเต เด
เดเดเตเดเดฟเดฏเดฟเดฐเดฟเดเตเดเต เดเดฐเตเดฃเตเด httpd (เดเดจเดเดเตเดฑเดเตเด HTTP เดธเตเตผเดตเตผ) เดเตเดเดพเดคเต เดชเตเดคเต/ โ เดธเตเดฅเดฟเดฐเดฎเดพเดฏเดฟ เดธเตเดทเตเดเดฟเดเตเด เดเดเตเดเดณเตเดเต เดตเตเดฌเตเดธเตเดฑเตเดฑเดฟเดจเตเดฑเต เดเดณเตเดณเดเดเตเดเด.
เดเดเตเดเดณเตเดเต เดฎเดพเดฑเตเดฑเดเตเดเตพ เดตเดฐเตเดคเตเดคเดพเตป เดฎเดฑเดเตเดเดฐเตเดคเต:
git add dockerfiles/website
git commit -m "Add Dockerfile for website"
3. เดเดจเดฟเดเตเดเตเดฏเต เด
เดฑเดฟเดฏเตเด
เดเดฐเต เดกเตเดเตเดเตผ เดเดฎเตเดเต เดฌเดฟเตฝเดกเตผ เดเดจเตเดจ เดจเดฟเดฒเดฏเดฟเตฝ, เดเดพเตป เดเดชเดฏเตเดเดฟเดเตเดเดพเตป เดคเตเดฐเตเดฎเดพเดจเดฟเดเตเดเต
เดเดฟเดคเตเดฐเด เดจเดฟเตผเดฎเตเดฎเดฟเดเตเดเดพเตป, เดเดฃเตเดเตเดฏเตเดจเตผ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเดเตเดเตเด เดเดจเดฟเดเตเดเต เดเดเตเดธเดฟเดเตเดฏเตเดเตเดเตผ เดจเดฟเดฒเดตเดฟเดฒเต เดฌเดฟเตฝเดกเต เดธเดจเตเดฆเตผเดญเดคเตเดคเดฟเตฝ เดเดคเต เดเตเดฎเดพเดฑเตเด; เดเดคเต เดกเตเดเตเดเตผ เดตเดดเดฟ เดชเตเดฐเดพเดฆเตเดถเดฟเดเดฎเดพเดฏเตเด เดเตเดฏเตเดฏเดพเดตเตเดจเตเดจเดคเดพเดฃเต:
docker run -ti --rm
-v $PWD:/workspace
-v ~/.docker/config.json:/kaniko/.docker/config.json:ro
gcr.io/kaniko-project/executor:v0.15.0
--cache
--dockerfile=dockerfiles/website/Dockerfile
--destination=registry.gitlab.com/kvaps/docs.example.org/website:v0.0.1
เดเดตเดฟเดเตเดฏเดพเดฃเต registry.gitlab.com/kvaps/docs.example.org/website - เดจเดฟเดเตเดเดณเตเดเต เดกเตเดเตเดเตผ เดเดฎเตเดเดฟเดจเตเดฑเต เดชเตเดฐเต; เดจเดฟเตผเดฎเตเดฎเดฟเดเตเดเดคเดฟเดจเต เดถเตเดทเด, เด เดคเต เดกเตเดเตเดเตผ เดฐเดเดฟเดธเตเดเตเดฐเดฟเดฏเดฟเดฒเตเดเตเดเต เดธเตเดตเดฏเดฎเตเดต เดฒเตเดเตเดเต เดเตเดฏเตเดฏเตเด.
เดชเดพเดฐเดพเดฎเตเดฑเตเดฑเตผ --เดเดพเดทเต เดกเตเดเตเดเตผ เดฐเดเดฟเดธเตเดเตเดฐเดฟเดฏเดฟเตฝ เดฒเตเดฏเดฑเตเดเตพ เดเดพเดทเต เดเตเดฏเตเดฏเดพเตป เดจเดฟเดเตเดเดณเต เด เดจเตเดตเดฆเดฟเดเตเดเตเดจเตเดจเต; เดจเตฝเดเดฟเดฏเดฟเดฐเดฟเดเตเดเตเดจเตเดจ เดเดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เด เดต เดธเดเดฐเดเตเดทเดฟเดเตเดเดชเตเดชเตเดเตเด registry.gitlab.com/kvaps/docs.example.org/website/cache, เดเดจเตเดจเดพเตฝ เดชเดฐเดพเดฎเตเดฑเตเดฑเตผ เดเดชเดฏเตเดเดฟเดเตเดเต เดจเดฟเดเตเดเตพเดเตเดเต เดฎเดฑเตเดฑเตเดฐเต เดชเดพเดค เดตเตเดฏเดเตเดคเดฎเดพเดเตเดเดพเด --เดเดพเดทเต-เดฑเดฟเดชเตเดชเต.
เดกเตเดเตเดเตผ เดฐเดเดฟเดธเตเดเตเดฐเดฟเดฏเตเดเต เดธเตเดเตเดฐเตเตปเดทเตเดเตเดเต
4. qbec-เดจเต เด
เดฑเดฟเดฏเตเด
เดตเตเดฏเดคเตเดฏเดธเตโเดค เดชเดพเดฐเดพเดฎเตเดฑเตเดฑเดฑเตเดเดณเตเดณเตเดณ เดจเดฟเดฐเดตเดงเดฟ เดเตเดฒเดธเตเดฑเตเดฑเดฑเตเดเดณเดฟเดฒเตเดเตเดเต เดจเดฟเดเตเดเตพ เดเดฐเต เดเดชเตเดฒเดฟเดเตเดเตเดทเตป เดตเดฟเดจเตเดฏเดธเดฟเดเตเดเตเดฃเตเดเดคเตเด เด เดต Git-เตฝ เดชเตเดฐเดเตเดฏเดพเดชเดจเดชเดฐเดฎเดพเดฏเดฟ เดตเดฟเดตเดฐเดฟเดเตเดเดพเตป เดเดเตเดฐเดนเดฟเดเตเดเตเดจเตเดจเดคเตเดฎเดพเดฏ เดธเดจเตเดฆเตผเดญเดเตเดเดณเดฟเตฝ เดเดคเต เดชเตเดฐเดคเตเดฏเตเดเดฟเดเตเดเตเด เดธเดคเตเดฏเดฎเดพเดฏเดฟเดฐเดฟเดเตเดเตเด.
เดเดตเดถเตเดฏเดฎเดพเดฏ เดชเดพเดฐเดพเดฎเตเดฑเตเดฑเดฑเตเดเตพ เดชเดพเดธเดพเดเตเดเดฟ เดนเตเตฝเด เดเดพเตผเดเตเดเตเดเตพ เดฑเตเตปเดกเตผ เดเตเดฏเตเดฏเดพเดจเตเด เดคเตเดเตผเดจเตเดจเต เด เดตเดฏเต เดธเดพเดงเดพเดฐเดฃ เดฎเดพเดจเดฟเดซเตเดธเตเดฑเตเดฑเตเดเดณเตเดเต เด เดคเต เดฐเตเดคเดฟเดฏเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเดเตเดเดพเดจเตเด Qbec เดจเดฟเดเตเดเดณเต เด เดจเตเดตเดฆเดฟเดเตเดเตเดจเตเดจเต, เดจเดฟเดเตเดเตพเดเตเดเต เด เดตเดฏเดฟเตฝ เดตเดฟเดตเดฟเดง เดฎเตเดฏเตเดเตเดเตเดทเดจเตเดเตพ เดชเตเดฐเดฏเตเดเดฟเดเตเดเดพเตป เดเดดเดฟเดฏเตเด, เดเตเดเดพเดคเต เดเดคเต เดเดตเดถเตเดฏเดคเตเดคเดฟเตฝ เดจเดฟเดจเตเดจเต เดฐเดเตเดทเดชเตเดชเตเดเดพเตป เดจเดฟเดเตเดเดณเต เด เดจเตเดตเดฆเดฟเดเตเดเตเดจเตเดจเต. เดเดพเตผเดเตเดเต เดฎเตเดฏเตเดธเดฟเดฏเด เดเดชเดฏเตเดเดฟเดเตเดเตเด. เด เดคเดพเดฏเดคเต, เดจเดฟเดเตเดเตพเดเตเดเต เดเดพเตผเดเตเดเตเดเตพ เดเดฟเดฑเตเดฑเดฟเตฝ เดจเดฟเดจเตเดจเต เดจเตเดฐเดฟเดเตเดเต เดธเดเดญเดฐเดฟเดเตเดเดพเดจเตเด เดฑเตเตปเดกเตผ เดเตเดฏเตเดฏเดพเดจเตเด เดเดดเดฟเดฏเตเด.
เดเดพเตป เดจเตเดฐเดคเตเดคเต เดชเดฑเดเตเดเดคเตเดชเตเดฒเต, เดเดเตเดเตพ เดเดฒเตเดฒเดพ เดตเดฟเดจเตเดฏเดพเดธเดเตเดเดณเตเด เดเดฐเต เดกเดฏเดฑเดเตเดเดฑเดฟเดฏเดฟเตฝ เดธเดเดญเดฐเดฟเดเตเดเตเด เดตเดฟเดจเตเดฏเดธเดฟเดเตเดเตเด/:
mkdir deploy
cd deploy
เดจเดฎเตเดเตเดเต เดจเดฎเตเดฎเตเดเต เดเดฆเตเดฏ เดเดชเตเดฒเดฟเดเตเดเตเดทเตป เดเดฐเดเดญเดฟเดเตเดเดพเด:
qbec init website
cd website
เดเดชเตเดชเตเตพ เดเดเตเดเดณเตเดเต เดเดชเตเดฒเดฟเดเตเดเตเดทเดจเตเดฑเต เดเดเดจ เดเดคเตเดชเตเดฒเต เดเดพเดฃเดชเตเดชเตเดเตเดจเตเดจเต:
.
โโโ components
โโโ environments
โ โโโ base.libsonnet
โ โโโ default.libsonnet
โโโ params.libsonnet
โโโ qbec.yaml
เดจเดฎเตเดเตเดเต เดซเดฏเตฝ เดจเตเดเตเดเดพเด qbec.yaml:
apiVersion: qbec.io/v1alpha1
kind: App
metadata:
name: website
spec:
environments:
default:
defaultNamespace: docs
server: https://kubernetes.example.org:8443
vars: {}
เดเดตเดฟเดเต เดเดเตเดเตพเดเตเดเต เดชเตเดฐเดพเดฅเดฎเดฟเดเดฎเดพเดฏเดฟ เดคเดพเตฝเดชเตเดชเดฐเตเดฏเดฎเตเดฃเตเดเต spec.environments, qbec เดเดคเดฟเดจเดเด เดคเดจเตเดจเต เดเดเตเดเตพเดเตเดเดพเดฏเดฟ เดเดฐเต เดธเตเดฅเดฟเดฐเดธเตเดฅเดฟเดคเดฟ เดชเดฐเดฟเดคเดธเตเดฅเดฟเดคเดฟ เดธเตเดทเตโเดเดฟเดเตเดเตเดเดฏเตเด เดธเตเตผเดตเตผ เดตเดฟเดฒเดพเดธเดตเตเด เดจเดฎเตเดฎเตเดเต เดจเดฟเดฒเดตเดฟเดฒเต kubeconfig-เตฝ เดจเดฟเดจเตเดจเต เดจเตเดฏเดฟเดเดธเตโเดชเตเดธเตเด เดเดเตเดคเตเดคเดฟเดเตเดเตเดฃเตเดเต.
เดเดชเตเดชเตเตพ เดตเดฟเดจเตเดฏเดธเดฟเดเตเดเตเดฎเตเดชเตเตพ เดธเตเดฅเดฟเดฐเดธเตเดฅเดฟเดคเดฟ เดเตปเดตเดฏเตเตบเดฎเตเดจเตเดฑเต, qbec เดเดฒเตเดฒเดพเดฏเตโเดชเตเดชเตเดดเตเด เดจเดฟเตผเดฆเตเดฆเดฟเดทเตโเด เดเตเดฌเตผเดจเตเดฑเตเดฑเดธเต เดเตเดฒเดธเตเดฑเตเดฑเดฑเดฟเดฒเตเดเตเดเตเด เดจเดฟเตผเดฆเตเดฆเดฟเดทเตเด เดจเตเดฏเดฟเดเดธเตโเดชเตเดฏเตโเดธเดฟเดฒเตเดเตเดเตเด เดฎเดพเดคเตเดฐเดฎเต เดตเดฟเดจเตเดฏเดธเดฟเดเตเดเต, เด
เดคเดพเดฏเดคเต, เดเดฐเต เดตเดฟเดจเตเดฏเดพเดธเด เดจเดเดคเตเดคเดพเตป เดจเดฟเดเตเดเตพ เดเดจเดฟ เดธเดจเตเดฆเตผเดญเดเตเดเตพเดเตเดเตเด เดจเตเดฏเดฟเดเดธเตโเดชเตเดฏเตโเดธเดฟเดจเตเด เดเดเดฏเดฟเตฝ เดฎเดพเดฑเตเดฃเตเดเดคเดฟเดฒเตเดฒ.
เดเดตเดถเตเดฏเดฎเตเดเตเดเดฟเตฝ, เด เดซเดฏเดฒเดฟเดฒเต เดเตเดฐเดฎเตเดเดฐเดฃเดเตเดเตพ เดจเดฟเดเตเดเตพเดเตเดเต เดเดฒเตเดฒเดพเดฏเตเดชเตเดชเตเดดเตเด เด
เดชเตเดกเตเดฑเตเดฑเต เดเตเดฏเตเดฏเดพเด.
เดจเดฟเดเตเดเดณเตเดเต เดเดฒเตเดฒเดพ เดชเดฐเดฟเดคเดธเตเดฅเดฟเดคเดฟเดเดณเตเด เดตเดฟเดตเดฐเดฟเดเตเดเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต qbec.yaml, เดเตเดเดพเดคเต เดซเดฏเดฒเดฟเตฝ params.libsonnet, เดเดตเดฟเดเตเดฏเดพเดฃเต เด เดตเตผเดเตเดเตเดณเตเดณ เดชเดฐเดพเดฎเตเดฑเตเดฑเดฑเตเดเตพ เดฒเดญเดฟเดเตเดเตเดฃเตเดเดคเตเดจเตเดจเต เดชเดฑเดฏเตเดจเตเดจเต.
เด เดเตเดคเตเดคเดคเดพเดฏเดฟ เดจเดฎเตเดเตเดเต เดฐเดฃเตเดเต เดกเดฏเดฑเดเตเดเดฑเดฟเดเตพ เดเดพเดฃเดพเด:
- เดเดเดเดเตเดเตพ/ - เดเดเตเดเดณเตเดเต เดเดชเตเดฒเดฟเดเตเดเตเดทเดจเตเดฑเต เดเดฒเตเดฒเดพ เดฎเดพเดจเดฟเดซเตเดธเตเดฑเตเดฑเตเดเดณเตเด เดเดตเดฟเดเต เดธเดเดญเดฐเดฟเดเตเดเตเด; เด เดต jsonnet-เดฒเตเด เดธเดพเดงเดพเดฐเดฃ yaml เดซเดฏเดฒเตเดเดณเดฟเดฒเตเด เดตเดฟเดตเดฐเดฟเดเตเดเดพเด.
- เดชเดฐเดฟเดธเตเดฅเดฟเดคเดฟ/ โ เดเดตเดฟเดเต เดจเดฎเตเดฎเตพ เดจเดฎเตเดฎเตเดเต เดชเดฐเดฟเดคเดธเตเดฅเดฟเดคเดฟเดเตพเดเตเดเดพเดฏเตเดณเตเดณ เดเดฒเตเดฒเดพ เดตเตเดฐเดฟเดฏเดฌเดฟเดณเตเดเดณเตเด (เดชเดพเดฐเดพเดฎเตเดฑเตเดฑเดฑเตเดเตพ) เดตเดฟเดตเดฐเดฟเดเตเดเตเด.
เดธเตเดฅเดฟเดฐเดธเตเดฅเดฟเดคเดฟเดฏเดพเดฏเดฟ เดเดเตเดเตพเดเตเดเต เดฐเดฃเตเดเต เดซเดฏเดฒเตเดเตพ เดเดฃเตเดเต:
- เดชเดฐเดฟเดคเดธเตเดฅเดฟเดคเดฟเดเตพ/base.libsonnet - เดเดฒเตเดฒเดพ เดชเดฐเดฟเดคเดธเตเดฅเดฟเดคเดฟเดเตพเดเตเดเตเด เดชเตเดคเตเดตเดพเดฏ เดชเดพเดฐเดพเดฎเตเดฑเตเดฑเดฑเตเดเตพ เดเดคเดฟเตฝ เด เดเดเตเดเดฟเดฏเดฟเดฐเดฟเดเตเดเตเด
- เดชเดฐเดฟเดธเตเดฅเดฟเดคเดฟเดเตพ/default.libsonnet - เดชเดฐเดฟเดธเตเดฅเดฟเดคเดฟเดเตเดเต เดตเตเดฃเตเดเดฟ เด เดธเดพเดงเตเดตเดพเดเตเดเดชเตเดชเตเดเตเด เดชเดพเดฐเดพเดฎเตเดฑเตเดฑเดฑเตเดเตพ เด เดเดเตเดเดฟเดฏเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต เดธเตเดฅเดฟเดฐเดธเตเดฅเดฟเดคเดฟ
เดคเตเดฑเดเตเดเดพเด เดชเดฐเดฟเดคเดธเตเดฅเดฟเดคเดฟเดเตพ/base.libsonnet เด เดตเดฟเดเต เดเดเตเดเดณเตเดเต เดเดฆเตเดฏ เดเดเดเดคเตเดคเดฟเดจเต เดชเดพเดฐเดพเดฎเตเดฑเตเดฑเดฑเตเดเตพ เดเตเตผเดเตเดเตเด:
{
components: {
website: {
name: 'example-docs',
image: 'registry.gitlab.com/kvaps/docs.example.org/website:v0.0.1',
replicas: 1,
containerPort: 80,
servicePort: 80,
nodeSelector: {},
tolerations: [],
ingressClass: 'nginx',
domain: 'docs.example.org',
},
},
}
เดจเดฎเตเดเตเดเต เดจเดฎเตเดฎเตเดเต เดเดฆเตเดฏ เดเดเดเด เดธเตเดทเตเดเดฟเดเตเดเดพเด เดเดเดเดเตเดเตพ/website.jsonnet:
local env = {
name: std.extVar('qbec.io/env'),
namespace: std.extVar('qbec.io/defaultNs'),
};
local p = import '../params.libsonnet';
local params = p.components.website;
[
{
apiVersion: 'apps/v1',
kind: 'Deployment',
metadata: {
labels: { app: params.name },
name: params.name,
},
spec: {
replicas: params.replicas,
selector: {
matchLabels: {
app: params.name,
},
},
template: {
metadata: {
labels: { app: params.name },
},
spec: {
containers: [
{
name: 'darkhttpd',
image: params.image,
ports: [
{
containerPort: params.containerPort,
},
],
},
],
nodeSelector: params.nodeSelector,
tolerations: params.tolerations,
imagePullSecrets: [{ name: 'regsecret' }],
},
},
},
},
{
apiVersion: 'v1',
kind: 'Service',
metadata: {
labels: { app: params.name },
name: params.name,
},
spec: {
selector: {
app: params.name,
},
ports: [
{
port: params.servicePort,
targetPort: params.containerPort,
},
],
},
},
{
apiVersion: 'extensions/v1beta1',
kind: 'Ingress',
metadata: {
annotations: {
'kubernetes.io/ingress.class': params.ingressClass,
},
labels: { app: params.name },
name: params.name,
},
spec: {
rules: [
{
host: params.domain,
http: {
paths: [
{
backend: {
serviceName: params.name,
servicePort: params.servicePort,
},
},
],
},
},
],
},
},
]
เด เดซเดฏเดฒเดฟเตฝ เดเดเตเดเตพ เดเดฐเตเดธเดฎเดฏเด เดฎเตเดจเตเดจเต เดเตเดฌเตผเดจเตเดฑเตเดฑเดธเต เดเดจเตเดฑเดฟเดฑเตเดฑเดฟเดเดณเต เดตเดฟเดตเดฐเดฟเดเตเดเต, เดเดตเดฏเดพเดฃเต: เดตเดฟเดจเตเดฏเดพเดธ, เดธเตเดตเดจเด ะธ เดคเตเดเดฐเตเด. เดจเดฎเตเดเตเดเต เดตเตเดฃเดฎเตเดเตเดเดฟเตฝ, เด เดตเดฏเต เดตเตเดฏเดคเตเดฏเดธเตเดค เดเดเดเดเตเดเดณเดฟเตฝ เดเตพเดชเตเดชเตเดเตเดคเตเดคเดพเด, เดเดจเตเดจเดพเตฝ เด เดเดเตเดเดคเตเดคเดฟเตฝ เดเดจเตเดจเต เดฎเดคเดฟเดฏเดพเดเตเด.
เดตเดพเดเตเดฏเดเดเดจ jsonnet เดธเดพเดงเดพเดฐเดฃ json-เดจเต เดตเดณเดฐเต เดธเดพเดฎเตเดฏเดฎเตเดฃเตเดเต, เดคเดคเตเดตเดคเตเดคเดฟเตฝ, เดธเดพเดงเดพเดฐเดฃ json เดเดคเดฟเดจเดเด เดคเดจเตเดจเต เดธเดพเดงเตเดตเดพเดฏ jsonnet เดเดฃเต, เด เดคเดฟเดจเดพเตฝ เดเดฆเตเดฏเด เดจเดฟเดเตเดเตพเดเตเดเต เดเดคเตเดชเตเดฒเตเดณเตเดณ เดเตบเดฒเตเตป เดธเตเดตเดจเดเตเดเตพ เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเดคเต เดเดณเตเดชเตเดชเดฎเดพเดฏเตเดเตเดเดพเด yaml2json เดจเดฟเดเตเดเดณเตเดเต เดธเดพเดงเดพเดฐเดฃ เดฏเดพเดฎเดฟเดจเต json เดเดเตเดเดฟ เดฎเดพเดฑเตเดฑเดพเตป, เด เดฒเตเดฒเตเดเตเดเดฟเตฝ, เดจเดฟเดเตเดเดณเตเดเต เดเดเดเดเตเดเดณเดฟเตฝ เดตเตเดฐเดฟเดฏเดฌเดฟเดณเตเดเดณเตเดจเตเดจเตเด เด เดเดเตเดเดฟเดฏเดฟเดเตเดเดฟเดฒเตเดฒเตเดเตเดเดฟเตฝ, เด เดต เดธเดพเดงเดพเดฐเดฃ เดฏเดพเดฎเดฟเดจเตเดฑเต เดฐเตเดชเดคเตเดคเดฟเตฝ เดตเดฟเดตเดฐเดฟเดเตเดเดพเด.
เดเตเดเต เดเตเดฒเดฟ เดเตเดฏเตเดฏเตเดฎเตเดชเตเตพ jsonnet เดจเดฟเดเตเดเดณเตเดเต เดเดกเดฟเดฑเตเดฑเดฑเดฟเดจเดพเดฏเดฟ เดเดฐเต เดชเตเดฒเดเดฟเตป เดเตปเดธเตเดฑเตเดฑเดพเตพ เดเตเดฏเตเดฏเดพเตป เดเดพเตป เดตเดณเดฐเต เดถเตเดชเดพเตผเดถ เดเตเดฏเตเดฏเตเดจเตเดจเต
เดเดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เดตเดฟเดฎเตเดฎเดฟเดจเดพเดฏเดฟ เดเดฐเต เดชเตเดฒเดเดฟเตป เดเดฃเตเดเต vim-jsonnet, เด เดคเต เดธเดฟเดจเตเดฑเดพเดเตเดธเต เดนเตเดฒเตเดฑเตเดฑเดฟเดเดเต เดเดฃเดพเดเตเดเดฟ เดธเตเดตเดฏเดฎเตเดต เดเดเตเดธเดฟเดเตเดฏเตเดเตเดเต เดเตเดฏเตเดฏเตเดจเตเดจเต jsonnet fmt เดจเดฟเดเตเดเตพ เดธเดเดฐเดเตเดทเดฟเดเตเดเตเดฎเตเดชเตเดดเตเดฒเตเดฒเดพเด (jsonnet เดเตปเดธเตเดฑเตเดฑเดพเตพ เดเตเดฏเตเดฏเตเดฃเตเดเดคเต เดเดตเดถเตเดฏเดฎเดพเดฃเต).
เดเดฒเตเดฒเดพเด เดคเดฏเตเดฏเดพเดฑเดพเดฃเต, เดเดชเตเดชเตเตพ เดจเดฎเตเดเตเดเต เดตเดฟเดจเตเดฏเดธเดฟเดเตเดเดพเตป เดคเตเดเดเตเดเดพเด:
เดจเดฎเตเดเตเดเต เดเดจเตเดคเดพเดฃเต เดฒเดญเดฟเดเตเดเดคเตเดจเตเดจเต เดเดพเดฃเดพเตป, เดจเดฎเตเดเตเดเต เดเดเดพเด:
qbec show default
เดเดเตเดเตโเดชเตเดเตเดเดฟเตฝ, เดธเตเดฅเดฟเดฐเดธเตเดฅเดฟเดคเดฟ เดเตเดฒเดธเตเดฑเตเดฑเดฑเดฟเดฒเตเดเตเดเต เดชเตเดฐเดฏเตเดเดฟเดเตเดเดชเตเดชเตเดเตเดจเตเดจ เดฑเตเตปเดกเตผ เดเตเดฏเตโเดค yaml เดฎเดพเดจเดฟเดซเตเดธเตเดฑเตเดฑเตเดเตพ เดจเดฟเดเตเดเตพ เดเดพเดฃเตเด.
เดเตเดณเตเดณเดพเด, เดเดชเตเดชเตเตพ เดชเตเดฐเดฏเตเดเดฟเดเตเดเตเด:
qbec apply default
เดเดเตเดเตโเดชเตเดเตเดเดฟเตฝ, เดจเดฟเดเตเดเดณเตเดเต เดเตเดฒเดธเตเดฑเตเดฑเดฑเดฟเตฝ เดเดจเตเดคเดพเดฃเต เดเตเดฏเตเดฏเตเดฃเตเดเดคเตเดจเตเดจเต เดจเดฟเดเตเดเตพ เดเดชเตเดชเตเดดเตเด เดเดพเดฃเตเด, เดเตเดชเตเดชเต เดเตเดฏเตเดคเตเดเตเดฃเตเดเต เดฎเดพเดฑเตเดฑเดเตเดเตพ เด เดเดเตเดเดฐเดฟเดเตเดเดพเตป qbec เดจเดฟเดเตเดเดณเตเดเต เดเดตเดถเตเดฏเดชเตเดชเตเดเตเด. y เดจเดฟเดเตเดเดณเตเดเต เดเดฆเตเดฆเตเดถเตเดฏเดเตเดเตพ เดธเตเดฅเดฟเดฐเตเดเดฐเดฟเดเตเดเดพเตป เดจเดฟเดเตเดเตพเดเตเดเต เดเดดเดฟเดฏเตเด.
เดเดเตเดเดณเตเดเต เดเดชเตเดฒเดฟเดเตเดเตเดทเตป เดคเดฏเตเดฏเดพเดฑเดพเดฃเต, เดตเดฟเดจเตเดฏเดธเดฟเดเตเดเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต!
เดจเดฟเดเตเดเตพ เดฎเดพเดฑเตเดฑเดเตเดเตพ เดตเดฐเตเดคเตเดคเตเดเดฏเดพเดฃเตเดเตเดเดฟเตฝ, เดจเดฟเดเตเดเตพเดเตเดเต เดเดฒเตเดฒเดพเดฏเตเดชเตเดชเตเดดเตเด เดเตเดฏเตเดฏเดพเตป เดเดดเดฟเดฏเตเด:
qbec diff default
เด เดฎเดพเดฑเตเดฑเดเตเดเตพ เดจเดฟเดฒเดตเดฟเดฒเต เดตเดฟเดจเตเดฏเดพเดธเดคเตเดคเต เดเดเตเดเดจเต เดฌเดพเดงเดฟเดเตเดเตเดฎเตเดจเตเดจเต เดเดพเดฃเดพเตป
เดเดเตเดเดณเตเดเต เดฎเดพเดฑเตเดฑเดเตเดเตพ เดตเดฐเตเดคเตเดคเดพเตป เดฎเดฑเดเตเดเดฐเตเดคเต:
cd ../..
git add deploy/website
git commit -m "Add deploy for website"
5. เดเตเดฌเตเตผเดจเตเดฑเตเดฑเดธเต เดเดเตเดธเดฟเดเตเดฏเตเดเตเดเดฑเดฟเดจเตเดชเตเดชเด เดเดฟเดฑเตเดฑเตโเดฒเดพเดฌเต-เดฑเดฃเตเดฃเตผ เดชเดฐเตเดเตเดทเดฟเดเตเดเตเดจเตเดจเต
เด เดเตเดคเตเดค เดเดพเดฒเด เดตเดฐเต เดเดพเตป เดธเดพเดงเดพเดฐเดฃ เดฎเดพเดคเตเดฐเดฎเต เดเดชเดฏเตเดเดฟเดเตเดเดฟเดฐเตเดจเตเดจเตเดณเตเดณเต เดเดฟเดฑเตเดฑเตเดฒเดพเดฌเต-เดฑเดฃเตเดฃเตผ เดทเตเตฝ เด เดฒเตเดฒเตเดเตเดเดฟเตฝ เดกเตเดเตเดเตผ เดเดเตเดธเดฟเดเตเดฏเตเดเตเดเตผ เดเดชเดฏเตเดเดฟเดเตเดเต เดฎเตเตปเดเตเดเตเดเดฟ เดคเดฏเตเดฏเดพเดฑเดพเดเตเดเดฟเดฏ เดฎเตเดทเตเดจเดฟเตฝ (LXC เดเดฃเตเดเตเดฏเตเดจเตผ). เดคเตเดเดเตเดเดคเตเดคเดฟเตฝ, เดเดเตเดเดณเตเดเต เดเดฟเดฑเตเดฑเตโเดฒเดพเดฌเดฟเตฝ เดเดเตเดณเดคเดฒเดคเตเดคเดฟเตฝ เดจเดฟเตผเดตเดเดฟเดเตเดเดชเตเดชเตเดเตเด เด เดคเตเดคเดฐเด เดจเดฟเดฐเดตเดงเดฟ เดเดเตเดเดเตเดเดพเตผ เดเดฃเตเดเดพเดฏเดฟเดฐเตเดจเตเดจเต. เดเดฒเตเดฒเดพ เดชเตเดฐเตเดเดเตเดเตเดเตพเดเตเดเตเดฎเดพเดฏเดฟ เด เดตเตผ เดกเตเดเตเดเตผ เดเดฟเดคเตเดฐเดเตเดเตพ เดถเตเดเดฐเดฟเดเตเดเต.
เดเดจเตเดจเดพเตฝ เดชเตเดฐเดพเดเตเดเตเดธเต เดเดพเดฃเดฟเดเตเดเดฟเดฐเดฟเดเตเดเตเดจเตเดจเดคเตเดชเตเดฒเต, เดชเตเดฐเดพเดฏเตเดเดฟเดเดคเดฏเตเดเตเดฏเตเด เดธเตเดฐเดเตเดทเดฏเตเดเตเดฏเตเด เดเดพเดฐเตเดฏเดคเตเดคเดฟเตฝ เด เดเดชเตเดทเตป เดเดฑเตเดฑเดตเตเด เด เดจเตเดฏเตเดเตเดฏเดฎเดฒเตเดฒ. เดเดฐเต เดชเตเดฐเตเดเดเตเดฑเตเดฑเดฟเดจเตเด เด เดฒเตเดฒเตเดเตเดเดฟเตฝ เดเดฐเต เดชเดฐเดฟเดคเดธเตเดฅเดฟเดคเดฟเดเตเดเตเด เดชเตเดฒเตเด เดชเตเดฐเดคเตเดฏเตเด เดฑเดฃเตเดฃเตเดดเตเดธเดฟเดจเต เดตเดฟเดจเตเดฏเดธเดฟเดเตเดเตเดจเตเดจเดคเต เดตเดณเดฐเต เดฎเดฟเดเดเตเดเดคเตเด เดชเตเดฐเดคเตเดฏเดฏเดถเดพเดธเตเดคเตเดฐเดชเดฐเดฎเดพเดฏเดฟ เดเตเดเตเดคเตฝ เดถเดฐเดฟเดฏเตเดฎเดพเดฃเต.
เดญเดพเดเตเดฏเดตเดถเดพเตฝ, เดเดคเต เดเดฐเต เดชเตเดฐเดถเตเดจเดฎเดฒเตเดฒ, เดเดพเดฐเดฃเด เดเดชเตเดชเตเตพ เดเดเตเดเตพ เดตเดฟเดจเตเดฏเดธเดฟเดเตเดเตเด เดเดฟเดฑเตเดฑเตเดฒเดพเดฌเต-เดฑเดฃเตเดฃเตผ เดเดเตเดเดณเตเดเต เดชเตเดฐเตเดเดเตเดฑเตเดฑเดฟเดจเตเดฑเต เดญเดพเดเดฎเดพเดฏเดฟ เดจเตเดฐเดฟเดเตเดเต เดเตเดฌเตผเดจเตเดฑเตเดฑเดธเดฟเตฝ.
เดเตเดฌเตผเดจเตเดฑเตเดฑเดธเดฟเดฒเตเดเตเดเต เดเดฟเดฑเตเดฑเตโเดฒเดพเดฌเต-เดฑเดฃเตเดฃเดฑเต เดตเดฟเดจเตเดฏเดธเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเต Gitlab เดเดฐเต เดฑเตเดกเดฟเดฎเตเดฏเตเดกเต เดนเตเตฝเด เดเดพเตผเดเตเดเต เดจเตฝเดเตเดจเตเดจเต. เด เดคเดฟเดจเดพเตฝ เดจเดฟเดเตเดเตพ เดเตเดฏเตเดฏเตเดฃเตเดเดคเต เดเดฒเตเดฒเดพเด เดเดฃเตเดเตเดคเตเดคเตเด เดเดจเตเดจเดคเดพเดฃเต เดฐเดเดฟเดธเตเดเตเดฐเตเดทเตป เดเตเดเตเดเตบ เดเดเตเดเดณเตเดเต เดชเตเดฐเตเดเดเตเดฑเตเดฑเดฟเดจเดพเดฏเดฟ เดเตเดฐเดฎเตเดเดฐเดฃเดเตเดเตพ -> CI / CD -> เดฑเดฃเตเดฃเดฑเตเดเตพ เด เดคเต เด เดงเดฟเดเดพเดฐเดคเตเดคเดฟเดจเต เดเตเดฎเดพเดฑเตเด:
helm repo add gitlab https://charts.gitlab.io
helm install gitlab-runner
--set gitlabUrl=https://gitlab.com
--set runnerRegistrationToken=yga8y-jdCusVDn_t4Wxc
--set rbac.create=true
gitlab/gitlab-runner
เดเดตเดฟเดเตเดฏเดพเดฃเต:
https://gitlab.com โ เดจเดฟเดเตเดเดณเตเดเต Gitlab เดธเตเตผเดตเดฑเดฟเดจเตเดฑเต เดตเดฟเดฒเดพเดธเด.- yga8y-jdCusVDn_t4Wxc - เดจเดฟเดเตเดเดณเตเดเต เดชเตเดฐเตเดเดเตเดฑเตเดฑเดฟเดจเดพเดฏเตเดณเตเดณ เดฐเดเดฟเดธเตเดเตเดฐเตเดทเตป เดเตเดเตเดเตบ.
- rbac.create=true - kubernetes-executor เดเดชเดฏเตเดเดฟเดเตเดเต เดเดเตเดเดณเตเดเต เดเดพเดธเตโเดเตเดเตเดเตพ เดจเดฟเตผเดตเดนเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเต เดชเตเดกเตเดเตพ เดธเตเดทเตโเดเดฟเดเตเดเดพเตป เดเดตเดถเตเดฏเดฎเดพเดฏ เดชเตเดฐเดคเตเดฏเตเดเดพเดตเดเดพเดถเดเตเดเตพ เดฑเดฃเตเดฃเดฑเดฟเดจเต เดจเตฝเดเตเดจเตเดจเต.
เดเดฒเตเดฒเดพเด เดถเดฐเดฟเดฏเดพเดฏเดฟ เดเตเดฏเตเดคเตเดตเตเดเตเดเดฟเตฝ, เดตเดฟเดญเดพเดเดคเตเดคเดฟเตฝ เดจเดฟเดเตเดเตพ เดเดฐเต เดฐเดเดฟเดธเตเดฑเตเดฑเตผ เดเตเดฏเตเดค เดฑเดฃเตเดฃเดฑเต เดเดพเดฃเดฃเด เดฑเดฃเตเดฃเตเดดเตเดธเต, เดจเดฟเดเตเดเดณเตเดเต เดชเตเดฐเตเดเดเตเดฑเตเดฑเต เดเตเดฐเดฎเตเดเดฐเดฃเดเตเดเดณเดฟเตฝ.
เดเตเตผเดคเตเดค เดฑเดฃเตเดฃเดฑเตเดเต เดธเตเดเตเดฐเตเตปเดทเตเดเตเดเต
เดเดคเต เด เดคเตเดฐ เดฒเดณเดฟเดคเดฎเดพเดฃเต? - เด เดคเต, เดเดคเต เดตเดณเดฐเต เดฒเดณเดฟเดคเดฎเดพเดฃเต! เดฑเดฃเตเดฃเตเดดเตโเดธเดฟเดจเต เดธเตเดตเดฎเตเดงเดฏเดพ เดฐเดเดฟเดธเตเดฑเตเดฑเตผ เดเตเดฏเตเดฏเตเดจเตเดจเดคเดฟเตฝ เดเตเดเตเดคเตฝ เดชเตเดฐเดถเตโเดจเดฎเดฟเดฒเตเดฒ, เดเดจเดฟ เดฎเตเดคเตฝ เดฑเดฃเตเดฃเตเดดเตโเดธเต เดธเตเดตเดฏเดฎเตเดต เดธเตเดทเตเดเดฟเดเตเดเดชเตเดชเตเดเตเดเดฏเตเด เดจเดถเดฟเดชเตเดชเดฟเดเตเดเดชเตเดชเตเดเตเดเดฏเตเด เดเตเดฏเตเดฏเตเด.
6. เดเตเดฏเตเดฌเดฟเดเดธเดฟเดฏเดฟเตฝ เดนเตเตฝเด เดเดพเตผเดเตเดเตเดเตพ เดตเดฟเดจเตเดฏเดธเดฟเดเตเดเตเด
เดเดเตเดเตพ เดชเดฐเดฟเดเดฃเดฟเดเตเดเดพเตป เดคเตเดฐเตเดฎเดพเดจเดฟเดเตเดเดคเดฟเดจเดพเตฝ เดเดฟเดฑเตเดฑเตเดฒเดพเดฌเต-เดฑเดฃเตเดฃเตผ เดเดเตเดเดณเตเดเต เดชเตเดฐเตเดเดเตเดฑเตเดฑเดฟเดจเตเดฑเต เดญเดพเดเด, เดเดเตเดเดณเตเดเต Git เดถเตเดเดฐเดคเตเดคเดฟเตฝ เดเดคเต เดตเดฟเดตเดฐเดฟเดเตเดเดพเดจเตเดณเตเดณ เดธเดฎเดฏเดฎเดพเดฃเดฟเดคเต.
เดจเดฎเตเดเตเดเต เด เดคเดฟเดจเต เดเดฐเต เดชเตเดฐเดคเตเดฏเตเด เดเดเดเดฎเดพเดฏเดฟ เดตเดฟเดถเตเดทเดฟเดชเตเดชเดฟเดเตเดเดพเด เดตเตเดฌเตเดธเตเดฑเตเดฑเต, เดเดจเตเดจเดพเตฝ เดญเดพเดตเดฟเดฏเดฟเตฝ เดตเตเดฏเดคเตเดฏเดธเตเดค เดชเดเตผเดชเตเดชเตเดเตพ เดตเดฟเดจเตเดฏเดธเดฟเดเตเดเดพเตป เดเดเตเดเตพ เดชเดฆเตเดงเดคเดฟเดฏเดฟเดเตเดจเตเดจเต เดตเตเดฌเตเดธเตเดฑเตเดฑเต เดชเดฒเดชเตเดชเตเดดเตเด, เดตเตเดฏเดคเตเดฏเดธเตเดคเดฎเดพเดฏเดฟ เดเดฟเดฑเตเดฑเตเดฒเดพเดฌเต-เดฑเดฃเตเดฃเตผ, เดเดฐเต เดเตเดฌเตผเดจเตเดฑเตเดฑเดธเต เดเตเดฒเดธเตเดฑเตเดฑเดฑเดฟเดจเตเด เดเดฐเดฟเดเตเดเตฝ เดฎเดพเดคเตเดฐเด เดตเดฟเดจเตเดฏเดธเดฟเดเตเดเดชเตเดชเตเดเตเด. เด เดคเดฟเดจเดพเตฝ, เด เดคเดฟเดจเดพเดฏเดฟ เดเดฐเต เดชเตเดฐเดคเตเดฏเตเด เดเดชเตเดฒเดฟเดเตเดเตเดทเตป เดเดฐเดเดญเดฟเดเตเดเดพเด:
cd deploy
qbec init gitlab-runner
cd gitlab-runner
เดเดคเตเดคเดตเดฃ เดเดเตเดเตพ เดเตเดฌเตผเดจเตเดฑเตเดฑเดธเต เดเดจเตเดฑเดฟเดฑเตเดฑเดฟเดเดณเต เดธเตเดตเดฎเตเดงเดฏเดพ เดตเดฟเดตเดฐเดฟเดเตเดเตเดจเตเดจเดฟเดฒเตเดฒ, เดฎเดฑเดฟเดเตเดเต เดเดฐเต เดฑเตเดกเดฟเดฎเตเดฏเตเดกเต เดนเตเตฝเด เดเดพเตผเดเตเดเต เดเดเตเดเตเดเตเด. เดเดฐเต Git เดฑเดฟเดชเตเดชเตเดธเดฟเดฑเตเดฑเดฑเดฟเดฏเดฟเตฝ เดจเดฟเดจเตเดจเต เดจเตเดฐเดฟเดเตเดเต เดนเตเตฝเด เดเดพเตผเดเตเดเตเดเตพ เดฑเตเตปเดกเตผ เดเตเดฏเตเดฏเดพเดจเตเดณเตเดณ เดเดดเดฟเดตเดพเดฃเต qbec-เดจเตเดฑเต เดเดฐเต เดเตเดฃเด.
เดเดฟเดฑเตเดฑเต เดธเดฌเตเดฎเตเดกเตเดฏเตเตพ เดเดชเดฏเตเดเดฟเดเตเดเต เดจเดฎเตเดเตเดเต เดเดคเต เดฌเดจเตเดงเดฟเดชเตเดชเดฟเดเตเดเดพเด:
git submodule add https://gitlab.com/gitlab-org/charts/gitlab-runner vendor/gitlab-runner
เดเดชเตเดชเตเตพ เดกเดฏเดฑเดเตเดเดฑเดฟ เดตเตเดฃเตเดเตผ/เดเดฟเดฑเตเดฑเตเดฒเดพเดฌเต-เดฑเดฃเตเดฃเตผ เดเดฟเดฑเตเดฑเตโเดฒเดพเดฌเต-เดฑเดฃเตเดฃเดฑเดฟเดจเดพเดฏเดฟ เดเดฐเต เดเดพเตผเดเตเดเต เดเดณเตเดณ เดเดฐเต เดถเตเดเดฐเด เดเดเตเดเดณเตเดเต เดชเดเตเดเดฒเตเดฃเตเดเต.
เดธเดฎเดพเดจเดฎเดพเดฏ เดฐเตเดคเดฟเดฏเดฟเตฝ, เดจเดฟเดเตเดเตพเดเตเดเต เดฎเดฑเตเดฑเต เดฑเดฟเดชเตเดชเตเดธเดฟเดฑเตเดฑเดฑเดฟเดเตพ เดฌเดจเตเดงเดฟเดชเตเดชเดฟเดเตเดเดพเตป เดเดดเดฟเดฏเตเด, เดเดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เดเดฆเตเดฏเตเดเดฟเด เดเดพเตผเดเตเดเตเดเตพ เดเดชเดฏเตเดเดฟเดเตเดเต เดฎเตเดดเตเดตเตป เดถเตเดเดฐเดฃเดตเตเด
https://github.com/helm/charts
เดเดเดเด เดตเดฟเดตเดฐเดฟเดเตเดเดพเด เดเดเดเดเตเดเตพ/gitlab-runner.jsonnet:
local env = {
name: std.extVar('qbec.io/env'),
namespace: std.extVar('qbec.io/defaultNs'),
};
local p = import '../params.libsonnet';
local params = p.components.gitlabRunner;
std.native('expandHelmTemplate')(
'../vendor/gitlab-runner',
params.values,
{
nameTemplate: params.name,
namespace: env.namespace,
thisFile: std.thisFile,
verbose: true,
}
)
เดเดฆเตเดฏ เดตเดพเดฆเด ExpandHelmTemplate เดเดเตเดเตพ เดเดพเตผเดเตเดเดฟเดฒเตเดเตเดเตเดณเตเดณ เดชเดพเดค เดเดเดจเตเดจเตเดชเตเดเตเดจเตเดจเต, เดคเตเดเตผเดจเตเดจเต params.values, เดชเดฐเดฟเดธเตเดฅเดฟเดคเดฟ เดชเดพเดฐเดพเดฎเตเดฑเตเดฑเดฑเตเดเดณเดฟเตฝ เดจเดฟเดจเตเดจเต เดจเดฎเตเดฎเตพ เดเดเตเดเตเดเตเดจเตเดจ, เดคเตเดเตผเดจเตเดจเต เดเดฌเตเดเดเตเดฑเตเดฑเต เดตเดฐเตเดจเตเดจเต
- เดชเตเดฐเต เดเตเดเดชเตเดฒเตเดฑเตเดฑเต - เดฑเดฟเดฒเตเดธเต เดชเตเดฐเต
- เดจเตเดฏเดฟเดเดธเตเดชเตเดธเต - เดจเตเดฏเดฟเดเดธเตเดชเตเดธเต เดนเตเตฝเดฎเดฟเดฒเตเดเตเดเต เดฎเดพเดฑเตเดฑเดฟ
- เด เดซเดฏเตฝ โ เดจเดฟเดฒเดตเดฟเดฒเตเดณเตเดณ เดซเดฏเดฒเดฟเดฒเตเดเตเดเตเดณเตเดณ เดชเดพเดค เดเดเดจเตเดจเตเดชเตเดเตเดจเตเดจ เดเดฐเต เดเดตเดถเตเดฏเดฎเดพเดฏ เดชเดฐเดพเดฎเตเดฑเตเดฑเตผ
- เดตเตเตผเดฌเตเดธเต - เดเดฎเดพเตปเดกเต เดเดพเดฃเดฟเดเตเดเตเดจเตเดจเต เดนเตเตฝเด เดเตเดเดชเตเดฒเตเดฑเตเดฑเต เดเดพเตผเดเตเดเต เดฑเตเตปเดกเตผ เดเตเดฏเตเดฏเตเดฎเตเดชเตเตพ เดเดฒเตเดฒเดพ เดเตผเดเตเดฏเตเดฎเตเดจเตเดฑเตเดเดณเตเดเตเด เดเตเดเดฟ
เดเดจเดฟ เดจเดฎเตเดฎเตเดเต เดเดเดเดคเตเดคเดฟเดจเดพเดฏเตเดณเตเดณ เดชเดฐเดพเดฎเตเดฑเตเดฑเดฑเตเดเตพ เดตเดฟเดตเดฐเดฟเดเตเดเดพเด เดชเดฐเดฟเดคเดธเตเดฅเดฟเดคเดฟเดเตพ/base.libsonnet:
local secrets = import '../secrets/base.libsonnet';
{
components: {
gitlabRunner: {
name: 'gitlab-runner',
values: {
gitlabUrl: 'https://gitlab.com/',
rbac: {
create: true,
},
runnerRegistrationToken: secrets.runnerRegistrationToken,
},
},
},
}
เดถเตเดฐเดฆเตเดงเดฟเดเตเดเตเด เดฑเดฃเตเดฃเตผ เดฐเดเดฟเดธเตเดเตเดฐเตเดทเตป เดเตเดเตเดเตบ เดเดเตเดเตพ เดเดฐเต เดฌเดพเดนเตเดฏ เดซเดฏเดฒเดฟเตฝ เดจเดฟเดจเตเดจเต เดเดเตเดเตเดเตเดจเตเดจเต เดฐเดนเดธเตเดฏเดเตเดเตพ/base.libsonnet, เดจเดฎเตเดเตเดเต เดเดคเต เดธเตเดทเตเดเดฟเดเตเดเดพเด:
{
runnerRegistrationToken: 'yga8y-jdCusVDn_t4Wxc',
}
เดเดฒเตเดฒเดพเด เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเดจเตเดจเตเดฃเตเดเตเดฏเตเดจเตเดจเต เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเดพเด:
qbec show default
เดเดฒเตเดฒเดพเด เดเตเดฐเดฎเดคเตเดคเดฟเดฒเดพเดฃเตเดเตเดเดฟเตฝ, เดนเตเตฝเด เดตเดดเดฟ เดเดเตเดเตพ เดฎเตเดฎเตเดชเต เดตเดฟเดจเตเดฏเดธเดฟเดเตเด เดฑเดฟเดฒเตเดธเต เดเดฒเตเดฒเดพเดคเดพเดเตเดเดพเด:
helm uninstall gitlab-runner
เด เดคเต เด เดคเต เดฐเตเดคเดฟเดฏเดฟเตฝ เดตเดฟเดจเตเดฏเดธเดฟเดเตเดเตเด, เดเดจเตเดจเดพเตฝ qbec เดตเดดเดฟ:
qbec apply default
7. เดเดฟเดฑเตเดฑเต-เดเตเดฐเดฟเดชเตเดฑเตเดฑเดฟเดฒเตเดเตเดเตเดณเตเดณ เดเดฎเตเดเด
เดเดชเตเดชเตเตพ, gitlab-runner-เดจเตเดณเตเดณ เดเดเตเดเดณเตเดเต เดกเดฏเดฑเดเตเดเดฑเดฟ เดเดเดจ เดเดคเตเดชเตเดฒเต เดเดพเดฃเดชเตเดชเตเดเตเดจเตเดจเต:
.
โโโ components
โ โโโ gitlab-runner.jsonnet
โโโ environments
โ โโโ base.libsonnet
โ โโโ default.libsonnet
โโโ params.libsonnet
โโโ qbec.yaml
โโโ secrets
โ โโโ base.libsonnet
โโโ vendor
โโโ gitlab-runner (submodule)
เดเดจเตเดจเดพเตฝ Git-เตฝ เดฐเดนเดธเตเดฏเดเตเดเตพ เดธเตเดเตเดทเดฟเดเตเดเตเดจเตเดจเดคเต เดธเตเดฐเดเตเดทเดฟเดคเดฎเดฒเตเดฒ, เด เดฒเตเดฒเต? เด เดคเดฟเดจเดพเตฝ เดจเดฎเตเดฎเตพ เด เดตเดฏเต เดถเดฐเดฟเดฏเดพเดฏเดฟ เดเตปเดเตเดฐเดฟเดชเตเดฑเตเดฑเต เดเตเดฏเตเดฏเตเดฃเตเดเดคเตเดฃเตเดเต.
เดธเดพเดงเดพเดฐเดฃเดฏเดพเดฏเดฟ, เดเดฐเต เดตเตเดฐเดฟเดฏเดฌเดฟเดณเดฟเดจเต เดตเตเดฃเตเดเดฟ, เดเดคเต เดเดฒเตเดฒเดพเดฏเตเดชเตเดชเตเดดเตเด เด เตผเดคเตเดฅเดฎเดพเดเตเดเตเดจเตเดจเดฟเดฒเตเดฒ. เดจเดฟเดเตเดเตพเดเตเดเต เดฐเดนเดธเตเดฏเดเตเดเตพ เดเตเดฎเดพเดฑเดพเตป เดเดดเดฟเดฏเตเด qbec เดจเดฟเดเตเดเดณเตเดเต CI เดธเดฟเดธเตเดฑเตเดฑเดคเตเดคเดฟเดจเตเดฑเต เดชเดฐเดฟเดธเตเดฅเดฟเดคเดฟ เดตเตเดฐเดฟเดฏเดฌเดฟเดณเตเดเตพ เดตเดดเดฟเดฏเตเด.
เดเดจเตเดจเดพเตฝ เดเตเดเตเดคเตฝ เดฐเดนเดธเตเดฏเดเตเดเตพ เดเตพเดเตเดเตเดณเตเดณเดพเตป เดเดดเดฟเดฏเตเดจเตเดจ เดเตเดเตเดคเตฝ เดธเดเตเดเตเตผเดฃเตเดฃเดฎเดพเดฏ เดชเตเดฐเตเดเดเตเดเตเดเดณเตเด เดเดฃเตเดเตเดจเตเดจเดคเต เดถเตเดฐเดฆเตเดงเดฟเดเตเดเตเดฃเตเดเดคเดพเดฃเต; เดชเดฐเดฟเดธเตเดฅเดฟเดคเดฟ เดตเตเดฐเดฟเดฏเดฌเดฟเดณเตเดเดณเดฟเดฒเตเดเต เด เดตเดฏเตเดฒเตเดฒเดพเด เดเตเดฎเดพเดฑเตเดจเตเดจเดคเต เดตเดณเดฐเต เดฌเตเดฆเตเดงเดฟเดฎเตเดเตเดเดพเดฏเดฟเดฐเดฟเดเตเดเตเด.เดฎเดพเดคเตเดฐเดฎเดฒเตเดฒ, เด เดธเดพเดนเดเดฐเตเดฏเดคเตเดคเดฟเตฝ เด เดคเตเดคเดฐเดฎเตเดฐเต เด เดคเตเดญเตเดคเดเดฐเดฎเดพเดฏ เดเดชเดเดฐเดฃเดคเตเดคเตเดเตเดเตเดฑเดฟเดเตเดเต เดเดจเดฟเดเตเดเต เดจเดฟเดเตเดเดณเตเดเต เดชเดฑเดฏเดพเตป เดเดดเดฟเดฏเดฟเดฒเตเดฒ git-crypt.
git-crypt เดฐเดนเดธเตเดฏเดเตเดเดณเตเดเต เดฎเตเดดเตเดตเตป เดเดฐเดฟเดคเตเดฐเดตเตเด เดธเดเดฐเดเตเดทเดฟเดเตเดเดพเดจเตเด เด เดคเตเดชเตเดฒเต เดคเดจเตเดจเต Git-เดจเตเดฑเต เดเดพเดฐเตเดฏเดคเตเดคเดฟเตฝ เดเดเตเดเตพ เดเตเดฏเตเดฏเตเดจเตเดจเดคเต เดชเตเดฒเต เดคเดจเตเดจเต เดชเตเดฐเตเดคเตเดคเดเตเดเตเดเตเดเตพ เดคเดพเดฐเดคเดฎเตเดฏเด เดเตเดฏเตเดฏเดพเดจเตเด เดฒเดฏเดฟเดชเตเดชเดฟเดเตเดเดพเดจเตเด เดชเดฐเดฟเดนเดฐเดฟเดเตเดเดพเดจเตเด เดเดคเต เดจเดฟเดเตเดเดณเต เด เดจเตเดตเดฆเดฟเดเตเดเตเดจเตเดจเต เดเดจเตเดจเดคเตเด เดธเตเดเดฐเตเดฏเดชเตเดฐเดฆเดฎเดพเดฃเต.
เดเตปเดธเตเดฑเตเดฑเดพเดณเตเดทเดจเต เดถเตเดทเด เดเดฆเตเดฏ เดเดพเดฐเตเดฏเด git-crypt เดเดเตเดเดณเตเดเต เดถเตเดเดฐเดฃเดคเตเดคเดฟเดจเดพเดฏเดฟ เดเตเดเตพ เดธเตเดทเตเดเดฟเดเตเดเตเดฃเตเดเดคเตเดฃเตเดเต:
git crypt init
เดจเดฟเดเตเดเตพเดเตเดเต เดเดฐเต PGP เดเต เดเดฃเตเดเตเดเตเดเดฟเตฝ, เด เดชเตเดฐเตเดเดเตเดฑเตเดฑเดฟเดจเตเดฑเต เดธเดนเดเดพเดฐเดฟเดฏเดพเดฏเดฟ เดเดเตป เดคเดจเตเดจเต เดจเดฟเดเตเดเตพเดเตเดเต เดธเตเดตเดฏเด เดเตเตผเดเตเดเดพเดตเตเดจเตเดจเดคเดพเดฃเต:
git-crypt add-gpg-user [email protected]
เดเดคเตเดตเดดเดฟ เดจเดฟเดเตเดเดณเตเดเต เดธเตเดตเดเดพเดฐเตเดฏ เดเต เดเดชเดฏเตเดเดฟเดเตเดเต เดจเดฟเดเตเดเตพเดเตเดเต เดเดฒเตเดฒเดพเดฏเตเดชเตเดชเตเดดเตเด เด เดถเตเดเดฐเด เดกเตเดเตเดฐเดฟเดชเตเดฑเตเดฑเต เดเตเดฏเตเดฏเดพเด.
เดจเดฟเดเตเดเตพเดเตเดเต เดเดฐเต PGP เดเต เดเดฒเตเดฒเตเดเตเดเดฟเตฝ เด เดคเต เดชเตเดฐเดคเตเดเตเดทเดฟเดเตเดเตเดจเตเดจเดฟเดฒเตเดฒเตเดเตเดเดฟเตฝ, เดจเดฟเดเตเดเตพเดเตเดเต เดฎเดฑเตเดฑเตเดฐเต เดตเดดเดฟเดเตเดเต เดชเตเดฏเดฟ เดชเตเดฐเตเดเดเตเดฑเตเดฑเต เดเต เดเดฏเดฑเตเดฑเตเดฎเดคเดฟ เดเตเดฏเตเดฏเดพเด:
git crypt export-key /path/to/keyfile
เด เดเตเดเดจเต, เดเดฐเต เดเดฏเดฑเตเดฑเตเดฎเดคเดฟ เดเดณเตเดณ เดเตผเดเตเดเตเด เดเตเดซเดฏเตฝ เดจเดฟเดเตเดเดณเตเดเต เดฑเดฟเดชเตเดชเตเดธเดฟเดฑเตเดฑเดฑเดฟ เดกเตเดเตเดฐเดฟเดชเตเดฑเตเดฑเต เดเตเดฏเตเดฏเดพเตป เดเดดเดฟเดฏเตเด.
เดเดเตเดเดณเตเดเต เดเดฆเตเดฏ เดฐเดนเดธเตเดฏเด เดธเตเดฅเดพเดชเดฟเดเตเดเดพเดจเตเดณเตเดณ เดธเดฎเดฏเดฎเดพเดฃเดฟเดคเต.
เดเดเตเดเตพ เดเดชเตเดชเตเดดเตเด เดกเดฏเดฑเดเตเดเดฑเดฟเดฏเดฟเดฒเดพเดฃเตเดจเตเดจเต เดเดพเตป เดจเดฟเดเตเดเดณเต เดเตผเดฎเตเดฎเดฟเดชเตเดชเดฟเดเตเดเดเตเดเต เดตเดฟเดจเตเดฏเดธเดฟเดเตเดเตเด/gitlab-runner/, เดเดตเดฟเดเต เดจเดฎเตเดเตเดเต เดเดฐเต เดกเดฏเดฑเดเตเดเดฑเดฟ เดเดฃเตเดเต เดฐเดนเดธเตเดฏเดเตเดเตพ/, เด
เดคเดฟเดฒเต เดเดฒเตเดฒเดพ เดซเดฏเดฒเตเดเดณเตเด เดเตปเดเตเดฐเดฟเดชเตเดฑเตเดฑเต เดเตเดฏเตเดฏเดพเด, เดเดคเดฟเดจเดพเดฏเดฟ เดจเดฎเตเดฎเตพ เดเดฐเต เดซเดฏเตฝ เดเดฃเตเดเดพเดเตเดเตเด เดฐเดนเดธเตเดฏเดเตเดเตพ/.เดเดฟเดฑเตเดฑเดพเดเตเดฐเดฟเดฌเตเดฏเตเดเตเดเตเดเตพ เดเดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เดเดณเตเดณเดเดเตเดเดคเตเดคเตเดเตเดชเตเดชเด:
* filter=git-crypt diff=git-crypt
.gitattributes !filter !diff
เดเดณเตเดณเดเดเตเดเดคเตเดคเดฟเตฝ เดจเดฟเดจเตเดจเต เดเดพเดฃเดพเตป เดเดดเดฟเดฏเตเดจเตเดจเดคเตเดชเตเดฒเต, เดเดฒเตเดฒเดพ เดซเดฏเดฒเตเดเดณเตเด เดฎเดพเดธเตเดเต เดเตเดฏเตเดคเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต * เดตเดดเดฟ เดจเดฏเดฟเดเตเดเดชเตเดชเตเดเตเด git-crypt, เดเดฑเตเดฑเดตเตเด เดเดดเดฟเดเต .gitatributes
เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเดเตเดเตเดจเตเดจเดคเดฟเดฒเตเดเต เดจเดฎเตเดเตเดเต เดเดคเต เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเดพเด:
git crypt status -e
เดเตปเดเตเดฐเดฟเดชเตเดทเตป เดชเตเดฐเดตเตผเดคเตเดคเดจเดเตเดทเดฎเดฎเดพเดเตเดเดฟเดฏเดฟเดเตเดเตเดณเตเดณ เดฑเดฟเดชเตเดชเตเดธเดฟเดฑเตเดฑเดฑเดฟเดฏเดฟเดฒเต เดเดฒเตเดฒเดพ เดซเดฏเดฒเตเดเดณเตเดเตเดฏเตเด เดเดฐเต เดฒเดฟเดธเตเดฑเตเดฑเต เดเดฏเดฟเดฐเดฟเดเตเดเตเด เดเดเตเดเตเดชเตเดเตเดเต
เด เดคเตเดฐเดฏเตเดฏเตเดณเตเดณเต, เดเดชเตเดชเตเตพ เดเดเตเดเตพเดเตเดเต เดเดเตเดเดณเตเดเต เดฎเดพเดฑเตเดฑเดเตเดเตพ เดธเตเดฐเดเตเดทเดฟเดคเดฎเดพเดฏเดฟ เดเตเดฏเตเดฏเดพเตป เดเดดเดฟเดฏเตเด:
cd ../..
git add .
git commit -m "Add deploy for gitlab-runner"
เดเดฐเต เดถเตเดเดฐเด เดคเดเดฏเดพเตป, เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเดเตเดเตเด:
git crypt lock
เดเดเตป เดคเดจเตเดจเต เดเดฒเตเดฒเดพ เดเตปเดเตเดฐเดฟเดชเตเดฑเตเดฑเต เดเตเดฏเตเดค เดซเดฏเดฒเตเดเดณเตเด เดฌเตเดจเดฑเดฟ เดเดฏเดฟ เดฎเดพเดฑเตเด, เด
เดต เดตเดพเดฏเดฟเดเตเดเตเดจเตเดจเดคเต เด
เดธเดพเดงเตเดฏเดฎเดพเดฏเดฟเดฐเดฟเดเตเดเตเด.
เดถเตเดเดฐเด เดกเตเดเตเดฐเดฟเดชเตเดฑเตเดฑเต เดเตเดฏเตเดฏเดพเตป, เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเดเตเดเตเด:
git crypt unlock
8. เดเดฐเต เดเตเตพเดฌเตเดเตเดธเต เดเดฎเตเดเต เดธเตเดทเตเดเดฟเดเตเดเตเด
เดเตเตพเดฌเตเดเตเดธเต เดเดฎเตเดเต เดเดจเตเดจเดคเต เดเดเตเดเดณเตเดเต เดชเตเดฐเตเดเดเตเดฑเตเดฑเต เดตเดฟเดจเตเดฏเดธเดฟเดเตเดเดพเตป เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจ เดเดฒเตเดฒเดพ เดเตเดณเตเดเดณเตเดฎเตเดณเตเดณ เดเดฐเต เดเดฟเดคเตเดฐเดฎเดพเดฃเต. เดธเดพเดงเดพเดฐเดฃ เดตเดฟเดจเตเดฏเดพเดธ เดเตเดฒเดฟเดเตพ เดเตเดฏเตเดฏเดพเตป Gitlab เดฑเดฃเตเดฃเตผ เดเดคเต เดเดชเดฏเตเดเดฟเดเตเดเตเด.
เดเดตเดฟเดเต เดเดฒเตเดฒเดพเด เดฒเดณเดฟเดคเดฎเดพเดฃเต, เดจเดฎเตเดเตเดเต เดชเตเดคเดฟเดฏเตเดฐเตเดฃเตเดฃเด เดธเตเดทเตเดเดฟเดเตเดเดพเด dockerfiles/เดเตเตพเดฌเตเดเตเดธเต/Dockerfile เดเดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เดเดณเตเดณเดเดเตเดเดคเตเดคเตเดเตเดชเตเดชเด:
FROM alpine:3.11
RUN apk add --no-cache git git-crypt
RUN QBEC_VER=0.10.3
&& wget -O- https://github.com/splunk/qbec/releases/download/v${QBEC_VER}/qbec-linux-amd64.tar.gz
| tar -C /tmp -xzf -
&& mv /tmp/qbec /tmp/jsonnet-qbec /usr/local/bin/
RUN KUBECTL_VER=1.17.0
&& wget -O /usr/local/bin/kubectl
https://storage.googleapis.com/kubernetes-release/release/v${KUBECTL_VER}/bin/linux/amd64/kubectl
&& chmod +x /usr/local/bin/kubectl
RUN HELM_VER=3.0.2
&& wget -O- https://get.helm.sh/helm-v${HELM_VER}-linux-amd64.tar.gz
| tar -C /tmp -zxf -
&& mv /tmp/linux-amd64/helm /usr/local/bin/helm
เดจเดฟเดเตเดเตพเดเตเดเต เดเดพเดฃเดพเดจเดพเดเตเดจเตเดจเดคเตเดชเตเดฒเต, เด เดเดฟเดคเตเดฐเดคเตเดคเดฟเตฝ เดเดเตเดเดณเตเดเต เดเดชเตเดฒเดฟเดเตเดเตเดทเตป เดตเดฟเดจเตเดฏเดธเดฟเดเตเดเดพเตป เดเดเตเดเตพ เดเดชเดฏเตเดเดฟเดเตเด เดเดฒเตเดฒเดพ เดฏเตเดเตเดเดฟเดฒเดฟเดฑเตเดฑเดฟเดเดณเตเด เดเดเตเดเตพ เดเตปเดธเตเดฑเตเดฑเดพเตพ เดเตเดฏเตเดฏเตเดจเตเดจเต. เด เดฒเตเดฒเดพเดคเต เดจเดฎเตเดเตเดเต เด เดคเต เดเดตเดฟเดเต เดเดตเดถเตเดฏเดฎเดฟเดฒเตเดฒ เดเตเดฌเตเดเตเดฒเดฟ, เดเดจเตเดจเดพเตฝ เดชเตเดชเตเดชเต เดฒเตเตป เดธเดเตเดเตเดเดฐเดฃ เดเดเตเดเดคเตเดคเดฟเตฝ เดจเดฟเดเตเดเตพ เดเดคเต เดเดชเดฏเตเดเดฟเดเตเดเต เดเดณเดฟเดเตเดเดพเตป เดเดเตเดฐเดนเดฟเดเตเดเตเดเตเดเดพเด.
เดเตเดเดพเดคเต, Kubernetes-เดฎเดพเดฏเดฟ เดเดถเดฏเดตเดฟเดจเดฟเดฎเดฏเด เดจเดเดคเตเดคเดพเดจเตเด เด เดคเดฟเดฒเตเดเตเดเต เดตเดฟเดจเตเดฏเดธเดฟเดเตเดเดพเดจเตเด เดเดดเดฟเดฏเตเดจเตเดจเดคเดฟเดจเต, gitlab-runner เดธเตเดทเตเดเดฟเดเตเดเตเดจเตเดจ เดชเตเดกเตเดเตพเดเตเดเดพเดฏเดฟ เดเดเตเดเตพ เดเดฐเต เดฑเตเตพ เดเตเตบเดซเดฟเดเตผ เดเตเดฏเตเดฏเตเดฃเตเดเดคเตเดฃเตเดเต.
เดเดคเต เดเตเดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต, เดจเดฎเตเดเตเดเต gitlab-runner เดเดณเตเดณ เดกเดฏเดฑเดเตเดเดฑเดฟเดฏเดฟเดฒเตเดเตเดเต เดชเตเดเดพเด:
cd deploy/gitlab-runner
เดเตเดเดพเดคเต เดเดฐเต เดชเตเดคเดฟเดฏ เดเดเดเด เดเตเตผเดเตเดเตเด เดเดเดเดเตเดเตพ/rbac.jsonnet:
local env = {
name: std.extVar('qbec.io/env'),
namespace: std.extVar('qbec.io/defaultNs'),
};
local p = import '../params.libsonnet';
local params = p.components.rbac;
[
{
apiVersion: 'v1',
kind: 'ServiceAccount',
metadata: {
labels: {
app: params.name,
},
name: params.name,
},
},
{
apiVersion: 'rbac.authorization.k8s.io/v1',
kind: 'Role',
metadata: {
labels: {
app: params.name,
},
name: params.name,
},
rules: [
{
apiGroups: [
'*',
],
resources: [
'*',
],
verbs: [
'*',
],
},
],
},
{
apiVersion: 'rbac.authorization.k8s.io/v1',
kind: 'RoleBinding',
metadata: {
labels: {
app: params.name,
},
name: params.name,
},
roleRef: {
apiGroup: 'rbac.authorization.k8s.io',
kind: 'Role',
name: params.name,
},
subjects: [
{
kind: 'ServiceAccount',
name: params.name,
namespace: env.namespace,
},
],
},
]
เดชเตเดคเดฟเดฏ เดชเดพเดฐเดพเดฎเตเดฑเตเดฑเดฑเตเดเดณเตเด เดเดเตเดเตพ เดตเดฟเดตเดฐเดฟเดเตเดเตเด เดชเดฐเดฟเดคเดธเตเดฅเดฟเดคเดฟเดเตพ/base.libsonnet, เดเดชเตเดชเตเตพ เดเดคเตเดชเตเดฒเต เดเดพเดฃเดชเตเดชเตเดเตเดจเตเดจเต:
local secrets = import '../secrets/base.libsonnet';
{
components: {
gitlabRunner: {
name: 'gitlab-runner',
values: {
gitlabUrl: 'https://gitlab.com/',
rbac: {
create: true,
},
runnerRegistrationToken: secrets.runnerRegistrationToken,
runners: {
serviceAccountName: $.components.rbac.name,
image: 'registry.gitlab.com/kvaps/docs.example.org/toolbox:v0.0.1',
},
},
},
rbac: {
name: 'gitlab-runner-deploy',
},
},
}
เดถเตเดฐเดฆเตเดงเดฟเดเตเดเตเด $.components.rbac.name เดธเตเดเดฟเดชเตเดชเดฟเดเตเดเตเดจเตเดจเต เดชเตเดฐเต เดเดเดเดคเตเดคเดฟเดจเต rbac
เดเดจเตเดคเดพเดฃเต เดฎเดพเดฑเดฟเดฏเดคเตเดจเตเดจเต เดจเดฎเตเดเตเดเต เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเดพเด:
qbec diff default
เดเดเตเดเดณเตเดเต เดฎเดพเดฑเตเดฑเดเตเดเตพ เดเตเดฌเตผเดจเตเดฑเตเดฑเตเดเดณเดฟเตฝ เดชเตเดฐเดฏเตเดเดฟเดเตเดเตเด:
qbec apply default
เดเตเดเดพเดคเต, git-เตฝ เดเดเตเดเดณเตเดเต เดฎเดพเดฑเตเดฑเดเตเดเตพ เดตเดฐเตเดคเตเดคเดพเตป เดฎเดฑเดเตเดเดฐเตเดคเต:
cd ../..
git add dockerfiles/toolbox
git commit -m "Add Dockerfile for toolbox"
git add deploy/gitlab-runner
git commit -m "Configure gitlab-runner to use toolbox"
9. เดเดเตเดเดณเตเดเต เดเดฆเตเดฏ เดชเตเดชเตเดชเต เดฒเตเดจเตเด เดเดพเดเตเดเตพ เดตเดดเดฟเดฏเตเดณเตเดณ เดเดฟเดคเตเดฐเดเตเดเดณเตเดเต เด
เดธเดเดฌเตเดฒเดฟเดฏเตเด
เดชเตเดฐเตเดเดเตเดฑเตเดฑเดฟเดจเตเดฑเต เดฑเตเดเตเดเดฟเตฝ เดเดเตเดเตพ เดธเตเดทเตเดเดฟเดเตเดเตเด .gitlab-ci.yml เดเดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เดเดณเตเดณเดเดเตเดเดคเตเดคเตเดเตเดชเตเดชเด:
.build_docker_image:
stage: build
image:
name: gcr.io/kaniko-project/executor:debug-v0.15.0
entrypoint: [""]
before_script:
- echo "{"auths":{"$CI_REGISTRY":{"username":"$CI_REGISTRY_USER","password":"$CI_REGISTRY_PASSWORD"}}}" > /kaniko/.docker/config.json
build_toolbox:
extends: .build_docker_image
script:
- /kaniko/executor --cache --context $CI_PROJECT_DIR/dockerfiles/toolbox --dockerfile $CI_PROJECT_DIR/dockerfiles/toolbox/Dockerfile --destination $CI_REGISTRY_IMAGE/toolbox:$CI_COMMIT_TAG
only:
refs:
- tags
build_website:
extends: .build_docker_image
variables:
GIT_SUBMODULE_STRATEGY: normal
script:
- /kaniko/executor --cache --context $CI_PROJECT_DIR --dockerfile $CI_PROJECT_DIR/dockerfiles/website/Dockerfile --destination $CI_REGISTRY_IMAGE/website:$CI_COMMIT_TAG
only:
refs:
- tags
เดเดเตเดเตพ เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเดคเต เดถเตเดฐเดฆเตเดงเดฟเดเตเดเตเด GIT_SUBMODULE_STRATEGY: เดธเดพเดงเดพเดฐเดฃ เดจเดฟเตผเดตเตเดตเดนเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเต เดฎเตเดฎเตเดชเต เดจเดฟเดเตเดเตพ เดธเดฌเตโเดฎเตเดกเตเดฏเตเดณเตเดเตพ เดตเตเดฏเดเตเดคเดฎเดพเดฏเดฟ เดเดฐเดเดญเดฟเดเตเดเตเดฃเตเด เดเตเดฒเดฟเดเตพเดเตเดเดพเดฏเดฟ.
เดเดเตเดเดณเตเดเต เดฎเดพเดฑเตเดฑเดเตเดเตพ เดตเดฐเตเดคเตเดคเดพเตป เดฎเดฑเดเตเดเดฐเตเดคเต:
git add .gitlab-ci.yml
git commit -m "Automate docker build"
เดจเดฎเตเดเตเดเต เดเดคเดฟเดจเต เดธเตเดฐเดเตเดทเดฟเดคเดฎเดพเดฏเดฟ เดเดฐเต เดชเดคเดฟเดชเตเดชเต เดเดจเตเดจเต เดตเดฟเดณเดฟเดเตเดเดพเดฎเตเดจเตเดจเต เดเดพเตป เดเดฐเตเดคเตเดจเตเดจเต v0.0.1 เดเดพเดเต เดเตเตผเดเตเดเตเด:
git tag v0.0.1
เดเดฐเต เดชเตเดคเดฟเดฏ เดชเดคเดฟเดชเตเดชเต เดฑเดฟเดฒเตเดธเต เดเตเดฏเตเดฏเตเดฃเตเดเดฟ เดตเดฐเตเดฎเตเดชเตเดดเตเดฒเตเดฒเดพเด เดเดเตเดเตพ เดเดพเดเตเดเตพ เดเตเตผเดเตเดเตเด. เดกเตเดเตเดเตผ เดเดฟเดคเตเดฐเดเตเดเดณเดฟเดฒเต เดเดพเดเตเดเตพ Git เดเดพเดเตเดเดณเตเดฎเดพเดฏเดฟ เดฌเดจเตเดงเดฟเดชเตเดชเดฟเดเตเดเตเด. เดเดฐเต เดชเตเดคเดฟเดฏ เดเดพเดเตเดณเตเดณ เดเดฐเต เดชเตเดทเตเด เด เดเดพเดเต เดเดชเดฏเตเดเดฟเดเตเดเต เดเดฟเดคเตเดฐเดเตเดเดณเตเดเต เดจเดฟเตผเดฎเตเดฎเดพเดฃเด เดเดฐเดเดญเดฟเดเตเดเตเด.
เดจเดฎเตเดเตเดเต เดเดคเตเดเตเดฏเตเดฏเดพเด git push --tags, เดจเดฎเตเดฎเตเดเต เดเดฆเตเดฏ เดชเตเดชเตเดชเตเดฒเตเตป เดจเตเดเตเดเดพเด:
เดเดฆเตเดฏเดคเตเดคเต เดชเตเดชเตเดชเตเดฒเตเดจเดฟเดจเตเดฑเต เดธเตเดเตเดฐเตเตปเดทเตเดเตเดเต
เดเดพเดเตเดเตพ เดตเดดเดฟเดฏเตเดณเตเดณ เด เดธเดเดฌเตเดฒเดฟ เดกเตเดเตเดเตผ เดเดฎเตเดเตเดเตพ เดจเดฟเตผเดฎเตเดฎเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเต เด เดจเตเดฏเตเดเตเดฏเดฎเดพเดฃเต, เดเดจเตเดจเดพเตฝ เดเตเดฌเตผเดจเตเดฑเตเดฑเดธเดฟเดฒเตเดเตเดเต เดเดฐเต เดเดชเตเดฒเดฟเดเตเดเตเดทเตป เดตเดฟเดจเตเดฏเดธเดฟเดเตเดเดพเตป เด เดจเตเดฏเตเดเตเดฏเดฎเดฒเตเดฒ เดเดจเตเดจ เดตเดธเตเดคเตเดคเดฏเดฟเดฒเตเดเตเดเต เดจเดฟเดเตเดเดณเตเดเต เดถเตเดฐเดฆเตเดง เดเดเตผเดทเดฟเดเตเดเตเดจเตเดจเดคเต เดฎเตเดฒเตเดฏเดตเดคเตเดคเดพเดฃเต. เดชเดดเดฏ เดเดฎเตเดฎเดฟเดฑเตเดฑเตเดเดณเดฟเดฒเตเด เดชเตเดคเดฟเดฏ เดเดพเดเตเดเตพ เดจเตฝเดเดพเดฎเตเดจเตเดจเดคเดฟเดจเดพเตฝ, เด เดธเดพเดนเดเดฐเตเดฏเดคเตเดคเดฟเตฝ, เด เดตเดฏเตเดเตเดเตเดณเตเดณ เดชเตเดชเตเดชเตเดฒเตเตป เดเดฐเดเดญเดฟเดเตเดเตเดจเตเดจเดคเต เดชเดดเดฏ เดชเดคเดฟเดชเตเดชเดฟเดจเตเดฑเต เดตเดฟเดจเตเดฏเดพเดธเดคเตเดคเดฟเดฒเตเดเตเดเต เดจเดฏเดฟเดเตเดเตเด.
เด เดชเตเดฐเดถเตเดจเด เดชเดฐเดฟเดนเดฐเดฟเดเตเดเดพเตป, เดธเดพเดงเดพเดฐเดฃเดฏเดพเดฏเดฟ เดกเตเดเตเดเตผ เดเดฎเตเดเตเดเดณเตเดเต เดฌเดฟเตฝเดกเต เดเดพเดเตเดเดณเตเดฎเดพเดฏเดฟ เดฌเดจเตเดงเดฟเดชเตเดชเดฟเดเตเดเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต, เดเตเดเดพเดคเต เดเดฐเต เดฌเตเดฐเดพเดเตเดเดฟเดฒเตเดเตเดเต เดเดชเตเดฒเดฟเดเตเดเตเดทเตป เดตเดฟเดจเตเดฏเดพเดธเด เดฏเดเดฎเดพเดจเดจเต, เดเดคเดฟเตฝ เดถเตเดเดฐเดฟเดเตเด เดเดฟเดคเตเดฐเดเตเดเดณเตเดเต เดชเดคเดฟเดชเตเดชเตเดเตพ เดนเดพเตผเดกเตเดเตเดกเต เดเตเดฏเตเดคเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต. เดเดตเดฟเดเตเดฏเดพเดฃเต เดจเดฟเดเตเดเตพเดเตเดเต เดเดฐเต เดฒเดณเดฟเดคเดฎเดพเดฏ เดฑเดฟเดตเตเตผเดเตเดเต เดเดชเดฏเตเดเดฟเดเตเดเต เดฑเตเตพเดฌเดพเดเตเดเต เดเดฐเดเดญเดฟเดเตเดเดพเตป เดเดดเดฟเดฏเตเดจเตเดจเดคเต เดฏเดเดฎเดพเดจเดจเต- เดถเดพเดเดเตพ.
10. เดตเดฟเดจเตเดฏเดพเดธเดคเตเดคเดฟเดจเตเดฑเต เดเดเตเดเตเดฎเตเดทเตป
Gitlab-runner-เดจเต เดเดเตเดเดณเตเดเต เดฐเดนเดธเตเดฏเดเตเดเตพ เดกเตเดเตเดฐเดฟเดชเตเดฑเตเดฑเต เดเตเดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต, เดเดเตเดเตพ เดฑเดฟเดชเตเดชเตเดธเดฟเดฑเตเดฑเดฑเดฟ เดเต เดเดฏเดฑเตเดฑเตเดฎเดคเดฟ เดเตเดฏเตเดฏเตเดเดฏเตเด เดเดเตเดเดณเตเดเต CI เดเตปเดตเดฏเตเตบเดฎเตเดจเตเดฑเต เดตเตเดฐเดฟเดฏเดฌเดฟเดณเตเดเดณเดฟเดฒเตเดเตเดเต เดเตเตผเดเตเดเตเดเดฏเตเด เดเตเดฏเตเดฏเตเดฃเตเดเดคเตเดฃเตเดเต:
git crypt export-key /tmp/docs-repo.key
base64 -w0 /tmp/docs-repo.key; echo
เดคเดคเตเดซเดฒเดฎเดพเดฏเตเดฃเตเดเดพเดเตเดจเตเดจ เดตเดฐเดฟ เดเดเตเดเตพ Gitlab-เตฝ เดธเดเดฐเดเตเดทเดฟเดเตเดเตเด; เดเดคเต เดเตเดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต, เดจเดฎเตเดเตเดเต เดเดเตเดเดณเตเดเต เดชเตเดฐเตเดเดเตเดฑเตเดฑเต เดเตเดฐเดฎเตเดเดฐเดฃเดเตเดเดณเดฟเดฒเตเดเตเดเต เดชเตเดเดพเด:
เดเตเดฐเดฎเตเดเดฐเดฃเดเตเดเตพ -> CI / CD -> เดตเตเดฐเดฟเดฏเดฌเดฟเดณเตเดเตพ
เดจเดฎเตเดเตเดเต เดเดฐเต เดชเตเดคเดฟเดฏ เดตเตเดฐเดฟเดฏเดฌเดฟเตพ เดธเตเดทเตเดเดฟเดเตเดเดพเด:
เดเตเดชเตเดชเต เดเตเดฏเตเดฏเตเด
เดเต
เดตเดฟเดฒ
เดธเดเดฐเดเตเดทเดฟเดค
เดฎเดพเดธเตเดกเต
เดธเตเดเตเดพเดชเตเดชเต
File
GITCRYPT_KEY
<your string>
true
(เดชเดฐเดฟเดถเตเดฒเดจ เดธเดฎเดฏเดคเตเดคเต เดจเดฟเดเตเดเตพเดเตเดเต เดเดดเดฟเดฏเตเด false
)
true
All environments
เดเตเตผเดคเตเดค เดตเตเดฐเดฟเดฏเดฌเดฟเดณเดฟเดจเตเดฑเต เดธเตเดเตเดฐเตเตปเดทเตเดเตเดเต
เดเดจเดฟ เดจเดฎเตเดเตเดเต เดจเดฎเตเดฎเตเดเต เด เดชเตเดกเตเดฑเตเดฑเต เดเตเดฏเตเดฏเดพเด .gitlab-ci.yml เด เดคเดฟเดฒเตเดเตเดเต เดเตเตผเดเตเดเตเดจเตเดจเต:
.deploy_qbec_app:
stage: deploy
only:
refs:
- master
deploy_gitlab_runner:
extends: .deploy_qbec_app
variables:
GIT_SUBMODULE_STRATEGY: normal
before_script:
- base64 -d "$GITCRYPT_KEY" | git-crypt unlock -
script:
- qbec apply default --root deploy/gitlab-runner --force:k8s-context __incluster__ --wait --yes
deploy_website:
extends: .deploy_qbec_app
script:
- qbec apply default --root deploy/website --force:k8s-context __incluster__ --wait --yes
qbec-เดจเตเดณเตเดณ เดจเดฟเดฐเดตเดงเดฟ เดชเตเดคเดฟเดฏ เดเดชเตเดทเดจเตเดเตพ เดเดเตเดเตพ เดเดตเดฟเดเต เดชเตเดฐเดตเตผเดคเตเดคเดจเดเตเดทเดฎเดฎเดพเดเตเดเดฟเดฏเดฟเดเตเดเตเดฃเตเดเต:
- --เดฑเตเดเตเดเต เดเดฟเดฒเดคเต/เดเดชเตเดชเต - เดเดฐเต เดจเดฟเตผเดฆเตเดฆเดฟเดทเตเด เดเดชเตเดฒเดฟเดเตเดเตเดทเดจเตเดฑเต เดกเดฏเดฑเดเตเดเดฑเดฟ เดจเดฟเตผเดฃเตเดฃเดฏเดฟเดเตเดเดพเตป เดจเดฟเดเตเดเดณเต เด เดจเตเดตเดฆเดฟเดเตเดเตเดจเตเดจเต
- --force:k8s-context __incluster__ - เดเดฟเดเดฟเดฒเดพเดฌเต-เดฑเดฃเตเดฃเตผ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเดจเตเดจ เด เดคเต เดเตเดฒเดธเตเดฑเตเดฑเดฑเดฟเตฝ เดตเดฟเดจเตเดฏเดพเดธเด เดธเดเดญเดตเดฟเดเตเดเตเดฎเตเดจเตเดจเต เดชเดฑเดฏเตเดจเตเดจ เดเดฐเต เดฎเดพเดเดฟเดเต เดตเตเดฐเดฟเดฏเดฌเดฟเดณเดพเดฃเดฟเดคเต. เดเดคเต เดเดตเดถเตเดฏเดฎเดพเดฃเต, เด เดฒเตเดฒเดพเดคเตเดคเดชเดเตเดทเด เดจเดฟเดเตเดเดณเตเดเต kubeconfig-เตฝ เด เดจเตเดฏเตเดเตเดฏเดฎเดพเดฏ เดเดฐเต Kubernetes เดธเตเตผเดตเตผ เดเดฃเตเดเตเดคเตเดคเดพเตป qbec เดถเตเดฐเดฎเดฟเดเตเดเตเด.
- --เดเดพเดคเตเดคเดฟเดฐเดฟเดเตเดเตเด โ qbec เดธเตเดทเตเดเดฟเดเตเดเตเดจเตเดจ เดเดฑเดตเดฟเดเดเตเดเตพ เดฑเตเดกเดฟ เดธเตเดฑเตเดฑเตเดฑเตเดฑเดฟเดฒเตเดเตเดเต เดชเตเดเตเดจเตเดจเดคเตเดตเดฐเต เดเดพเดคเตเดคเดฟเดฐเดฟเดเตเดเดพเตป qbec-เดจเต เดจเดฟเตผเดฌเดจเตเดงเดฟเดเตเดเตเดจเตเดจเต, เด เดคเดฟเดจเตเดถเตเดทเด เดฎเดพเดคเตเดฐเดฎเต เดตเดฟเดเดฏเดเดฐเดฎเดพเดฏ เดเดเตเดธเดฟเดฑเตเดฑเต-เดเตเดกเต เดเดชเดฏเตเดเดฟเดเตเดเต เดชเตเดฑเดคเตเดคเตเดเดเดเตเดเตเด.
- - เด เดคเต - เดเดจเตเดฑเดฑเดพเดเตเดเตเดตเต เดทเตเตฝ เดเตเดตเดฒเด เดชเตเดฐเดตเตผเดคเตเดคเดจเดฐเดนเดฟเดคเดฎเดพเดเตเดเตเดจเตเดจเต เดจเดฟเดเตเดเดณเตเดเตเดเต เดเดฑเดชเตเดชเดพเดฃเตเดพ? เดตเดฟเดจเตเดฏเดธเดฟเดเตเดเดชเตเดชเตเตพ.
เดเดเตเดเดณเตเดเต เดฎเดพเดฑเตเดฑเดเตเดเตพ เดตเดฐเตเดคเตเดคเดพเตป เดฎเดฑเดเตเดเดฐเตเดคเต:
git add .gitlab-ci.yml
git commit -m "Automate deploy"
เดชเดฟเดจเตเดจเต git push เดเดเตเดเดณเตเดเต เดเดชเตเดฒเดฟเดเตเดเตเดทเดจเตเดเตพ เดเดเตเดเดจเตเดฏเดพเดฃเต เดตเดฟเดจเตเดฏเดธเดฟเดเตเดเดฟเดฐเดฟเดเตเดเตเดจเตเดจเดคเตเดจเตเดจเต เดเดเตเดเตพ เดเดพเดฃเตเด:
เดฐเดฃเตเดเดพเดฎเดคเตเดคเต เดชเตเดชเตเดชเตเดฒเตเดจเดฟเดจเตเดฑเต เดธเตเดเตเดฐเตเตปเดทเตเดเตเดเต
11. เดฎเดพเดธเตเดฑเตเดฑเดฑเดฟเดฒเตเดเตเดเต เดคเดณเตเดณเตเดฎเตเดชเตเตพ เดเตผเดเตเดเดฟเดซเดพเดเตเดฑเตเดฑเตเดเดณเตเด เด
เดธเดเดฌเตเดฒเดฟเดฏเตเด
เดธเดพเดงเดพเดฐเดฃเดเดคเดฟเดฏเดฟเตฝ, เดฎเตเดเดณเดฟเตฝ เดตเดฟเดตเดฐเดฟเดเตเดเดฟเดฐเดฟเดเตเดเตเดจเตเดจ เดเดเตเดเดเตเดเตพ เดฎเดฟเดเตเดเดตเดพเดฑเตเด เดเดฒเตเดฒเดพ เดฎเตเดเตเดฐเต เดธเตผเดตเตเดธเตเดเดณเตเด เดจเดฟเตผเดฎเตเดฎเดฟเดเตเดเดพเดจเตเด เดตเดฟเดคเดฐเดฃเด เดเตเดฏเตเดฏเดพเดจเตเด เดชเดฐเตเดฏเดพเดชเตเดคเดฎเดพเดฃเต, เดเดจเตเดจเดพเตฝ เดธเตเดฑเตเดฑเต เด เดชเตโเดกเตเดฑเตเดฑเต เดเตเดฏเตเดฏเตเดฃเตเด เดเดฐเต เดคเดตเดฃเดฏเตเด เดเดฐเต เดเดพเดเต เดเตเตผเดเตเดเดพเตป เดเดเตเดเตพ เดเดเตเดฐเดนเดฟเดเตเดเตเดจเตเดจเดฟเดฒเตเดฒ. เด เดคเดฟเดจเดพเตฝ, เดเดเตเดเตพ เดเตเดเตเดคเตฝ เดเดฒเดจเดพเดคเตเดฎเดเดฎเดพเดฏ เดเดฐเต เดฑเตเดเตเดเต เดธเตเดตเตเดเดฐเดฟเดเตเดเตเดเดฏเตเด เดฎเดพเดธเตเดฑเตเดฑเตผ เดฌเตเดฐเดพเดเตเดเดฟเตฝ เดเดฐเต เดกเตเดเดธเตเดฑเตเดฑเต เดตเดฟเดจเตเดฏเดพเดธเด เดธเตเดฅเดพเดชเดฟเดเตเดเตเดเดฏเตเด เดเตเดฏเตเดฏเตเด.
เดเดถเดฏเด เดฒเดณเดฟเดคเดฎเดพเดฃเต: เดเดชเตเดชเตเตพ เดเดเตเดเดณเตเดเต เดเดฟเดคเตเดฐเด เดตเตเดฌเตเดธเตเดฑเตเดฑเต เดจเดฟเดเตเดเตพ เด เดเดคเตเดคเตเดเตเดเต เดคเดณเตเดณเตเดฎเตเดชเตเดดเตเดฒเตเดฒเดพเด เดชเตเดจเตผเดจเดฟเตผเดฎเตเดฎเดฟเดเตเดเตเด เดฏเดเดฎเดพเดจเดจเต, เดคเตเดเตผเดจเตเดจเต เดเตเดฌเตผเดจเตเดฑเตเดฑเดธเดฟเดฒเตเดเตเดเต เดธเตเดตเดฏเดฎเตเดต เดตเดฟเดจเตเดฏเดธเดฟเดเตเดเตเด.
เดจเดฎเตเดฎเตเดเต เด เดฐเดฃเตเดเต เดเตเดฒเดฟเดเดณเตเด เดจเดฎเตเดเตเดเต เด เดชเตเดกเตเดฑเตเดฑเต เดเตเดฏเตเดฏเดพเด .gitlab-ci.yml:
build_website:
extends: .build_docker_image
variables:
GIT_SUBMODULE_STRATEGY: normal
script:
- mkdir -p $CI_PROJECT_DIR/artifacts
- /kaniko/executor --cache --context $CI_PROJECT_DIR --dockerfile $CI_PROJECT_DIR/dockerfiles/website/Dockerfile --destination $CI_REGISTRY_IMAGE/website:$CI_COMMIT_REF_NAME --digest-file $CI_PROJECT_DIR/artifacts/website.digest
artifacts:
paths:
- artifacts/
only:
refs:
- master
- tags
deploy_website:
extends: .deploy_qbec_app
script:
- DIGEST="$(cat artifacts/website.digest)"
- qbec apply default --root deploy/website --force:k8s-context __incluster__ --wait --yes --vm:ext-str digest="$DIGEST"
เดเดเตเดเตพ เดเดฐเต เดคเตเดฐเตเดกเต เดเตเตผเดคเตเดคเตเดตเตเดจเตเดจเดคเต เดถเตเดฐเดฆเตเดงเดฟเดเตเดเตเด เดฏเดเดฎเดพเดจเดจเต ะบ refs เดเตเดฒเดฟเดเตพเดเตเดเดพเดฏเดฟ เดฌเดฟเตฝเดกเต_เดตเตเดฌเตเดธเตเดฑเตเดฑเต เดเดเตเดเตพ เดเดชเตเดชเตเตพ เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเต $CI_COMMIT_REF_NAME เดชเดเดฐเด $CI_COMMIT_TAG, เด เดคเดพเดฏเดคเต, Git-เดฒเต เดเดพเดเตเดเดณเดฟเตฝ เดจเดฟเดจเตเดจเต เดเดเตเดเตพ เด เดดเดฟเดเตเดเตเดฎเดพเดฑเตเดฑเดฟ, เดเดชเตเดชเตเตพ เดชเตเดชเตเดชเตเดฒเตเตป เดเดฐเดเดญเดฟเดเตเด เดเดฎเตเดฎเดฟเดฑเตเดฑเต เดฌเตเดฐเดพเดเตเดเดฟเดจเตเดฑเต เดชเตเดฐเดฟเดฒเตเดณเตเดณ เดเดฐเต เดเดฟเดคเตเดฐเด เดเดเตเดเตพ เดชเตเดทเต เดเตเดฏเตเดฏเตเด. เดเดคเต เดเดพเดเตเดเตพเดเตเดเตเดชเตเดชเด เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเดฎเตเดจเตเดจเดคเต เดถเตเดฐเดฆเตเดงเดฟเดเตเดเตเดฃเตเดเดคเดพเดฃเต, เดเดคเต เดกเตเดเตเดเตผ-เดฐเดเดฟเดธเตเดเตเดฐเดฟเดฏเดฟเตฝ เดเดฐเต เดจเดฟเตผเดฆเตเดฆเดฟเดทเตเด เดชเดคเดฟเดชเตเดชเตเดณเตเดณ เดเดฐเต เดธเตเดฑเตเดฑเดฟเดจเตเดฑเต เดธเตเดจเดพเดชเตเดชเตเดทเตเดเตเดเตเดเตพ เดธเดเดฐเดเตเดทเดฟเดเตเดเดพเตป เดเดเตเดเดณเต เด เดจเตเดตเดฆเดฟเดเตเดเตเด.
เดธเตเดฑเตเดฑเดฟเดจเตเดฑเต เดเดฐเต เดชเตเดคเดฟเดฏ เดชเดคเดฟเดชเตเดชเดฟเดจเตเดณเตเดณ เดกเตเดเตเดเตผ เดเดพเดเดฟเดจเตเดฑเต เดชเตเดฐเต เดฎเดพเดฑเตเดฑเดพเตป เดเดดเดฟเดฏเดพเดคเต เดตเดฐเตเดฎเตเดชเตเตพ, เดเดเตเดเตพ เดเดชเตเดชเตเดดเตเด เดเตเดฌเตผเดจเตเดฑเตเดฑเดธเดฟเดฒเตเดเตเดเตเดณเตเดณ เดฎเดพเดฑเตเดฑเดเตเดเตพ เดตเดฟเดตเดฐเดฟเดเตเดเตเดฃเตเดเดคเตเดฃเตเดเต, เด เดฒเตเดฒเดพเดคเตเดคเดชเดเตเดทเด เด เดคเต เดชเตเดคเดฟเดฏ เดเดฎเตเดเดฟเตฝ เดจเดฟเดจเตเดจเต เดเดชเตเดฒเดฟเดเตเดเตเดทเตป เดตเตเดฃเตเดเตเด เดตเดฟเดจเตเดฏเดธเดฟเดเตเดเดฟเดฒเตเดฒ, เดเดพเดฐเดฃเด เดเดคเต เด เดคเดฟเตฝ เดฎเดพเดฑเตเดฑเดเตเดเดณเตเดจเตเดจเตเด เดถเตเดฐเดฆเตเดงเดฟเดเตเดเดฟเดฒเตเดฒ. เดตเดฟเดจเตเดฏเดพเดธ เดฎเดพเดจเดฟเดซเตเดธเตเดฑเตเดฑเต.
เดเดชเตเดทเตป โvm:ext-str digest=โ$DIGESTโ qbec-เดจเต - jsonnet-เดฒเตเดเตเดเต เดเดฐเต เดฌเดพเดนเตเดฏ เดตเตเดฐเดฟเดฏเดฌเดฟเตพ เดเตเดฎเดพเดฑเดพเตป เดจเดฟเดเตเดเดณเต เด เดจเตเดตเดฆเดฟเดเตเดเตเดจเตเดจเต. เดเดเตเดเดณเตเดเต เดเดชเตเดฒเดฟเดเตเดเตเดทเดจเตเดฑเต เดเดฐเต เดฑเดฟเดฒเตเดธเดฟเดฒเตเด เดเดคเต เดเตเดฒเดธเตเดฑเตเดฑเดฑเดฟเตฝ เดตเตเดฃเตเดเตเด เดตเดฟเดจเตเดฏเดธเดฟเดเตเดเดฃเดฎเตเดจเตเดจเต เดเดเตเดเตพ เดเดเตเดฐเดนเดฟเดเตเดเตเดจเตเดจเต. เดเดฟเดคเตเดฐเดคเตเดคเดฟเดจเตเดฑเต เดเดฐเต เดจเดฟเตผเดฆเตเดฆเดฟเดทเตเด เดชเดคเดฟเดชเตเดชเตเดฎเดพเดฏเดฟ เดฌเดจเตเดงเดฟเดชเตเดชเดฟเดเตเดเตเดเดฏเตเด เด เดคเต เดฎเดพเดฑเตเดฎเตเดชเตเตพ เดตเดฟเดจเตเดฏเดพเดธเด เดชเตเดฐเดตเตผเดคเตเดคเดจเดเตเดทเดฎเดฎเดพเดเตเดเตเดเดฏเตเด เดเตเดฏเตเดฏเตเดฃเตเดเดคเดฟเดจเดพเตฝ, เดเดพเดเต เดจเดพเดฎเด เดเดเตเดเตพเดเตเดเต เดเดจเดฟ เดเดชเดฏเตเดเดฟเดเตเดเดพเดจเดพเดตเดฟเดฒเตเดฒ, เด เดคเต เดเดชเตเดชเตเตพ เดฎเดพเดฑเตเดฑเดพเตป เดเดดเดฟเดฏเดฟเดฒเตเดฒ.
เดเดฐเต เดซเดฏเดฒเดฟเดฒเตเดเตเดเต เดเดฐเต เดกเตเดเดธเตเดฑเตเดฑเต เดเดฎเตเดเต เดธเดเดฐเดเตเดทเดฟเดเตเดเดพเดจเตเดณเตเดณ เดเดจเดฟเดเตเดเตเดฏเตเดเต เดเดดเดฟเดตเต เดเดตเดฟเดเต เดเดเตเดเดณเต เดธเดนเดพเดฏเดฟเดเตเดเตเด (เดเดชเตเดทเตป --digest-file)
เดคเตเดเตผเดจเตเดจเต เดเดเตเดเตพ เด เดซเดฏเตฝ เดเตเดฎเดพเดฑเตเดเดฏเตเด เดตเดฟเดจเตเดฏเดพเดธ เดธเดฎเดฏเดคเตเดคเต เด
เดคเต เดตเดพเดฏเดฟเดเตเดเตเดเดฏเตเด เดเตเดฏเตเดฏเตเด.
เดจเดฎเตเดฎเตเดเต เดชเดพเดฐเดพเดฎเตเดฑเตเดฑเดฑเตเดเตพ เด เดชเตเดกเตเดฑเตเดฑเต เดเตเดฏเตเดฏเดพเด deploy/website/environments/base.libsonnet เด เดคเต เดเดชเตเดชเตเตพ เดเดคเตเดชเตเดฒเต เดเดพเดฃเดชเตเดชเตเดเตเด:
{
components: {
website: {
name: 'example-docs',
image: 'registry.gitlab.com/kvaps/docs.example.org/website@' + std.extVar('digest'),
replicas: 1,
containerPort: 80,
servicePort: 80,
nodeSelector: {},
tolerations: [],
ingressClass: 'nginx',
domain: 'docs.example.org',
},
},
}
เดเตเดฏเตเดคเต, เดเดชเตเดชเตเตพ เดเดจเตเดคเตเดเตเดเดฟเดฒเตเด เดชเตเดฐเดคเดฟเดเตเดเดพเดฌเดฆเตเดงเดค เดฏเดเดฎเดพเดจเดจเต เดเดจเตเดจเดคเดฟเดจเดพเดฏเตเดณเตเดณ เดกเตเดเตเดเตผ เดเดฎเตเดเดฟเดจเตเดฑเต เดจเดฟเตผเดฎเตเดฎเดพเดฃเด เดเดฐเดเดญเดฟเดเตเดเตเดจเตเดจเต เดตเตเดฌเตเดธเตเดฑเตเดฑเต, เดคเตเดเตผเดจเตเดจเต เด เดคเต เดเตเดฌเตผเดจเตเดฑเตเดฑเดธเดฟเดฒเตเดเตเดเต เดตเดฟเดจเตเดฏเดธเดฟเดเตเดเตเด.
เดเดเตเดเดณเตเดเต เดฎเดพเดฑเตเดฑเดเตเดเตพ เดตเดฐเตเดคเตเดคเดพเตป เดฎเดฑเดเตเดเดฐเตเดคเต:
git add .
git commit -m "Configure dynamic build"
เดเดเตเดเตพ เดชเดฟเดจเตเดจเตเดเต เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเตเด git push เดเดคเตเดชเตเดฒเตเดณเตเดณ เดเดจเตเดจเต เดจเดฎเตเดฎเตพ เดเดพเดฃเดฃเด:
เดฎเดพเดธเตเดฑเตเดฑเดฑเดฟเดจเดพเดฏเตเดณเตเดณ เดชเตเดชเตเดชเตเดฒเตเดจเดฟเดจเตเดฑเต เดธเตเดเตเดฐเตเตปเดทเตเดเตเดเต
เดคเดคเตเดตเดคเตเดคเดฟเตฝ, เดเดฐเต เดชเตเดทเต เดเดชเดฏเตเดเดฟเดเตเดเตเด เดเดฟเดฑเตเดฑเตโเดฒเดพเดฌเต-เดฑเดฃเตเดฃเตผ เดตเตเดฃเตเดเตเด เดตเดฟเดจเตเดฏเดธเดฟเดเตเดเตเดฃเตเดเดคเดฟเดฒเตเดฒ, เดคเตเตผเดเตเดเดฏเดพเดฏเตเด, เด เดคเดฟเดจเตเดฑเต เดเตเตบเดซเดฟเดเดฑเตเดทเดจเดฟเตฝ เดเดจเตเดจเตเด เดฎเดพเดฑเดฟเดฏเดฟเดเตเดเดฟเดฒเตเดฒเตเดเตเดเดฟเตฝ, เดจเดฎเตเดเตเดเต เด เดคเต เดชเดฐเดฟเดนเดฐเดฟเดเตเดเดพเด .gitlab-ci.yml:
deploy_gitlab_runner:
extends: .deploy_qbec_app
variables:
GIT_SUBMODULE_STRATEGY: normal
before_script:
- base64 -d "$GITCRYPT_KEY" | git-crypt unlock -
script:
- qbec apply default --root deploy/gitlab-runner --force:k8s-context __incluster__ --wait --yes
only:
changes:
- deploy/gitlab-runner/**/*
เดฎเดพเดฑเตเดฑเดเตเดเตพ เดฎเดพเดฑเตเดฑเดเตเดเตพ เดจเดฟเดฐเตเดเตเดทเดฟเดเตเดเดพเตป เดจเดฟเดเตเดเดณเต เด เดจเตเดตเดฆเดฟเดเตเดเตเด เดตเดฟเดจเตเดฏเดธเดฟเดเตเดเตเด/gitlab-runner/ เดเดจเตเดคเตเดเตเดเดฟเดฒเตเด เดเดฃเตเดเตเดเตเดเดฟเตฝ เดฎเดพเดคเตเดฐเดฎเต เดเดเตเดเดณเตเดเต เดเตเดฒเดฟ เดเตเดฐเดฟเดเตผ เดเตเดฏเตเดฏเตเดเดฏเตเดณเตเดณเต
เดเดเตเดเดณเตเดเต เดฎเดพเดฑเตเดฑเดเตเดเตพ เดตเดฐเตเดคเตเดคเดพเตป เดฎเดฑเดเตเดเดฐเตเดคเต:
git add .gitlab-ci.yml
git commit -m "Reduce gitlab-runner deploy"
git push, เด เดคเดพเดฃเต เดจเดฒเตเดฒเดคเต:
เด เดชเตเดกเตเดฑเตเดฑเต เดเตเดฏเตเดค เดชเตเดชเตเดชเตเดฒเตเดจเดฟเดจเตเดฑเต เดธเตเดเตเดฐเตเตปเดทเตเดเตเดเต
12. เดเดฒเดจเดพเดคเตเดฎเด เดชเดฐเดฟเดคเดธเตเดฅเดฟเดคเดฟเดเตพ
เดกเตเดจเดพเดฎเดฟเดเต เดชเดฐเดฟเดคเดธเตเดฅเดฟเดคเดฟเดเตพ เดเดชเดฏเตเดเดฟเดเตเดเต เดเดเตเดเดณเตเดเต เดชเตเดชเตเดชเตเดฒเตเตป เดตเตเดตเดฟเดงเตเดฏเดตเดคเตเดเดฐเดฟเดเตเดเดพเดจเตเดณเตเดณ เดธเดฎเดฏเดฎเดพเดฃเดฟเดคเต.
เดเดฆเตเดฏเด, เดจเดฎเตเดเตเดเต เดเตเดฒเดฟ เด เดชเตเดกเตเดฑเตเดฑเต เดเตเดฏเตเดฏเดพเด เดฌเดฟเตฝเดกเต_เดตเตเดฌเตเดธเตเดฑเตเดฑเต เดจเดฎเตเดฎเตเดเต .gitlab-ci.yml, เด เดคเดฟเตฝ เดจเดฟเดจเตเดจเต เดฌเตเดฒเตเดเตเดเต เดจเตเดเตเดเด เดเตเดฏเตเดฏเตเด เดฎเดพเดคเตเดฐเด, เดเดคเต เดถเดพเดเดฏเตเดฎเดพเดฏเตเดณเตเดณ เดเดคเตเดฐเต เดชเตเดฐเดคเดฟเดฌเดฆเตเดงเดคเดฏเดฟเดฒเตเด เด เดคเต เดชเตเดฐเดตเตผเดคเตเดคเดจเดเตเดทเดฎเดฎเดพเดเตเดเดพเตป Gitlab เดชเตเดฐเตเดฐเดฟเดชเตเดชเดฟเดเตเดเตเด:
build_website:
extends: .build_docker_image
variables:
GIT_SUBMODULE_STRATEGY: normal
script:
- mkdir -p $CI_PROJECT_DIR/artifacts
- /kaniko/executor --cache --context $CI_PROJECT_DIR --dockerfile $CI_PROJECT_DIR/dockerfiles/website/Dockerfile --destination $CI_REGISTRY_IMAGE/website:$CI_COMMIT_REF_NAME --digest-file $CI_PROJECT_DIR/artifacts/website.digest
artifacts:
paths:
- artifacts/
เดคเตเดเตผเดจเตเดจเต เดเตเดฒเดฟ เด เดชเตเดกเตเดฑเตเดฑเต เดเตเดฏเตเดฏเตเด deploy_website, เด เดตเดฟเดเต เดเดฐเต เดฌเตเดฒเตเดเตเดเต เดเตเตผเดเตเดเตเด เดชเดฐเดฟเดธเตเดฅเดฟเดคเดฟ:
deploy_website:
extends: .deploy_qbec_app
environment:
name: prod
url: https://docs.example.org
script:
- DIGEST="$(cat artifacts/website.digest)"
- qbec apply default --root deploy/website --force:k8s-context __incluster__ --wait --yes --vm:ext-str digest="$DIGEST"
เดเตเดฒเดฟเดฏเตเดฎเดพเดฏเดฟ เดฌเดจเตเดงเดชเตเดชเตเดเตเดคเตเดคเดพเตป เดเดคเต Gitlab-เดจเต เด เดจเตเดตเดฆเดฟเดเตเดเตเด เดเดคเตเดชเดจเตเดจเด เดชเดฐเดฟเดธเตเดฅเดฟเดคเดฟเดฏเตเด เด เดคเดฟเดฒเตเดเตเดเตเดณเตเดณ เดถเดฐเดฟเดฏเดพเดฏ เดฒเดฟเดเตเดเต เดชเตเดฐเดฆเตผเดถเดฟเดชเตเดชเดฟเดเตเดเตเดเดฏเตเด เดเตเดฏเตเดฏเตเด.
เดเดจเดฟ เดจเดฎเตเดเตเดเต เดฐเดฃเตเดเต เดเตเดฒเดฟเดเตพ เดเตเดเดฟ เดเตเตผเดเตเดเดพเด:
deploy_website:
extends: .deploy_qbec_app
environment:
name: prod
url: https://docs.example.org
script:
- DIGEST="$(cat artifacts/website.digest)"
- qbec apply default --root deploy/website --force:k8s-context __incluster__ --wait --yes --vm:ext-str digest="$DIGEST"
deploy_review:
extends: .deploy_qbec_app
environment:
name: review/$CI_COMMIT_REF_NAME
url: http://$CI_ENVIRONMENT_SLUG.docs.example.org
on_stop: stop_review
script:
- DIGEST="$(cat artifacts/website.digest)"
- qbec apply review --root deploy/website --force:k8s-context __incluster__ --wait --yes --vm:ext-str digest="$DIGEST" --vm:ext-str subdomain="$CI_ENVIRONMENT_SLUG" --app-tag "$CI_ENVIRONMENT_SLUG"
only:
refs:
- branches
except:
refs:
- master
stop_review:
extends: .deploy_qbec_app
environment:
name: review/$CI_COMMIT_REF_NAME
action: stop
stage: deploy
before_script:
- git clone "$CI_REPOSITORY_URL" master
- cd master
script:
- qbec delete review --root deploy/website --force:k8s-context __incluster__ --yes --vm:ext-str digest="$DIGEST" --vm:ext-str subdomain="$CI_ENVIRONMENT_SLUG" --app-tag "$CI_ENVIRONMENT_SLUG"
variables:
GIT_STRATEGY: none
only:
refs:
- branches
except:
refs:
- master
when: manual
เดฎเดพเดธเตเดฑเตเดฑเตผ เดเดดเดฟเดเตเดฏเตเดณเตเดณ เดเดคเตเดเตเดเดฟเดฒเตเด เดถเดพเดเดเดณเดฟเดฒเตเดเตเดเต เดชเตเดทเต เดเตเดฏเตเดฏเตเดฎเตเดชเตเตพ เด เดต เดธเดฎเดพเดฐเดเดญเดฟเดเตเดเตเดเดฏเตเด เดธเตเดฑเตเดฑเดฟเดจเตเดฑเต เดชเตเดฐเดฟเดตเตเดฏเต เดชเดคเดฟเดชเตเดชเต เดตเดฟเดจเตเดฏเดธเดฟเดเตเดเตเดเดฏเตเด เดเตเดฏเตเดฏเตเด.
qbec-เดจเตเดณเตเดณ เดเดฐเต เดชเตเดคเดฟเดฏ เดเดชเตเดทเตป เดเดเตเดเตพ เดเดพเดฃเตเดจเตเดจเต: --app-tag - เดเดชเตเดฒเดฟเดเตเดเตเดทเดจเตเดฑเต เดตเดฟเดจเตเดฏเดธเดฟเดเตเดเดฟเดฐเดฟเดเตเดเตเดจเตเดจ เดชเดคเดฟเดชเตเดชเตเดเตพ เดเดพเดเตเดเตเดฏเตเดฏเดพเดจเตเด เด เดเดพเดเดฟเตฝ เดฎเดพเดคเตเดฐเด เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเดพเดจเตเด เดเดคเต เดจเดฟเดเตเดเดณเต เด
เดจเตเดตเดฆเดฟเดเตเดเตเดจเตเดจเต; Kubernetes-เตฝ เดตเดฟเดญเดตเดเตเดเตพ เดธเตเดทเตเดเดฟเดเตเดเตเดเดฏเตเด เดจเดถเดฟเดชเตเดชเดฟเดเตเดเตเดเดฏเตเด เดเตเดฏเตเดฏเตเดฎเตเดชเตเตพ, qbec เด
เดตเดฏเตโเดเตเดเตเดชเตเดชเด เดฎเดพเดคเตเดฐเดฎเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเต.
เด เดฐเตเดคเดฟเดฏเดฟเตฝ, เดเดฐเต เด
เดตเดฒเตเดเดจเดคเตเดคเดฟเดจเตเด เดเดฐเต เดชเตเดฐเดคเตเดฏเตเด เด
เดจเตเดคเดฐเตเดเตเดทเด เดธเตเดทเตเดเดฟเดเตเดเดพเตป เดเดเตเดเตพเดเตเดเต เดเดดเดฟเดฏเดฟเดฒเตเดฒ, เดเดจเตเดจเดพเตฝ เด
เดคเต เดเดจเตเดจเต เดตเตเดฃเตเดเตเด เดเดชเดฏเตเดเดฟเดเตเดเตเด.
เดเดตเดฟเดเตเดฏเตเด เดเดเตเดเตพ เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเต qbec เด เดตเดฒเตเดเดจเด เดชเตเดฐเดฏเตเดเดฟเดเตเดเตเด, เดเดคเดฟเดจเตเดชเดเดฐเดฎเดพเดฏเดฟ qbec เดธเตเดฅเดฟเดฐเดธเตเดฅเดฟเดคเดฟเดฏเดพเดฏเดฟ เดชเตเดฐเดฏเตเดเดฟเดเตเดเตเด - เดจเดฎเตเดฎเตเดเต เดชเดฐเดฟเดคเดธเตเดฅเดฟเดคเดฟเดเตพเดเตเดเตเดณเตเดณ เดตเตเดฏเดคเตเดฏเดพเดธเดเตเดเตพ เดตเดฟเดตเดฐเดฟเดเตเดเดพเตป เดถเตเดฐเดฎเดฟเดเตเดเตเดจเตเดจ เดจเดฟเดฎเดฟเดทเด เดเดคเดพเดฃเต (เด เดตเดฒเตเดเดจเดตเตเด เดธเตเดฅเดฟเดฐเดธเตเดฅเดฟเดคเดฟเดฏเตเด):
เดจเดฎเตเดเตเดเต เดเตเดเตเดเดฟเดเตเดเตเตผเดเตเดเดพเด เด เดตเดฒเตเดพเดเดจเด เดชเดฐเดฟเดธเตเดฅเดฟเดคเดฟเดฏเดฟเตฝ deploy/website/qbec.yaml
spec:
environments:
review:
defaultNamespace: docs
server: https://kubernetes.example.org:8443
เด เดชเตเดชเตเตพ เดเดเตเดเตพ เด เดคเต เดชเตเดฐเดเตเดฏเดพเดชเดฟเดเตเดเตเด deploy/website/params.libsonnet:
local env = std.extVar('qbec.io/env');
local paramsMap = {
_: import './environments/base.libsonnet',
default: import './environments/default.libsonnet',
review: import './environments/review.libsonnet',
};
if std.objectHas(paramsMap, env) then paramsMap[env] else error 'environment ' + env + ' not defined in ' + std.thisFile
เด เดคเดฟเดจเตเดณเตเดณ เดเดทเตโเดเดพเดจเตเดธเตเดค เดชเดพเดฐเดพเดฎเตเดฑเตเดฑเดฑเตเดเตพ เดเดดเตเดคเตเด deploy/website/environments/review.libsonnet:
// this file has the param overrides for the default environment
local base = import './base.libsonnet';
local slug = std.extVar('qbec.io/tag');
local subdomain = std.extVar('subdomain');
base {
components+: {
website+: {
name: 'example-docs-' + slug,
domain: subdomain + '.docs.example.org',
},
},
}
เดจเดฎเตเดเตเดเต เดเตเดฌเตเดตเดฟเดจเต เด
เดเตเดคเตเดคเต เดจเตเดเตเดเดพเด stop_review, เดฌเตเดฐเดพเดเตเดเต เดเดฒเตเดฒเดพเดคเดพเดเตเดเตเดฎเตเดชเตเตพ เด
เดคเต เดชเตเดฐเดตเตผเดคเตเดคเดจเดเตเดทเดฎเดฎเดพเดเตเด, เด
เดคเดฟเดจเดพเตฝ gitlab เด
เดคเต เดเตเดเตเดเตเดเดเตเดเต เดเตเดฏเตเดฏเดพเตป เดถเตเดฐเดฎเดฟเดเตเดเดฟเดฒเตเดฒ. GIT_STRATEGY: เดเดจเตเดจเตเดฎเดฟเดฒเตเดฒ, เดชเดฟเดจเตเดจเตเดเต เดเดเตเดเตพ เดเตเดฒเตเตบ เดเตเดฏเตเดฏเตเดจเตเดจเต เดฏเดเดฎเดพเดจเดจเต- เดฌเตเดฐเดพเดเตเดเต เดเตเดฏเตเดคเต เด
เดคเดฟเดฒเตเดเต เด
เดตเดฒเตเดเดจเด เดเดฒเตเดฒเดพเดคเดพเดเตเดเตเด.
เดเดคเต เด
เตฝเดชเตเดชเด เดเดถเดฏเดเตเดเตเดดเดชเตเดชเดฎเตเดฃเตเดเดพเดเตเดเตเดจเตเดจเต, เดชเดเตเดทเต เดเตเดเตเดคเตฝ เดฎเดจเตเดนเดฐเดฎเดพเดฏ เดเดฐเต เดตเดดเดฟ เดเดพเตป เดเดคเตเดตเดฐเต เดเดฃเตเดเตเดคเตเดคเดฟเดฏเดฟเดเตเดเดฟเดฒเตเดฒ.
เดเดฐเต เดนเตเดเตเดเตฝ เดจเตเดฏเดฟเดเดธเตเดชเตเดธเดฟเดฒเตเดเตเดเต เดเดฐเต เด
เดตเดฒเตเดเดจเดตเตเด เดตเดฟเดจเตเดฏเดธเดฟเดเตเดเตเด เดเดจเตเดจเดคเดพเดฃเต เดฎเดฑเตเดฑเตเดฐเต เดเดชเตเดทเตป, เด
เดคเต เดเดฒเตเดฒเดพเดฏเตเดชเตเดชเตเดดเตเด เดชเตเตผเดฃเตเดฃเดฎเดพเดฏเตเด เดชเตเดณเดฟเดเตเดเดพเดตเตเดจเตเดจเดคเดพเดฃเต.
เดเดเตเดเดณเตเดเต เดฎเดพเดฑเตเดฑเดเตเดเตพ เดตเดฐเตเดคเตเดคเดพเตป เดฎเดฑเดเตเดเดฐเตเดคเต:
git add .
git commit -m "Enable automatic review"
git push, git เดเตเดเตเดเตเดเดเตเดเต -b เดเตเดธเตเดฑเตเดฑเต, git เดชเตเดทเต เดเดฑเดฟเดเดฟเตป เดเตเดธเตเดฑเตเดฑเต, เดเตเดเตเดเต:
Gitlab-เตฝ เดธเตเดทเตเดเดฟเดเตเด เดชเดฐเดฟเดคเดธเตเดฅเดฟเดคเดฟเดเดณเตเดเต เดธเตเดเตเดฐเตเตปเดทเตเดเตเดเต
เดเดฒเตเดฒเดพเด เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเดจเตเดจเตเดฃเตเดเต? - เดเตเดณเตเดณเดพเด, เดเดเตเดเดณเตเดเต เดเตเดธเตเดฑเตเดฑเต เดฌเตเดฐเดพเดเตเดเต เดเดฒเตเดฒเดพเดคเดพเดเตเดเตเด: git เดเตเดเตเดเต out เดเตเดเต เดฎเดพเดธเตเดฑเตเดฑเตผ, git เดชเตเดทเต เดเดคเตเดญเดตเด:เดเตเดธเตเดฑเตเดฑเต, เดชเดฐเดฟเดธเตเดฅเดฟเดคเดฟ เดเดฒเตเดฒเดพเดคเดพเดเตเดเตฝ เดเตเดฒเดฟเดเตพ เดชเดฟเดถเดเตเดเดณเดฟเดฒเตเดฒเดพเดคเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเดจเตเดจเตเดฃเตเดเตเดจเตเดจเต เดเดเตเดเตพ เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเตเดจเตเดจเต.
เดเดฐเต เดชเตเดฐเตเดเดเตเดฑเตเดฑเดฟเดฒเต เดเดคเต เดกเดตเดฒเดชเตเดชเตผเดเตเดเตเด เดถเดพเดเดเตพ เดธเตเดทเตเดเดฟเดเตเดเดพเตป เดเดดเดฟเดฏเตเดฎเตเดจเตเดจเต เดเดตเดฟเดเต เดเดเดจเดเดฟ เดตเตเดฏเดเตเดคเดฎเดพเดเตเดเดพเตป เดเดพเตป เดเดเตเดฐเดนเดฟเดเตเดเตเดจเตเดจเต, เด เดตเดจเตเด เดฎเดพเดฑเตเดฑเดพเตป เดเดดเดฟเดฏเตเด .gitlab-ci.yml เดซเดฏเตฝ, เดฐเดนเดธเตเดฏ เดตเตเดฐเดฟเดฏเดฌเดฟเดณเตเดเตพ เดเดเตเดธเดธเต เดเตเดฏเตเดฏเตเด.
เด เดคเดฟเดจเดพเตฝ, เดธเดเดฐเดเตเดทเดฟเดค เดถเดพเดเดเตพเดเตเดเต เดฎเดพเดคเตเดฐเด เด เดตเดฏเตเดเต เดเดชเดฏเตเดเด เด เดจเตเดตเดฆเดฟเดเตเดเดพเตป เดถเดเตเดคเดฎเดพเดฏเดฟ เดถเตเดชเดพเตผเดถ เดเตเดฏเตเดฏเตเดจเตเดจเต, เดเดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต เดฏเดเดฎเดพเดจเดจเต, เด เดฒเตเดฒเตเดเตเดเดฟเตฝ เดเดฐเต เดชเดฐเดฟเดคเดธเตเดฅเดฟเดคเดฟเดเตเดเตเด เดตเตเดฐเดฟเดฏเดฌเดฟเดณเตเดเดณเตเดเต เดเดฐเต เดชเตเดฐเดคเตเดฏเตเด เดธเตเดฑเตเดฑเต เดธเตเดทเตเดเดฟเดเตเดเตเด.
13. เดเดชเตเดชเตเดเตพ เด
เดตเดฒเตเดเดจเด เดเตเดฏเตเดฏเตเด
เด เดฌเดเตเดเดฃเตเดเตพ เดฆเตเดถเตเดฏเดฎเดพเดเตเดจเตเดจเดคเดฟเดจเต, เดจเดฟเดเตเดเตพ เดเดฐเต เดซเดฏเตฝ เดธเตเดทเตเดเดฟเดเตเดเตเดฃเตเดเดคเตเดฃเตเดเต .gitlab/route-map.yml เด เดคเดฟเดฒเต เดเดฒเตเดฒเดพ เดชเดพเดคเตเดคเต เดชเดฐเดฟเดตเตผเดคเตเดคเดจเดเตเดเดณเตเด เดตเดฟเดตเดฐเดฟเดเตเดเตเด; เดเดเตเดเดณเตเดเต เดเดพเดฐเตเดฏเดคเตเดคเดฟเตฝ เดเดคเต เดตเดณเดฐเต เดฒเดณเดฟเดคเดฎเดพเดฏเดฟเดฐเดฟเดเตเดเตเด:
# Indices
- source: /content/(.+?)_index.(md|html)/
public: '1'
# Pages
- source: /content/(.+?).(md|html)/
public: '1/'
เดเดเตเดเดณเตเดเต เดฎเดพเดฑเตเดฑเดเตเดเตพ เดตเดฐเตเดคเตเดคเดพเตป เดฎเดฑเดเตเดเดฐเตเดคเต:
git add .gitlab/
git commit -m "Enable review apps"
git push, เดเตเดเดพเดคเต เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเตเด:
เดฑเดฟเดตเตเดฏเต เดเดชเตเดชเต เดฌเดเตเดเดฃเดฟเดจเตเดฑเต เดธเตเดเตเดฐเตเตปเดทเตเดเตเดเต
เดเตเดฒเดฟ เดเดดเดฟเดเตเดเต!
เดชเตเดฐเตเดเดเตเดฑเตเดฑเต เดเดฑเดตเดฟเดเดเตเดเตพ:
- Gitlab-เตฝ:
https://gitlab.com/kvaps/docs.example.org - GitHub-เตฝ:
https://github.com/kvaps/docs.example.org
เดจเดฟเดเตเดเดณเตเดเต เดถเตเดฐเดฆเตเดงเดฏเตเดเตเดเต เดจเดจเตเดฆเดฟ, เดจเดฟเดเตเดเตพเดเตเดเดคเต เดเดทเตเดเดชเตเดชเตเดเตเดเตเดตเตเดจเตเดจเต เดเดพเตป เดชเตเดฐเดคเตเดเตเดทเดฟเดเตเดเตเดจเตเดจเต
เด เดตเดฒเดเดฌเด: www.habr.com