เด’เดฐเต เดธเตเดฑเตเดฑเดพเดฑเตเดฑเดฟเด•เต เดœเดจเดฑเต‡เดฑเตเดฑเดฑเดฟเดฒเตเด‚ GitHub เดชเต‡เดœเตเด•เดณเดฟเดฒเตเด‚ เด’เดฐเต เดธเตˆเดฑเตเดฑเดฟเดจเดพเดฏเดฟ CI/CD เด†เดฏเดฟ GitHub เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เตพ

เด’เดฐเต เดธเตเดฑเตเดฑเดพเดฑเตเดฑเดฟเด•เต เดœเดจเดฑเต‡เดฑเตเดฑเดฑเดฟเดฒเตเด‚ GitHub เดชเต‡เดœเตเด•เดณเดฟเดฒเตเด‚ เด’เดฐเต เดธเตˆเดฑเตเดฑเดฟเดจเดพเดฏเดฟ CI/CD เด†เดฏเดฟ GitHub เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เตพ

เดนเดฌเตโ€Œเดฑเดฟเดจเต† เด…เตฝเดชเตเดชเด‚ เดชเดฐเดฟเดถเต‹เดงเดฟเดšเตเดš เดถเต‡เดทเด‚, GitHub-เดจเตเดฑเต† (เดฌเต€เดฑเตเดฑ) เดธเดตเดฟเดถเต‡เดทเดค - เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เตพ เดŽเดจเตเดจ เดตเดฟเดทเดฏเดคเตเดคเดฟเตฝ เดตเดณเดฐเต† เด•เตเดฑเดšเตเดšเต เดฒเต‡เด–เดจเด™เตเด™เตพ เดฎเดพเดคเตเดฐเดฎเต‡ เดชเตเดฐเดธเดฟเดฆเตเดงเต€เด•เดฐเดฟเดšเตเดšเดฟเดŸเตเดŸเตเดณเตเดณเต‚ เดŽเดจเตเดจเดคเต เดŽเดจเตเดจเต† เด…เดคเตเดญเตเดคเดชเตเดชเต†เดŸเตเดคเตเดคเดฟ.

"เดฌเต€เดฑเตเดฑ" เด†เดฃเต†เด™เตเด•เดฟเดฒเตเด‚, เดชเตเดฐเดตเตผเดคเตเดคเดจเด‚ เด‡เดชเตเดชเต‹เดดเตเด‚ เดชเดฐเดฟเดถเต‹เดงเดจเดฏเดฟเดฒเดพเดฃเต เดŽเดจเตเดจ เดตเดธเตเดคเตเดคเดฏเดพเตฝ เด…เดคเตเดคเดฐเด‚ เด…เดŸเดฟเดตเดฐเดฏเดฟเดŸเตฝ เดตเดฟเดถเดฆเต€เด•เดฐเดฟเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเดฎเต†เดจเตเดจเต เดคเต‹เดจเตเดจเตเดจเตเดจเต. เดŽเดจเตเดจเดพเตฝ เดˆ เดŸเต‚เตพ เดธเตเดตเด•เดพเดฐเตเดฏ เดฑเดฟเดชเตเดชเต‹เดธเดฟเดฑเตเดฑเดฑเดฟเด•เดณเดฟเตฝ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเตป เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจ เดฌเต€เดฑเตเดฑเดฏเตเดŸเต† เด‰เดชเดฏเต‹เด—เดชเตเดฐเดฆเดฎเดพเดฏ เดธเดตเดฟเดถเต‡เดทเดคเดฏเดพเดฃเดฟเดคเต. เดˆ เดธเดพเด™เตเด•เต‡เดคเดฟเด•เดตเดฟเดฆเตเดฏเดฏเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเดพเดฃเต เดžเดพเตป เดˆ เดฒเต‡เด–เดจเดคเตเดคเดฟเตฝ เดธเด‚เดธเดพเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเต.

เดšเดฐเดฟเดคเตเดฐเด‚

เดžเด™เตเด™เตพ เด•เตเดฐเดฎเดคเตเดคเดฟเตฝ เด†เดฐเด‚เดญเดฟเด•เตเด•เตเด•เดฏเดพเดฃเต†เด™เตเด•เดฟเตฝ, เด’เดฐเต เดตเตเดฏเด•เตเดคเดฟเด—เดค โ€œเดŽเดจเตเดจเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตโ€ เดตเต†เดฌเตโ€Œเดธเตˆเดฑเตเดฑเต เดธเด‚เดญเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เดตเต‡เด—เดคเดฏเต‡เดฑเดฟเดฏเดคเตเด‚ เดธเต—เด•เดฐเตเดฏเดชเตเดฐเดฆเดตเตเด‚ เดŽเดณเตเดชเตเดชเดตเตเด‚ เดธเตŒเดœเดจเตเดฏเดตเตเดฎเดพเดฏ เด“เดชเตเดทเตป เดคเดฟเดฐเดฏเตเดจเตเดจ เดชเตเดฐเด•เตเดฐเดฟเดฏเดฏเดฟเตฝ, เดŽเดจเดฟเด•เตเด•เต เดจเดฟเดฐเดตเดงเดฟ เดฐเดพเดคเตเดฐเดฟเด•เตพ เดšเต†เดฒเดตเดดเดฟเด•เตเด•เต‡เดฃเตเดŸเดฟเดตเดจเตเดจเต, เดจเดฟเดฐเดตเดงเดฟ เดฒเต‡เด–เดจเด™เตเด™เดณเดฟเดฒเต‚เดŸเต† เด•เดŸเดจเตเดจเตเดชเต‹เด•เต‡เดฃเตเดŸเดฟ เดตเดจเตเดจเต.

เดšเดฟเดฒ เด†เดณเตเด•เตพ เดนเต‹เดธเตเดฑเตเดฑเดฟเด‚เด—เต เดคเดฟเดฐเดžเตเดžเต†เดŸเตเด•เตเด•เตเดจเตเดจเต, เดฎเดฑเตเดฑเตเดณเตเดณเดตเตผ เด’เดฐเต เด•เตเดฒเต—เดกเต เดธเต†เตผเดตเตผ, เด•เต‚เดŸเดพเดคเต† เดธเตเดฑเตเดฑเดพเดฑเตเดฑเดฟเด•เต เดธเตˆเดฑเตเดฑเตเด•เตพ เด’เดฐเต เดถเต‡เด–เดฐเดคเตเดคเดฟเดฒเต‡เด•เตเด•เต เด…เดชเตโ€Œเดฒเต‹เดกเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเต เดชเต‹เดฒเต†เดฏเตเดณเตเดณ เดœเต‹เดฒเดฟ, เด‡เดŸเดชเต†เดŸเตฝ, เดชเต‡เดฏเตโ€Œเดฎเต†เดจเตเดฑเต เดŽเดจเตเดจเดฟเดต เดฎเดจเดธเตเดธเดฟเดฒเดพเด•เตเด•เดพเตป เด†เด—เตเดฐเดนเดฟเด•เตเด•เดพเดคเตเดคเดตเตผ, เด‡เดชเตเดชเต‹เตพ เด‡เดคเต GitHub-เดฒเตเด‚ GitLab-เดฒเตเด‚ เดšเต†เดฏเตเดฏเดพเตป เด•เดดเดฟเดฏเตเด‚.

เดคเต€เตผเดšเตเดšเดฏเดพเดฏเตเด‚, เด‡เดคเต เดŽเดฒเตเดฒเดพเดตเดฐเตเดŸเต†เดฏเตเด‚ เดตเตเดฏเด•เตเดคเดฟเดชเดฐเดฎเดพเดฏ เดคเดฟเดฐเดžเตเดžเต†เดŸเตเดชเตเดชเดพเดฃเต.

เดŽเดจเตเดฑเต† เด…เดตเดธเดพเดจ เดคเดฟเดฐเดžเตเดžเต†เดŸเตเดชเตเดชเต GitHub เดชเต‡เดœเตเด•เตพ เด†เดฏเดฟเดฐเตเดจเตเดจเต.

เดชเต‡เดœเตเด•เดณเต† เด•เตเดฑเดฟเดšเตเดšเต

