เด’เดฐเต เดชเดคเดฟเดชเตเดชเต เดกเต‹เด•เตเดฏเตเดฎเต†เดจเตเดฑเต‡เดทเตป เดธเตˆเดฑเตเดฑเดฟเดจเตเดฑเต† เด‰เดฆเดพเดนเดฐเดฃเด‚ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดตเต†เตผเดซเดฟเดจเตŠเดชเตเดชเด‚ เดกเตˆเดจเดพเดฎเดฟเด•เต เด…เดธเด‚เดฌเตเดฒเดฟเดฏเตเด‚ เดกเต‹เด•เตเด•เตผ เดšเดฟเดคเตเดฐเด™เตเด™เดณเตเดŸเต† เดตเดฟเดจเตเดฏเดพเดธเดตเตเด‚

เดžเด™เตเด™เดณเตเดŸเต† GitOps เดŸเต‚เดณเดฟเดจเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเต เดžเด™เตเด™เตพ เด‡เดคเดฟเดจเด•เด‚ เด’เดจเตเดจเดฟเดฒเดงเดฟเด•เด‚ เดคเดตเดฃ เดธเด‚เดธเดพเดฐเดฟเดšเตเดšเต. เดตเต†เตผเดซเต, เดˆ เดธเดฎเดฏเด‚ เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเดฟเดจเตเดฑเต† เดกเต‹เด•เตเดฏเตเดฎเต†เดจเตเดฑเต‡เดทเตป เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดธเตˆเดฑเตเดฑเต เด•เต‚เดŸเตเดŸเดฟเดšเตเดšเต‡เตผเด•เตเด•เตเดจเตเดจเดคเดฟเตฝ เดžเด™เตเด™เดณเตเดŸเต† เด…เดจเตเดญเดตเด‚ เดชเด™เตเด•เดฟเดŸเดพเตป เดžเด™เตเด™เตพ เด†เด—เตเดฐเดนเดฟเด•เตเด•เตเดจเตเดจเต - werf.io (เด…เดคเดฟเดจเตเดฑเต† เดฑเดทเตเดฏเตป เดชเดคเดฟเดชเตเดชเต en.werf.io). เด‡เดคเตŠเดฐเต เดธเดพเดงเดพเดฐเดฃ เดธเตเดฑเตเดฑเดพเดฑเตเดฑเดฟเด•เต เดธเตˆเดฑเตเดฑเดพเดฃเต, เดชเด•เตเดทเต‡ เด…เดคเดฟเดจเตเดฑเต† เด…เดธเด‚เดฌเตเดฒเดฟ เดฐเดธเด•เดฐเดฎเดพเดฃเต, เด•เดพเดฐเดฃเด‚ เด‡เดคเต เดกเตˆเดจเดพเดฎเดฟเด•เต เดจเดฎเตเดชเตผ เด†เตผเดŸเตเดŸเดฟเดซเดพเด•เตเดฑเตเดฑเตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเดพเดฃเต เดจเดฟเตผเดฎเตเดฎเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเต.

เด’เดฐเต เดชเดคเดฟเดชเตเดชเต เดกเต‹เด•เตเดฏเตเดฎเต†เดจเตเดฑเต‡เดทเตป เดธเตˆเดฑเตเดฑเดฟเดจเตเดฑเต† เด‰เดฆเดพเดนเดฐเดฃเด‚ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดตเต†เตผเดซเดฟเดจเตŠเดชเตเดชเด‚ เดกเตˆเดจเดพเดฎเดฟเด•เต เด…เดธเด‚เดฌเตเดฒเดฟเดฏเตเด‚ เดกเต‹เด•เตเด•เตผ เดšเดฟเดคเตเดฐเด™เตเด™เดณเตเดŸเต† เดตเดฟเดจเตเดฏเดพเดธเดตเตเด‚

เดธเตˆเดฑเตเดฑเต เด˜เดŸเดจเดฏเตเดŸเต† เดธเต‚เด•เตเดทเตเดฎเดคเด•เดณเดฟเดฒเต‡เด•เตเด•เต เดชเต‹เด•เตเด•: เดŽเดฒเตเดฒเดพ เดชเดคเดฟเดชเตเดชเตเด•เตพเด•เตเด•เตเด‚ เด’เดฐเต เดชเตŠเดคเต เดฎเต†เดจเต เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดจเตเดจเต, เดฑเดฟเดฒเต€เดธเตเด•เดณเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตเดณเตเดณ เดตเดฟเดตเดฐเด™เตเด™เดณเตเดณเตเดณ เดชเต‡เดœเตเด•เตพ เดฎเตเดคเดฒเดพเดฏเดต. - เดžเด™เตเด™เตพ เดšเต†เดฏเตเดฏเดฟเดฒเตเดฒ. เดชเด•เดฐเด‚, เดกเตˆเดจเดพเดฎเดฟเด•เต เด…เดธเด‚เดฌเตเดฒเดฟเดฏเตเดŸเต† เดชเตเดฐเดถเตเดจเด™เตเด™เดณเตเด‚ เดธเดตเดฟเดถเต‡เดทเดคเด•เดณเตเด‚ เด’เดชเตเดชเด‚ เดธเดฟเด/เดธเดฟเดกเดฟ เดชเตเดฐเต‹เดธเดธเตเด•เดณเดฟเตฝ เด…เดฒเตเดชเด‚ เดถเตเดฐเดฆเตเดง เด•เต‡เดจเตเดฆเตเดฐเต€เด•เดฐเดฟเด•เตเด•เดพเด‚.

เด†เดฎเตเด–เด‚: เดธเตˆเดฑเตเดฑเต เดŽเด™เตเด™เดจเต† เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเต

เด†เดฐเด‚เดญเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต, เดตเต†เตผเดซเต เดกเต‹เด•เตเดฏเตเดฎเต†เดจเตเดฑเต‡เดทเตป เด…เดคเดฟเดจเตเดฑเต† เด•เต‹เดกเดฟเดจเตŠเดชเตเดชเด‚ เดธเด‚เดญเดฐเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต. เด‡เดคเต เดชเตŠเดคเตเดตเต† เดˆ เดฒเต‡เด–เดจเดคเตเดคเดฟเดจเตเดฑเต† เดชเดฐเดฟเดงเดฟเด•เตเด•เดชเตเดชเตเดฑเดฎเตเดณเตเดณ เดšเดฟเดฒ เดตเดฟเด•เดธเดจ เด†เดตเดถเตเดฏเด•เดคเด•เตพ เดšเตเดฎเดคเตเดคเตเดจเตเดจเต, เดŽเดจเตเดจเดพเตฝ เดšเตเดฐเตเด™เตเด™เดฟเดฏเดคเต เด‡เด™เตเด™เดจเต† เดชเดฑเดฏเดพเด‚:

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

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

เดตเต†เดฌเตโ€Œเดธเตˆเดฑเตเดฑเดฟเดฒเต† เดชเดคเดฟเดชเตเดชเต เดคเดฟเดฐเดžเตเดžเต†เดŸเตเด•เตเด•เตฝ เดฎเต†เดจเตเดตเดฟเตฝ, เดตเต†เตผเดซเดฟเดจเตเดฑเต† เดเดฑเตเดฑเดตเตเด‚ เดชเตเดคเดฟเดฏ เดชเดคเดฟเดชเตเดชเตเด•เตพ เด“เดฐเต‹ เดšเดพเดจเดฒเดฟเดฒเตเด‚ เดฒเดญเตเดฏเดฎเดพเดฃเต. เดธเตเดฅเดฟเดฐเดธเตเดฅเดฟเดคเดฟเดฏเดพเดฏเดฟ, เดตเดฟเดฒเดพเดธเดฎเดจเตเดธเดฐเดฟเดšเตเดšเต werf.io/documentation เดเดฑเตเดฑเดตเตเด‚ เดชเตเดคเดฟเดฏ เดฑเดฟเดฒเต€เดธเดฟเดจเดพเดฏเตเดณเตเดณ เดเดฑเตเดฑเดตเตเด‚ เดธเตเดฅเดฟเดฐเดคเดฏเตเดณเตเดณ เดšเดพเดจเดฒเดฟเดจเตเดฑเต† เดชเดคเดฟเดชเตเดชเต เดคเตเดฑเด•เตเด•เตเดจเตเดจเต - เด‡เดคเต เดคเดฟเดฐเดฏเตฝ เดŽเดžเตเดšเดฟเดจเตเด•เดณเตเด‚ เดธเต‚เดšเดฟเด•เดฏเดฟเดฒเดพเด•เตเด•เดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต. เดšเดพเดจเดฒเดฟเดจเดพเดฏเตเดณเตเดณ เดกเต‹เด•เตเดฏเตเดฎเต†เดจเตเดฑเต‡เดทเตป เดชเตเดฐเดคเตเดฏเต‡เด• เดตเดฟเดฒเดพเดธเด™เตเด™เดณเดฟเตฝ เดฒเดญเตเดฏเดฎเดพเดฃเต (เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, werf.io/v1.0-beta/documentation เดฌเต€เดฑเตเดฑ เดฑเดฟเดฒเต€เดธเดฟเดจเดพเดฏเดฟ 1.0).

เดฎเตŠเดคเตเดคเดคเตเดคเดฟเตฝ, เดธเตˆเดฑเตเดฑเดฟเดจเต เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เดชเดคเดฟเดชเตเดชเตเด•เตพ เดฒเดญเตเดฏเดฎเดพเดฃเต:

  1. เดฑเต‚เดŸเตเดŸเต (เดธเตเดฅเดฟเดฐเดธเตเดฅเดฟเดคเดฟเดฏเดพเดฏเดฟ เดคเตเดฑเด•เตเด•เตเดจเตเดจเต),
  2. เด“เดฐเต‹ เดฑเดฟเดฒเต€เดธเดฟเดจเตเดฑเต†เดฏเตเด‚ เด“เดฐเต‹ เดธเดœเต€เดต เด…เดชเตโ€Œเดกเต‡เดฑเตเดฑเต เดšเดพเดจเดฒเดฟเดจเตเด‚ (เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, werf.io/v1.0-beta).

เด’เดฐเต เดธเตˆเดฑเตเดฑเดฟเดจเตเดฑเต† เด’เดฐเต เดชเตเดฐเดคเตเดฏเต‡เด• เดชเดคเดฟเดชเตเดชเต เดœเดจเดฑเต‡เดฑเตเดฑเตเดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต, เดชเตŠเดคเตเดตเต‡, เด…เดคเต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด•เด‚เดชเตˆเตฝ เดšเต†เดฏเตเดคเดพเตฝ เดฎเดคเดฟเดฏเดพเด•เตเด‚ เดœเต†เด•เตเด•เดฟเตพเดกเดฏเดฑเด•เตเดŸเดฑเดฟเดฏเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดฒเต‚เดŸเต† /docs werf repository เด…เดจเตเดฌเดจเตเดง เด•เดฎเดพเตปเดกเต (jekyll build), เด†เดตเดถเตเดฏเดฎเตเดณเตเดณ เดชเดคเดฟเดชเตเดชเดฟเดจเตเดฑเต† Git เดŸเดพเด—เดฟเดฒเต‡เด•เตเด•เต เดฎเดพเดฑเดฟเดฏ เดถเต‡เดทเด‚.

เด‡เดคเต เดšเต‡เตผเด•เตเด•เดพเตป เดฎเดพเดคเตเดฐเด‚ เด…เดตเดถเต‡เดทเดฟเด•เตเด•เตเดจเตเดจเต:

  • เดฏเต‚เดŸเตเดŸเดฟเดฒเดฟเดฑเตเดฑเดฟ เดคเดจเตเดจเต† (เดตเต†เตผเดซเต) เด…เดธเด‚เดฌเตเดฒเดฟเด•เตเด•เดพเดฏเดฟ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต;
  • CI/CD เดชเตเดฐเด•เตเดฐเดฟเดฏเด•เตพ GitLab CI เดฏเตเดŸเต† เด…เดŸเดฟเดธเตเดฅเดพเดจเดคเตเดคเดฟเดฒเดพเดฃเต เดจเดฟเตผเดฎเตเดฎเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเต;
  • เด‡เดคเต†เดฒเตเดฒเดพเด‚ เดคเต€เตผเดšเตเดšเดฏเดพเดฏเตเด‚ เด•เตเดฌเตผเดจเต†เดฑเตเดฑเดธเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเต.