เด†เตผเด•เตเด•เดพเดฃเต เด…เดฑเดฟเดฏเดพเดคเตเดคเดคเต gh-pages - เด‡เดคเต เด’เดฐเต เดตเต†เดฌเตโ€Œเดธเตˆเดฑเตเดฑเดฟเดจเตเดฑเต† เดฐเต‚เดชเดคเตเดคเดฟเตฝ เดกเต‹เด•เตเดฏเตเดฎเต†เดจเตเดฑเต‡เดทเตป เดธเด‚เดญเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เด’เดฐเต เด“เดชเตเดทเดจเดพเดฃเต, เด‡เดคเต เดธเต—เดœเดจเตเดฏเดฎเดพเดฏเดฟ เดจเตฝเด•เตเดจเตเดจเต, เด•เต‚เดŸเดพเดคเต† เดกเต‹เด•เตเดฏเตเดฎเต†เดจเตเดฑเต‡เดทเดจเต เดชเตเดฑเดฎเต‡, เดตเตเดฏเด•เตเดคเดฟเด—เดค เดตเต†เดฌเตโ€Œเดธเตˆเดฑเตเดฑเตเด•เตพ เดธเด‚เดญเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเด‚ เด‡เดคเต เดจเดฟเตผเดฆเตเดฆเต‡เดถเดฟเด•เตเด•เดชเตเดชเต†เดŸเตเดŸเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต. เดˆ เดชเตเดฐเดตเตผเดคเตเดคเดจเด‚ เดŽเดฒเตเดฒเดพ เด‰เดชเดฏเต‹เด•เตเดคเดพเด•เตเด•เตพเด•เตเด•เตเด‚ GitHub เดจเตฝเด•เตเดจเตเดจเต, เด•เต‚เดŸเดพเดคเต† เดฑเดฟเดชเตเดชเต‹เดธเดฟเดฑเตเดฑเดฑเดฟ เด•เตเดฐเดฎเต€เด•เดฐเดฃเด™เตเด™เดณเดฟเตฝ เดฒเดญเตเดฏเดฎเดพเดฃเต.

เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเต เดฑเดฟเดชเตเดชเต‹เดธเดฟเดฑเตเดฑเดฑเดฟ เด’เดฐเต เดถเดพเด– เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต gh-pages, เด’เดฐเต เด‰เดชเดฏเต‹เด•เตเดคเตƒ เดธเตˆเดฑเตเดฑเดฟเดจเดพเดฏเดฟ - เดชเต‡เดฐเตเดณเตเดณ เด’เดฐเต เดชเตเดฐเดคเตเดฏเต‡เด• เดถเต‡เด–เดฐเด‚ username.github.io เดธเตˆเดฑเตเดฑเต เด‰เดฑเดตเดฟเดŸเด™เตเด™เตพเด•เตเด•เตŠเดชเตเดชเด‚ master เดถเดพเด–.

เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด•เต‚เดŸเตเดคเตฝ เดตเดฟเดถเดฆเดพเด‚เดถเด™เตเด™เตพ เด•เดพเดฃเดพเตป เด•เดดเดฟเดฏเตเด‚ เดกเต‹เด•เตเดฏเตเดฎเต†เดจเตเดฑเต‡เดทเดจเดฟเตฝ, เดŽเดจเตเดจเดพเตฝ เด’เดฐเต เดซเดฏเตฝ เดšเต‡เตผเดคเตเดคเตเด•เตŠเดฃเตเดŸเต เด…เดคเตเดคเดฐเดฎเตŠเดฐเต เดธเตˆเดฑเตเดฑเดฟเดฒเต‡เด•เตเด•เต เดธเตเดตเดจเตเดคเด‚ เดกเตŠเดฎเต†เดฏเตโ€Œเตป เดฒเดฟเด™เตเด•เต เดšเต†เดฏเตเดฏเดพเตป เด†เดฐเต†เดฏเตเด‚ เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเตฝ GitHub เด…เดคเดฟเดถเดฏเด•เดฐเดฎเดพเด‚เดตเดฟเดงเด‚ เด‰เดฆเดพเดฐเดฎเดจเดธเตเด•เดค เด•เดพเดฃเดฟเด•เตเด•เตเดจเตเดจเตเดตเต†เดจเตเดจเต เดžเดพเตป เดถเตเดฐเดฆเตเดงเดฟเด•เตเด•เดŸเตเดŸเต†. CNAME เดกเตŠเดฎเต†เดฏเตเตป เดจเดพเดฎเด‚ เดธเดนเดฟเดคเด‚ เดจเดฟเด™เตเด™เดณเตเดŸเต† เดกเตŠเดฎเต†เดฏเตเตป เดฆเดพเดคเดพเดตเดฟเดจเตเดฑเต† เดกเดฟเดŽเตปเดŽเดธเต GitHub เดธเต†เตผเดตเดฑเตเด•เดณเดฟเตฝ เดธเดœเตเดœเต€เด•เดฐเดฟเด•เตเด•เตเด•.

เด…เดคเตเดคเดฐเดฎเตŠเดฐเต เดธเตˆเดฑเตเดฑเต เดŽเด™เตเด™เดจเต† เดตเดฟเด•เดธเดฟเดชเตเดชเดฟเด•เตเด•เดพเด‚ เดŽเดจเตเดจเดคเดฟเดจเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเต เด‡เดตเดฟเดŸเต† เดงเดพเดฐเดพเดณเด‚ เดฒเต‡เด–เดจเด™เตเด™เตพ เด‰เดฃเตเดŸเต†เดจเตเดจเต เดŽเดจเดฟเด•เตเด•เต เด‰เดฑเดชเตเดชเตเดฃเตเดŸเต, เด…เดคเดฟเดจเดพเตฝ เดžเดพเตป เด•เต‚เดŸเตเดคเตฝ เดธเด‚เดธเดพเดฐเดฟเด•เตเด•เดพเตป เดชเต‹เด•เตเดจเตเดจเดคเต เด…เดคเดฒเตเดฒ.

เด‰เดฏเตผเดจเตเดจเตเดตเดฐเตเดจเตเดจ เดชเตเดฐเดถเตเดจเด‚

เด’เดฐเต เดธเตเดฑเตเดฑเดพเดฑเตเดฑเดฟเด•เต เดœเดจเดฑเต‡เดฑเตเดฑเตผ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ, เดชเต‡เดœเตเด•เตพ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเด‚ เด…เดต เดถเต‡เด–เดฐเดคเตเดคเดฟเดฒเต‡เด•เตเด•เต เดฒเต‹เดกเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเดฎเตเดณเตเดณ เดชเตเดฐเด•เตเดฐเดฟเดฏ เดฒเดณเดฟเดคเดฎเดพเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เด…เดงเดฟเด• เดธเตเด•เตเดฐเดฟเดชเตเดฑเตเดฑเตเด•เตพ เดŽเดดเตเดคเตเด•เดฏเตเด‚ เดฒเตˆเดฌเตเดฐเดฑเดฟเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเต‡เดฃเตเดŸเดคเต เด†เดตเดถเตเดฏเดฎเดพเดฃเต เดŽเดจเตเดจเดคเดพเดฃเต เดชเตเดฐเดถเตเดจเด‚. เดฒเดณเดฟเดคเดฎเดพเดฏเดฟ, เดจเดฟเด™เตเด™เตพ เด‰เดฑเดตเดฟเดŸเด™เตเด™เตพ เด’เดฐเต เดชเตเดฐเดคเตเดฏเต‡เด• เดธเตเดตเด•เดพเดฐเตเดฏ เดถเต‡เด–เดฐเดคเตเดคเดฟเตฝ เดธเต‚เด•เตเดทเดฟเด•เตเด•เตเด•เดฏเดพเดฃเต†เด™เตเด•เดฟเตฝ, เดธเตˆเดฑเตเดฑเดฟเตฝ เดŽเดจเตเดคเต†เด™เตเด•เดฟเดฒเตเด‚ เดฎเดพเดฑเตเดฑเดฎเตเดฃเตเดŸเดพเด•เตเดฎเตเดชเต‹เดดเต†เดฒเตเดฒเดพเด‚, เดคเตเดŸเตผเดจเตเดจเตเดณเตเดณ เดคเดฒเดฎเตเดฑเดฏเดฟเดฒเต† เดธเตเดฑเตเดฑเดพเดฑเตเดฑเดฟเด•เต เดชเต‡เดœเตเด•เตพเด•เตเด•เตเด‚ เดชเตเดฐเดงเดพเดจ เดธเตˆเดฑเตเดฑเต เดถเต‡เด–เดฐเดฃเดคเตเดคเดฟเตฝ เดชเตเดฐเดธเดฟเดฆเตเดงเต€เด•เดฐเดฃเดคเตเดคเดฟเดจเตเด‚ เดชเตเดฐเดพเดฆเต‡เดถเดฟเด• เด…เดจเตเดคเดฐเต€เด•เตเดทเด‚ เดตเดฟเดจเตเดฏเดธเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเต เด†เดตเดถเตเดฏเดฎเดพเดฃเต.

เดธเดฎเตƒเดฆเตเดงเดฟเดฏเตเดฃเตเดŸเต เดธเตเดฑเตเดฑเดพเดฑเตเดฑเดฟเด•เต เดœเดจเดฑเต‡เดฑเตเดฑเดฑเตเด•เตพ เด…เดตเตผเด•เตเด•เต†เดฒเตเดฒเดพเด‚ เด’เดฐเต‡ เดชเตเดฐเดถเตเดจเดฎเตเดฃเตเดŸเต. เดˆ เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เตพเด•เตเด•เต เดตเดณเดฐเต†เดฏเดงเดฟเด•เด‚ เดธเดฎเดฏเดตเตเด‚ เดชเตเดฐเดฏเดคเตเดจเดตเตเด‚ เด†เดตเดถเตเดฏเดฎเดพเดฃเต, เด†เดคเตเดฏเดจเตเดคเดฟเด•เดฎเดพเดฏเดฟ เดธเตˆเดฑเตเดฑเดฟเดฒเต† เดœเต‹เดฒเดฟ เดฎเดจเตเดฆเด—เดคเดฟเดฏเดฟเดฒเดพเด•เตเด•เตเดจเตเดจเต, เดชเตเดฐเดคเตเดฏเต‡เด•เดฟเดšเตเดšเตเด‚ OS-เตฝ เดจเดฟเดจเตเดจเต OS-เดฒเต‡เด•เตเด•เตเดณเตเดณ เดจเดฟเดฐเดตเดงเดฟ เดฎเตˆเด—เตเดฐเต‡เดทเดจเตเด•เตพ เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดนเดพเตผเดกเต เดกเตเดฐเตˆเดตเตเด•เดณเดฟเตฝ เดกเดพเดฑเตเดฑ เดจเดทเตโ€ŒเดŸเดชเตเดชเต†เดŸเตเดจเตเดจ เดธเด‚เดญเดตเด™เตเด™เตพเด•เตเด•เต เดถเต‡เดทเด‚. (เดŽเดจเตเดฑเต† เด•เดพเดฐเตเดฏเดคเตเดคเดฟเตฝ เด‡เดคเตเดคเดจเตเดจเต†เดฏเดพเดฏเดฟเดฐเตเดจเตเดจเต เด…เดตเดธเตเดฅ).

เด…เดŸเตเดคเตเดคเดฟเดŸเต†, เดตเต†เดฌเตโ€Œเดธเตˆเดฑเตเดฑเดฟเดฒเต† เด’เดฐเต เดชเต‹เดชเตเดชเต-เด…เดชเตเดชเต เด…เดฑเดฟเดฏเดฟเดชเตเดชเดฟเดฒเต‹ GitHub-เตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เด’เดฐเต เดตเดพเตผเดคเตเดคเดพเด•เตเด•เตเดฑเดฟเดชเตเดชเดฟเดฒเต‹, เดชเตเดคเตเดคเดพเดฏเดฟ เดจเดฟเตผเดฎเตเดฎเดฟเดšเตเดš เด’เดฐเต CI/CD เดถเตเดฐเดฆเตเดงเดฏเดฟเตฝเดชเตเดชเต†เดŸเตเดŸเต, เด‡เดคเต เด•เตเดฑเดžเตเดž เดชเตเดฐเดฏเดคเตเดจเดคเตเดคเต‹เดŸเต† เดˆ เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เตพ เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เตเดจเตเดจเดคเต เดธเดพเดงเตเดฏเดฎเดพเด•เตเด•เดฟ.

เดธเตเดฑเตเดฑเดพเดฑเตเดฑเดฟเด•เต เดชเต‡เดœเต เดœเดจเดฑเต‡เดฑเตเดฑเดฑเตเด•เดณเต† เด•เตเดฑเดฟเดšเตเดšเต

เดˆ เด‰เดช เด‡เดจเดคเตเดคเดฟเตฝ เดžเดพเตป เดชเตเดฐเดคเตเดฏเต‡เด• เดถเตเดฐเดฆเตเดง เด•เต‡เดจเตเดฆเตเดฐเต€เด•เดฐเดฟเด•เตเด•เดฟเดฒเตเดฒ, เดŽเดจเตเดจเดพเตฝ เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจเดต เดคเดฟเดฐเดžเตเดžเต†เดŸเตเด•เตเด•เตเดฎเตเดชเต‹เดดเตเด‚ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดฎเตเดชเต‹เดดเตเด‚ เดžเดพเตป เด•เดฃเตเดŸเต†เดคเตเดคเดฟเดฏ เดฐเดฃเตเดŸเต เดคเต€เดธเดฟเดธเตเด•เตพ เดžเดพเตป เดชเด™เตเด•เดฟเดŸเตเด‚:

1) เดจเดฟเด™เตเด™เดณเตเดŸเต† เดชเตเดฐเต‹เด—เตเดฐเดพเดฎเดฟเด‚เด—เต เดญเดพเดทเดฏเตเด•เตเด•เต เด…เดจเตเดฏเต‹เดœเตเดฏเดฎเดพเดฏ เด’เดฐเต เดœเดจเดฑเต‡เดฑเตเดฑเตผ เดคเดฟเดฐเดžเตเดžเต†เดŸเตเด•เตเด•เตเด•, เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เด•เดดเดฟเดฏเตเดจเตเดจเดคเตเดฐ เดตเตเดฏเด•เตเดคเดฎเดพเดฏ เด’เดจเตเดจเต. เดธเตˆเดฑเตเดฑเดฟเดจเตเดฑเต† เดชเตเดฐเดตเตผเดคเตเดคเดจเดคเตเดคเดฟเดจเดพเดฏเดฟ เดšเดฟเดฒ เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เตพ เดšเต‡เตผเด•เตเด•เต‡เดฃเตเดŸ เดธเดฎเดฏเดคเตเดคเดพเดฃเต เดžเดพเตป เดˆ เด†เดถเดฏเดคเตเดคเดฟเดฒเต‡เด•เตเด•เต เดตเดจเตเดจเดคเต, เด…เดคเดฟเดจเตเดฑเต† เด•เต‚เดŸเตเดคเตฝ เดธเตเดฅเดฟเดฐเดคเดฏเตเด•เตเด•เตเด‚ เด“เดŸเตเดŸเต‹เดฎเต‡เดทเดจเตเด‚ เด•เตเดฐเดšเตเดšเตเด•เตพ เดšเต‡เตผเด•เตเด•เตเด•. เด‡เดคเตเด•เต‚เดŸเดพเดคเต†, เดชเตเดฒเด—เดฟเดจเตเด•เดณเตเดŸเต† เดฐเต‚เดชเดคเตเดคเดฟเตฝ เด…เดงเดฟเด• เดชเตเดฐเดตเตผเดคเตเดคเดจเด‚ เดธเตเดตเดฏเด‚ เดŽเดดเตเดคเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เด’เดฐเต เดจเดฒเตเดฒ เด•เดพเดฐเดฃเดฎเดพเดฃเดฟเดคเต;

2) เดเดคเต เดœเดจเดฑเต‡เดฑเตเดฑเตผ เดคเดฟเดฐเดžเตเดžเต†เดŸเตเด•เตเด•เดฃเด‚ เดŽเดจเตเดจเดคเต เด’เดฐเต เดตเตเดฏเด•เตเดคเดฟเด—เดค เดšเต‹เดฏเดฟเดธเดพเดฃเต, เดŽเดจเตเดจเดพเตฝ GitHub เดชเต‡เดœเตเด•เดณเตเดŸเต† เดชเตเดฐเดตเตผเดคเตเดคเดจเดคเตเดคเดฟเดฒเต† เดชเตเดฐเดพเดฐเด‚เดญ เดฎเตเดดเด•เตเด•เดคเตเดคเดฟเดจเดพเดฏเดฟ, เดจเดฟเด™เตเด™เตพ เด†เดฆเตเดฏเด‚ เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเดฃเด‚ เดŽเดจเตเดจเดคเต เดชเดฐเดฟเด—เดฃเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเดพเดฃเต. เดœเต†เด•เตเด•เดฟเตพ. เดญเดพเด—เตเดฏเดตเดถเดพเตฝ, เด‰เดฑเดตเดฟเดŸเด™เตเด™เดณเดฟเตฝ เดจเดฟเดจเตเดจเต เดจเต‡เดฐเดฟเดŸเตเดŸเต เดฑเดฟเดชเตเดชเต‹เดธเดฟเดฑเตเดฑเดฑเดฟเดฏเดฟเตฝ เดจเดฟเดจเตเดจเต เด’เดฐเต เดตเต†เดฌเตเดธเตˆเดฑเตเดฑเต เดธเตƒเดทเตเดŸเดฟเด•เตเด•เดพเตป เด‡เดคเต เดจเดฟเด™เตเด™เดณเต† เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจเต (เดŽเดจเตเดฑเต† เด‡เดทเตเดŸเดชเตเดฐเด•เดพเดฐเด‚ เดžเดพเตป เด‡เดคเต เด†เดตเตผเดคเตเดคเดฟเด•เตเด•เตเด‚).