เดšเตเดฎเดคเดฒเด•เตพ

เด‡เดชเตเดชเต‹เตพ เดตเดฟเดตเดฐเดฟเดšเตเดš เดŽเดฒเตเดฒเดพ เดธเดตเดฟเดถเต‡เดทเดคเด•เดณเตเด‚ เด•เดฃเด•เตเด•เดฟเดฒเต†เดŸเตเด•เตเด•เตเดจเตเดจ เดŸเดพเดธเตเด•เตเด•เตเด•เตพ เดฐเต‚เดชเดชเตเดชเต†เดŸเตเดคเตเดคเดพเด‚:

  1. เดเดคเต†เด™เตเด•เดฟเดฒเตเด‚ เด…เดชเตโ€Œเดกเต‡เดฑเตเดฑเต เดšเดพเดจเดฒเดฟเตฝ เดตเต†เตผเดซเต เดชเดคเดฟเดชเตเดชเต เดฎเดพเดฑเตเดฑเดฟเดฏ เดถเต‡เดทเด‚ เดธเตˆเดฑเตเดฑเดฟเดฒเต† เดกเต‹เด•เตเดฏเตเดฎเต†เดจเตเดฑเต‡เดทเตป เดธเตเดตเดฏเดฎเต‡เดต เด…เดชเตเดกเต‡เดฑเตเดฑเต เดšเต†เดฏเตเดฏเดฃเด‚.
  2. เดตเดฟเด•เดธเดจเดคเตเดคเดฟเดจเต เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดšเดฟเดฒเดชเตเดชเต‹เตพ เด•เดดเดฟเดฏเต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต เดธเตˆเดฑเตเดฑเดฟเดจเตเดฑเต† เดชเตเดฐเดฟเดตเตเดฏเต‚ เดชเดคเดฟเดชเตเดชเตเด•เตพ เด•เดพเดฃเตเด•.

เด…เดจเตเดฌเดจเตเดง Git เดŸเดพเด—เตเด•เดณเดฟเตฝ เดจเดฟเดจเตเดจเต เดเดคเต†เด™เตเด•เดฟเดฒเตเด‚ เดšเดพเดจเดฒเดฟเดฒเต† เดชเดคเดฟเดชเตเดชเต เดฎเดพเดฑเตเดฑเดฟเดฏเดคเดฟเดจเต เดถเต‡เดทเด‚ เดธเตˆเดฑเตเดฑเต เดตเต€เดฃเตเดŸเตเด‚ เด•เด‚เดชเตˆเตฝ เดšเต†เดฏเตเดฏเดฃเด‚, เดŽเดจเตเดจเดพเตฝ เดšเดฟเดคเตเดฐเด‚ เดจเดฟเตผเดฎเตเดฎเดฟเด•เตเด•เตเดจเตเดจ เดชเตเดฐเด•เตเดฐเดฟเดฏเดฏเดฟเตฝ เดจเดฎเตเด•เตเด•เต เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เดธเดตเดฟเดถเต‡เดทเดคเด•เตพ เดฒเดญเดฟเด•เตเด•เตเด‚:

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

เด…เดคเต เดฎเดพเดฑเตเด•เดฏเดพเดฃเต เด…เดธเด‚เดฌเตเดฒเดฟ เดฌเดพเดนเตเดฏ เดกเดพเดฑเตเดฑ เดฎเดพเดฑเตเดฑเตเดจเตเดจเดคเดฟเดจเต† เด†เดถเตเดฐเดฏเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต.

เดจเดŸเดชเตเดชเดพเด•เตเด•เตฝ

เด’เดฐเต เดธเดฎเต€เดชเดจเด‚ เดคเดฟเดฐเดžเตเดžเต†เดŸเตเด•เตเด•เตเดจเตเดจเต

เดชเด•เดฐเดฎเดพเดฏเดฟ, เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด†เดตเดถเตเดฏเดฎเดพเดฏ เด“เดฐเต‹ เดชเดคเดฟเดชเตเดชเตเด‚ เดชเตเดฐเดคเตเดฏเต‡เด• เดชเต‹เดกเดพเดฏเดฟ เด•เตเดฌเตผเดจเต†เดฑเตเดฑเดธเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เดพเด‚. เดˆ เด“เดชเตโ€Œเดทเตป เด•เตเดฒเดธเตเดฑเตเดฑเดฑเดฟเดฒเต† เด’เดฌเตโ€Œเดœเด•เตเดฑเตเดฑเตเด•เดณเตเดŸเต† เด’เดฐเต เดตเดฒเดฟเดฏ เดธเด‚เด–เตเดฏเดฏเต† เดธเต‚เดšเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเต, เด‡เดคเต เดธเตเดฅเดฟเดฐเดคเดฏเตเดณเตเดณ เดตเต†เตผเดซเต เดฑเดฟเดฒเต€เดธเตเด•เดณเตเดŸเต† เดŽเดฃเตเดฃเด‚ เด•เต‚เดŸเตเดจเตเดจเดคเดฟเดจเดจเตเดธเดฐเดฟเดšเตเดšเต เดตเดณเดฐเตเด‚. เด‡เดคเต เด•เต‚เดŸเตเดคเตฝ เดธเด™เตเด•เต€เตผเดฃเตเดฃเดฎเดพเดฏ เด…เดฑเตเดฑเด•เตเดฑเตเดฑเดชเตเดชเดฃเดฟเด•เดณเต† เดธเต‚เดšเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเต: เด“เดฐเต‹ เดชเดคเดฟเดชเตเดชเดฟเดจเตเด‚ เด…เดคเดฟเดจเตเดฑเต‡เดคเดพเดฏ HTTP เดธเต†เตผเดตเดฑเตเด‚ เด’เดฐเต เดšเต†เดฑเดฟเดฏ เดฒเต‹เดกเตเด‚ เด‰เดฃเตเดŸเต. เดคเต€เตผเดšเตเดšเดฏเดพเดฏเตเด‚, เด‡เดคเต เด•เต‚เดŸเตเดคเตฝ เดตเดฟเดญเดต เดšเต†เดฒเดตเตเด•เตพ เด‰เตพเด•เตเด•เตŠเดณเตเดณเตเดจเตเดจเต.

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

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

werf vs git เด•เตเดฒเต‹เดฃเตเด‚ เดชเตเดฐเดพเดตเดธเตเดคเตเด•เตเด•เดณเตเด‚

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

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

เดœเต†เด•เตเด•เดฟเตฝ เดธเตเดฑเตเดฑเดพเดฑเตเดฑเดฟเด•เต เดกเดพเดฑเตเดฑ เด•เด‚เดชเตˆเตฝ เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเดพเดฏเดฟ เดฐเต‚เดชเด•เดฒเตเดชเดจ เดšเต†เดฏเตเดค เด’เดฐเต เดŸเต‚เตพ เด†เดฏเดคเดฟเดจเดพเตฝ เด…เดตเดธเดพเดจ เดšเดฟเดคเตเดฐเดคเตเดคเดฟเตฝ เด†เดตเดถเตเดฏเดฎเดฟเดฒเตเดฒ, เด‡เดคเต เด•เด‚เดชเตˆเตฝ เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเต เดฏเตเด•เตเดคเดฟเดธเดนเดฎเดพเดฏเดฟเดฐเดฟเด•เตเด•เตเด‚. เดตเต†เตผเดซเต เด†เตผเดŸเตเดŸเดฟเดซเดพเด•เตเดฑเตเดฑเต, เด…เดตเดธเดพเดจ เดšเดฟเดคเตเดฐเดคเตเดคเดฟเดฒเต‡เด•เตเด•เต เดธเดฎเดพเดนเดพเดฐ เดซเดฒเด‚ เดฎเดพเดคเตเดฐเด‚ เด‡เดฑเด•เตเด•เตเดฎเดคเดฟ เดšเต†เดฏเตเดฏเตเด•.

เดžเด™เตเด™เตพ werf.yaml เดŽเดดเตเดคเตเดจเตเดจเต

เด…เดคเดฟเดจเดพเตฝ, เด“เดฐเต‹ เดชเดคเดฟเดชเตเดชเตเด‚ เด’เดฐเต เดชเตเดฐเดคเตเดฏเต‡เด• เดตเต†เตผเดซเต เด†เตผเดŸเตเดŸเดฟเดซเดพเด•เตเดฑเตเดฑเดฟเตฝ เด•เด‚เดชเตˆเตฝ เดšเต†เดฏเตเดฏเดพเตป เดžเด™เตเด™เตพ เดคเต€เดฐเตเดฎเดพเดจเดฟเดšเตเดšเต. เดŽเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด‚ เดžเด™เตเด™เตพ เด…เดธเด‚เดฌเตเดฒเดฟ เดธเดฎเดฏเดคเตเดคเต เดˆ เดชเตเดฐเดพเดตเดธเตเดคเตเด•เตเด•เตพ เดŽเดคเตเดฐเดฏเตเดฃเตเดŸเดพเด•เตเดฎเต†เดจเตเดจเต เดžเด™เตเด™เตพเด•เตเด•เต เด…เดฑเดฟเดฏเดฟเดฒเตเดฒ, เด…เดคเดฟเดจเดพเตฝ เดžเด™เตเด™เตพเด•เตเด•เต เด’เดฐเต เดจเดฟเดถเตเดšเดฟเดค เดฌเดฟเตฝเดกเต เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเตป เดŽเดดเตเดคเดพเตป เด•เดดเดฟเดฏเดฟเดฒเตเดฒ (เด•เตผเดถเดจเดฎเดพเดฏเดฟ เดชเดฑเดžเตเดžเดพเตฝ, เดžเด™เตเด™เตพเด•เตเด•เต เด‡เดชเตเดชเต‹เดดเตเด‚ เด•เดดเดฟเดฏเตเด‚, เดชเด•เตเดทเต‡ เด‡เดคเต เดชเต‚เตผเดฃเตเดฃเดฎเดพเดฏเตเด‚ เดซเดฒเดชเตเดฐเดฆเดฎเดพเด•เดฟเดฒเตเดฒ).

werf เดจเดฟเด™เตเด™เดณเต† เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเตป เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจเต เดŸเต†เด‚เดชเตเดฒเต‡เดฑเตเดฑเตเด•เดณเดฟเดฒเต‡เด•เตเด•เต เดชเต‹เด•เตเด• เดจเดฟเด™เตเด™เดณเตเดŸเต† เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเตป เดซเดฏเดฒเดฟเตฝ (werf.yaml), เด‡เดคเต เดธเดพเดงเตเดฏเดฎเดพเด•เตเด•เตเดจเตเดจเต เดˆเดšเตเดšเดฏเดฟเตฝ เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเตป เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเด• เดฌเดพเดนเตเดฏ เดกเดพเดฑเตเดฑเดฏเต† เด†เดถเตเดฐเดฏเดฟเดšเตเดšเต (เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดŽเดจเตเดคเดพเดฃเต เดตเต‡เดฃเตเดŸเดคเต!). เดžเด™เตเด™เดณเตเดŸเต† เด•เต‡เดธเดฟเดฒเต† เดฌเดพเดนเตเดฏ เดกเดพเดฑเตเดฑ เดชเดคเดฟเดชเตเดชเตเด•เดณเต†เดฏเตเด‚ เดฑเดฟเดฒเต€เดธเตเด•เดณเต†เดฏเตเด‚ เด•เตเดฑเดฟเดšเตเดšเตเดณเตเดณ เดตเดฟเดตเดฐเด™เตเด™เดณเดพเดฃเต, เด…เดคเดฟเดจเตเดฑเต† เด…เดŸเดฟเดธเตเดฅเดพเดจเดคเตเดคเดฟเตฝ เดžเด™เตเด™เตพ เด†เดตเดถเตเดฏเดฎเดพเดฏ เดชเตเดฐเดพเดตเดธเตเดคเตเด•เตเด•เตพ เดถเต‡เด–เดฐเดฟเด•เตเด•เตเด•เดฏเตเด‚ เด…เดคเดฟเดจเตเดฑเต† เดซเดฒเดฎเดพเดฏเดฟ เดžเด™เตเด™เตพเด•เตเด•เต เดฐเดฃเตเดŸเต เดšเดฟเดคเตเดฐเด™เตเด™เตพ เดฒเดญเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต: werf-doc ะธ werf-dev เดตเตเดฏเดคเตเดฏเดธเตเดค เดธเตผเด•เตเดฏเต‚เดŸเตเดŸเตเด•เดณเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เดพเตป.