เดŽเดจเตเดฑเต† เดœเดจเดฑเต‡เดฑเตเดฑเดฑเดฟเดจเตเดฑเต† เดคเดฟเดฐเดžเตเดžเต†เดŸเตเดชเตเดชเต เด†เดฆเตเดฏ เดชเต‹เดฏเดฟเดจเตเดฑเดฟเดจเต† เด…เดŸเดฟเดธเตเดฅเดพเดจเดฎเดพเด•เตเด•เดฟเดฏเตเดณเตเดณเดคเดพเดฃเต. เดชเต†เดฒเดฟเด•เตเด•เตป เดชเตˆเดคเตเดคเดฃเดฟเตฝ เดŽเดดเตเดคเดฟเดฏเดคเต เดœเต†เด•เตเด•เดฟเดฒเดฟเดจเต† เดŽเดณเตเดชเตเดชเดคเตเดคเดฟเตฝ เดฎเดพเดฑเตเดฑเดฟเดธเตเดฅเดพเดชเดฟเดšเตเดšเต, เด…เดคเต เดŽเดจเดฟเด•เตเด•เต เด…เดจเตเดฏเดฎเดพเดฃเต (เดเดคเดพเดฃเตเดŸเต เด’เดฐเต เดตเตผเดทเดคเตเดคเต‹เดณเด‚ เด‡เดคเต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต). เดคเตฝเดซเดฒเดฎเดพเดฏเดฟ, เดฒเต‡เด–เดจเด™เตเด™เตพ เดธเตƒเดทเตโ€ŒเดŸเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดŽเดกเดฟเดฑเตเดฑเตเดšเต†เดฏเตเดฏเตเด•เดฏเตเด‚ เด’เดฐเต เดตเต†เดฌเตโ€Œเดธเตˆเดฑเตเดฑเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเต เดชเต‹เดฒเตเด‚ เดŽเดจเดฟเด•เตเด•เต เดคเดพเตฝเดชเตเดชเดฐเตเดฏเดฎเตเดฃเตผเดคเตเดคเตเดจเตเดจ เด’เดฐเต เดญเดพเดทเดฏเดฟเตฝ เด…เดงเดฟเด• เด…เดจเตเดญเดตเด‚ เดจเตฝเด•เตเดจเตเดจเต.

__

เดชเตเดฐเดถเตเดจ เดชเตเดฐเดธเตเดคเดพเดตเดจ

เด’เดฐเต เดธเตเดตเด•เดพเดฐเตเดฏ เดฑเดฟเดชเตเดชเต‹เดธเดฟเดฑเตเดฑเดฑเดฟเดฏเดฟเตฝ เดจเดฟเดจเตเดจเต เดฏเดพเดจเตเดคเตเดฐเดฟเด•เดฎเดพเดฏเดฟ เดธเตเดฑเตเดฑเดพเดฑเตเดฑเดฟเด•เต เดชเต‡เดœเตเด•เตพ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดจเตเดจ เด’เดฐเต เดธเตเด•เตเดฐเดฟเดชเตเดฑเตเดฑเต (เดฏเดฅเดพเตผเดคเตเดฅเดคเตเดคเดฟเตฝ เด’เดฐเต เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเตป เดซเดฏเตฝ) เดŽเดดเตเดคเตเด• เดŽเดจเตเดจเดคเดพเดฃเต เดชเตเดฐเดงเดพเดจ เดšเตเดฎเดคเดฒ. เดชเดฐเดฟเดนเดพเดฐเดคเตเดคเดฟเตฝ เด’เดฐเต เดตเต†เตผเดšเตเดตเตฝ เดŽเตปเดตเดฏเต‹เตบเดฎเต†เดจเตเดฑเดฟเดจเตเดฑเต† เดชเตเดฐเดตเตผเดคเตเดคเดจเด•เตเดทเดฎเดค เด‰เตพเดชเตเดชเต†เดŸเตเด‚. เดธเตเด•เตเดฐเดฟเดชเตเดฑเตเดฑเต เดคเดจเตเดจเต† เดฑเต†เดกเดฟเดฎเต†เดฏเตเดกเต เดชเต‡เดœเตเด•เตพ เดชเตŠเดคเต เดถเต‡เด–เดฐเดคเตเดคเดฟเดฒเต‡เด•เตเด•เต เดšเต‡เตผเด•เตเด•เตเด‚.

เดชเดฐเดฟเดนเดพเดฐเดคเตเดคเดฟเดจเตเดณเตเดณ เด‰เดชเด•เดฐเดฃเด™เตเด™เตพ

เดชเตเดฐเดถเตเดจเด‚ เดชเดฐเดฟเดนเดฐเดฟเด•เตเด•เดพเตป เดžเด™เตเด™เตพ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจ เด‰เดชเด•เดฐเดฃเด™เตเด™เตพ:

  • GitHub เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เตพ;
  • เดชเตˆเดคเตเดคเตบ 3.7;
  • เดชเต†เดฒเดฟเด•เตเด•เตป;
  • Git;
  • GitHub เดชเต‡เดœเตเด•เตพ.

เดŸเตเดฐเดฌเดฟเตพเดทเต‚เดŸเตเดŸเต เดšเต†เดฏเตเดฏเตเดจเตเดจเต

เด…เดคเดฟเดจเดพเตฝ, เดกเต‹เด•เตเดฏเตเดฎเต†เดจเตเดฑเต‡เดทเดจเตเดฎเดพเดฏเดฟ เด…เตฝเดชเตเดชเด‚ เดชเดฐเดฟเดšเดฏเดชเตเดชเต†เดŸเตเด•เดฏเตเด‚ เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เตพเด•เตเด•เตเดณเตเดณ เดธเตเด•เตเดฐเดฟเดชเตเดฑเตเดฑเตเด•เตพ เดŽเด™เตเด™เดจเต† เดŽเดดเตเดคเตเดจเตเดจเตเดตเต†เดจเตเดจเต เดฎเดจเดธเดฟเดฒเดพเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดค เดถเต‡เดทเด‚, เดˆ เดธเด‚เดตเดฟเดงเดพเดจเด‚ เด‰เดฏเตผเดจเตเดจเตเดตเดจเตเดจ เดชเตเดฐเดถเตเดจเด‚ เดชเต‚เตผเดฃเตเดฃเดฎเดพเดฏเตเด‚ เดชเดฐเดฟเดนเดฐเดฟเด•เตเด•เตเดฎเต†เดจเตเดจเต เดตเตเดฏเด•เตเดคเดฎเดพเดฏเดฟ. เดŽเดดเตเดคเตเดจเตเดจ เดธเดฎเดฏเดคเตเดคเต, เดˆ เดชเตเดฐเดตเตผเดคเตเดคเดจเด‚ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เดจเดฟเด™เตเด™เตพ เดธเดฌเตโ€Œเดธเตโ€Œเด•เตเดฐเตˆเดฌเต เดšเต†เดฏเตเดฏเดฃเด‚. เดฌเต€เดฑเตเดฑ เดชเดฐเดฟเดถเต‹เดงเดจเดฏเตเด•เตเด•เดพเดฏเดฟ!

เด’เดฐเต เดธเตเดฑเตเดฑเดพเดฑเตเดฑเดฟเด•เต เดœเดจเดฑเต‡เดฑเตเดฑเดฑเดฟเดฒเตเด‚ GitHub เดชเต‡เดœเตเด•เดณเดฟเดฒเตเด‚ เด’เดฐเต เดธเตˆเดฑเตเดฑเดฟเดจเดพเดฏเดฟ CI/CD เด†เดฏเดฟ GitHub เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เตพ
Github เดคเดจเตเดจเต† เดชเตเดคเดฟเดฏ เดชเตเดฐเดตเตผเดคเตเดคเดจเดคเตเดคเดฟเดจเตเดฑเต† เดตเดฟเดตเดฐเดฃเด‚

เด’เดฐเต เดซเต‹เตพเดกเดฑเดฟเตฝ เดชเต‡เดฐเดฟเดŸเตเดŸเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจ เดซเดฏเตฝ เดธเตƒเดทเตโ€ŒเดŸเดฟเดšเตเดšเดพเดฃเต เด’เดฐเต เดชเตเดฐเดตเตผเดคเตเดคเดจ เดธเตโ€Œเด•เตเดฐเดฟเดชเตเดฑเตเดฑเต เดŽเดดเตเดคเตเดจเตเดจเดคเต เด†เดฐเด‚เดญเดฟเด•เตเด•เตเดจเตเดจเดคเต .github เด…เดคเดฟเดจเตเดฑเต† เด‰เดชเดซเต‹เตพเดกเดฑเตเด‚ workflows. เด‡เดคเต เดธเตเดตเดฎเต‡เดงเดฏเดพ เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดฑเดฟเดชเตเดชเต‹เดธเดฟเดฑเตเดฑเดฑเดฟ เดชเต‡เดœเดฟเดฒเต† เดชเตเดฐเดตเตผเดคเตเดคเดจ เดŸเดพเดฌเดฟเดฒเต† เดŽเดกเดฟเดฑเตเดฑเดฑเดฟเตฝ เดจเดฟเดจเตเดจเต เดšเต†เดฏเตเดฏเดพเด‚.

เด’เดฐเต เดธเตเดฑเตเดฑเดพเดฑเตเดฑเดฟเด•เต เดœเดจเดฑเต‡เดฑเตเดฑเดฑเดฟเดฒเตเด‚ GitHub เดชเต‡เดœเตเด•เดณเดฟเดฒเตเด‚ เด’เดฐเต เดธเตˆเดฑเตเดฑเดฟเดจเดพเดฏเดฟ CI/CD เด†เดฏเดฟ GitHub เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เตพ
เด’เดฐเต เดถเต‚เดจเตเดฏเดฎเดพเดฏ เดธเตเด•เตเดฐเดฟเดชเตเดฑเตเดฑเต เดซเต‹เดฎเดฟเดจเตเดฑเต† เด‰เดฆเดพเดนเดฐเดฃเด‚

เดซเต‹เดฎเดฟเตฝ เดžเดพเตป เดนเตเดฐเดธเตเดตเดฎเดพเดฏเดฟ เด…เดญเดฟเดชเตเดฐเดพเดฏเด‚ เดชเดฑเดฏเตเด‚

name: CI    # ะฝะฐะทะฒะฐะฝะธะต ัะบั€ะธะฟั‚ะฐ: ะฑัƒะดะตั‚ ะพั‚ะพะฑั€ะฐะถะฐั‚ัŒัั ะฒะพ ะฒะบะปะฐะดะบะต Actions

on: [push]  # ะดะตะนัั‚ะฒะธะต, ะฟะพ ะบะพั‚ะพั€ะพะผัƒ ะทะฐะฟัƒัะบะฐะตั‚ัั ะดะฐะฝะฝั‹ะน ัะบั€ะธะฟั‚

jobs:       # ั€ะพะฑะพั‚ั‹, ะบะพั‚ะพั€ั‹ะต ะฑัƒะดัƒั‚ ะฒั‹ะฟะพะปะฝัั‚ัŒัั
  build:    # ัะฑะพั€ะบะฐ, ะบะพั‚ะพั€ะฐั..

    runs-on: ubuntu-latest      # ..ะฑัƒะดะตั‚ ะทะฐะฟัƒั‰ะตะฝะฐ ะฝะฐ ะพัะฝะพะฒะต ัั‚ะพะณะพ ะพะฑั€ะฐะทะฐ

    steps:              # ัˆะฐะณะธ ะบะพั‚ะพั€ั‹ะต ะฑัƒะดัƒั‚ ะฟั€ะพะดะตะปะฐะฝั‹ ะฟะพัะปะต ะทะฐะฟัƒัะบะฐ ะพะฑั€ะฐะทะฐ
    - uses: actions/checkout@v1     # ะฟะตั€ะตั…ะพะด ะฒ ัะฐะผัƒัŽ ะฐะบั‚ัƒะฐะปัŒะฝัƒัŽ ะฒะตั‚ะบัƒ
    - name: Run a one-line script   # ะธะผั ั€ะฐะฑะพั‚ั‹ ะฝะพะผะตั€ 1
      run: echo Hello, world!       # ััƒั‚ัŒ ั€ะฐะฑะพั‚ั‹ ะฝะพะผะตั€ 1 (bash-ะบะพะผะฐะฝะดะฐ ะทะฐะฟะธัะฐะฝะฐ ะฒ ะพะดะฝัƒ ัั‚ั€ะพะบัƒ)
    - name: Run a multi-line script   # ะธะผั ั€ะฐะฑะพั‚ั‹ ะฝะพะผะตั€ 2
      run: |                    # ััƒั‚ัŒ ั€ะฐะฑะพั‚ั‹ ะฝะพะผะตั€ 2 (ะผะฝะพะณะพัั‚ั€ะพั‡ะฝะฐั)
        echo Add other actions to build,
        echo test, and deploy your project.

เดŸเต†เด‚เดชเตเดฒเต‡เดฑเตเดฑเดฟเดจเต† เด…เดŸเดฟเดธเตเดฅเดพเดจเดฎเดพเด•เตเด•เดฟ เดจเดฎเตเด•เตเด•เต เดธเตเดตเดจเตเดคเดฎเดพเดฏเดฟ เดŽเดดเตเดคเดพเด‚:

0) เดจเดฟเด™เตเด™เตพเด•เตเด•เต "CI" เดŽเดจเตเดจ เดชเต‡เดฐเตเด‚ เดจเตฝเด•เดพเด‚. เดฐเตเดšเดฟเดฏเตเดŸเต† เด•เดพเดฐเตเดฏเด‚.

1) เด…เดŸเตเดคเตเดคเดคเดพเดฏเดฟ, เดธเตเด•เตเดฐเดฟเดชเตเดฑเตเดฑเต เดธเดฎเดพเดฐเด‚เดญเดฟเด•เตเด•เตเดจเตเดจ เดชเตเดฐเดตเตผเดคเตเดคเดจเด‚/เดŸเตเดฐเดฟเด—เตผ เดจเดฟเด™เตเด™เตพ เดคเดฟเดฐเดžเตเดžเต†เดŸเตเด•เตเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต, เดžเด™เตเด™เดณเตเดŸเต† เด•เดพเดฐเตเดฏเดคเตเดคเดฟเตฝ เด‡เดคเต เดฑเดฟเดชเตเดชเต‹เดธเดฟเดฑเตเดฑเดฑเดฟเดฏเดฟเดฒเต‡เด•เตเด•เตเดณเตเดณ เด’เดฐเต เดชเตเดคเดฟเดฏ เดชเตเดฐเดคเดฟเดฌเดฆเตเดงเดคเดฏเตเดŸเต† เดธเดพเดงเดพเดฐเดฃ เดชเตเดทเต เด†เดฃเต.

on:
  push

2) เด†เดตเดถเตเดฏเดฎเดพเดฏ เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เดณเดฟเตฝ เด‰เดฌเตเดฃเตเดŸเต เดคเดฟเด•เดšเตเดšเตเด‚ เดคเตƒเดชเตโ€Œเดคเดฐเดพเดฏเดคเดฟเดจเดพเตฝ เดธเตโ€Œเด•เตเดฐเดฟเดชเตเดฑเตเดฑเต เดธเดฎเดพเดฐเด‚เดญเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดฑเต† เด…เดŸเดฟเดธเตเดฅเดพเดจเดคเตเดคเดฟเดฒเดพเดฃเต เดžเด™เตเด™เตพ เดšเดฟเดคเตเดฐเด‚ เด‰เดชเต‡เด•เตเดทเดฟเด•เตเด•เตเดจเตเดจเดคเต. เดจเต‹เด•เตเด•เตเดจเตเดจเต เดฆเตŠเดธเตเดคเตเดชเตเดจเตั‹เดŽ เด‡เตปเดธเตเดŸเตเดฐเตเดฎเต†เดจเตเดฑเตเด•เตพ เด‡เดคเต เด†เดตเดถเตเดฏเดฎเตเดณเตเดณเดคเต‹ เดฒเดณเดฟเดคเดฎเต‹ เด†เดฏ เดเดคเต†เด™เตเด•เดฟเดฒเตเด‚ เด‡เดฎเต‡เดœเต (เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เด…เดคเดฟเดจเต† เด…เดŸเดฟเดธเตเดฅเดพเดจเดฎเดพเด•เตเด•เดฟเดฏเตเดณเตเดณ เด’เดฐเต เดกเต‹เด•เตเด•เตผ เด•เดฃเตเดŸเต†เดฏเตเดจเตผ) เด†เดฏเดฟเดฐเดฟเด•เตเด•เดพเดฎเต†เดจเตเดจเต เดตเตเดฏเด•เตเดคเดฎเดพเด•เตเด‚.

  build:
    runs-on: ubuntu-latest

3) เด˜เดŸเตเดŸเด™เตเด™เดณเดฟเตฝ, เดชเตเดฐเดงเดพเดจ เดœเต‹เดฒเดฟเด•เตเด•เต เดคเดฏเตเดฏเดพเดฑเต†เดŸเตเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เด…เดจเตเดคเดฐเต€เด•เตเดทเด‚ เดžเด™เตเด™เตพ เด†เดฆเตเดฏเด‚ เดธเดœเตเดœเต€เด•เดฐเดฟเด•เตเด•เตเด‚.