เดชเดฐเดฟเดธเตเดฅเดฟเดคเดฟ เดตเต‡เดฐเดฟเดฏเดฌเดฟเดณเตเด•เดณเดฟเดฒเต‚เดŸเต†เดฏเดพเดฃเต เดฌเดพเดนเตเดฏ เดกเดพเดฑเตเดฑ เด•เตˆเดฎเดพเดฑเตเดจเตเดจเดคเต. เด…เดตเดฏเตเดŸเต† เด˜เดŸเดจ เด‡เดคเดพ:

  • RELEASES - เดฑเดฟเดฒเต€เดธเตเด•เดณเตเดŸเต† เด’เดฐเต เดฒเดฟเดธเตเดฑเตเดฑเตเด‚ เดตเต†เตผเดซเดฟเดจเตเดฑเต† เดจเดฟเดฒเดตเดฟเดฒเต† เดชเดคเดฟเดชเตเดชเตเด‚ เด‰เดณเตเดณ เด’เดฐเต เดตเดฐเดฟ, เดซเต‹เตผเดฎเดพเดฑเตเดฑเดฟเดฒเตเดณเตเดณ เดฎเต‚เดฒเตเดฏเด™เตเด™เดณเตเดŸเต† เด‡เดŸเด‚-เดตเต‡เตผเดคเดฟเดฐเดฟเด•เตเด•เดชเตเดชเต†เดŸเตเดŸ เดชเดŸเตเดŸเดฟเด•เดฏเตเดŸเต† เดฐเต‚เดชเดคเตเดคเดฟเตฝ <ะะžะœะ•ะ _ะ ะ•ะ›ะ˜ะ—ะ>%<ะะžะœะ•ะ _ะ’ะ•ะ ะกะ˜ะ˜>. เด‰เดฆเดพเดนเดฐเดฃเด‚: 1.0%v1.0.4-beta.20
  • CHANNELS - เดšเดพเดจเดฒเตเด•เดณเตเดŸเต† เด’เดฐเต เดฒเดฟเดธเตเดฑเตเดฑเตเด‚ เดตเต†เตผเดซเดฟเดจเตเดฑเต† เดจเดฟเดฒเดตเดฟเดฒเต† เดชเดคเดฟเดชเตเดชเตเด‚ เด‰เดณเตเดณ เด’เดฐเต เดตเดฐเดฟ, เดซเต‹เตผเดฎเดพเดฑเตเดฑเดฟเดฒเตเดณเตเดณ เดฎเต‚เดฒเตเดฏเด™เตเด™เดณเตเดŸเต† เด‡เดŸเด‚-เดตเต‡เตผเดคเดฟเดฐเดฟเด•เตเด•เดชเตเดชเต†เดŸเตเดŸ เดชเดŸเตเดŸเดฟเด•เดฏเตเดŸเต† เดฐเต‚เดชเดคเตเดคเดฟเตฝ <ะšะะะะ›>%<ะะžะœะ•ะ _ะ’ะ•ะ ะกะ˜ะ˜>. เด‰เดฆเดพเดนเดฐเดฃเด‚: 1.0-beta%v1.0.4-beta.20 1.0-alpha%v1.0.5-alpha.22
  • ROOT_VERSION โ€” เดธเตˆเดฑเตเดฑเดฟเตฝ เดธเตเดฅเดฟเดฐเดธเตเดฅเดฟเดคเดฟเดฏเดพเดฏเดฟ เดชเตเดฐเดฆเตผเดถเดฟเดชเตเดชเดฟเด•เตเด•เต‡เดฃเตเดŸ werf เดฑเดฟเดฒเต€เดธเต เดชเดคเดฟเดชเตเดชเต (เดŽเดฒเตเดฒเดพเดฏเตโ€Œเดชเตเดชเต‹เดดเตเด‚ เดเดฑเตเดฑเดตเตเด‚ เด‰เดฏเตผเดจเตเดจ เดฑเดฟเดฒเต€เดธเต เดจเดฎเตเดชเตผ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดกเต‹เด•เตเดฏเตเดฎเต†เดจเตเดฑเต‡เดทเตป เดชเตเดฐเดฆเตผเดถเดฟเดชเตเดชเดฟเด•เตเด•เต‡เดฃเตเดŸ เด†เดตเดถเตเดฏเดฎเดฟเดฒเตเดฒ). เด‰เดฆเดพเดนเดฐเดฃเด‚: v1.0.4-beta.20
  • REVIEW_SHA - เดŸเต†เดธเตเดฑเตเดฑเต เดฒเต‚เดชเตเดชเดฟเดจเดพเดฏเดฟ เดจเดฟเด™เตเด™เตพ เดชเดคเดฟเดชเตเดชเต เดจเดฟเตผเดฎเตเดฎเดฟเด•เตเด•เต‡เดฃเตเดŸ เดฑเดฟเดตเตเดฏเต‚ เด•เดฎเตเดฎเดฟเดฑเตเดฑเดฟเดจเตเดฑเต† เดนเดพเดทเต.

เดˆ เดตเต‡เดฐเดฟเดฏเดฌเดฟเดณเตเด•เตพ GitLab CI เดชเตˆเดชเตเดชเตโ€Œเดฒเตˆเดจเดฟเตฝ เดชเต‚เดฐเดฟเดชเตเดชเดฟเด•เตเด•เตเด‚, เดŽเด™เตเด™เดจเต† เด•เตƒเดคเตเดฏเดฎเดพเดฏเดฟ เดคเดพเดดเต† เดŽเดดเตเดคเดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต.

เด’เดจเตเดจเดพเดฎเดคเดพเดฏเดฟ, เดธเต—เด•เดฐเตเดฏเดพเตผเดคเตเดฅเด‚ เดžเด™เตเด™เตพ เดจเดฟเตผเดตเดšเดฟเด•เตเด•เตเดจเตเดจเต werf.yaml เดŸเต†เด‚เดชเตเดฒเต‡เดฑเตเดฑเต เดตเต‡เดฐเดฟเดฏเดฌเดฟเดณเตเด•เดณเดฟเดฒเต‡เด•เตเด•เต เดชเต‹เด•เตเด•, เดชเดฐเดฟเดธเตเดฅเดฟเดคเดฟ เดตเต‡เดฐเดฟเดฏเดฌเดฟเดณเตเด•เดณเดฟเตฝ เดจเดฟเดจเตเดจเต เด…เดตเดฏเตเด•เตเด•เต เดฎเต‚เดฒเตเดฏเด™เตเด™เตพ เดจเตฝเด•เตเด•:

{{ $_ := set . "WerfVersions" (cat (env "CHANNELS") (env "RELEASES") | splitList " ") }}
{{ $Root := . }}
{{ $_ := set . "WerfRootVersion" (env "ROOT_VERSION") }}
{{ $_ := set . "WerfReviewCommit" (env "REVIEW_SHA") }}

เดธเตˆเดฑเตเดฑเดฟเดจเตเดฑเต† เดธเตเดฑเตเดฑเดพเดฑเตเดฑเดฟเด•เต เดชเดคเดฟเดชเตเดชเต เด•เด‚เดชเตˆเตฝ เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เด†เตผเดŸเตเดŸเดฟเดซเดพเด•เตเดฑเตเดฑเดฟเดจเตเดฑเต† เดตเดฟเดตเดฐเดฃเด‚ เดจเดฎเตเด•เตเด•เต เด†เดตเดถเตเดฏเดฎเตเดณเตเดณ เดŽเดฒเตเดฒเดพ เดธเดพเดนเดšเดฐเตเดฏเด™เตเด™เดณเดฟเดฒเตเด‚ (เดฑเต‚เดŸเตเดŸเต เดชเดคเดฟเดชเตเดชเต เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดจเตเดจเดคเตเด‚ เดกเต†เดตเดฒเดชเตเดชเต เดธเตผเด•เตเดฏเต‚เดŸเตเดŸเดฟเดจเตเดฑเต† เดชเดคเดฟเดชเตเดชเตเด‚ เด‰เตพเดชเตเดชเต†เดŸเต†) เดชเตŠเดคเตเดตเต† เดธเดฎเดพเดจเดฎเดพเดฃเต. เด…เดคเดฟเดจเดพเตฝ, เดซเด‚เด—เตเดทเตป เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดžเด™เตเด™เตพ เด…เดคเดฟเดจเต† เด’เดฐเต เดชเตเดฐเดคเตเดฏเต‡เด• เดฌเตเดฒเต‹เด•เตเด•เดฟเดฒเต‡เด•เตเด•เต เดฎเดพเดฑเตเดฑเตเด‚ define - เดคเตเดŸเตผเดจเตเดจเตเดณเตเดณ เด‰เดชเดฏเต‹เด—เดคเตเดคเดฟเดจเดพเดฏเดฟ include. เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เด†เตผเด—เตเดฏเตเดฎเต†เดจเตเดฑเตเด•เตพ เดžเด™เตเด™เตพ เดŸเต†เด‚เดชเตเดฒเต‡เดฑเตเดฑเดฟเดฒเต‡เด•เตเด•เต เด•เตˆเดฎเดพเดฑเตเด‚:

  • Version - เดธเตƒเดทเตเดŸเดฟเดšเตเดš เดชเดคเดฟเดชเตเดชเต (เดŸเดพเด—เต เดจเดพเดฎเด‚);
  • Channel - เด†เตผเดŸเตเดŸเดฟเดซเดพเด•เตเดฑเตเดฑเต เดธเตƒเดทเตเดŸเดฟเดšเตเดš เด…เดชเตเดกเต‡เดฑเตเดฑเต เดšเดพเดจเดฒเดฟเดจเตเดฑเต† เดชเต‡เดฐเต;
  • Commit - เดนเดพเดทเต เด•เดฎเตเดฎเดฟเดฑเตเดฑเต เดšเต†เดฏเตเดฏเตเด•, เด’เดฐเต เดฑเดฟเดตเตเดฏเต‚ เด•เดฎเตเดฎเดฟเดฑเตเดฑเดฟเดจเดพเดฏเดฟ เด†เตผเดŸเตเดŸเดฟเดซเดพเด•เตเดฑเตเดฑเต เดธเตƒเดทเตโ€ŒเดŸเดฟเดšเตเดšเดคเดพเดฃเต†เด™เตเด•เดฟเตฝ;
  • เดธเดจเตเดฆเตผเดญเด‚.

เด†เตผเดŸเตเดŸเดฟเดซเดพเด•เตเดฑเตเดฑเต เดŸเต†เด‚เดชเตเดฒเต‡เดฑเตเดฑเต เดตเดฟเดตเดฐเดฃเด‚

{{- define "doc_artifact" -}}
{{- $Root := index . "Root" -}}
artifact: doc-{{ .Channel }}
from: jekyll/builder:3
mount:
- from: build_dir
  to: /usr/local/bundle
ansible:
  install:
  - shell: |
      export PATH=/usr/jekyll/bin/:$PATH
  - name: "Install Dependencies"
    shell: bundle install
    args:
      executable: /bin/bash
      chdir: /app/docs
  beforeSetup:
{{- if .Commit }}
  - shell: echo "Review SHA - {{ .Commit }}."
{{- end }}
{{- if eq .Channel "root" }}
  - name: "releases.yml HASH: {{ $Root.Files.Get "releases.yml" | sha256sum }}"
    copy:
      content: |
{{ $Root.Files.Get "releases.yml" | indent 8 }}
      dest:  /app/docs/_data/releases.yml
{{- else }}
  - file:
      path: /app/docs/_data/releases.yml
      state: touch
{{- end }}
  - file:
      path: "{{`{{ item }}`}}"
      state: directory
      mode: 0777
    with_items:
    - /app/main_site/
    - /app/ru_site/
  - file:
      dest: /app/docs/pages_ru/cli
      state: link
      src: /app/docs/pages/cli
  - shell: |
      echo -e "werfVersion: {{ .Version }}nwerfChannel: {{ .Channel }}" > /tmp/_config_additional.yml
      export PATH=/usr/jekyll/bin/:$PATH
{{- if and (ne .Version "review") (ne .Channel "root") }}
{{- $_ := set . "BaseURL" ( printf "v%s" .Channel ) }}
{{- else if ne .Channel "root" }}
{{- $_ := set . "BaseURL" .Channel }}
{{- end }}
      jekyll build -s /app/docs  -d /app/_main_site/{{ if .BaseURL }} --baseurl /{{ .BaseURL }}{{ end }} --config /app/docs/_config.yml,/tmp/_config_additional.yml
      jekyll build -s /app/docs  -d /app/_ru_site/{{ if .BaseURL }} --baseurl /{{ .BaseURL }}{{ end }} --config /app/docs/_config.yml,/app/docs/_config_ru.yml,/tmp/_config_additional.yml
    args:
      executable: /bin/bash
      chdir: /app/docs