3.1) เดจเดฎเตเด•เตเด•เต เด†เดตเดถเตเดฏเดฎเตเดณเตเดณ เดฌเตเดฐเดพเดžเตเดšเดฟเดฒเต‡เด•เตเด•เต เดชเต‹เด•เตเด• (เดธเดพเดงเดพเดฐเดฃ เด˜เดŸเตเดŸเด‚ checkout):

- uses: actions/checkout@v1

3.2) เดชเตˆเดคเตเดคเตบ เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเตเด•:

    - name: Set up Python
      uses: actions/setup-python@v1
      with:
        python-version: 3.7

3.3) เดžเด™เตเด™เดณเตเดŸเต† เดœเดจเดฑเต‡เดฑเตเดฑเดฑเดฟเดจเตเดฑเต† เดกเดฟเดชเตปเดกเตปเดธเดฟเด•เตพ เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเตเด•:

    - name: Install dependencies
      run: |
          python -m pip install --upgrade pip
          pip install -r requirements.txt

3.4) เดธเตˆเดฑเตเดฑเต เดชเต‡เดœเตเด•เตพ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดจเตเดจ เด’เดฐเต เดกเดฏเดฑเด•เตเดŸเดฑเดฟ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเด•:

   - name: Make output folder
      run: mkdir output

4) เดธเตˆเดฑเตเดฑเดฟเดฒเต† เดตเตผเด•เตเด•เต เดธเตเดฅเดฟเดฐเดคเดฏเตเดณเตเดณเดคเดพเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต, เด…เดคเดพเดฏเดคเต, เดฎเตเดฎเตเดชเดคเตเดคเต† เดฎเดพเดฑเตเดฑเด™เตเด™เตพ เด‡เดฒเตเดฒเดพเดคเดพเด•เตเด•เดพเดคเดฟเดฐเดฟเด•เตเด•เดพเดจเตเด‚ เดตเตˆเดฐเตเดฆเตเดงเตเดฏเด™เตเด™เดณเดฟเดฒเตเดฒเดพเดคเต† เดธเตˆเดฑเตเดฑเต เดถเต‡เด–เดฐเดคเตเดคเดฟเดฒเต‡เด•เตเด•เต เดฎเดพเดฑเตเดฑเด™เตเด™เตพ เดšเต‡เตผเด•เตเด•เดพเดจเตเด‚, เด“เดฐเต‹ เดคเดตเดฃเดฏเตเด‚ เดธเตˆเดฑเตเดฑเต เดถเต‡เด–เดฐเด‚ เด•เตเดฒเต‹เตบ เดšเต†เดฏเตเดฏเตเด• เดŽเดจเตเดจเดคเดพเดฃเต เด…เดŸเตเดคเตเดค เด˜เดŸเตเดŸเด‚:

   - name: Clone master branch
      run: git clone "https://${{ secrets.ACCESS_TOKEN }}@github.com/${GITHUB_ACTOR}/${GITHUB_ACTOR}.github.io.git" --branch master --single-branch ./output

เดˆ เด˜เดŸเตเดŸเด‚ เดธเดฟเดธเตเดฑเตเดฑเด‚ เดตเต‡เดฐเดฟเดฏเดฌเดฟเดณเตเด•เดณเต† เดตเดฟเดณเดฟเด•เตเด•เตเดจเตเดจเต:

  • เดตเต‡เดฐเดฟเดฏเดฌเดฟเตพ GITHUB_ACTOR GitHub เดธเตเดตเดฏเด‚ เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเตเดจเตเดจเต, เด†เดฐเตเดŸเต† เดชเดฟเดดเดตเดฟเดฒเต‚เดŸเต†เดฏเดพเดฃเต เดˆ เดธเตเด•เตเดฐเดฟเดชเตเดฑเตเดฑเต เดธเดฎเดพเดฐเด‚เดญเดฟเดšเตเดš เด‰เดชเดฏเต‹เด•เตเดคเตƒเดจเดพเดฎเด‚;
  • เดตเต‡เดฐเดฟเดฏเดฌเดฟเตพ secrets.ACCESS_TOKEN เด‡เดคเต เดธเตƒเดทเตเดŸเดฟเด•เตเด•เดชเตเดชเต†เดŸเตเดจเตเดจเต Github เด•เตˆเด•เดพเดฐเตเดฏเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดŸเต‹เด•เตเด•เตบ, เดŸเดพเดฌเดฟเตฝ เดธเดœเตเดœเต€เด•เดฐเดฟเดšเตเดšเต เดจเดฎเตเด•เตเด•เต เด‡เดคเต เด’เดฐเต เดŽเตปเดตเดฏเต‹เตบเดฎเต†เดจเตเดฑเต เดตเต‡เดฐเดฟเดฏเดฌเดฟเดณเดพเดฏเดฟ เด•เตˆเดฎเดพเดฑเดพเด‚ Secrets เดžเด™เตเด™เดณเตเดŸเต† เดฑเดฟเดชเตเดชเต‹เดธเดฟเดฑเตเดฑเดฑเดฟ เด•เตเดฐเดฎเต€เด•เดฐเดฃเด™เตเด™เตพ. เดœเดจเดฑเต‡เดทเตป เดธเดฎเดฏเดคเตเดคเต เดŸเต‹เด•เตเด•เตบ เด’เดฐเดฟเด•เตเด•เตฝ เดžเด™เตเด™เตพเด•เตเด•เต เดจเตฝเด•เตเด‚, เด…เดคเดฟเดฒเต‡เด•เตเด•เต เด•เต‚เดŸเตเดคเตฝ เด†เด•เตเดธเดธเต เด‰เดฃเตเดŸเดพเด•เดฟเดฒเตเดฒ. เด…เดคเตเดชเต‹เดฒเต† เดคเดจเตเดจเต† เดธเต€เด•เตเดฐเดŸเตเดŸเตเดธเต เด‡เดจเด™เตเด™เดณเตเดŸเต† เดฎเต‚เดฒเตเดฏเด™เตเด™เดณเตเด‚.

5) เดจเดฎเตเด•เตเด•เต เดจเดฎเตเดฎเตเดŸเต† เดชเต‡เดœเตเด•เตพ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดฒเต‡เด•เตเด•เต เดชเต‹เด•เดพเด‚:

   - name: Generate static pages
      run: pelican content -o output -s publishconf.py

เดœเดจเดฑเต‡เดฑเตเดฑเดฑเดฟเดฒเต‡เด•เตเด•เต เด•เตˆเดฎเดพเดฑเดฟเดฏ เดชเดพเดฐเดพเดฎเต€เดฑเตเดฑเดฑเตเด•เตพ เดœเดจเดฑเต‡เดฑเตเดฑเต เดšเต†เดฏเตเดค เดซเดฏเดฒเตเด•เตพ เด…เดฏเดฏเตเด•เตเด•เตเดจเตเดจ เดกเดฏเดฑเด•เตเดŸเดฑเดฟเดฏเตเดŸเต† เด‰เดคเตเดคเดฐเดตเดพเดฆเดฟเดคเตเดคเดฎเดพเดฃเต (-o output) เด•เต‚เดŸเดพเดคเต† เดžเด™เตเด™เตพ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เดพเตป เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจ เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเตป เดซเดฏเดฒเตเด‚ (-s publishconf.py; เดชเต†เดฒเดฟเด•เตเด•เตป เดกเต‹เด•เตเดฏเตเดฎเต†เดจเตเดฑเต‡เดทเดจเดฟเตฝ เดฒเต‹เด•เตเด•เตฝ เด•เต‹เตบเดซเดฟเด—เดฑเดฟเดจเต†เดฏเตเด‚ เดชเตเดฐเดธเดฟเดฆเตเดงเต€เด•เดฐเดฃเดคเตเดคเดฟเดจเตเดณเตเดณ เด•เต‹เตบเดซเดฟเด—เดฟเดจเต†เดฏเตเด‚ เดตเต‡เตผเดคเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจ เดธเดฎเต€เดชเดจเดคเตเดคเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเต เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดตเดพเดฏเดฟเด•เตเด•เดพเด‚.).

เดžเด™เตเด™เดณเตเดŸเต† เดซเต‹เตพเดกเดฑเดฟเตฝ เดŽเดจเตเดคเดพเดฃเต เด‰เดณเตเดณเดคเต†เดจเตเดจเต เดžเดพเตป เดจเดฟเด™เตเด™เดณเต† เด“เตผเดฎเตเดฎเดฟเดชเตเดชเดฟเด•เตเด•เดŸเตเดŸเต† output เดธเตˆเดฑเตเดฑเต เดถเต‡เด–เดฐเด‚ เด‡เดคเดฟเดจเด•เด‚ เด•เตเดฒเต‹เตบ เดšเต†เดฏเตเดคเต.