git:
- url: https://github.com/flant/werf.git
  to: /app/
  owner: jekyll
  group: jekyll
{{- if .Commit }}
  commit: {{ .Commit }}
{{- else }}
  tag: {{ .Version }}
{{- end }}
  stageDependencies:
    install: ['docs/Gemfile','docs/Gemfile.lock']
    beforeSetup: '**/*'
  includePaths: 'docs'
  excludePaths: '**/*.sh'
{{- end }}

เดชเตเดฐเดพเดตเดธเตเดคเต เดจเดพเดฎเด‚ เด…เดฆเตเดตเดฟเดคเต€เดฏเดฎเดพเดฏเดฟเดฐเดฟเด•เตเด•เดฃเด‚. เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เดšเดพเดจเดฒเดฟเดจเตเดฑเต† เดชเต‡เดฐเต (เดตเต‡เดฐเดฟเดฏเดฌเดฟเดณเดฟเดจเตเดฑเต† เดฎเต‚เดฒเตเดฏเด‚) เดšเต‡เตผเดคเตเดคเต เดจเดฎเตเด•เตเด•เต เด‡เดคเต เดจเต‡เดŸเดพเดจเดพเด•เตเด‚ .Channel) เดชเตเดฐเดพเดตเดธเตเดคเตเดตเดฟเดจเตเดฑเต† เดชเต‡เดฐเดฟเดจเตเดฑเต† เดชเตเดฐเดคเตเดฏเดฏเดฎเดพเดฏเดฟ: artifact: doc-{{ .Channel }}. เดŽเดจเตเดจเดพเตฝ เดชเตเดฐเดพเดตเดธเตเดคเตเด•เตเด•เดณเดฟเตฝ เดจเดฟเดจเตเดจเต เด‡เดฑเด•เตเด•เตเดฎเดคเดฟ เดšเต†เดฏเตเดฏเตเดฎเตเดชเต‹เตพ, เดจเดฟเด™เตเด™เตพ เด…เดคเต‡ เดชเต‡เดฐเตเด•เตพ เดชเดฐเดพเดฎเตผเดถเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต เดŽเดจเตเดจเต เดจเดฟเด™เตเด™เตพ เดฎเดจเดธเตเดธเดฟเดฒเดพเด•เตเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต.

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

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

เดธเต‹เดชเดพเดงเดฟเด• เดชเตเดฐเดธเตเดคเดพเดตเดจ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเดพเดฃเต เด‡เดคเต เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เตเดจเตเดจเดคเต if เดŸเต†เด‚เดชเตเดฒเต‡เดฑเตเดฑเตเด•เดณเตเด‚ เดกเดฟเดธเตˆเดจเตเด•เดณเตเด‚ เดชเต‹เด•เตเด• {{ $Root.Files.Get "releases.yml" | sha256sum }} เด˜เดŸเตเดŸเดคเตเดคเดฟเตฝ เด˜เดŸเตเดŸเด™เตเด™เตพ. เด‡เดคเต เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เดฐเต€เดคเดฟเดฏเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเต: เดฑเต‚เดŸเตเดŸเต เดชเดคเดฟเดชเตเดชเดฟเดจเดพเดฏเดฟ เด’เดฐเต เด†เตผเดŸเตเดŸเดฟเดซเดพเด•เตเดฑเตเดฑเต เดจเดฟเตผเดฎเตเดฎเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ (เดตเต‡เดฐเดฟเดฏเดฌเดฟเตพ .Channel เดŽเดจเตเดจเดคเดฟเดจเต เดคเตเดฒเตเดฏเดฎเดพเดฃเต root) เดซเดฏเตฝ เดนเดพเดทเต releases.yml เดฎเตเดดเตเดตเตป เด˜เดŸเตเดŸเดคเตเดคเดฟเดจเตเดฑเต†เดฏเตเด‚ เด’เดชเตเดชเดฟเดจเต† เดฌเดพเดงเดฟเด•เตเด•เตเดจเตเดจเต, เด•เดพเดฐเดฃเด‚ เด‡เดคเต เด…เตปเดธเดฟเดฌเดฟเตพ เดŸเดพเดธเตเด•เตเด•เดฟเดจเตเดฑเต† เดชเต‡เดฐเดฟเดจเตเดฑเต† เดญเดพเด—เดฎเดพเดฃเต (เดชเดพเดฐเดพเดฎเต€เดฑเตเดฑเตผ name). เด…เด™เตเด™เดจเต†, เดฎเดพเดฑเตเดฎเตเดชเต‹เตพ เด‰เดณเตเดณเดŸเด•เตเด•เด‚ เดซเดฏเตฝ releases.yml เด…เดจเตเดฌเดจเตเดง เดชเตเดฐเดพเดตเดธเตเดคเต เดตเต€เดฃเตเดŸเตเด‚ เด•เต‚เดŸเตเดŸเดฟเดšเตเดšเต‡เตผเด•เตเด•เตเด‚.

เด’เดฐเต เดฌเดพเดนเตเดฏ เดถเต‡เด–เดฐเดคเตเดคเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เดพเดจเตเด‚ เดฆเดฏเดตเดพเดฏเดฟ เดถเตเดฐเดฆเตเดงเดฟเด•เตเด•เตเด•. เดจเดฟเดจเตเดจเตเดณเตเดณ เด’เดฐเต เดชเตเดฐเดพเดตเดธเตเดคเตเดตเดฟเดจเตเดฑเต† เดšเดฟเดคเตเดฐเดคเตเดคเดฟเตฝ werf เดถเต‡เด–เดฐเด‚, เดกเดฏเดฑเด•เตเดŸเดฑเดฟ เดฎเดพเดคเตเดฐเดฎเต‡ เดšเต‡เตผเดคเตเดคเดฟเดŸเตเดŸเตเดณเตเดณเต‚ /docs, เด•เต‚เดŸเดพเดคเต† เดชเดพเดธเดพเดฏ เดชเดพเดฐเดพเดฎเต€เดฑเตเดฑเดฑเตเด•เดณเต† เด†เดถเตเดฐเดฏเดฟเดšเตเดšเต, เด†เดตเดถเตเดฏเดฎเดพเดฏ เดŸเดพเด—เดฟเดจเตเดฑเต†เดฏเต‹ เด…เดตเดฒเต‹เด•เดจ เด•เดฎเตเดฎเดฟเดฑเตเดฑเดฟเดจเตเดฑเต†เดฏเต‹ เดกเดพเดฑเตเดฑ เด‰เดŸเดจเดŸเดฟ เดšเต‡เตผเด•เตเด•เตเดจเตเดจเต.

เดšเดพเดจเดฒเตเด•เดณเตเดŸเต†เดฏเตเด‚ เดฑเดฟเดฒเต€เดธเตเด•เดณเตเดŸเต†เดฏเตเด‚ เด•เตˆเดฎเดพเดฑเตเดฑเด‚ เดšเต†เดฏเตเดค เดชเดคเดฟเดชเตเดชเตเด•เดณเตเดŸเต† เด†เตผเดŸเตเดŸเดฟเดซเดพเด•เตเดฑเตเดฑเดฟเดจเตเดฑเต† เดตเดฟเดตเดฐเดฃเด‚ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เดพเตป เด†เตผเดŸเตเดŸเดฟเดซเดพเด•เตเดฑเตเดฑเต เดŸเต†เด‚เดชเตเดฒเต‡เดฑเตเดฑเต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต, เดžเด™เตเด™เตพ เดตเต‡เดฐเดฟเดฏเดฌเดฟเดณเดฟเตฝ เด’เดฐเต เดฒเต‚เดชเตเดชเต เดธเด‚เด˜เดŸเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเต. .WerfVersions ะฒ werf.yaml:

{{ range .WerfVersions -}}
{{ $VersionsDict := splitn "%" 2 . -}}
{{ dict "Version" $VersionsDict._1 "Channel" $VersionsDict._0 "Root" $Root | include "doc_artifact" }}
---
{{ end -}}

เด•เดพเดฐเดฃเด‚ เดฒเต‚เดชเตเดชเต เดจเดฟเดฐเดตเดงเดฟ เดชเตเดฐเดพเดตเดธเตเดคเตเด•เตเด•เตพ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเด‚ (เดžเด™เตเด™เตพ เด…เด™เตเด™เดจเต† เดชเตเดฐเดคเต€เด•เตเดทเดฟเด•เตเด•เตเดจเตเดจเต), เด…เดตเดฏเตเด•เตเด•เดฟเดŸเดฏเดฟเดฒเตเดณเตเดณ เดธเต†เดชเตเดชเดฑเต‡เดฑเตเดฑเตผ เด•เดฃเด•เตเด•เดฟเดฒเต†เดŸเตเด•เตเด•เต‡เดฃเตเดŸเดคเต เด†เดตเดถเตเดฏเดฎเดพเดฃเต - เด•เตเดฐเดฎเด‚ --- (เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเตป เดซเดฏเตฝ เดตเดพเด•เตเดฏเด˜เดŸเดจเดฏเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตเดณเตเดณ เด•เต‚เดŸเตเดคเตฝ เดตเดฟเดตเดฐเด™เตเด™เตพเด•เตเด•เต, เด•เดพเดฃเตเด• เดชเตเดฐเดฎเดพเดฃเต€เด•เดฐเดฃเด‚). เดจเต‡เดฐเดคเตเดคเต† เดจเดฟเตผเดตเดšเดฟเดšเตเดšเดคเตเดชเต‹เดฒเต†, เด’เดฐเต เดฒเต‚เดชเตเดชเดฟเตฝ เด’เดฐเต เดŸเต†เด‚เดชเตเดฒเต‡เดฑเตเดฑเต เดตเดฟเดณเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ, เดžเด™เตเด™เตพ เดชเดคเดฟเดชเตเดชเต เดชเดพเดฐเดพเดฎเต€เดฑเตเดฑเดฑเตเด•เตพ, URL, เดฑเต‚เดŸเตเดŸเต เดธเดจเตเดฆเตผเดญเด‚ เดŽเดจเตเดจเดฟเดต เด•เตˆเดฎเดพเดฑเตเดจเตเดจเต.

เด…เดคเตเดชเต‹เดฒเต†, เดŽเดจเตเดจเดพเตฝ เด’เดฐเต เดฒเต‚เดชเตเดชเต เด‡เดฒเตเดฒเดพเดคเต†, "เดชเตเดฐเดคเตเดฏเต‡เด• เด•เต‡เดธเตเด•เตพ" เดŽเดจเตเดจเดคเดฟเดจเดพเดฏเตเดณเตเดณ เด†เตผเดŸเตเดŸเดฟเดซเดพเด•เตเดฑเตเดฑเต เดŸเต†เด‚เดชเตเดฒเต‡เดฑเตเดฑเดฟเดจเต† เดžเด™เตเด™เตพ เดตเดฟเดณเดฟเด•เตเด•เตเดจเตเดจเต: เดฑเต‚เดŸเตเดŸเต เดชเดคเดฟเดชเตเดชเดฟเดจเตเด‚ เด…เดคเตเดชเต‹เดฒเต† เด…เดตเดฒเต‹เด•เดจเดคเตเดคเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เดชเดคเดฟเดชเตเดชเดฟเดจเตเด‚:

{{ dict "Version" .WerfRootVersion "Channel" "root" "Root" $Root  | include "doc_artifact" }}
---
{{- if .WerfReviewCommit }}
{{ dict "Version" "review" "Channel" "review" "Commit" .WerfReviewCommit "Root" $Root  | include "doc_artifact" }}
{{- end }}