6) เดจเดฎเตเด•เตเด•เต เดœเดฟเดฑเตเดฑเต เดธเดœเตเดœเต€เด•เดฐเดฟเดšเตเดšเต เดจเดฎเตเดฎเตเดŸเต† เดฎเดพเดฑเดฟเดฏ เดซเดฏเดฒเตเด•เตพ เดธเต‚เดšเดฟเด•เดฏเดพเด•เตเด•เดพเด‚:

    - name: Set git config and add changes
      run: |
          git config --global user.email "${GITHUB_ACTOR}@https://users.noreply.github.com/"
          git config --global user.name "${GITHUB_ACTOR}"
          git add --all
      working-directory: ./output

เดˆ เด˜เดŸเตเดŸเดคเตเดคเดฟเตฝ, เด‡เดคเดฟเดจเด•เด‚ เด…เดฑเดฟเดฏเดชเตเดชเต†เดŸเตเดจเตเดจ เด’เดฐเต เดตเต‡เดฐเดฟเดฏเดฌเดฟเตพ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต, เด•เต‚เดŸเดพเดคเต† เดˆ เด˜เดŸเตเดŸเดคเตเดคเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เด•เดฎเดพเตปเดกเตเด•เตพ เดฒเต‹เดžเตเดšเต เดšเต†เดฏเตเดฏเตเดจเตเดจ เดชเตเดฐเดตเตผเดคเตเดคเดจ เดกเดฏเดฑเด•เตเดŸเดฑเดฟ เดธเต‚เดšเดฟเดชเตเดชเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต. เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจ เดกเดฏเดฑเด•เตโ€ŒเดŸเดฑเดฟเดฏเดฟเดฒเต‡เด•เตเด•เต เดชเต‹เด•เดพเดจเตเดณเตเดณ เด•เดฎเดพเตปเดกเต เด‡เด™เตเด™เดจเต†เดฏเดพเดฏเดฟเดฐเดฟเด•เตเด•เตเด‚ - cd output.

7) เดจเดฎเตเด•เตเด•เต เด’เดฐเต เดชเตเดฐเดคเดฟเดฌเดฆเตเดงเดค เดธเดจเตเดฆเต‡เดถเด‚ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เดพเด‚, เดฎเดพเดฑเตเดฑเด™เตเด™เตพ เดตเดฐเตเดคเตเดคเดพเด‚, เด…เดต เดถเต‡เด–เดฐเดคเตเดคเดฟเดฒเต‡เด•เตเด•เต เดคเดณเตเดณเดพเด‚. เด…เดคเดฟเดจเดพเตฝ เดชเตเดฐเดคเดฟเดฌเดฆเตเดงเดค เดตเตเดฏเตผเดคเตเดฅเดฎเดพเด•เดพเดคเดฟเดฐเดฟเด•เตเด•เดพเดจเตเด‚ เด…เดคเดฟเดจเดพเตฝ เดฌเดพเดทเดฟเตฝ เด’เดฐเต เดชเดฟเดถเด•เต เดธเตƒเดทเตเดŸเดฟเด•เตเด•เดพเดคเดฟเดฐเดฟเด•เตเด•เดพเดจเตเด‚ (เด”เดŸเตเดŸเตเดชเตเดŸเตเดŸเต เดซเดฒเด‚ เด…เดฒเตเดฒ 0) - เด†เดฆเตเดฏเด‚, เดŽเดจเตเดคเต†เด™เตเด•เดฟเดฒเตเด‚ เดชเตเดฐเดคเดฟเดœเตเดžเดพเดฌเดฆเตเดงเดฎเดพเด•เตเด•เตเด•เดฏเตเด‚ เดคเดณเตเดณเตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเต‡เดฃเตเดŸเดคเต เด†เดตเดถเตเดฏเดฎเดพเดฃเต‹ เดŽเดจเตเดจเต เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เดพเด‚. เด‡เดคเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต, เดžเด™เตเด™เตพ เด•เดฎเดพเตปเดกเต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต git diff-index --quiet --cached HEAD -- เด…เดคเต เดŸเต†เตผเดฎเดฟเดจเดฒเดฟเดฒเต‡เด•เตเด•เต เด”เดŸเตเดŸเตเดชเตเดŸเตเดŸเต เดšเต†เดฏเตเดฏเตเด‚ 0 เดธเตˆเดฑเตเดฑเดฟเดจเตเดฑเต† เดฎเตเตป เดชเดคเดฟเดชเตเดชเตเดฎเดพเดฏเดฟ เดฌเดจเตเดงเดชเตเดชเต†เดŸเตเดŸเต เดฎเดพเดฑเตเดฑเด™เตเด™เดณเตŠเดจเตเดจเตเด‚ เด‡เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ, เด•เต‚เดŸเดพเดคเต† 1 เด…เดคเตเดคเดฐเด‚ เดฎเดพเดฑเตเดฑเด™เตเด™เดณเตเดฃเตเดŸเต. เด…เดชเตเดชเต‹เตพ เดˆ เด•เดฎเดพเตปเดกเดฟเดจเตเดฑเต† เดซเดฒเด‚ เดžเด™เตเด™เตพ เดชเตเดฐเต‹เดธเดธเตเดธเต เดšเต†เดฏเตเดฏเตเดจเตเดจเต. เด…เดคเดฟเดจเดพเตฝ, เดธเตโ€Œเด•เตเดฐเดฟเดชเตเดฑเตเดฑเต เดŽเด•เตโ€Œเดธเดฟเด•เตเดฏเต‚เดทเตป เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตเดณเตเดณ เดตเดฟเดตเดฐเด™เตเด™เดณเดฟเตฝ, เดˆ เด˜เดŸเตเดŸเดคเตเดคเดฟเตฝ เดธเตˆเดฑเตเดฑเดฟเดจเตเดฑเต† เด…เดตเดธเตเดฅเดฏเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตเดณเตเดณ เด‰เดชเดฏเต‹เด—เดชเตเดฐเดฆเดฎเดพเดฏ เดตเดฟเดตเดฐเด™เตเด™เตพ เดžเด™เตเด™เตพ เดฐเต‡เด–เดชเตเดชเต†เดŸเตเดคเตเดคเตเด‚, เดธเตโ€Œเด•เตเดฐเดฟเดชเตเดฑเตเดฑเต เด•เตเดฐเดพเดทเดฟเดจเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตเดณเตเดณ เด’เดฐเต เดฑเดฟเดชเตเดชเต‹เตผเดŸเตเดŸเต เดธเตเดตเดฏเดฎเต‡เดต เด•เตเดฐเดพเดทเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเด‚ เดžเด™เตเด™เตพเด•เตเด•เต เด…เดฏเดฏเตเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเด‚ เดชเด•เดฐเด‚.

เดฑเต†เดกเดฟเดฎเต†เดฏเตเดกเต เดชเต‡เดœเตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดžเด™เตเด™เดณเตเดŸเต† เดกเดฏเดฑเด•เตโ€ŒเดŸเดฑเดฟเดฏเดฟเดฒเตเด‚ เดžเด™เตเด™เตพ เดˆ เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เตพ เดจเดŸเดคเตเดคเตเดจเตเดจเต.

   - name: Push and send notification
      run: |
          COMMIT_MESSAGE="Update pages on $(date +'%Y-%m-%d %H:%M:%S')"
          git diff-index --quiet --cached HEAD -- && echo "No changes!" && exit 0 || echo $COMMIT_MESSAGE
          # Only if repo have changes
          git commit -m "${COMMIT_MESSAGE}"
          git push https://${{ secrets.ACCESS_TOKEN }}@github.com/${GITHUB_ACTOR}/${GITHUB_ACTOR}.github.io.git master
      working-directory: ./output

เดซเดฒเด‚