เดตเต‡เดฐเดฟเดฏเดฌเดฟเตพ เดธเดœเตเดœเดฎเดพเด•เตเด•เดฟเดฏเดพเตฝ เดฎเดพเดคเตเดฐเดฎเต‡ เดฑเดฟเดตเตเดฏเต‚ เด•เดฎเตเดฎเดฟเดฑเตเดฑเดฟเดจเตเดณเตเดณ เด†เตผเดŸเตเดŸเดฟเดซเดพเด•เตเดฑเตเดฑเต เดจเดฟเตผเดฎเตเดฎเดฟเด•เตเด•เดชเตเดชเต†เดŸเตเด•เดฏเตเดณเตเดณเต‚ เดŽเดจเตเดจเดคเต เดถเตเดฐเดฆเตเดงเดฟเด•เตเด•เตเด• .WerfReviewCommit.

เดชเตเดฐเดพเดตเดธเตเดคเตเด•เตเด•เตพ เดคเดฏเตเดฏเดพเดฑเดพเดฃเต - เด‡เดฑเด•เตเด•เตเดฎเดคเดฟ เด†เดฐเด‚เดญเดฟเด•เตเด•เดพเดจเตเดณเตเดณ เดธเดฎเดฏเดฎเดพเดฃเดฟเดคเต!

Kubernetes-เตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เดพเตป เดฐเต‚เดชเด•เตฝเดชเตเดชเดจ เดšเต†เดฏเตโ€Œเดค เด…เดตเดธเดพเดจ เดšเดฟเดคเตเดฐเด‚, เดธเต†เตผเดตเตผ เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเตป เดซเดฏเตฝ เดšเต‡เตผเดคเตเดค เด’เดฐเต เดธเดพเดงเดพเดฐเดฃ NGINX เด†เดฃเต. nginx.conf เดชเตเดฐเดพเดตเดธเตเดคเตเด•เตเด•เดณเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เดธเตเดฑเตเดฑเดพเดฑเตเดฑเดฟเด•เต. เดธเตˆเดฑเตเดฑเดฟเดจเตเดฑเต† เดฑเต‚เดŸเตเดŸเต เดชเดคเดฟเดชเตเดชเดฟเดจเตเดฑเต† เด†เตผเดŸเตเดŸเดฟเดซเดพเด•เตเดฑเตเดฑเดฟเดจเต เดชเตเดฑเดฎเต‡, เดตเต‡เดฐเดฟเดฏเดฌเดฟเดณเดฟเตฝ เดžเด™เตเด™เตพ เดฒเต‚เดชเตเดชเต เด†เดตเตผเดคเตเดคเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต .WerfVersions เดšเดพเดจเดฒเดฟเดจเตเดฑเต† เดชเตเดฐเดพเดตเดธเตเดคเตเด•เตเด•เตพ เด‡เดฑเด•เตเด•เตเดฎเดคเดฟ เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเด‚ เดชเดคเดฟเดชเตเดชเตเด•เตพ เดชเตเดฑเดคเตเดคเดฟเดฑเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเด‚ + เดžเด™เตเด™เตพ เดจเต‡เดฐเดคเตเดคเต† เดธเตเดตเต€เด•เดฐเดฟเดšเตเดš เด†เตผเดŸเตเดŸเดฟเดซเดพเด•เตโ€Œเดฑเตเดฑเต เดจเดพเดฎเด•เดฐเดฃ เดจเดฟเดฏเดฎเด‚ เดชเดพเดฒเดฟเด•เตเด•เตเด•. เด“เดฐเต‹ เด†เตผเดŸเตเดŸเดฟเดซเดพเด•เตโ€Œเดฑเตเดฑเตเด‚ เดฐเดฃเตเดŸเต เดญเดพเดทเด•เตพเด•เตเด•เดพเดฏเดฟ เดธเตˆเดฑเตเดฑเดฟเดจเตเดฑเต† เดชเดคเดฟเดชเตเดชเตเด•เตพ เดธเด‚เดญเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเดพเตฝ, เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเตป เดจเตฝเด•เตเดจเตเดจ เดธเตเดฅเดฒเด™เตเด™เดณเดฟเดฒเต‡เด•เตเด•เต เดžเด™เตเด™เตพ เด…เดต เด‡เดฑเด•เตเด•เตเดฎเดคเดฟ เดšเต†เดฏเตเดฏเตเดจเตเดจเต.

เด…เดตเดธเดพเดจ เดšเดฟเดคเตเดฐเดคเตเดคเดฟเดจเตเดฑเต† เดตเดฟเดตเดฐเดฃเด‚ werf-doc

image: werf-doc
from: nginx:stable-alpine
ansible:
  setup:
  - name: "Setup /etc/nginx/nginx.conf"
    copy:
      content: |
{{ .Files.Get ".werf/nginx.conf" | indent 8 }}
      dest: /etc/nginx/nginx.conf
  - file:
      path: "{{`{{ item }}`}}"
      state: directory
      mode: 0777
    with_items:
    - /app/main_site/assets
    - /app/ru_site/assets
import:
- artifact: doc-root
  add: /app/_main_site
  to: /app/main_site
  before: setup
- artifact: doc-root
  add: /app/_ru_site
  to: /app/ru_site
  before: setup
{{ range .WerfVersions -}}
{{ $VersionsDict := splitn "%" 2 . -}}
{{ $Channel := $VersionsDict._0 -}}
{{ $Version := $VersionsDict._1 -}}
- artifact: doc-{{ $Channel }}
  add: /app/_main_site
  to: /app/main_site/v{{ $Channel }}
  before: setup
{{ end -}}
{{ range .WerfVersions -}}
{{ $VersionsDict := splitn "%" 2 . -}}
{{ $Channel := $VersionsDict._0 -}}
{{ $Version := $VersionsDict._1 -}}
- artifact: doc-{{ $Channel }}
  add: /app/_ru_site
  to: /app/ru_site/v{{ $Channel }}
  before: setup
{{ end -}}

เดชเตเดฐเดงเดพเดจ เดšเดฟเดคเตเดฐเดคเตเดคเดฟเดจเตŠเดชเตเดชเด‚ เดกเต†เดตเต เดธเตผเด•เตเดฏเต‚เดŸเตเดŸเดฟเตฝ เดธเดฎเดพเดฐเด‚เดญเดฟเดšเตเดš เด…เดงเดฟเด• เด‡เดฎเต‡เดœเดฟเตฝ เดธเตˆเดฑเตเดฑเดฟเดจเตเดฑเต† เดฐเดฃเตเดŸเต เดชเดคเดฟเดชเตเดชเตเด•เตพ เดฎเดพเดคเตเดฐเดฎเต‡ เด…เดŸเด™เตเด™เดฟเดฏเดฟเดŸเตเดŸเตเดณเตเดณเต‚: เด…เดตเดฒเต‹เด•เดจ เด•เดฎเตเดฎเดฟเดฑเตเดฑเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เดชเดคเดฟเดชเตเดชเตเด‚ เดธเตˆเดฑเตเดฑเดฟเดจเตเดฑเต† เดฑเต‚เดŸเตเดŸเต เดชเดคเดฟเดชเตเดชเตเด‚ (เดชเตŠเดคเต เด…เดธเดฑเตเดฑเตเด•เตพ เด‰เดฃเตเดŸเต, เดจเดฟเด™เตเด™เตพ เด“เตผเด•เตเด•เตเดจเตเดจเตเดฃเตเดŸเต†เด™เตเด•เดฟเตฝ , เดกเดพเดฑเตเดฑ เดฑเดฟเดฒเต€เดธเต เดšเต†เดฏเตเดฏเตเด•). เด…เดคเดฟเดจเดพเตฝ, เด…เดงเดฟเด• เดšเดฟเดคเตเดฐเด‚ เด‡เดฑเด•เตเด•เตเดฎเดคเดฟ เดตเดฟเดญเดพเด—เดคเตเดคเดฟเตฝ เดฎเดพเดคเตเดฐเด‚ เดชเตเดฐเดงเดพเดจเดฎเดพเดฏเดคเดฟเตฝ เดจเดฟเดจเตเดจเต เดตเตเดฏเดคเตเดฏเดธเตเดคเดฎเดพเดฏเดฟเดฐเดฟเด•เตเด•เตเด‚ (เดคเต€เตผเดšเตเดšเดฏเดพเดฏเตเด‚, เดชเต‡เดฐเดฟเตฝ):

image: werf-dev
...
import:
- artifact: doc-root
  add: /app/_main_site
  to: /app/main_site
  before: setup
- artifact: doc-root
  add: /app/_ru_site
  to: /app/ru_site
  before: setup
{{- if .WerfReviewCommit  }}
- artifact: doc-review
  add: /app/_main_site
  to: /app/main_site/review
  before: setup
- artifact: doc-review
  add: /app/_ru_site
  to: /app/ru_site/review
  before: setup
{{- end }}

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

เด…เดธเด‚เดฌเตเดฒเดฟ เดคเดฏเตเดฏเดพเดฑเดพเดฃเต! เดจเดฎเตเด•เตเด•เต เดธเดฟเด/เดธเดฟเดกเดฟเดฏเดฟเดฒเต‡เด•เตเด•เตเด‚ เดชเตเดฐเดงเดพเดจเดชเตเดชเต†เดŸเตเดŸ เดธเต‚เด•เตเดทเตเดฎเดคเด•เดณเดฟเดฒเต‡เด•เตเด•เตเด‚ เดชเต‹เด•เดพเด‚.

GitLab CI-เดฏเดฟเดฒเต† เดชเตˆเดชเตเดชเตเดฒเตˆเดจเตเด‚ เดกเตˆเดจเดพเดฎเดฟเด•เต เดฌเดฟเตฝเดกเดฟเดจเตเดฑเต† เดธเดตเดฟเดถเต‡เดทเดคเด•เดณเตเด‚

เดฌเดฟเตฝเดกเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ เดจเดฎเตเดฎเตพ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจ เดชเดฐเดฟเดธเตเดฅเดฟเดคเดฟ เดตเต‡เดฐเดฟเดฏเดฌเดฟเดณเตเด•เตพ เดธเดœเตเดœเต€เด•เดฐเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต werf.yaml. REVIEW_SHA เดตเต‡เดฐเดฟเดฏเดฌเดฟเดณเดฟเดจเต เด‡เดคเต เดฌเดพเดงเด•เดฎเดฒเตเดฒ, GitHub เดนเตเด•เตเด•เดฟเตฝ เดจเดฟเดจเตเดจเต เดชเตˆเดชเตเดชเตเดฒเตˆเดจเดฟเดฒเต‡เด•เตเด•เต เดตเดฟเดณเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ เดžเด™เตเด™เตพ เดธเดœเตเดœเต€เด•เดฐเดฟเด•เตเด•เตเด‚.

เด†เดตเดถเตเดฏเดฎเดพเดฏ เดฌเดพเดนเตเดฏ เดกเดพเดฑเตเดฑ เดžเด™เตเด™เตพ เด’เดฐเต เดฌเดพเดทเต เดธเตเด•เตเดฐเดฟเดชเตเดฑเตเดฑเดฟเตฝ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเด‚ generate_artifacts, เด‡เดคเต เดฐเดฃเตเดŸเต GitLab เดชเตˆเดชเตเดชเตเดฒเตˆเตป เด†เตผเดŸเตเดŸเดฟเดซเดพเด•เตเดฑเตเดฑเตเด•เตพ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเด‚:

  • เดซเดฏเตฝ releases.yml เดฑเดฟเดฒเต€เดธเต เดกเดพเดฑเตเดฑเดฏเต‹เดŸเตŠเดชเตเดชเด‚,
  • เดซเดฏเตฝ common_envs.sh, เด•เดฏเดฑเตเดฑเตเดฎเดคเดฟ เดšเต†เดฏเตเดฏเต‡เดฃเตเดŸ เดชเดฐเดฟเดธเตเดฅเดฟเดคเดฟ เดตเต‡เดฐเดฟเดฏเดฌเดฟเดณเตเด•เตพ เด…เดŸเด™เตเด™เดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต.

เดซเดฏเตฝ เด‰เดณเตเดณเดŸเด•เตเด•เด‚ generate_artifacts เดจเดฟเด™เตเด™เตพ เดžเด™เตเด™เดณเตเดŸเต† เด•เดฃเตเดŸเต†เดคเตเดคเตเด‚ เด‰เดฆเดพเดนเดฐเดฃเด™เตเด™เดณเตเดณเตเดณ เดถเต‡เด–เดฐเด™เตเด™เตพ. เดกเดพเดฑเตเดฑ เดธเตเดตเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจเดคเต เดฒเต‡เด–เดจเดคเตเดคเดฟเดจเตเดฑเต† เดตเดฟเดทเดฏเดฎเดฒเตเดฒ, เดซเดฏเดฒเดพเดฃเต common_envs.sh เดžเด™เตเด™เตพเด•เตเด•เต เดชเตเดฐเดงเดพเดจเดฎเดพเดฃเต, เด•เดพเดฐเดฃเด‚ เดตเต†เตผเดซเดฟเดจเตเดฑเต† เดœเต‹เดฒเดฟ เด…เดคเดฟเดจเต† เด†เดถเตเดฐเดฏเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต. เด…เดคเดฟเดจเตเดฑเต† เด‰เดณเตเดณเดŸเด•เตเด•เดคเตเดคเดฟเดจเตเดฑเต† เด’เดฐเต เด‰เดฆเดพเดนเดฐเดฃเด‚:

export RELEASES='1.0%v1.0.6-4'
export CHANNELS='1.0-alpha%v1.0.7-1 1.0-beta%v1.0.7-1 1.0-ea%v1.0.6-4 1.0-stable%v1.0.6-4 1.0-rock-solid%v1.0.6-4'
export ROOT_VERSION='v1.0.6-4'

เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด…เดคเตเดคเดฐเด‚ เด’เดฐเต เดธเตเด•เตเดฐเดฟเดชเตเดฑเตเดฑเดฟเดจเตเดฑเต† เด”เดŸเตเดŸเตเดชเตเดŸเตเดŸเต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเด‚, เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เดฌเดพเดทเต เดซเด‚เด—เตเดทเตป เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต source.

เด‡เดชเตเดชเต‹เตพ เดฐเดธเด•เดฐเดฎเดพเดฏ เดญเดพเด—เด‚ เดตเดฐเตเดจเตเดจเต. เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเดฑเต† เดจเดฟเตผเดฎเตเดฎเดพเดฃเดตเตเด‚ เดตเดฟเดจเตเดฏเดพเดธเดตเตเด‚ เดถเดฐเดฟเดฏเดพเดฏเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต, เด…เดคเต เด‰เดฑเดชเตเดชเดพเด•เตเด•เต‡เดฃเตเดŸเดคเต เด†เดตเดถเตเดฏเดฎเดพเดฃเต werf.yaml เด†เดฏเดฟเดฐเตเดจเตเดจเต เด…เดคเตเดคเดจเตเดจเต† เด•เตเดฑเดžเตเดžเดคเต เด’เดฐเต เดชเตˆเดชเตเดชเต เดฒเตˆเดจเดฟเดจเตเดณเตเดณเดฟเตฝ. เดˆ เดตเตเดฏเดตเดธเตเดฅ เดชเดพเดฒเดฟเดšเตเดšเดฟเดฒเตเดฒเต†เด™เตเด•เดฟเตฝ, เด…เดธเด‚เดฌเตเดฒเดฟ เดธเดฎเดฏเดคเตเดคเต เดตเต†เตผเดซเต เด•เดฃเด•เตเด•เดพเด•เตเด•เตเดจเตเดจ เด˜เดŸเตเดŸเด™เตเด™เดณเตเดŸเต† เด’เดชเตเดชเตเด•เตพ เดตเตเดฏเดคเตเดฏเดธเตเดคเดฎเดพเดฏเดฟเดฐเดฟเด•เตเด•เตเด‚, เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เดตเดฟเดจเตเดฏเดพเดธเด‚. เด‡เดคเต เด’เดฐเต เดตเดฟเดจเตเดฏเดพเดธ เดชเดฟเดถเด•เดฟเดฒเต‡เด•เตเด•เต เดจเดฏเดฟเด•เตเด•เตเด‚, เด•เดพเดฐเดฃเด‚... เดตเดฟเดจเตเดฏเดพเดธเดคเตเดคเดฟเดจเต เด†เดตเดถเตเดฏเดฎเดพเดฏ เดšเดฟเดคเตเดฐเด‚ เด•เดพเดฃเดฟเดฒเตเดฒ.

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

เดคเดฒเดฎเตเดฑ เดŽเด™เตเด•เดฟเตฝ werf.yaml เดฌเดพเดนเตเดฏ เดกเดพเดฑเตเดฑเดฏเต† เด†เดถเตเดฐเดฏเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต (เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เดจเดฟเดฒเดตเดฟเดฒเต† เดชเดคเดฟเดชเตเดชเตเด•เดณเตเดŸเต† เด’เดฐเต เดฒเดฟเดธเตเดฑเตเดฑเต, เดžเด™เตเด™เดณเตเดŸเต† เด•เดพเดฐเตเดฏเดคเตเดคเดฟเดฒเต†เดจเตเดจเดชเต‹เดฒเต†), เด…เดคเตเดคเดฐเด‚ เดกเดพเดฑเตเดฑเดฏเตเดŸเต† เด˜เดŸเดจเดฏเตเด‚ เดฎเต‚เดฒเตเดฏเด™เตเด™เดณเตเด‚ เดชเตˆเดชเตเดชเตเดฒเตˆเดจเดฟเดจเตเดณเตเดณเดฟเตฝ เดฐเต‡เด–เดชเตเดชเต†เดŸเตเดคเตเดคเดฃเด‚. เดฌเดพเดนเตเดฏ เดชเดพเดฐเดพเดฎเต€เดฑเตเดฑเดฑเตเด•เตพ เด‡เดŸเดฏเตเด•เตเด•เดฟเดŸเต† เดฎเดพเดฑเตเด•เดฏเดพเดฃเต†เด™เตเด•เดฟเตฝ เด‡เดคเต เดตเดณเดฐเต† เดชเตเดฐเดงเดพเดจเดฎเดพเดฃเต.

เดžเด™เตเด™เตพ เดšเต†เดฏเตเดฏเตเด‚ เดฌเดพเดนเตเดฏ เดกเดพเดฑเตเดฑ เดธเตเดตเต€เด•เดฐเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดฐเต‡เด–เดชเตเดชเต†เดŸเตเดคเตเดคเตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเด• GitLab-เดฒเต† เดชเตˆเดชเตเดชเตเดฒเตˆเดจเดฟเดจเตเดฑเต† เด†เดฆเตเดฏ เด˜เดŸเตเดŸเดคเตเดคเดฟเตฝ (เดชเตเดฐเต€เดฌเดฟเตฝเดกเต) เด•เต‚เดŸเดพเดคเต† เด…เดต เดซเต‹เดฎเดฟเตฝ เด•เต‚เดŸเตเดคเตฝ เด•เตˆเดฎเดพเดฑเตเด• GitLab CI เด†เตผเดŸเตเดŸเดฟเดซเดพเด•เตเดฑเตเดฑเต. เด‡เดคเต‡ เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเดจเดฟเตฝ เดชเตˆเดชเตเดชเตโ€Œเดฒเตˆเตป เดœเต‹เดฒเดฟเด•เตพ (เดฌเดฟเตฝเดกเต, เดกเดฟเดชเตเดฒเต‹เดฏเต, เด•เตเดฒเต€เดจเดชเตเดชเต) เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เดพเดจเตเด‚ เดชเตเดจเดฐเดพเดฐเด‚เดญเดฟเด•เตเด•เดพเดจเตเด‚ เด‡เดคเต เดจเดฟเด™เตเด™เดณเต† เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเด‚. werf.yaml.

เดธเตเดฑเตเดฑเต‡เดœเดฟเดจเตเดฑเต† เด‰เดณเตเดณเดŸเด•เตเด•เด‚ เดชเตเดฐเต€เดฌเดฟเตฝเดกเต เดซเดฏเตฝ .gitlab-ci.yml:

Prebuild:
  stage: prebuild
  script:
    - bash ./generate_artifacts 1> common_envs.sh
    - cat ./common_envs.sh
  artifacts:
    paths:
      - releases.yml
      - common_envs.sh
    expire_in: 2 week

เด†เตผเดŸเตเดŸเดฟเดซเดพเด•เตโ€Œเดฑเตเดฑเดฟเดฒเต† เดฌเดพเดนเตเดฏ เดกเดพเดฑเตเดฑ เด•เตเดฏเดพเดชเตโ€Œเดšเตผ เดšเต†เดฏเตโ€Œเดค เดถเต‡เดทเด‚, เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดธเตเดฑเตเดฑเดพเตปเดกเต‡เตผเดกเต GitLab CI เดชเตˆเดชเตเดชเตโ€Œเดฒเตˆเตป เด˜เดŸเตเดŸเด™เตเด™เตพ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดจเดฟเตผเดฎเตเดฎเดฟเด•เตเด•เดพเดจเตเด‚ เดตเดฟเดจเตเดฏเดธเดฟเด•เตเด•เดพเดจเตเด‚ เด•เดดเดฟเดฏเตเด‚: เดจเดฟเตผเดฎเตเดฎเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดตเดฟเดจเตเดฏเดธเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเด•. GitHub werf เดฑเดฟเดชเตเดชเต‹เดธเดฟเดฑเตเดฑเดฑเดฟเดฏเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เด•เตŠเดณเตเดคเตเดคเตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดžเด™เตเด™เตพ เดชเตˆเดชเตเดชเตเดฒเตˆเตป เดคเดจเตเดจเต† เดธเดฎเดพเดฐเด‚เดญเดฟเด•เตเด•เตเดจเตเดจเต (เด…เดคเดพเดฏเดคเต, GitHub-เดฒเต† เดฑเดฟเดชเตเดชเต‹เดธเดฟเดฑเตเดฑเดฑเดฟเดฏเดฟเตฝ เดฎเดพเดฑเตเดฑเด™เตเด™เตพ เดตเดฐเตเดฎเตเดชเต‹เตพ). เดตเดฟเดญเดพเด—เดคเตเดคเดฟเดฒเต† GitLab เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเต เดชเตเดฐเต‹เดชเตเดชเตผเดŸเตเดŸเดฟเด•เดณเดฟเตฝ เด…เดตเดฏเตเด•เตเด•เตเดณเตเดณ เดกเดพเดฑเตเดฑ เด•เดฃเตเดŸเต†เดคเตเดคเดพเดจเดพเด•เตเด‚ CI/CD เด•เตเดฐเดฎเต€เด•เดฐเดฃเด™เตเด™เตพ -> เดชเตˆเดชเตเดชเตเดฒเตˆเตป เดŸเตเดฐเดฟเด—เดฑเตเด•เตพ, เดคเตเดŸเตผเดจเตเดจเต GitHub-เตฝ เด…เดจเตเดฌเดจเตเดง Webhook เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเด• (เด•เตเดฐเดฎเต€เด•เดฐเดฃเด™เตเด™เตพ -> Webhooks).

เดจเดฟเตผเดฎเตเดฎเดพเดฃ เด˜เดŸเตเดŸเด‚ เด‡เดคเตเดชเต‹เดฒเต† เด•เดพเดฃเดชเตเดชเต†เดŸเตเด‚:

Build:
  stage: build
  script:
    - type multiwerf && . $(multiwerf use 1.0 alpha --as-file)
    - type werf && source <(werf ci-env gitlab --tagging-strategy tag-or-branch --verbose)
    - source common_envs.sh
    - werf build-and-publish --stages-storage :local
  except:
    refs:
      - schedules
  dependencies:
    - Prebuild