เดคเตฝเดซเดฒเดฎเดพเดฏเดฟ, เดธเตเดฑเตเดฑเดพเดฑเตเดฑเดฟเด•เต เดชเต‡เดœเตเด•เตพ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเต เดšเดฟเดจเตเดคเดฟเด•เตเด•เดพเดคเดฟเดฐเดฟเด•เตเด•เดพเตป เด…เดคเตเดคเดฐเดฎเตŠเดฐเต เดธเตเด•เตเดฐเดฟเดชเตเดฑเตเดฑเต เดจเดฟเด™เตเด™เดณเต† เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจเต. เด’เดฐเต เดธเตเดตเด•เดพเดฐเตเดฏ เดฑเดฟเดชเตเดชเต‹เดธเดฟเดฑเตเดฑเดฑเดฟเดฏเดฟเดฒเต‡เด•เตเด•เต เดจเต‡เดฐเดฟเดŸเตเดŸเต เดฎเดพเดฑเตเดฑเด™เตเด™เตพ เดšเต‡เตผเด•เตเด•เตเดจเตเดจเดคเดฟเดฒเต‚เดŸเต†, เดเดคเต†เด™เตเด•เดฟเดฒเตเด‚ เดธเดฟเดธเตเดฑเตเดฑเดคเตเดคเดฟเดจเต เด•เต€เดดเดฟเตฝ เดจเดฟเดจเตเดจเต git เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเด•เดฏเต‹ GitHub เดตเต†เดฌเต เด‡เดจเตเดฑเตผเดซเต‡เดธเดฟเดฒเต‚เดŸเต† เด’เดฐเต เดซเดฏเตฝ เดธเตƒเดทเตโ€ŒเดŸเดฟเด•เตเด•เตเด•เดฏเต‹ เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดฒเต‚เดŸเต†, เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เตพ เดธเตเดตเดฏเด‚ เดŽเดฒเตเดฒเดพเด‚ เดšเต†เดฏเตเดฏเตเด‚. เดธเตโ€Œเด•เตเดฐเดฟเดชเตเดฑเตเดฑเต เด…เดชเตเดฐเดคเต€เด•เตเดทเดฟเดคเดฎเดพเดฏเดฟ เดคเด•เตผเดจเตเดจเดพเตฝ, เดจเดฟเด™เตเด™เดณเตเดŸเต† เด‡เดฎเต†เดฏเดฟเดฒเดฟเดฒเต‡เด•เตเด•เต เด’เดฐเต เด…เดฑเดฟเดฏเดฟเดชเตเดชเต เด…เดฏเดฏเตโ€Œเด•เตเด•เตเด‚.

เดฎเตเดดเตเดตเตป เด•เต‹เดกเต

เดžเดพเตป เดŽเดจเตเดฑเต† เดชเตเดฐเดตเตผเดคเตเดคเดจ เดชเดคเดฟเดชเตเดชเต เด‰เดชเต‡เด•เตเดทเดฟเด•เตเด•เตเด‚, เด…เดคเดฟเตฝ เด…เดตเดธเดพเดจ เด˜เดŸเตเดŸเดคเตเดคเดฟเตฝ เด’เดฐเต เด•เดฎเตเดฎเดฟเดฑเตเดฑเต เดฎเต†เดฏเดฟเตป เดฑเดฟเดชเตเดชเต‹เดธเดฟเดฑเตเดฑเดฑเดฟเดฏเดฟเดฒเต‡เด•เตเด•เต เดคเดณเตเดณเดชเตเดชเต†เดŸเตเดŸเดคเดพเดฏเดฟ เด…เดฑเดฟเดฏเดฟเดชเตเดชเต เด…เดฏเดฏเตเด•เตเด•เตเดจเตเดจเต.

เดฎเตเด•เดณเดฟเตฝ เดตเดฟเดตเดฐเดฟเดšเตเดš เดฐเดนเดธเตเดฏเด™เตเด™เตพ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต, เด…เดตเดฟเดŸเต† เดฌเต‹เดŸเตเดŸเต เดŸเต‹เด•เตเด•เดฃเตเด‚ เดธเดจเตเดฆเต‡เดถเด‚ เด…เดฏเดฏเตโ€Œเด•เตเด•เต‡เดฃเตเดŸ เด‰เดชเดฏเต‹เด•เตเดคเตƒ เดเดกเดฟเดฏเตเด‚ เดšเต‡เตผเด•เตเด•เตเดจเตเดจเต.

name: Push content to the user's GitHub pages repository

on:
  push

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v1
    - name: Set up Python
      uses: actions/setup-python@v1
      with:
        python-version: 3.7
    - name: Install dependencies
      run: |
          python -m pip install --upgrade pip
          pip install -r requirements.txt
    - name: Make output folder
      run: mkdir output
    - name: Clone master branch
      run: git clone "https://${{ secrets.ACCESS_TOKEN }}@github.com/${GITHUB_ACTOR}/${GITHUB_ACTOR}.github.io.git" --branch master --single-branch ./output
    - name: Generate static pages
      run: pelican content -o output -s publishconf.py
    - name: Set git config and add changes
      run: |
          git config --global user.email "${GITHUB_ACTOR}@https://users.noreply.github.com/"
          git config --global user.name "${GITHUB_ACTOR}"
          git add --all
      working-directory: ./output
    - name: Push and send notification
      run: |
          COMMIT_MESSAGE="Update pages on $(date +'%Y-%m-%d %H:%M:%S')"
          git diff-index --quiet --cached HEAD -- && echo "No changes!" && exit 0 || echo $COMMIT_MESSAGE
          git commit -m "${COMMIT_MESSAGE}"
          git push https://${{ secrets.ACCESS_TOKEN }}@github.com/${GITHUB_ACTOR}/${GITHUB_ACTOR}.github.io.git master
          curl "https://api.telegram.org/bot${{ secrets.BOT_TOKEN }}/sendMessage?text=$COMMIT_MESSAGE %0ALook at ${GITHUB_ACTOR}.github.io %0ARepository%3A github.com/${GITHUB_ACTOR}/${GITHUB_ACTOR}.github.io&chat_id=${{ secrets.ADMIN_ID }}"
      working-directory: ./output

เดธเตเด•เตเดฐเต€เตปเดทเต‹เดŸเตเดŸเตเด•เตพ

เด’เดฐเต เดธเตเดฑเตเดฑเดพเดฑเตเดฑเดฟเด•เต เดœเดจเดฑเต‡เดฑเตเดฑเดฑเดฟเดฒเตเด‚ GitHub เดชเต‡เดœเตเด•เดณเดฟเดฒเตเด‚ เด’เดฐเต เดธเตˆเดฑเตเดฑเดฟเดจเดพเดฏเดฟ CI/CD เด†เดฏเดฟ GitHub เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เตพ
เดธเต‹เดดเตเดธเต เดฑเดฟเดชเตเดชเต‹เดธเดฟเดฑเตเดฑเดฑเดฟเดฏเตเดŸเต† เดชเตเดฐเดตเตผเดคเตเดคเดจ เดŸเดพเดฌเดฟเตฝ เดชเตเดฐเดฆเตผเดถเดฟเดชเตเดชเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจ เดฑเดฃเตเดฃเตเด•เดณเดฟเดฒเตŠเดจเตเดจเดฟเดจเตเดฑเต† เดซเดฒเด‚

เด’เดฐเต เดธเตเดฑเตเดฑเดพเดฑเตเดฑเดฟเด•เต เดœเดจเดฑเต‡เดฑเตเดฑเดฑเดฟเดฒเตเด‚ GitHub เดชเต‡เดœเตเด•เดณเดฟเดฒเตเด‚ เด’เดฐเต เดธเตˆเดฑเตเดฑเดฟเดจเดพเดฏเดฟ CI/CD เด†เดฏเดฟ GitHub เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เตพ
เดธเตโ€Œเด•เตเดฐเดฟเดชเตเดฑเตเดฑเต เดชเต‚เตผเดคเตเดคเดฟเดฏเดพเด•เตเด•เดฟเดฏเดคเดฟเดจเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเต เดฌเต‹เดŸเตเดŸเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เดธเดจเตเดฆเต‡เดถเด‚

เด‰เดชเดฏเต‹เด—เดชเตเดฐเดฆเดฎเดพเดฏ เดฒเดฟเด™เตเด•เตเด•เตพ

เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เตพ เดฎเดจเดธเตเดธเดฟเดฒเดพเด•เตเด•เตเดจเตเดจเต
เดชเตเดฐเดตเตผเดคเตเดคเดจ เดตเดพเด•เตเดฏเด˜เดŸเดจ
เดŸเตเดฐเดฟเด—เดฑเตเด•เดณเตเดŸเต† เดชเดŸเตเดŸเดฟเด•
เดตเต†เตผเดšเตเดตเตฝ เดชเดฐเดฟเดคเดธเตเดฅเดฟเดคเดฟเด•เตพเด•เตเด•เตเดณเตเดณ เด“เดชเตเดทเดจเตเด•เตพ
Github เดชเต‡เดœเตเด•เตพ
เดธเตเดฑเตเดฑเดพเดฑเตเดฑเดฟเด•เต เดœเดจเดฑเต‡เดฑเตเดฑเตผ เดฒเดฟเดธเตเดฑเตเดฑเต

เด…เดตเดฒเด‚เดฌเด‚: www.habr.com

เด’เดฐเต เด…เดญเดฟเดชเตเดฐเดพเดฏเด‚ เดšเต‡เตผเด•เตเด•เตเด•