เดธเตเดฑเตเดฑเต‡เดœเดฟเตฝ เดจเดฟเดจเตเดจเต เดจเดฟเตผเดฎเตเดฎเดพเดฃ เด˜เดŸเตเดŸเดคเตเดคเดฟเดฒเต‡เด•เตเด•เต GitLab เดฐเดฃเตเดŸเต เดชเตเดฐเดพเดตเดธเตเดคเตเด•เตเด•เตพ เดšเต‡เตผเด•เตเด•เตเด‚ เดชเตเดฐเต€เดฌเดฟเตฝเดกเต, เด…เดคเดฟเดจเดพเตฝ เดžเด™เตเด™เตพ เด•เตบเดธเตเดŸเตเดฐเด•เตโ€Œเดฑเตเดฑเต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดคเดฏเตเดฏเดพเดฑเดพเด•เตเด•เดฟเดฏ เด‡เตปเดชเตเดŸเตเดŸเต เดกเดพเดฑเตเดฑ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดตเต‡เดฐเดฟเดฏเดฌเดฟเดณเตเด•เตพ เดŽเด•เตโ€Œเดธเตโ€Œเดชเต‹เตผเดŸเตเดŸเต เดšเต†เดฏเตเดฏเตเดจเตเดจเต source common_envs.sh. เด’เดฐเต เดทเต†เดกเตเดฏเต‚เตพ เด…เดจเตเดธเดฐเดฟเดšเตเดšเต เดชเตˆเดชเตเดชเตเดฒเตˆเตป เดธเดฎเดพเดฐเด‚เดญเดฟเด•เตเด•เตเดจเตเดจเดคเต เด’เดดเดฟเด•เต† เดŽเดฒเตเดฒเดพ เดธเดพเดนเดšเดฐเตเดฏเด™เตเด™เดณเดฟเดฒเตเด‚ เดžเด™เตเด™เตพ เดจเดฟเตผเดฎเตเดฎเดพเดฃ เด˜เดŸเตเดŸเด‚ เด†เดฐเด‚เดญเดฟเด•เตเด•เตเดจเตเดจเต. เดทเต†เดกเตเดฏเต‚เตพ เด…เดจเตเดธเดฐเดฟเดšเตเดšเต, เดตเตƒเดคเตเดคเดฟเดฏเดพเด•เตเด•เดฒเดฟเดจเดพเดฏเดฟ เดžเด™เตเด™เตพ เด’เดฐเต เดชเตˆเดชเตเดชเตเดฒเตˆเตป เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเด‚ - เดˆ เดธเดพเดนเดšเดฐเตเดฏเดคเตเดคเดฟเตฝ เด…เดธเด‚เดฌเตเดฒเดฟ เดจเดŸเดคเตเดคเต‡เดฃเตเดŸ เด†เดตเดถเตเดฏเดฎเดฟเดฒเตเดฒ.

เดตเดฟเดจเตเดฏเดพเดธ เด˜เดŸเตเดŸเดคเตเดคเดฟเตฝ, เดžเด™เตเด™เตพ เดฐเดฃเตเดŸเต เดœเต‹เดฒเดฟเด•เตพ เดตเดฟเดตเดฐเดฟเด•เตเด•เตเด‚ - เด’เดฐเต YAML เดŸเต†เด‚เดชเตเดฒเต‡เดฑเตเดฑเต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดชเตเดฐเตŠเดกเด•เตเดทเตป, เดกเต†เดตเต เดธเตผเด•เตเดฏเต‚เดŸเตเดŸเตเด•เตพ เดŽเดจเตเดจเดฟเดตเดฏเดฟเดฒเต‡เด•เตเด•เต เดตเดฟเดจเตเดฏเดพเดธเดคเตเดคเดฟเดจเดพเดฏเดฟ เดตเต†เดตเตเดตเต‡เดฑเต†:

.base_deploy: &base_deploy
  stage: deploy
  script:
    - type multiwerf && . $(multiwerf use 1.0 alpha --as-file)
    - type werf && source <(werf ci-env gitlab --tagging-strategy tag-or-branch --verbose)
    - source common_envs.sh
    - werf deploy --stages-storage :local
  dependencies:
    - Prebuild
  except:
    refs:
      - schedules

Deploy to Production:
  <<: *base_deploy
  variables:
    WERF_KUBE_CONTEXT: prod
  environment:
    name: production
    url: werf.io
  only:
    refs:
      - master
  except:
    variables:
      - $REVIEW_SHA
    refs:
      - schedules

Deploy to Test:
  <<: *base_deploy
  variables:
    WERF_KUBE_CONTEXT: dev
  environment:
    name: test
    url: werf.test.flant.com
  except:
    refs:
      - schedules
  only:
    variables:
      - $REVIEW_SHA

เดตเต†เตผเดซเต เดตเดฟเดจเตเดฏเดพเดธเด‚ เดจเดŸเดคเตเดคเต‡เดฃเตเดŸ เด•เตเดฒเดธเตเดฑเตเดฑเตผ เดธเดจเตเดฆเตผเดญเด‚ เดธเต‚เดšเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเตฝ เดฎเดพเดคเตเดฐเดฎเดพเดฃเต เดŸเดพเดธเตโ€Œเด•เตเด•เตเด•เตพ เดตเตเดฏเดคเตเดฏเดพเดธเดชเตเดชเต†เดŸเตเดŸเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเต (WERF_KUBE_CONTEXT), เด•เต‚เดŸเดพเดคเต† เดฒเต‚เดชเตเดชเต เดŽเตปเดตเดฏเต‹เตบเดฎเต†เดจเตเดฑเต เดตเต‡เดฐเดฟเดฏเดฌเดฟเดณเตเด•เตพ เด•เตเดฐเดฎเต€เด•เดฐเดฟเด•เตเด•เตเด• (environment.name ะธ environment.url), เด…เดคเต เดชเดฟเดจเตเดจเต€เดŸเต เดนเต†เตฝเด‚ เดšเดพเตผเดŸเตเดŸเต เดŸเต†เด‚เดชเตเดฒเต‡เดฑเตเดฑเตเด•เดณเดฟเตฝ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต. เดŸเต†เด‚เดชเตเดฒเต‡เดฑเตเดฑเตเด•เดณเตเดŸเต† เด‰เดณเตเดณเดŸเด•เตเด•เด‚ เดžเด™เตเด™เตพ เดจเตฝเด•เดฟเดฒเตเดฒ, เด•เดพเดฐเดฃเด‚... เดชเตเดฐเดธเตเดคเตเดค เดตเดฟเดทเดฏเดคเตเดคเดฟเตฝ เดฐเดธเด•เดฐเดฎเดพเดฏเดฟ เด’เดจเตเดจเตเดฎเดฟเดฒเตเดฒ, เดŽเดจเตเดจเดพเตฝ เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด…เดต เด•เดฃเตเดŸเต†เดคเตเดคเดพเดจเดพเด•เตเด‚ เดฒเต‡เด–เดจเดคเตเดคเดฟเดจเดพเดฏเตเดณเตเดณ เดถเต‡เด–เดฐเด™เตเด™เตพ.

เด…เดจเตเดคเดฟเดฎ เดธเตโ€Œเดชเตผเดถเดจเด‚

เดตเต†เตผเดซเต เดชเดคเดฟเดชเตเดชเตเด•เตพ เด‡เดŸเดฏเตเด•เตเด•เดฟเดŸเต† เดชเตเดฑเดคเตเดคเดฟเดฑเด™เตเด™เตเดจเตเดจเดคเดฟเดจเดพเตฝ, เดชเตเดคเดฟเดฏ เดšเดฟเดคเตเดฐเด™เตเด™เตพ เด‡เดŸเดฏเตเด•เตเด•เดฟเดŸเต† เดจเดฟเตผเดฎเตเดฎเดฟเด•เตเด•เดชเตเดชเต†เดŸเตเด‚, เด•เต‚เดŸเดพเดคเต† เดกเต‹เด•เตเด•เตผ เดฐเดœเดฟเดธเตเดŸเตเดฐเดฟ เดจเดฟเดฐเดจเตเดคเดฐเด‚ เดตเดณเดฐเตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเด‚. เด…เดคเดฟเดจเดพเตฝ, เดจเดฏเด™เตเด™เดณเต† เด…เดŸเดฟเดธเตเดฅเดพเดจเดฎเดพเด•เตเด•เดฟ เด“เดŸเตเดŸเต‹เดฎเดพเดฑเตเดฑเดฟเด•เต เด‡เดฎเต‡เดœเต เด•เตเดฒเต€เดจเดชเตเดชเต เด•เต‹เตบเดซเดฟเด—เตผ เดšเต†เดฏเตเดฏเต‡เดฃเตเดŸเดคเต เด…เดคเตเดฏเดจเตเดคเดพเดชเต‡เด•เตเดทเดฟเดคเดฎเดพเดฃเต. เด‡เดคเต เดšเต†เดฏเตเดฏเดพเตป เดตเดณเดฐเต† เดŽเดณเตเดชเตเดชเดฎเดพเดฃเต.

เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เดพเตป เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด‡เดคเต เด†เดตเดถเตเดฏเดฎเดพเดฃเต:

  • เด’เดฐเต เด•เตเดฒเต€เดจเดฟเด‚เด—เต เด˜เดŸเตเดŸเด‚ เดšเต‡เตผเด•เตเด•เตเด• .gitlab-ci.yml;
  • เด’เดฐเต เด•เตเดฒเต€เดจเดฟเด‚เด—เต เดŸเดพเดธเตเด•เตเด•เดฟเดจเตเดฑเต† เด†เดจเตเด•เดพเดฒเดฟเด• เดจเดฟเตผเดตเตเดตเดนเดฃเด‚ เดšเต‡เตผเด•เตเด•เตเด•;
  • เด’เดฐเต เดฑเตˆเดฑเตเดฑเต เด†เด•เตเดธเดธเต เดŸเต‹เด•เตเด•เตบ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด’เดฐเต เดชเดฐเดฟเดธเตเดฅเดฟเดคเดฟ เดตเต‡เดฐเดฟเดฏเดฌเดฟเตพ เดธเดœเตเดœเต€เด•เดฐเดฟเด•เตเด•เตเด•.

เด’เดฐเต เด•เตเดฒเต€เดจเดฟเด‚เด—เต เดธเตเดฑเตเดฑเต‡เดœเต เดšเต‡เตผเด•เตเด•เตเดจเตเดจเต .gitlab-ci.yml:

Cleanup:
  stage: cleanup
  script:
    - type multiwerf && . $(multiwerf use 1.0 alpha --as-file)
    - type werf && source <(werf ci-env gitlab --tagging-strategy tag-or-branch --verbose)
    - source common_envs.sh
    - docker login -u nobody -p ${WERF_IMAGES_CLEANUP_PASSWORD} ${WERF_IMAGES_REPO}
    - werf cleanup --stages-storage :local
  only:
    refs:
      - schedules

เด‡เดคเต†เดฒเตเดฒเดพเด‚ เดžเด™เตเด™เตพ เด‡เดคเดฟเดจเด•เด‚ เดคเดจเตเดจเต† เด…เตฝเดชเตเดชเด‚ เด‰เดฏเตผเดจเตเดจเดคเดพเดฏเดฟ เด•เดฃเตเดŸเดฟเดŸเตเดŸเตเดฃเตเดŸเต - เด‡เดคเต เดตเตƒเดคเตเดคเดฟเดฏเดพเด•เตเด•เดพเตป เดฎเดพเดคเตเดฐเด‚ เดจเดฟเด™เตเด™เตพ เด†เดฆเตเดฏเด‚ เดกเต‹เด•เตเด•เตผ เดฐเดœเดฟเดธเตเดŸเตเดฐเดฟเดฏเดฟเดฒเต† เดšเดฟเดคเตเดฐเด™เตเด™เตพ เด‡เดฒเตเดฒเดพเดคเดพเด•เตเด•เดพเตป เด…เดตเด•เดพเดถเดฎเตเดณเตเดณ เด’เดฐเต เดŸเต‹เด•เตเด•เตบ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดกเต‹เด•เตเด•เตผ เดฐเดœเดฟเดธเตเดŸเตเดฐเดฟเดฏเดฟเดฒเต‡เด•เตเด•เต เดฒเต‹เด—เดฟเตป เดšเต†เดฏเตเดฏเต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต (เดธเตเดตเดฏเดฎเต‡เดต เดจเตฝเด•เตเดจเตเดจ GitLab CI เดŸเดพเดธเตโ€Œเด•เต เดŸเต‹เด•เตเด•เตบ เด…เด™เตเด™เดจเต†เดฏเดฒเตเดฒ. เด…เดคเตเดคเดฐเด‚ เด…เดตเด•เดพเดถเด™เตเด™เตพ เด‰เดฃเตเดŸเต). เดŸเต‹เด•เตเด•เตบ เดฎเตเตปเด•เต‚เดŸเตเดŸเดฟ GitLab-เตฝ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเด•เดฏเตเด‚ เด…เดคเดฟเดจเตเดฑเต† เดฎเต‚เดฒเตเดฏเด‚ เดชเดฐเดฟเดธเตเดฅเดฟเดคเดฟ เดตเต‡เดฐเดฟเดฏเดฌเดฟเดณเดฟเตฝ เดตเตเดฏเด•เตเดคเดฎเดพเด•เตเด•เตเด•เดฏเตเด‚ เดตเต‡เดฃเด‚. WERF_IMAGES_CLEANUP_PASSWORD เดชเดฆเตเดงเดคเดฟ (CI/CD เด•เตเดฐเดฎเต€เด•เดฐเดฃเด™เตเด™เตพ -> เดตเต‡เดฐเดฟเดฏเดฌเดฟเดณเตเด•เตพ).

เด†เดตเดถเตเดฏเดฎเดพเดฏ เดทเต†เดกเตเดฏเต‚เดณเดฟเดจเตŠเดชเตเดชเด‚ เด’เดฐเต เด•เตเดฒเต€เดจเดฟเด‚เด—เต เดŸเดพเดธเตโ€Œเด•เต เดšเต‡เตผเด•เตเด•เตเดจเตเดจเดคเต เดชเต‚เตผเดคเตเดคเดฟเดฏเดพเดฏเดฟ CI/CD ->
เดทเต†เดกเตเดฏเต‚เตพ
.

เด…เดคเตเดฐเดฏเต‡เดฏเตเดณเตเดณเต‚: เดกเต‹เด•เตเด•เตผ เดฐเดœเดฟเดธเตเดŸเตเดฐเดฟเดฏเดฟเดฒเต† เด’เดฐเต เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเดคเตเดค เดšเดฟเดคเตเดฐเด™เตเด™เดณเดฟเตฝ เดจเดฟเดจเตเดจเต เดจเดฟเดฐเดจเตเดคเดฐเด‚ เดตเดณเดฐเตเด•เดฏเดฟเดฒเตเดฒ.

เดชเตเดฐเดพเดฏเต‹เด—เดฟเด• เดญเดพเด—เดคเตเดคเดฟเดจเตเดฑเต† เด…เดตเดธเดพเดจเด‚, เดฒเต‡เด–เดจเดคเตเดคเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เดฎเตเดดเตเดตเตป เดฒเดฟเดธเตเดฑเตเดฑเดฟเด‚เด—เตเด•เดณเตเด‚ เดฒเดญเตเดฏเดฎเดพเดฃเต เดŽเดจเตเดจเต เดžเดพเตป เดจเดฟเด™เตเด™เดณเต† เด“เตผเดฎเตเดฎเดฟเดชเตเดชเดฟเด•เตเด•เดŸเตเดŸเต† Git:

เดซเดฒเด‚

  1. เดžเด™เตเด™เตพเด•เตเด•เต เด’เดฐเต เดฒเต‹เดœเดฟเด•เตเด•เตฝ เด…เดธเด‚เดฌเตเดฒเดฟ เด˜เดŸเดจ เดฒเดญเดฟเดšเตเดšเต: เด“เดฐเต‹ เดชเดคเดฟเดชเตเดชเดฟเดจเตเด‚ เด’เดฐเต เด†เตผเดŸเตเดŸเดฟเดซเดพเด•เตเดฑเตเดฑเต.
  2. เด…เดธเด‚เดฌเตเดฒเดฟ เดธเดพเตผเดตเดคเตเดฐเดฟเด•เดฎเดพเดฃเต เด•เต‚เดŸเดพเดคเต† เดตเต†เตผเดซเดฟเดจเตเดฑเต† เดชเตเดคเดฟเดฏ เดชเดคเดฟเดชเตเดชเตเด•เตพ เดชเตเดฑเดคเตเดคเดฟเดฑเด™เตเด™เตเดฎเตเดชเต‹เตพ เดธเตเดตเดฎเต‡เดงเดฏเดพเดฒเตเดณเตเดณ เดฎเดพเดฑเตเดฑเด™เตเด™เตพ เด†เดตเดถเตเดฏเดฎเดฟเดฒเตเดฒ: เดตเต†เดฌเตโ€Œเดธเตˆเดฑเตเดฑเดฟเดฒเต† เดกเต‹เด•เตเดฏเตเดฎเต†เดจเตเดฑเต‡เดทเตป เดธเตเดตเดฏเดฎเต‡เดต เด…เดชเตโ€Œเดกเต‡เดฑเตเดฑเต เดšเต†เดฏเตเดฏเดชเตเดชเต†เดŸเตเด‚.
  3. เดตเตเดฏเดคเตเดฏเดธเตเดค เดฐเต‚เดชเดฐเต‡เด–เด•เตพเด•เตเด•เดพเดฏเดฟ เดฐเดฃเตเดŸเต เดšเดฟเดคเตเดฐเด™เตเด™เตพ เด•เต‚เดŸเตเดŸเดฟเดšเตเดšเต‡เตผเด•เตเด•เตเดจเตเดจเต.
  4. เด‡เดคเต เดตเต‡เด—เดคเตเดคเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเต, เด•เดพเดฐเดฃเด‚ เด•เดพเดทเดฟเด‚เด—เต เด•เดดเดฟเดฏเตเดจเตเดจเดคเตเดฐ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต - เดตเต†เตผเดซเดฟเดจเตเดฑเต† เด’เดฐเต เดชเตเดคเดฟเดฏ เดชเดคเดฟเดชเตเดชเต เดชเตเดฑเดคเตเดคเดฟเดฑเด™เตเด™เตเดฎเตเดชเต‹เดดเต‹ เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เด’เดฐเต GitHub เดนเตเด•เตเด•เต เด’เดฐเต เด…เดตเดฒเต‹เด•เดจ เด•เดฎเตเดฎเดฟเดฑเตเดฑเดฟเดจเดพเดฏเดฟ เดตเดฟเดณเดฟเด•เตเด•เดชเตเดชเต†เดŸเตเดฎเตเดชเต‹เดดเต‹, เดฎเดพเดฑเดฟเดฏ เดชเดคเดฟเดชเตเดชเดฟเดจเตŠเดชเตเดชเด‚ เด…เดจเตเดฌเดจเตเดง เด†เตผเดŸเตเดŸเดฟเดซเดพเด•เตเดฑเตเดฑเต เดฎเดพเดคเตเดฐเดฎเต‡ เดชเตเดจเตผเดจเดฟเตผเดฎเตเดฎเดฟเด•เตเด•เตเด•เดฏเตเดณเตเดณเต‚.
  5. เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเดคเตเดค เดšเดฟเดคเตเดฐเด™เตเด™เตพ เด‡เดฒเตเดฒเดพเดคเดพเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเต เดšเดฟเดจเตเดคเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเดฟเดฒเตเดฒ: เดตเต†เตผเดซเต เดจเดฏเด™เตเด™เตพ เด…เดจเตเดธเดฐเดฟเดšเตเดšเต เดตเตƒเดคเตเดคเดฟเดฏเดพเด•เตเด•เตเดจเตเดจเดคเต เดกเต‹เด•เตเด•เตผ เดฐเดœเดฟเดธเตเดŸเตเดฐเดฟเดฏเต† เด•เตเดฐเดฎเดคเตเดคเดฟเตฝ เดจเดฟเดฒเดจเดฟเตผเดคเตเดคเตเด‚.

เด•เดฃเตเดŸเต†เดคเตเดคเดฒเตเด•เตพ

  • เดตเต†เตผเดซเต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเดคเต เด…เดธเด‚เดฌเตเดฒเดฟ เดคเดจเตเดจเต† เด•เดพเดทเต† เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเดพเดฒเตเด‚ เดฌเดพเดนเตเดฏ เดฑเดฟเดชเตเดชเต‹เดธเดฟเดฑเตเดฑเดฑเดฟเด•เดณเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ เด•เดพเดทเต† เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเดพเดฒเตเด‚ เด…เดธเด‚เดฌเตเดฒเดฟ เดตเต‡เด—เดคเตเดคเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เดพเตป เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจเต.
  • เดŽเด•เตโ€Œเดธเตโ€Œเดฑเตเดฑเต‡เดฃเตฝ เดœเดฟเดฑเตเดฑเต เดฑเดฟเดชเตเดชเต‹เดธเดฟเดฑเตเดฑเดฑเดฟเด•เดณเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเดคเต เด“เดฐเต‹ เดคเดตเดฃเดฏเตเด‚ เดฎเตเดดเตเดตเตป เดฑเดฟเดชเตเดชเต‹เดธเดฟเดฑเตเดฑเดฑเดฟเดฏเตเด‚ เด•เตเดฒเต‹เตบ เดšเต†เดฏเตเดฏเต‡เดฃเตเดŸเดคเดฟเดจเตเดฑเต† เด†เดตเดถเตเดฏเด•เดค เด’เดดเดฟเดตเดพเด•เตเด•เตเดจเตเดจเต เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดคเดจเตเดคเตเดฐเดชเดฐเดฎเดพเดฏ เด’เดชเตเดฑเตเดฑเดฟเดฎเตˆเดธเต‡เดทเตป เดฒเต‹เดœเดฟเด•เต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดšเด•เตเดฐเด‚ เดชเตเดจเตผเดจเดฟเตผเดฎเตเดฎเดฟเด•เตเด•เตเดจเตเดจเต. werf เด’เดฐเต เด•เดพเดทเต† เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเด•เดฏเตเด‚ เด•เตเดฒเต‹เดฃเดฟเด‚เด—เต เด’เดฐเต เดคเดตเดฃ เดฎเดพเดคเตเดฐเด‚ เดšเต†เดฏเตเดฏเตเด•เดฏเตเด‚ เดคเตเดŸเตผเดจเตเดจเต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต fetch เด†เดตเดถเตเดฏเดฎเตเดณเตเดณเดชเตเดชเต‹เตพ เดฎเดพเดคเตเดฐเด‚.
  • เดฌเดฟเตฝเดกเต เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเตป เดซเดฏเดฒเดฟเตฝ Go เดŸเต†เด‚เดชเตเดฒเต‡เดฑเตเดฑเตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเดจเตเดณเตเดณ เด•เดดเดฟเดตเต werf.yaml เดฌเดพเดนเตเดฏ เดกเดพเดฑเตเดฑเดฏเต† เด†เดถเตเดฐเดฏเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจ เด’เดฐเต เด…เดธเด‚เดฌเตเดฒเดฟ เดตเดฟเดตเดฐเดฟเด•เตเด•เดพเตป เดจเดฟเด™เตเด™เดณเต† เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจเต.
  • เดตเต†เตผเดซเดฟเตฝ เดฎเต—เดฃเตเดŸเต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเดคเต เดชเตเดฐเดพเดตเดธเตเดคเตเด•เตเด•เดณเตเดŸเต† เดถเต‡เด–เดฐเดฃเดคเตเดคเต† เด—เดฃเตเดฏเดฎเดพเดฏเดฟ เดตเต‡เด—เดคเตเดคเดฟเดฒเดพเด•เตเด•เตเดจเตเดจเต - เด•เดพเดทเต† เด•เดพเดฐเดฃเด‚, เด‡เดคเต เดŽเดฒเตเดฒเดพ เดชเตˆเดชเตเดชเตเดฒเตˆเดจเตเด•เดณเดฟเดฒเตเด‚ เดธเดพเดงเดพเดฐเดฃเดฎเดพเดฃเต.
  • werf เด•เตเดฒเต€เดจเดชเตเดชเต เด•เต‹เตบเดซเดฟเด—เตผ เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเต เดŽเดณเตเดชเตเดชเดฎเดพเด•เตเด•เตเดจเตเดจเต, เดšเดฒเดจเดพเดคเตเดฎเด•เดฎเดพเดฏเดฟ เดจเดฟเตผเดฎเตเดฎเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ เด‡เดคเต เดตเดณเดฐเต† เดชเตเดฐเดงเดพเดจเดฎเดพเดฃเต.

เดชเดฟ.เดŽเดธเต

เดžเด™เตเด™เดณเตเดŸเต† เดฌเตเดฒเต‹เด—เดฟเดฒเตเด‚ เดตเดพเดฏเดฟเด•เตเด•เตเด•:

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

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