GitLab เช…เชจเซ‡ Pantheon เชจเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช•เชจเซ‡เช•เซเชŸ เช•เชฐเชตเซเช‚ เช…เชจเซ‡ Drupal เช…เชจเซ‡ WordPress เชตเชฐเซเช•เชซเซเชฒเซ‹เชจเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช‘เชชเซเชŸเชฟเชฎเชพเช‡เช เช•เชฐเชตเซเช‚

GitLab เช…เชจเซ‡ Pantheon เชจเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช•เชจเซ‡เช•เซเชŸ เช•เชฐเชตเซเช‚ เช…เชจเซ‡ Drupal เช…เชจเซ‡ WordPress เชตเชฐเซเช•เชซเซเชฒเซ‹เชจเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช‘เชชเซเชŸเชฟเชฎเชพเช‡เช เช•เชฐเชตเซเช‚
เชชเซ‡เชจเซเชฅเชฟเช“เชจ เช–เชพเชคเซ‡เชจเชพ เช…เชฎเชพเชฐเชพ เช—เซ‡เชธเซเชŸ เชกเซ‡เชตเชฒเชชเชฐ เชŸเซ‚เชฒเซเชธ เชธเชฐเซเชœเช• GitLab CI/CD เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชตเชฐเซเชกเชชเซเชฐเซ‡เชธ เชกเชฟเชชเซเชฒเซ‹เชฏเชฎเซ‡เชจเซเชŸเชจเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชธเซเชตเชšเชพเชฒเชฟเชค เช•เชฐเชตเซเช‚ เชคเซ‡ เชตเชฟเชถเซ‡ เชตเชพเชค เช•เชฐเซ‡ เช›เซ‡.

ะ’ เชธเชฐเซเชตเชฆเซ‡เชต เชนเซเช‚ เชตเชฟเช•เชพเชธเช•เชฐเซเชคเชพ เชธเช‚เชฌเช‚เชงเซ‹เชฎเชพเช‚ เช•เชพเชฎ เช•เชฐเซเช‚ เช›เซเช‚, เชคเซ‡เชฅเซ€ เชนเซเช‚ เชนเช‚เชฎเซ‡เชถเชพ WordPress เช…เชจเซ‡ Drupal เชตเชฟเช•เชพเชธเช•เชฐเซเชคเชพเช“เชจเซ‡ เชคเซ‡เชฎเชจเชพ เชตเชฐเซเช•เชซเซเชฒเซ‹เชฎเชพเช‚ เช“เชŸเซ‹เชฎเซ‡เชถเชจ เชธเชฎเชธเซเชฏเชพเช“ เชนเชฒ เช•เชฐเชตเชพเชฎเชพเช‚ เชฎเชฆเชฆ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชจเชตเซ€ เชฐเซ€เชคเซ‹ เชถเซ‹เชงเซ€ เชฐเชนเซเชฏเซ‹ เช›เซเช‚. เช† เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เชนเซเช‚ เชจเชตเชพ เชธเชพเชงเชจเซ‹ เชธเชพเชฅเซ‡ เชชเซเชฐเชฏเซ‹เช— เช•เชฐเชตเชพ เช…เชจเซ‡ เช…เชธเชฐเช•เชพเชฐเช• เชฐเซ€เชคเซ‡ เช•เชพเชฐเซเชฏ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชคเซ‡เชฎเชจเซ‡ เชเช•เชฌเซ€เชœเชพ เชธเชพเชฅเซ‡ เชœเซ‹เชกเชตเชพเชจเซเช‚ เชชเชธเช‚เชฆ เช•เชฐเซเช‚ เช›เซเช‚.

เชนเซเช‚ เช˜เชฃเซ€เชตเชพเชฐ เชตเชฟเช•เชพเชธเช•เชฐเซเชคเชพเช“เชจเซ‡ เชเช• เชธเซเชŸเซ‡เชœเซ€เช‚เช— เชธเชฐเซเชตเชฐ เชธเชพเชฅเซ‡ เชธเช‚เช˜เชฐเซเชท เช•เชฐเชคเชพ เชœเซ‹เช‰เช‚ เช›เซเช‚.

เชฎเชงเซเชฏเชตเชฐเซเชคเซ€ เชธเชฐเซเชตเชฐเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชคเชฎเชพเชฐเชพ เชตเชพเชฐเชพเชจเซ€ เชฐเชพเชน เชœเซ‹เชตเซ€ เช…เชฅเชตเชพ เช•เซเชฒเชพเชฏเชจเซเชŸเชจเซ‡ เช† เชจเซ‹เช‚เชง เชธเชพเชฅเซ‡ URL เชฎเซ‹เช•เชฒเชตเชพเชฎเชพเช‚ เช–เซ‚เชฌ เช†เชจเช‚เชฆ เชฅเชพเชฏ เช›เซ‡: "เช…เชนเซ€เช‚ เชœเซเช“, เชชเชฐเช‚เชคเซ เชนเชœเซ€ เชธเซเชงเซ€ เช…เชนเซ€เช‚ เชœเซ‹เชถเซ‹ เชจเชนเซ€เช‚."

เชฎเชฒเซเชŸเชฟเชกเซ‡เชต เชตเชพเชคเชพเชตเชฐเชฃ - เชถเชพเชจเชฆเชพเชฐ เชชเซ‡เชจเซเชฅเชฟเช“เชจ เชŸเซ‚เชฒเซเชธเชฎเชพเช‚เชฅเซ€ เชเช• - เช† เชธเชฎเชธเซเชฏเชพเชจเซ‡ เชนเชฒ เช•เชฐเซ‡ เช›เซ‡, เช•เชพเชฐเชฃ เช•เซ‡ เชคเซ‡เชฎเชจเซ€ เชธเชพเชฅเซ‡ เชคเชฎเซ‡ เชฎเชพเช‚เช— เชชเชฐ เช—เชฟเชŸ เชถเชพเช–เชพเช“ เชฎเชพเชŸเซ‡ เชตเชพเชคเชพเชตเชฐเชฃ เชฌเชจเชพเชตเซ€ เชถเช•เซ‹ เช›เซ‹. เชฆเชฐเซ‡เช• เชฎเชฒเซเชŸเชฟเชกเซ‡เชต เชเชจเซเชตเชพเชฏเชฐเซเชจเชฎเซ‡เชจเซเชŸเชจเซเช‚ เชชเซ‹เชคเชพเชจเซเช‚ URL เช…เชจเซ‡ เชกเซ‡เชŸเชพเชฌเซ‡เช เชนเซ‹เชฏ เช›เซ‡, เชœเซ‡เชฅเซ€ เชกเซ‡เชตเชฒเชชเชฐเซเชธ เชถเชพเช‚เชคเชฟเชฅเซ€ เช•เชพเชฎ เช•เชฐเซ€ เชถเช•เซ‡, เช—เซเชฃเชตเชคเซเชคเชพ เชคเชชเชพเชธเซ€ เชถเช•เซ‡ เช…เชจเซ‡ เชเช•เชฌเซ€เชœเชพเชจเชพ เช…เช‚เช—เซ‚เช เชพ เชชเชฐ เชชเช— เชฎเซ‚เช•เซเชฏเชพ เชตเชฟเชจเชพ เชฎเช‚เชœเซ‚เชฐเซ€ เชฎเซ‡เชณเชตเซ€ เชถเช•เซ‡.

เชชเชฐเช‚เชคเซ เชชเซ‡เชจเซเชฅเชฟเช“เชจ เชชเชพเชธเซ‡ เชธเช‚เชธเซเช•เชฐเชฃ เชจเชฟเชฏเช‚เชคเซเชฐเชฃ เช…เชฅเชตเชพ เชธเชคเชค เชเช•เซ€เช•เชฐเชฃ เช…เชจเซ‡ เชœเชฎเชพเชตเชŸ (CI/CD) เชฎเชพเชŸเซ‡เชจเชพ เชธเชพเชงเชจเซ‹ เชจเชฅเซ€. เชชเชฐเช‚เชคเซ เชคเซ‡ เชเช• เชฒเชตเชšเซ€เช• เชชเซเชฒเซ‡เชŸเชซเซ‹เชฐเซเชฎ เช›เซ‡ เชœเซ‡เชจเซ€ เชธเชพเชฅเซ‡ เชคเชฎเซ‡ เช•เซ‹เชˆเชชเชฃ เชŸเซ‚เชฒเซเชธเชจเซ‡ เชเช•เซ€เช•เซƒเชค เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹.

เชฎเซ‡เช‚ เช เชชเชฃ เชจเซ‹เช‚เชงเซเชฏเซเช‚ เช›เซ‡ เช•เซ‡ เชŸเซ€เชฎเซ‹ เชตเชฟเช•เชพเชธ เชฎเชพเชŸเซ‡ เช…เชฎเซเช• เชธเชพเชงเชจเซ‹เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‡ เช›เซ‡, เช…เชจเซ‡ เชเชธเซ‡เชฎเซเชฌเชฒเซ€ เช…เชจเซ‡ เชœเชฎเชพเชตเชŸ เชฎเชพเชŸเซ‡ เช…เชฒเช— เช…เชฒเช— เชธเชพเชงเชจเซ‹เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‡ เช›เซ‡.

เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชคเซ‡เช“ เชชเชพเชธเซ‡ เชธเช‚เชธเซเช•เชฐเชฃ เชจเชฟเชฏเช‚เชคเซเชฐเชฃ เช…เชจเซ‡ CI/CD เชฎเชพเชŸเซ‡ เชตเชฟเชตเชฟเชง เชธเชพเชงเชจเซ‹ เช›เซ‡. เชคเชฎเชพเชฐเซ‡ เช•เซ‹เชก เชธเช‚เชชเชพเชฆเชฟเชค เช•เชฐเชตเชพ เช…เชจเซ‡ เชธเชฎเชธเซเชฏเชพเช“เชจเซเช‚ เชจเชฟเชฆเชพเชจ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชŸเซ‚เชฒเซเชธ เชตเชšเซเชšเซ‡ เชซเซ‡เชฐเชฌเชฆเชฒ เช•เชฐเชตเซ€ เชชเชกเชถเซ‡.

เชฎเชพเช‚ GitLab เชกเซ‡เชตเชฒเชชเชฎเซ‡เชจเซเชŸ เชŸเซ‚เชฒเซเชธเชจเซ‹ เชธเช‚เชชเซ‚เชฐเซเชฃ เชธเซ‡เชŸ เช›เซ‡: เชตเชฐเซเชเชจ เช•เช‚เชŸเซเชฐเซ‹เชฒ, เชŸเชฟเช•เชฟเชŸเซเชธ, เชฎเชฐเซเชœ เชฐเชฟเช•เซเชตเซ‡เชธเซเชŸ, เชฌเซ‡เชธเซเชŸ-เช‡เชจ-เช•เซเชฒเชพเชธ CI/CD เชชเชพเช‡เชชเชฒเชพเช‡เชจ, เช•เชจเซเชŸเซ‡เชจเชฐ เชฐเชœเชฟเชธเซเชŸเซเชฐเซ€ เช…เชจเซ‡ เชคเซ‡เชจเชพ เชœเซ‡เชตเซเช‚ เชฌเชงเซเช‚. เชนเซเช‚ เชนเชœเซ€ เชธเซเชงเซ€ เชเชตเซ€ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชœเซ‹เชˆ เชถเช•เซ€ เชจเชฅเซ€ เชœเซ‡ เชคเชฎเชพเชฐเชพ เชกเซ‡เชตเชฒเชชเชฎเซ‡เชจเซเชŸ เชตเชฐเซเช•เชซเซเชฒเซ‹เชจเซ‡ เชฎเซ‡เชจเซ‡เชœ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เช†เชŸเชฒเซเช‚ เชฌเชงเซเช‚ เช‘เชซเชฐ เช•เชฐเซ‡.

เชฎเชจเซ‡ เช“เชŸเซ‹เชฎเซ‡เชถเชจ เช—เชฎเซ‡ เช›เซ‡, เชคเซ‡เชฅเซ€ เชฎเซ‡เช‚ เชชเซ‡เชจเซเชฅเชฟเช“เชจเชจเซ‡ เช—เชฟเชŸเชฒเซ‡เชฌ เชธเชพเชฅเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช•เชจเซ‡เช•เซเชŸ เช•เชฐเชตเซเช‚ เชคเซ‡ เชถเซ€เช–เซเชฏเชพ เชœเซ‡เชฅเซ€ เช—เชฟเชŸเชฒเซ‡เชฌ เชชเชฐเชจเซ€ เชฎเซเช–เซเชฏ เชถเชพเช–เชพเชฎเชพเช‚ เช•เชฎเชฟเชŸเซเชธเชจเซ‡ เชชเซ‡เชจเซเชฅเชฟเช“เชจเชจเชพ เชฎเซเช–เซเชฏ เชตเชฟเช•เชพเชธ เชตเชพเชคเชพเชตเชฐเชฃเชฎเชพเช‚ เชคเซˆเชจเชพเชค เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡. เช…เชจเซ‡ GitLab เชชเชฐ เชฎเชฐเซเชœ เชตเชฟเชจเช‚เชคเซ€เช“ เชชเซ‡เชจเซเชฅเชฟเช“เชจเชฎเชพเช‚ เชฎเชฒเซเชŸเชฟเชกเซ‡เชต เชตเชพเชคเชพเชตเชฐเชฃเชฎเชพเช‚ เช•เซ‹เชก เชฌเชจเชพเชตเซ€ เช…เชจเซ‡ เชœเชฎเชพเชตเซ€ เชถเช•เซ‡ เช›เซ‡.

เช† เชŸเซเชฏเซเชŸเซ‹เชฐเซ€เชฏเชฒเชฎเชพเช‚, เชนเซเช‚ เชคเชฎเชจเซ‡ เช—เชฟเชŸเชฒเซ‡เชฌ เช…เชจเซ‡ เชชเซ‡เชจเซเชฅเชฟเช“เชจ เชตเชšเซเชšเซ‡ เช•เชจเซ‡เช•เซเชถเชจ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชธเซ‡เชŸ เช•เชฐเชตเซเช‚ เช…เชจเซ‡ เชคเชฎเชพเชฐเชพ เชตเชฐเซเชกเชชเซเชฐเซ‡เชธ เช…เชจเซ‡ เชกเซเชฐเซเชชเชฒ เชตเชฐเซเช•เชซเซเชฒเซ‹เชจเซ‡ เช‘เชชเซเชŸเชฟเชฎเชพเช‡เช เช•เชฐเชตเซเช‚ เชคเซ‡ เชตเชฟเชถเซ‡ เชฒเชˆ เชœเชˆเชถ.

เช…เชฒเชฌเชคเซเชค เชคเซ‡ เชถเช•เซเชฏ เช›เซ‡, เชฎเชฟเชฐเชฐ เช—เชฟเชŸเชฒเซ‡เชฌ เชฐเซ€เชชเซ‹เชเซ€เชŸเชฐเซ€, เชชเชฐเช‚เชคเซ เช…เชฎเซ‡ เช…เชจเซเชตเซ‡เชทเชฃ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เช…เชฎเชพเชฐเชพ เชนเชพเชฅเชฅเซ€ เชฌเชงเซเช‚ เช•เชฐเซ€เชถเซเช‚ เช—เชฟเชŸเชฒเซ‡เชฌ เชธเซ€.เช†เชˆ. เช…เชจเซ‡ เชญเชตเชฟเชทเซเชฏเชฎเชพเช‚ เช† เชธเชพเชงเชจเชจเซ‹ เช‰เชชเชฏเซ‹เช— เชฎเชพเชคเซเชฐ เชœเชฎเชพเชตเชŸ เชฎเชพเชŸเซ‡ เชœ เชจเชนเซ€เช‚.

เชชเชฐเชฟเชšเชฏ

เช† เชชเซ‹เชธเซเชŸ เชฎเชพเชŸเซ‡, เชคเชฎเชพเชฐเซ‡ เชธเชฎเชœเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡ เช•เซ‡ เชชเซ‡เชจเซเชฅเชฟเช“เชจ เชฆเชฐเซ‡เช• เชธเชพเช‡เชŸเชจเซ‡ เชคเซเชฐเชฃ เช˜เชŸเช•เซ‹เชฎเชพเช‚ เชคเซ‹เชกเซ‡ เช›เซ‡: เช•เซ‹เชก, เชกเซ‡เชŸเชพเชฌเซ‡เช เช…เชจเซ‡ เชซเชพเช‡เชฒเซ‹.

เช•เซ‹เชกเชฎเชพเช‚ เชตเชฐเซเชกเชชเซเชฐเซ‡เชธ เช•เซ‹เชฐ, เชชเซเชฒเช—เชˆเชจเซเชธ เช…เชจเซ‡ เชฅเซ€เชฎเซเชธ เชœเซ‡เชตเซ€ CMS เชซเชพเชˆเชฒเซ‹เชจเซ‹ เชธเชฎเชพเชตเซ‡เชถ เชฅเชพเชฏ เช›เซ‡. เช† เชซเชพเช‡เชฒเซ‹ เชฎเชพเช‚ เชฎเซ‡เชจเซ‡เชœ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ เช—เชฟเชŸ เชฐเซ€เชชเซ‹เชเซ€เชŸเชฐเซ€เช, เชชเซ‡เชจเซเชฅเชฟเช“เชจ เชฆเซเชตเชพเชฐเชพ เชนเซ‹เชธเซเชŸ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡, เชœเซ‡เชจเซ‹ เช…เชฐเซเชฅ เช›เซ‡ เช•เซ‡ เช…เชฎเซ‡ Git เชธเชพเชฅเซ‡ GitLab เชฅเซ€ Pantheon เชธเซเชงเซ€ เช•เซ‹เชก เชœเชฎเชพเชตเซ€ เชถเช•เซ€เช เช›เซ€เช.
เชชเซ‡เชจเซเชฅเชฟเช“เชจเชฎเชพเช‚ เชซเชพเช‡เชฒเซ‹ เชฎเซ€เชกเชฟเชฏเชพ เชซเชพเช‡เชฒเซ‹ เช›เซ‡, เชเชŸเชฒเซ‡ เช•เซ‡, เชธเชพเช‡เชŸ เชฎเชพเชŸเซ‡เชจเซ€ เช›เชฌเซ€เช“. เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡ เชคเซ‡เช“ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเช“ เชฆเซเชตเชพเชฐเชพ เช…เชชเชฒเซ‹เชก เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ เช…เชจเซ‡ เช—เชฟเชŸ เชคเซ‡เชฎเชจเซ‡ เช…เชตเช—เชฃเซ‡ เช›เซ‡.

เชฎเชซเชค เชเช•เชพเช‰เชจเซเชŸ เชฌเชจเชพเชตเซ‹, เชตเชฟเชถเซ‡ เชตเชงเซ เชœเชพเชฃเซ‹ เชชเซ‡เชจเซเชฅเชฟเช“เชจ เชตเชฐเซเช•เชซเซเชฒเซ‹ เช…เชฅเชตเชพ เชกเซ‡เชฎเซ‹ เชฎเชพเชŸเซ‡ เชธเชพเช‡เชจ เช…เชช เช•เชฐเซ‹ pantheon.io เชชเชฐ.

เชงเชพเชฐเชฃเชพ

เชชเซ‡เชจเซเชฅเชฟเช“เชจ เช…เชจเซ‡ เช—เชฟเชŸเชฒเซ‡เชฌ เชชเชฐเชจเชพ เชฎเชพเชฐเชพ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸเชจเซ‡ เช•เชนเซ‡เชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ pantheon-gitlab-blog-demo. เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸเชจเซเช‚ เชจเชพเชฎ เช…เชจเชจเซเชฏ เชนเซ‹เชตเซเช‚ เชœเซ‹เชˆเช. เช…เชนเซ€เช‚ เช†เชชเชฃเซ‡ เชตเชฐเซเชกเชชเซเชฐเซ‡เชธ เชธเชพเชˆเชŸ เชธเชพเชฅเซ‡ เช•เชพเชฎ เช•เชฐเซ€เชถเซเช‚. เชคเชฎเซ‡ Drupal เชฒเชˆ เชถเช•เซ‹ เช›เซ‹, เชชเชฐเช‚เชคเซ เชคเชฎเชพเชฐเซ‡ เช•เซ‡เชŸเชฒเซ€เช• เชตเชธเซเชคเซเช“ เชฌเชฆเชฒเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เชชเชกเชถเซ‡.

เชนเซเช‚ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชถ เช—เชฟเชŸ เช•เชฎเชพเชจเซเชก เชฒเชพเช‡เชจเช…เชจเซ‡ เชคเชฎเซ‡ เช•เชพเชฎ เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹ เช—เซเชฐเชพเชซเชฟเช•เชฒ เช‡เชจเซเชŸเชฐเชซเซ‡เชธ, เชœเซ‹ เชคเชฎเซ‡ เช•เชฐเชตเชพ เชฎเชพเช‚เช—เซ‹ เช›เซ‹.

เชเช• เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸ เชฌเชจเชพเชตเซ‹

เชชเซเชฐเชฅเชฎ, เชšเชพเชฒเซ‹ เชฌเชจเชพเชตเซ€เช เช—เชฟเชŸเชฒเซ‡เชฌ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸ (เช…เชฎเซ‡ เชชเช›เซ€เชฅเซ€ เช† เชชเชฐ เชชเชพเช›เชพ เช†เชตเซ€เชถเซเช‚).

เชนเชตเซ‡ เชชเซ‡เชจเซเชฅเชฟเช“เชจ เชชเชฐ เชตเชฐเซเชกเชชเซเชฐเซ‡เชธ เชตเซ‡เชฌเชธเชพเช‡เชŸ เชฌเชจเชพเชตเชตเซ€. เชชเช›เซ€ เช…เชฎเซ‡ เชธเชพเช‡เชŸ เชกเซ‡เชถเชฌเซ‹เชฐเซเชก เชฎเชพเชŸเซ‡ เชตเชฐเซเชกเชชเซเชฐเซ‡เชธ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซ€เช เช›เซ€เช.

เชœเซ‹ เชคเชฎเชพเชฐเชพ เชนเชพเชฅเชจเซ‡ เช•เช‚เชˆเช• เชฌเชฆเชฒเชตเชพ เชฎเชพเชŸเซ‡ เช–เช‚เชœเชตเชพเชณ เช†เชตเซ‡ เช›เซ‡, เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชชเซเชฒเช—เชฟเชจเซเชธเชจเซ‡ เชฆเซ‚เชฐ เช•เชฐเซ‹ เช…เชฅเชตเชพ เช‰เชฎเซ‡เชฐเซ‹, เชคเซ‹ เชงเซ€เชฐเชœ เชฐเชพเช–เซ‹. เชธเชพเช‡เชŸ เชนเชœเซ เชธเซเชงเซ€ GitLab เชธเชพเชฅเซ‡ เชœเซ‹เชกเชพเชฏเซ‡เชฒ เชจเชฅเซ€, เช…เชจเซ‡ เช…เชฎเซ‡ เช‡เชšเซเช›เซ€เช เช›เซ€เช เช•เซ‡ เชคเชฎเชพเชฎ เช•เซ‹เชก เชซเซ‡เชฐเชซเชพเชฐเซ‹ GitLab เชฎเชพเชฐเชซเชคเซ‡ เชฅเชพเชฏ.

เชเช•เชตเชพเชฐ เช…เชฎเซ‡ เชตเชฐเซเชกเชชเซเชฐเซ‡เชธ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซ€ เชฒเชˆเช, เชชเซ‡เชจเซเชฅเชฟเช“เชจ เชตเซ‡เชฌเชธเชพเชˆเชŸ เชกเซ‡เชถเชฌเซ‹เชฐเซเชก เชชเชฐ เชชเชพเช›เชพ เชœเชพเช“ เช…เชจเซ‡ เชตเชฟเช•เชพเชธ เชฎเซ‹เชกเชจเซ‡ Git เชฎเชพเช‚ เชฌเชฆเชฒเซ‹.

GitLab เช…เชจเซ‡ Pantheon เชจเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช•เชจเซ‡เช•เซเชŸ เช•เชฐเชตเซเช‚ เช…เชจเซ‡ Drupal เช…เชจเซ‡ WordPress เชตเชฐเซเช•เชซเซเชฒเซ‹เชจเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช‘เชชเซเชŸเชฟเชฎเชพเช‡เช เช•เชฐเชตเซเช‚

GitLab เชชเชฐ เชชเซเชฐเชพเชฐเช‚เชญเชฟเช• เช•เชฎเชฟเชŸ

เชนเชตเซ‡ เชคเชฎเชพเชฐเซ‡ เชชเซ‡เชจเซเชฅเชฟเช“เชจ เชธเชพเช‡เชŸ เชชเชฐเชฅเซ€ เชชเซเชฐเชพเชฐเช‚เชญเชฟเช• เชตเชฐเซเชกเชชเซเชฐเซ‡เชธ เช•เซ‹เชกเชจเซ‡ เช—เชฟเชŸเชฒเซ‡เชฌเชฎเชพเช‚ เชธเซเชฅเชพเชจเชพเช‚เชคเชฐเชฟเชค เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡. เช† เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เช…เชฎเซ‡ เชธเซเชฅเชพเชจเชฟเช• เชฐเซ€เชคเซ‡ เชชเซ‡เชจเซเชฅเชฟเช“เชจ เชธเชพเช‡เชŸเชจเชพ เช—เชฟเชŸ เชฐเชฟเชชเซ‹เชเซ€เชŸเชฐเซ€เชฎเชพเช‚เชฅเซ€ เช•เซ‹เชกเชจเซ‡ เช•เซเชฒเซ‹เชจ เช•เชฐเซ€เช เช›เซ€เช, เช…เชจเซ‡ เชชเช›เซ€ เชคเซ‡เชจเซ‡ เช—เชฟเชŸเชฒเซ‡เชฌ เชฐเชฟเชชเซ‹เชเซ€เชŸเชฐเซ€เชฎเชพเช‚ เชฎเซ‹เช•เชฒเซ€เช เช›เซ€เช.

เชคเซ‡เชจเซ‡ เชธเชฐเชณ เช…เชจเซ‡ เชธเซเชฐเช•เซเชทเชฟเชค เชฌเชจเชพเชตเชตเชพ เชฎเชพเชŸเซ‡, เชชเซ‡เชจเซเชฅเชฟเช“เชจเชฎเชพเช‚ SSH เช•เซ€ เช‰เชฎเซ‡เชฐเซ‹ เช…เชจเซ‡ เชœเซเชฏเชพเชฐเซ‡ เชชเชฃ เช†เชชเชฃเซ‡ เชชเซ‡เชจเซเชฅเชฟเช“เชจ เช—เชฟเชŸ เชฐเซ€เชชเซ‹เชเซ€เชŸเชฐเซ€เชจเซ‡ เช•เซเชฒเซ‹เชจ เช•เชฐเซ€เช เช›เซ€เช เชคเซเชฏเชพเชฐเซ‡ เช…เชฎเชพเชฐเซ‡ เชชเชพเชธเชตเชฐเซเชก เชฆเชพเช–เชฒ เช•เชฐเชตเซ‹ เชชเชกเชถเซ‡ เชจเชนเซ€เช‚. เชคเซ‡ เชœ เชธเชฎเชฏเซ‡ เชชเชนเซ‡เชฒเซ‡เชฅเซ€ เชœ GitLab เชฎเชพเช‚ SSH เช•เซ€ เช‰เชฎเซ‡เชฐเซ‹.

เช† เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เชตเซ‡เชฌเชธเชพเช‡เชŸ เชกเซ‡เชถเชฌเซ‹เชฐเซเชก เชชเชฐ เช•เซเชฒเซ‹เชจ เชตเชฟเชฅ เช—เชฟเชŸ เชซเซ€เชฒเซเชกเชฎเชพเช‚เชฅเซ€ เช†เชฆเซ‡เชถเชจเซ€ เชจเช•เชฒ เช•เชฐเซ€เชจเซ‡ เชชเซ‡เชจเซเชฅเชฟเช“เชจ เชตเซ‡เชฌเชธเชพเช‡เชŸเชจเซ‡ เชธเซเชฅเชพเชจเชฟเช• เชฐเซ€เชคเซ‡ เช•เซเชฒเซ‹เชจ เช•เชฐเซ‹.

GitLab เช…เชจเซ‡ Pantheon เชจเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช•เชจเซ‡เช•เซเชŸ เช•เชฐเชตเซเช‚ เช…เชจเซ‡ Drupal เช…เชจเซ‡ WordPress เชตเชฐเซเช•เชซเซเชฒเซ‹เชจเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช‘เชชเซเชŸเชฟเชฎเชพเช‡เช เช•เชฐเชตเซเช‚
เชœเซ‹ เชคเชฎเชจเซ‡ เชฎเชฆเชฆเชจเซ€ เชœเชฐเซ‚เชฐ เชนเซ‹เชฏ, เชคเซ‹ เชฆเชธเซเชคเชพเชตเซ‡เชœเซ‹ เชตเชพเช‚เชšเซ‹ เช—เชฟเชŸ เชซเซ‹เชฐ เชชเซ‡เชจเซเชฅเชฟเช“เชจ เชธเชพเชฅเซ‡ เชชเซเชฐเชพเชฐเช‚เชญ เช•เชฐเชตเซเช‚.

เชนเชตเซ‡ เชšเชพเชฒเซ‹ เชฌเชฆเชฒเซ€เช git remote originเชชเซ‡เชจเซเชฅเชฟเช“เชจเชจเซ‡ เชฌเชฆเชฒเซ‡ เช—เชฟเชŸเชฒเซ‡เชฌ เชคเชฐเชซ เชจเชฟเชฐเซเชฆเซ‡เชถ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡. เชคเซ‡ เช•เชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡ ะบะพะผะฐะฝะดะพะน git remote.

เชšเชพเชฒเซ‹ GitLab เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸ เชชเชฐ เชœเชˆเช เช…เชจเซ‡ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸ เชตเชฟเช—เชคเซ‹ เชชเซƒเชทเซเช  เชชเชฐ เช•เซเชฒเซ‹เชจ เชกเซเชฐเซ‹เชชเชกเชพเช‰เชจเชฎเชพเช‚เชฅเซ€ เชฐเชฟเชชเซ‹เชเซ€เชŸเชฐเซ€ URL เชจเซ€ เชจเช•เชฒ เช•เชฐเซ€เช. เชšเชพเชฒเซ‹ เช•เซเชฒเซ‹เชจ เชตเชฟเชฅ SSH เชตเชฟเช•เชฒเซเชช เชชเชธเช‚เชฆ เช•เชฐเซ€เช, เช•เชพเชฐเชฃ เช•เซ‡ เช…เชฎเซ‡ เชชเชนเซ‡เชฒเชพเชฅเซ€ เชœ SSH เช•เซ€ เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชฟเชค เช•เชฐเซ€ เช›เซ‡.

GitLab เช…เชจเซ‡ Pantheon เชจเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช•เชจเซ‡เช•เซเชŸ เช•เชฐเชตเซเช‚ เช…เชจเซ‡ Drupal เช…เชจเซ‡ WordPress เชตเชฐเซเช•เชซเซเชฒเซ‹เชจเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช‘เชชเซเชŸเชฟเชฎเชพเช‡เช เช•เชฐเชตเซเช‚

เชฎเซ‚เชณเชญเซ‚เชค เชฐเซ€เชคเซ‡ git remote เช•เซ‹เชก เชฐเซ€เชชเซ‹เชเซ€เชŸเชฐเซ€เชจเซ€ เชธเซเชฅเชพเชจเชฟเช• เชจเช•เชฒ เชฎเชพเชŸเซ‡ - origin. เช† เชฌเชฆเชฒเซ€ เชถเช•เชพเชฏ เช›เซ‡ c git remote set-url origin [URL ั€ะตะฟะพะทะธั‚ะพั€ะธั GitLab], เชœเซเชฏเชพเช‚ เช•เซŒเช‚เชธเชจเซ‡ เชฌเชฆเชฒเซ‡ เช†เชชเชฃเซ‡ เชตเชพเชธเซเชคเชตเชฟเช• URL เชฆเชพเช–เชฒ เช•เชฐเซ€เช เช›เซ€เช.

เช…เช‚เชคเซ‡, เช…เชฎเซ‡ เชฒเซ‹เชจเซเชš เช•เชฐเซ€เช เช›เซ€เช git push origin master --forceเชตเชฐเซเชกเชชเซเชฐเซ‡เชธ เช•เซ‹เชกเชจเซ‡ เชชเซ‡เชจเซเชฅเชฟเช“เชจเชฅเซ€ เช—เชฟเชŸเชฒเซ‡เชฌ เชชเชฐ เชฆเชฌเชพเชฃ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡.

-เชซเซ‹เชฐเซเชธ เชตเชฟเช•เชฒเซเชช เชฎเชพเชคเซเชฐ เชเช• เชœ เชตเชพเชฐ เชœเชฐเซ‚เชฐเซ€ เช›เซ‡. เชชเช›เซ€ เชŸเซ€เชฎเซ‹เชฎเชพเช‚ git push เชคเซ‡ GitLab เชชเชฐ เชฐเชนเซ‡เชถเซ‡ เชจเชนเซ€เช‚.

เช“เชณเช–เชชเชคเซเชฐ เช…เชจเซ‡ เชšเชฒเซ‹ เชธเซเชฏเซ‹เชœเชฟเชค เช•เชฐเซ€ เชฐเชนเซเชฏเชพ เช›เซ€เช

เชฏเชพเชฆ เชฐเชพเช–เซ‹ เช•เซ‡ เช…เชฎเซ‡ เชชเซ‡เชจเซเชฅเชฟเช“เชจ เช…เชจเซ‡ เช—เชฟเชŸเชฒเซ‡เชฌเชฎเชพเช‚ เชฒเซ‰เช— เช‡เชจ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชธเซเชฅเชพเชจเชฟเช• เชฐเซ€เชคเซ‡ SSH เช•เซ€ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช‰เชฎเซ‡เชฐเซ€? SSH เชŸเซ‹เช•เชจเชจเซ‹ เช‰เชชเชฏเซ‹เช— GitLab เช…เชจเซ‡ Pantheon เชจเซ‡ เช…เชงเชฟเช•เซƒเชค เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชฅเชˆ เชถเช•เซ‡ เช›เซ‡.

เช—เชฟเชŸเชฒเซ‡เชฌ เชชเชพเชธเซ‡ เช‰เชคเซเชคเชฎ เชฆเชธเซเชคเชพเชตเซ‡เชœเซ€เช•เชฐเชฃ เช›เซ‡. เชœเซ‹เชˆเช GitLab CI/CD เชธเชพเชฅเซ‡ SSH เช•เซ€เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชคเซ€ เชตเช–เชคเซ‡ เชฆเชธเซเชคเชพเชตเซ‡เชœเชฎเชพเช‚ เชกเซ‹เช•เชฐ เชเช•เซเชเชฟเช•เซเชฏเซเชŸเชฐเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชคเซ€ เชตเช–เชคเซ‡ SSH เช•เซ€ เชชเชฐเชจเซ‹ เชตเชฟเชญเชพเช—.

เชนเชตเซ‡ เช…เชฎเซ‡ เชชเซเชฐเชฅเชฎ เชฌเซ‡ เชชเช—เชฒเชพเช‚ เชชเซ‚เชฐเซเชฃ เช•เชฐเซ€เชถเซเช‚: เชšเชพเชฒเซ‹ ssh-keygen เชธเชพเชฅเซ‡ เชธเซเชฅเชพเชจเชฟเช• เชฐเซ€เชคเซ‡ เชจเชตเซ€ SSH เช•เซ€ เชœเซ‹เชกเซ€ เชฌเชจเชพเชตเซ€เช เช…เชจเซ‡ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸเชฎเชพเช‚ เชšเชฒ เชคเชฐเซ€เช•เซ‡ เช–เชพเชจเช—เซ€ เช•เซ€ เช‰เชฎเซ‡เชฐเซ€เช..

เชชเช›เซ€ เช…เชฎเซ‡ เชชเซ‚เช›เซ€เชถเซเช‚ SSH_PRIVATE_KEY เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ GitLab CI/CD เชชเชฐเซเชฏเชพเชตเชฐเชฃ เชšเชฒ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸ เชธเซ‡เชŸเชฟเช‚เช—เซเชธเชฎเชพเช‚.
เชคเซเชฐเซ€เชœเชพ เช…เชจเซ‡ เชšเซ‹เชฅเชพ เชธเซเชŸเซ‡เชชเชฎเชพเช‚ เช†เชชเชฃเซ‡ เชเช• เชซเชพเชˆเชฒ เชฌเชจเชพเชตเซ€เชถเซเช‚ .gitlab-ci.yml เช†เชจเชพ เชœเซ‡เชตเซ€ เชธเชพเชฎเช—เซเชฐเซ€ เชธเชพเชฅเซ‡:

before_script:
  # See https://docs.gitlab.com/ee/ci/ssh_keys/README.html
  - eval $(ssh-agent -s)
  - echo "$SSH_PRIVATE_KEY" | tr -d 'r' | ssh-add - > /dev/null
  - mkdir -p $HOME/.ssh && echo "StrictHostKeyChecking no" >> "$HOME/.ssh/config"
  - git config --global user.email "$GITLAB_USER_EMAIL"
  - git config --global user.name "Gitlab CI"

เชšเชพเชฒเซ‹ เชนเชœเซ เชธเซเชงเซ€ เชซเชพเชˆเชฒ เช•เชฎเชฟเชŸ เชจ เช•เชฐเซ€เช .gitlab-ci.yml, เชชเช›เซ€ เชคเชฎเชพเชฐเซ‡ เชคเซ‡เชฎเชพเช‚ เช•เช‚เชˆเช• เชฌเซ€เชœเซเช‚ เช‰เชฎเซ‡เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เชชเชกเชถเซ‡.

เชนเชตเซ‡ เช…เชฎเซ‡ เชชเชพเช‚เชšเชฎเซเช‚ เชชเช—เชฒเซเช‚ เช•เชฐเซ€เช เช›เซ€เช เช…เชจเซ‡ เชฌเชฟเชฒเซเชก เชเชจเซเชตเชพเชฏเชฐเซเชจเชฎเซ‡เชจเซเชŸเชฎเชพเช‚ เชคเชฎเชจเซ‡ เชเช•เซเชธเซ‡เชธเชจเซ€ เชœเชฐเซ‚เชฐ เชนเซ‹เชฏ เชคเซ‡เชตเซ€ เชธเซ‡เชตเชพเช“เชฎเชพเช‚ เชคเชฎเซ‡ เชชเซเชฐเชฅเชฎ เชชเช—เชฒเชพเชฎเชพเช‚ เชฌเชจเชพเชตเซ‡เชฒ เชœเชพเชนเซ‡เชฐ เช•เซ€ เช‰เชฎเซ‡เชฐเซ‹.

เช…เชฎเชพเชฐเชพ เช•เชฟเชธเซเชธเชพเชฎเชพเช‚, เช…เชฎเซ‡ เช—เชฟเชŸเชฒเซ‡เชฌเชฎเชพเช‚เชฅเซ€ เชชเซ‡เชจเซเชฅเชฟเช“เชจเชจเซ‡ เชเช•เซเชธเซ‡เชธ เช•เชฐเชตเชพ เชฎเชพเช‚เช—เซ€เช เช›เซ€เช. เช…เชฎเซ‡ เชชเซ‡เชจเซเชฅเชฟเช“เชจ เชฆเชธเซเชคเชพเชตเซ‡เชœเชฎเชพเช‚เชจเซ€ เชธเซ‚เชšเชจเชพเช“เชจเซ‡ เช…เชจเซเชธเชฐเซ€เช เช›เซ€เช เชชเซ‡เชจเซเชฅเชฟเช“เชจเชฎเชพเช‚ SSH เช•เซ€ เช‰เชฎเซ‡เชฐเซ€ เชฐเชนเซเชฏเชพ เช›เซ€เช เช…เชจเซ‡ เช† เชชเช—เชฒเซเช‚ เชญเชฐเซ‹.

เชฏเชพเชฆ เชฐเชพเช–เซ‹: เช–เชพเชจเช—เซ€ SSH GitLab เชฎเชพเช‚ เช›เซ‡, เช“เชชเชจ SSH เชชเซ‡เชจเซเชฅเชฟเช“เชจเชฎเชพเช‚ เช›เซ‡.

เชšเชพเชฒเซ‹ เชฅเซ‹เชกเชพ เชตเชงเซ เชชเชฐเซเชฏเชพเชตเชฐเชฃ เชšเชฒเซ‹ เชธเซ‡เชŸ เช•เชฐเซ€เช. เชชเซเชฐเชฅเชฎเชจเซ‡ PANTHEON_SITE เช•เชนเซ‡เชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡. เชคเซ‡เชจเซเช‚ เชฎเซ‚เชฒเซเชฏ เชคเชฎเชพเชฐเชพ เชฎเชถเซ€เชจ เชชเชฐ เชชเซ‡เชจเซเชฅเชฟเช“เชจ เชธเชพเช‡เชŸเชจเซเช‚ เชจเชพเชฎ เช›เซ‡.

เชฎเชถเซ€เชจ เชชเชฐเชจเซเช‚ เชจเชพเชฎ เช•เซเชฒเซ‹เชจ เชตเชฟเชฅ เช—เชฟเชŸ เช•เชฎเชพเชจเซเชกเชจเชพ เช…เช‚เชคเซ‡ เชธเซ‚เชšเชฟเชฌเชฆเซเชง เช›เซ‡. เชคเชฎเซ‡ เชชเชนเซ‡เชฒเชพเชฅเซ€ เชœ เชธเซเชฅเชพเชจเชฟเช• เชฐเซ€เชคเซ‡ เชธเชพเช‡เชŸเชจเซเช‚ เช•เซเชฒเซ‹เชจ เช•เชฐเซเชฏเซเช‚ เช›เซ‡, เชคเซ‡เชฅเซ€ เช† เชธเซเชฅเชพเชจเชฟเช• เชฐเซ€เชชเซ‹เชเซ€เชŸเชฐเซ€ เชกเชฟเชฐเซ‡เช•เซเชŸเชฐเซ€เชจเซเช‚ เชจเชพเชฎ เชนเชถเซ‡.

GitLab เช…เชจเซ‡ Pantheon เชจเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช•เชจเซ‡เช•เซเชŸ เช•เชฐเชตเซเช‚ เช…เชจเซ‡ Drupal เช…เชจเซ‡ WordPress เชตเชฐเซเช•เชซเซเชฒเซ‹เชจเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช‘เชชเซเชŸเชฟเชฎเชพเช‡เช เช•เชฐเชตเซเช‚

เช†เช—เชณ, เชšเชพเชฒเซ‹ เชชเชฐเซเชฏเชพเชตเชฐเชฃ เชตเซ‡เชฐเซ€เชเชฌเชฒ เชธเซ‡เชŸ เช•เชฐเซ€เช PANTHEON_GIT_URL. เช† เชชเซ‡เชจเซเชฅเชฟเช“เชจ เชธเชพเช‡เชŸ เชฎเชพเชŸเซ‡ เช—เชฟเชŸ เชฐเซ€เชชเซ‹เชเซ€เชŸเชฐเซ€ URL เช›เซ‡ เชœเซ‡เชจเซ‹ เช†เชชเชฃเซ‡ เชชเชนเซ‡เชฒเซ‡เชฅเซ€ เช‰เชชเชฏเซ‹เช— เช•เชฐเซเชฏเซ‹ เช›เซ‡.

เชตเช—เชฐ เชฎเชพเชคเซเชฐ SSH เชฐเซ€เชชเซ‹เชเซ€เชŸเชฐเซ€ URL เชฆเชพเช–เชฒ เช•เชฐเซ‹ git clone เช…เชจเซ‡ เช…เช‚เชคเซ‡ เชฎเชถเซ€เชจ เชชเชฐ เชธเชพเช‡เชŸเชจเซเช‚ เชจเชพเชฎ.

เชซเชซ. เชคเซ‡ เชฅเชˆ เช—เชฏเซเช‚, เชนเชตเซ‡ เช†เชชเชฃเซ‡ เช†เชชเชฃเซ€ เชซเชพเชˆเชฒ เชชเซ‚เชฐเซ€ เช•เชฐเซ€ เชถเช•เซ€เช เช›เซ€เช .gitlab-ci.yml.

เชœเชฎเชพเชตเชŸ เช•เชพเชฐเซเชฏ เชฌเชจเชพเชตเซ‹

เช…เชฎเซ‡ เชถเชฐเซ‚เช†เชคเชฎเชพเช‚ GitLab CI เชธเชพเชฅเซ‡ เชถเซเช‚ เช•เชฐเซ€เชถเซเช‚ เชคเซ‡ เชญเซ‚เชคเช•เชพเชณเชฎเชพเช‚ เช—เชฟเชŸ เชฐเชฟเชชเซ‹เชเซ€เชŸเชฐเซ€เช เชธเชพเชฅเซ‡ เช…เชฎเซ‡ เชœเซ‡ เช•เชฐเซเชฏเซเช‚ เช›เซ‡ เชคเซ‡เชจเชพ เชœเซ‡เชตเซเช‚ เชœ เช›เซ‡. เชชเชฐเช‚เชคเซ เช† เชตเช–เชคเซ‡ เช†เชชเชฃเซ‡ เชชเซ‡เชจเซเชฅเชฟเช“เชจ เชฐเชฟเชชเซ‹เชเซ€เชŸเชฐเซ€เชจเซ‡ เชฌเซ€เชœเชพ เชฐเชฟเชฎเซ‹เชŸ เช—เชฟเชŸ เชธเซเชคเซเชฐเซ‹เชค เชคเชฐเซ€เช•เซ‡ เช‰เชฎเซ‡เชฐเซ€เชถเซเช‚ เช…เชจเซ‡ เชชเช›เซ€ เช•เซ‹เชกเชจเซ‡ เช—เชฟเชŸเชฒเซ‡เชฌเชฅเซ€ เชชเซ‡เชจเซเชฅเชฟเช“เชจ เชชเชฐ เชฆเชฌเชพเชฃ เช•เชฐเซ€เชถเซเช‚.

เช† เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เชšเชพเชฒเซ‹ เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชฟเชค เช•เชฐเซ€เช เชธเซเชŸเซ‡เชœ deploy ะธ เช•เชพเชฐเซเชฏ deploy:dev, เช•เชพเชฐเชฃ เช•เซ‡ เช…เชฎเซ‡ เชชเซ‡เชจเซเชฅเชฟเช“เชจ เชชเชฐ เชตเชฟเช•เชพเชธเชจเชพ เชตเชพเชคเชพเชตเชฐเชฃเชฎเชพเช‚ เชคเซˆเชจเชพเชค เช•เชฐเซ€เชถเซเช‚. เชชเชฐเชฟเชฃเชพเชฎเซ€ เชซเชพเช‡เชฒ .gitlab-ci.yml เช†เชจเชพ เชœเซ‡เชตเซ‹ เชฆเซ‡เช–เชพเชถเซ‡:

stages:
- deploy

before_script:
  # See https://docs.gitlab.com/ee/ci/ssh_keys/README.html
  - eval $(ssh-agent -s)
  - echo "$SSH_PRIVATE_KEY" | tr -d 'r' | ssh-add - > /dev/null
  - mkdir -p $HOME/.ssh && echo "StrictHostKeyChecking no" >> "$HOME/.ssh/config"
  - git config --global user.email "$GITLAB_USER_EMAIL"
  - git config --global user.name "Gitlab CI"

deploy:dev:
  stage: deploy
  environment:
    name: dev
    url: https://dev-$PANTHEON_SITE.pantheonsite.io/
  script:
    - git remote add pantheon $PANTHEON_GIT_URL
    - git push pantheon master --force
  only:
    - master

เชšเชฒเซ‹ SSH_PRIVATE_KEY, PANTHEON_SITE ะธ PANTHEON_GIT_URL เชชเชฐเชฟเชšเชฟเชค เชฆเซ‡เช–เชพเชตเชพ เชœเซ‹เชˆเช - เช…เชฎเซ‡ เช† เชชเชฐเซเชฏเชพเชตเชฐเชฃ เชšเชฒเซ‹ เช…เช—เชพเช‰ เชธเซ‡เชŸเช…เชช เช•เชฐเซ€เช เช›เซ€เช. เช† เชตเซ‡เชฐเซ€เชเชฌเชฒเซเชธเชจเซ€ เชฎเชฆเชฆเชฅเซ€ เช†เชชเชฃเซ‡ เชซเชพเชˆเชฒเชฎเชพเช‚ เชตเซ‡เชฒเซเชฏเซเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€ เชถเช•เซ€เชถเซเช‚ .gitlab-ci.yml เช˜เชฃเซ€ เชตเช–เชค, เช…เชจเซ‡ เชคเซ‡เชฎเชจเซ‡ เชซเช•เซเชค เชเช• เชœ เชœเช—เซเชฏเชพเช เช…เชชเชกเซ‡เชŸ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เชชเชกเชถเซ‡.

เช›เซ‡เชฒเซเชฒเซ‡, เชซเชพเช‡เชฒ เช‰เชฎเซ‡เชฐเซ‹, เช•เชฎเชฟเชŸ เช•เชฐเซ‹ เช…เชจเซ‡ เชฎเซ‹เช•เชฒเซ‹ .gitlab-ci.yml GitLab เชชเชฐ.

เชœเชฎเชพเชตเชŸ เชคเชชเชพเชธเซ€ เชฐเชนเซเชฏเซเช‚ เช›เซ‡

เชœเซ‹ เช†เชชเชฃเซ‡ เชฌเชงเซเช‚ เชฏเซ‹เช—เซเชฏ เชฐเซ€เชคเซ‡ เช•เชฐเซเชฏเซเช‚, เชคเซ‹ เช•เชพเชฐเซเชฏ deploy:dev GitLab CI/CD เชฎเชพเช‚ เชธเชซเชณเชคเชพเชชเซ‚เชฐเซเชตเช• เชšเชพเชฒเชถเซ‡ เช…เชจเซ‡ เช•เชฎเชฟเชŸ เชธเชฌเชฎเชฟเชŸ เช•เชฐเชถเซ‡ .gitlab-ci.yml เชชเซ‡เชจเซเชฅเชฟเช“เชจ เช–เชพเชคเซ‡. เชšเชพเชฒเซ‹ เชเช• เชจเชœเชฐ เช•เชฐเซ€เช.

GitLab เช…เชจเซ‡ Pantheon เชจเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช•เชจเซ‡เช•เซเชŸ เช•เชฐเชตเซเช‚ เช…เชจเซ‡ Drupal เช…เชจเซ‡ WordPress เชตเชฐเซเช•เชซเซเชฒเซ‹เชจเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช‘เชชเซเชŸเชฟเชฎเชพเช‡เช เช•เชฐเชตเซเช‚

GitLab เช…เชจเซ‡ Pantheon เชจเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช•เชจเซ‡เช•เซเชŸ เช•เชฐเชตเซเช‚ เช…เชจเซ‡ Drupal เช…เชจเซ‡ WordPress เชตเชฐเซเช•เชซเซเชฒเซ‹เชจเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช‘เชชเซเชŸเชฟเชฎเชพเช‡เช เช•เชฐเชตเซเช‚

GitLab เช…เชจเซ‡ Pantheon เชจเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช•เชจเซ‡เช•เซเชŸ เช•เชฐเชตเซเช‚ เช…เชจเซ‡ Drupal เช…เชจเซ‡ WordPress เชตเชฐเซเช•เชซเซเชฒเซ‹เชจเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช‘เชชเซเชŸเชฟเชฎเชพเช‡เช เช•เชฐเชตเซเช‚

เชชเซ‡เชจเซเชฅเชฟเช“เชจเชจเซ‡ เชฎเชฐเซเชœ เชตเชฟเชจเช‚เชคเซ€ เชฅเซเชฐเซ‡เชกเซ‹ เชฎเซ‹เช•เชฒเซ€ เชฐเชนเซเชฏเซเช‚ เช›เซ‡

เช…เชนเซ€เช‚ เช†เชชเชฃเซ‡ เชฎเชพเชฐเซ€ เชชเซเชฐเชฟเชฏ เชชเซ‡เชจเซเชฅเชฟเช“เชจ เชธเซเชตเชฟเชงเชพเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชถเซเช‚ - เชฌเชนเซเชฆเซ‡เชต, เชœเซเชฏเชพเช‚ เชคเชฎเซ‡ เชฎเชพเช‚เช— เชชเชฐ เช—เชฟเชŸ เชถเชพเช–เชพเช“ เชฎเชพเชŸเซ‡ เชตเชงเชพเชฐเชพเชจเชพ เชชเซ‡เชจเซเชฅเชฟเช“เชจ เชตเชพเชคเชพเชตเชฐเชฃ เชฌเชจเชพเชตเซ€ เชถเช•เซ‹ เช›เซ‹.

เชฎเชฒเซเชŸเชฟเชฆเซ‡เชตเชจเซ€ เชเช•เซเชธเซ‡เชธ เชฎเชฐเซเชฏเชพเชฆเชฟเชค เช›เซ‡, เชคเซ‡เชฅเซ€ เช† เชตเชฟเชญเชพเช— เช›เซ‹เชกเซ€ เชถเช•เชพเชฏ เช›เซ‡. เชชเชฐเช‚เชคเซ เชœเซ‹ เชคเชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ เชเช•เซเชธเซ‡เชธ เชนเซ‹เชฏ, เชคเซ‹ เชคเชฎเซ‡ เช—เชฟเชŸเชฒเซ‡เชฌ เชฎเชฐเซเชœ เชตเชฟเชจเช‚เชคเซ€เช“เชฅเซ€ เชชเซ‡เชจเซเชฅเชฟเช“เชจ เชชเชฐ เชฎเชฒเซเชŸเชฟเชกเซ‡เชต เชเชจเซเชตเชพเชฏเชฐเซเชจเชฎเซ‡เชจเซเชŸเซเชธเชจเซเช‚ เชธเซเชตเชšเชพเชฒเชฟเชค เชธเชฐเซเชœเชจ เชธเซ‡เชŸ เช•เชฐเซ€เชจเซ‡ เช‰เชคเซเชชเชพเชฆเช•เชคเชพเชจเซ‡ เช—เช‚เชญเซ€เชฐเชคเชพเชฅเซ€ เชตเชงเชพเชฐเซ€ เชถเช•เซ‹ เช›เซ‹.

เชšเชพเชฒเซ‹ เชธเซŒเชชเซเชฐเชฅเชฎ เชธเซเชฅเชพเชจเชฟเช• เชฐเซ€เชคเซ‡ เชจเชตเซ€ Git เชถเชพเช–เชพ เชฌเชจเชพเชตเซ€เช git checkout -b multidev-support. เชนเชตเซ‡ เชšเชพเชฒเซ‹ เชซเชฐเซ€เชฅเซ€ เช•เช‚เชˆเช• เชฌเชฆเชฒเซ€เช .gitlab-ci.yml.

เชนเซเช‚ เชชเซ‡เชจเซเชฅเชฟเช“เชจ เชเชจเซเชตเชพเชฏเชฐเซเชจเชฎเซ‡เชจเซเชŸ เชจเชพเชฎเชฎเชพเช‚ เชฎเชฐเซเชœ เชตเชฟเชจเช‚เชคเซ€ เชจเช‚เชฌเชฐ เชถเชพเชฎเซ‡เชฒ เช•เชฐเชตเชพเชจเซเช‚ เชชเชธเช‚เชฆ เช•เชฐเซเช‚ เช›เซเช‚. เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชชเซเชฐเชฅเชฎ เชฎเชฐเซเชœ เชตเชฟเชจเช‚เชคเซ€ เช›เซ‡ mr-1, เชฌเซ€เชœเซเช‚ - mr-2 เชตเช—เซ‡เชฐเซ‡

เชฎเชฐเซเชœ เชตเชฟเชจเช‚เชคเซ€ เชฌเชฆเชฒเชพเชฏ เช›เซ‡, เชคเซ‡เชฅเซ€ เช…เชฎเชพเชฐเซ‡ เชชเซ‡เชจเซเชฅเชฟเช“เชจ เชถเชพเช–เชพเชจเชพ เชจเชพเชฎเซ‹ เช—เชคเชฟเชถเซ€เชฒ เชฐเซ€เชคเซ‡ เชจเช•เซเช•เซ€ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡. GitLab เชชเชฐ เชคเซ‡ เชธเชฐเชณ เช›เซ‡ - เชคเชฎเชพเชฐเซ‡ เชซเช•เซเชค เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡ เชชเซ‚เชฐเซเชตเชตเซเชฏเชพเช–เซเชฏเชพเชฏเชฟเชค เชชเชฐเซเชฏเชพเชตเชฐเชฃ เชšเชฒเซ‹.

เช…เชฎเซ‡ เชฒเชˆ เชถเช•เซ€เช เช›เซ€เช $CI_MERGE_REQUEST_IIDเชฎเชฐเซเชœ เชตเชฟเชจเช‚เชคเซ€ เชจเช‚เชฌเชฐ เชธเซเชชเชทเซเชŸ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡. เชšเชพเชฒเซ‹ เช†เชชเชฃเซ‡ เช…เช—เชพเช‰ เช‰เชฒเซเชฒเซ‡เช–เชฟเชค เชตเซˆเชถเซเชตเชฟเช• เชชเชฐเซเชฏเชพเชตเชฐเชฃ เชšเชฒเซ‹ เชธเชพเชฅเซ‡ เช† เชฌเชงเซเช‚ เชฒเชพเช—เซ เช•เชฐเซ€เช เช…เชจเซ‡ เชซเชพเช‡เชฒเชจเชพ เช…เช‚เชคเซ‡ เชเช• เชจเชตเซเช‚ deploy:multidev เช•เชพเชฐเซเชฏ เช‰เชฎเซ‡เชฐเซ€เช. .gitlab-ci.yml.

deploy:multidev:
  stage: deploy
  environment:
    name: multidev/mr-$CI_MERGE_REQUEST_IID
    url: https://mr-$CI_MERGE_REQUEST_IID-$PANTHEON_SITE.pantheonsite.io/
  script:
    # Checkout the merge request source branch
    - git checkout $CI_COMMIT_REF_NAME
    # Add the Pantheon git repository as an additional remote
    - git remote add pantheon $PANTHEON_GIT_URL
    # Push the merge request source branch to Pantheon
    - git push pantheon $CI_COMMIT_REF_NAME:mr-$CI_MERGE_REQUEST_IID --force
  only:
    - merge_requests

เชคเซ‡ เช†เชชเชฃเชพ เช•เชพเชฐเซเชฏ เชœเซ‡เชตเซเช‚ เชœ เชนเชถเซ‡ deploy:dev, เชฎเชพเชคเซเชฐ เชถเชพเช–เชพ เชชเซ‡เชจเซเชฅเชฟเช“เชจ เชฎเชพเชŸเซ‡ เชฎเซ‹เช•เชฒเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡, เชจเชนเซ€เช‚ master.

เช…เชฎเซ‡ เช…เชชเชกเซ‡เชŸ เช•เชฐเซ‡เชฒเซ€ เชซเชพเช‡เชฒ เช‰เชฎเซ‡เชฐเซ€ เช…เชจเซ‡ เชชเซเชฐเชคเชฟเชฌเชฆเซเชง เช•เชฐเซ€ เช›เซ‡ .gitlab-ci.yml, เช…เชจเซ‡ เชนเชตเซ‡ เชšเชพเชฒเซ‹ เชธเชพเชฅเซ‡ GitLab เชชเชฐ เชจเชตเซ€ เชถเชพเช–เชพเชจเซ‡ เช†เช—เชณ เชงเชชเชพเชตเซ€เช git push -u origin multidev-support.

เชนเชตเซ‡ เชšเชพเชฒเซ‹ เชถเชพเช–เชพเชฎเชพเช‚เชฅเซ€ เชเช• เชจเชตเซ€ เชฎเชฐเซเชœ เชตเชฟเชจเช‚เชคเซ€ เชฌเชจเชพเชตเซ€เช multidev-supportเชฆเชฌเชพเชตเซ€เชจเซ‡ เชฎเชฐเซเชœ เชตเชฟเชจเช‚เชคเซ€ เชฌเชจเชพเชตเซ‹.

GitLab เช…เชจเซ‡ Pantheon เชจเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช•เชจเซ‡เช•เซเชŸ เช•เชฐเชตเซเช‚ เช…เชจเซ‡ Drupal เช…เชจเซ‡ WordPress เชตเชฐเซเช•เชซเซเชฒเซ‹เชจเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช‘เชชเซเชŸเชฟเชฎเชพเช‡เช เช•เชฐเชตเซเช‚

เชฎเชฐเซเชœ เชตเชฟเชจเช‚เชคเซ€ เชฌเชจเชพเชตเซ€เชจเซ‡, เช…เชฎเซ‡ CI/CD เช•เชพเชฐเซเชฏ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชเช•เซเชเชฟเช•เซเชฏเซเชŸ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ เชคเซ‡ เชœเซ‹เชˆเช เช›เซ€เช deploy:multidev.

GitLab เช…เชจเซ‡ Pantheon เชจเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช•เชจเซ‡เช•เซเชŸ เช•เชฐเชตเซเช‚ เช…เชจเซ‡ Drupal เช…เชจเซ‡ WordPress เชตเชฐเซเช•เชซเซเชฒเซ‹เชจเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช‘เชชเซเชŸเชฟเชฎเชพเช‡เช เช•เชฐเชตเซเช‚

เชœเซเช“, เชชเซ‡เชจเซเชฅเชฟเช“เชจ เชชเชฐ เชเช• เชจเชตเซ‹ เชฆเซ‹เชฐเซ‹ เชฎเซ‹เช•เชฒเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซ‹ เช›เซ‡. เชชเชฐเช‚เชคเซ เชœเซ‹ เช†เชชเชฃเซ‡ เชชเซ‡เชจเซเชฅเชฟเช“เชจ เชธเชพเช‡เชŸ เชกเซ‡เชถเชฌเซ‹เชฐเซเชก เชชเชฐ เชฎเชฒเซเชŸเชฟเชฆเซ‡เชต เชตเชฟเชญเชพเช—เชฎเชพเช‚ เชœเชˆเชถเซเช‚, เชคเซ‹ เช†เชชเชฃเซ‡ เชคเซเชฏเชพเช‚ เชจเชตเซเช‚ เชตเชพเชคเชพเชตเชฐเชฃ เชœเซ‹เชˆเชถเซเช‚ เชจเชนเซ€เช‚.

GitLab เช…เชจเซ‡ Pantheon เชจเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช•เชจเซ‡เช•เซเชŸ เช•เชฐเชตเซเช‚ เช…เชจเซ‡ Drupal เช…เชจเซ‡ WordPress เชตเชฐเซเช•เชซเซเชฒเซ‹เชจเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช‘เชชเซเชŸเชฟเชฎเชพเช‡เช เช•เชฐเชตเซเช‚

เชšเชพเชฒเซ‹ เช—เชฟเชŸ เชถเชพเช–เชพเช“ เชตเชฟเชญเชพเช— เชœเซ‹เชˆเช.

GitLab เช…เชจเซ‡ Pantheon เชจเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช•เชจเซ‡เช•เซเชŸ เช•เชฐเชตเซเช‚ เช…เชจเซ‡ Drupal เช…เชจเซ‡ WordPress เชตเชฐเซเช•เชซเซเชฒเซ‹เชจเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช‘เชชเซเชŸเชฟเชฎเชพเช‡เช เช•เชฐเชตเซเช‚

เชชเชฐเชฟเชฃเชพเชฎเซ‡, เช…เชฎเชพเชฐเชพ เชฅเซเชฐเซ‡เชก mr-1 เชชเซ‡เชจเซเชฅเชฟเช“เชจ เชชเชฐ เชชเชนเซ‹เช‚เชšเซเชฏเซ‹. เชšเชพเชฒเซ‹ เชถเชพเชณเชพเชฎเชพเช‚เชฅเซ€ เชตเชพเชคเชพเชตเชฐเชฃ เชฌเชจเชพเชตเซ€เช mr-1.

GitLab เช…เชจเซ‡ Pantheon เชจเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช•เชจเซ‡เช•เซเชŸ เช•เชฐเชตเซเช‚ เช…เชจเซ‡ Drupal เช…เชจเซ‡ WordPress เชตเชฐเซเช•เชซเซเชฒเซ‹เชจเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช‘เชชเซเชŸเชฟเชฎเชพเช‡เช เช•เชฐเชตเซเช‚

เช…เชฎเซ‡ เชเช• เชฎเชฒเซเชŸเชฟเชกเซ‡เชต เชชเชฐเซเชฏเชพเชตเชฐเชฃ เชฌเชจเชพเชตเซเชฏเซเช‚ เช›เซ‡, เชนเชตเซ‡ เชšเชพเชฒเซ‹ GitLab เชชเชฐ เชชเชพเช›เชพ เชœเชˆเช เช…เชจเซ‡ เชตเชฟเชญเชพเช— เชœเซ‹เชˆเช เช•เชพเชฎเช—เซ€เชฐเซ€ > เชชเชฐเซเชฏเชพเชตเชฐเชฃ. เชฎเชพเชŸเซ‡ เชเชจเซเชŸเซเชฐเซ€เช“ เชœเซ‹เชˆเชถเซเช‚ dev ะธ mr-1.

เช† เชเชŸเชฒเชพ เชฎเชพเชŸเซ‡ เช›เซ‡ เช•เชพเชฐเชฃ เช•เซ‡ เช…เชฎเซ‡ เชเช• เชเชจเซเชŸเซเชฐเซ€ เช‰เชฎเซ‡เชฐเซ€ เช›เซ‡ environment เชจเชพเชฎ เชธเชพเชฅเซ‡ name ะธ url CI/CD เช•เชพเชฐเซเชฏเซ‹เชฎเชพเช‚. เชœเซ‹ เช†เชชเชฃเซ‡ เช“เชชเชจ เชเชจเซเชตเชพเชฏเชฐเซเชจเชฎเซ‡เชจเซเชŸ เช†เช‡เช•เซ‹เชจ เชชเชฐ เช•เซเชฒเชฟเช• เช•เชฐเซ€เช เช›เซ€เช, เชคเซ‹ เช†เชชเชฃเชจเซ‡ เชชเซ‡เชจเซเชฅเชฟเช“เชจ เชชเชฐเชจเชพ เชฎเชฒเซเชŸเชฟเชกเซ‡เชต เชชเชฐเซเชฏเชพเชตเชฐเชฃเชจเชพ URL เชชเชฐ เชฒเชˆ เชœเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡.

เชฎเชฒเซเชŸเชฟเชฆเซ‡เชตเชจเซ€ เชฐเชšเชจเชพเชจเซ‡ เชธเซเชตเชšเชพเชฒเชฟเชค เช•เชฐเซ‹

เชธเซˆเชฆเซเชงเชพเช‚เชคเชฟเช• เชฐเซ€เชคเซ‡, เชคเชฎเซ‡ เช…เชนเซ€เช‚ เชฐเซ‹เช•เซ€ เชถเช•เซ‹ เช›เซ‹ เช…เชจเซ‡ เชฆเชฐเซ‡เช• เชฎเชฐเซเชœ เชตเชฟเชจเช‚เชคเซ€ เชฎเชพเชŸเซ‡ เชฎเชฒเซเชŸเชฟเชกเซ‡เชต เชตเชพเชคเชพเชตเชฐเชฃ เชฌเชจเชพเชตเชตเชพเชจเซเช‚ เชฏเชพเชฆ เชฐเชพเช–เซ‹, เชชเชฐเช‚เชคเซ เช† เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เชธเซเชตเชšเชพเชฒเชฟเชค เชฅเชˆ เชถเช•เซ‡ เช›เซ‡.

เชชเซ‡เชจเซเชฅเชฟเช“เชจ เชชเชพเชธเซ‡ เช•เชฎเชพเชจเซเชก เชฒเชพเช‡เชจ เชŸเซ‚เชฒ เช›เซ‡ เชŸเชฐเซเชฎเชฟเชจเชธ, เชœเซเชฏเชพเช‚ เชคเชฎเซ‡ เชชเซเชฒเซ‡เชŸเชซเซ‹เชฐเซเชฎ เชธเชพเชฅเซ‡ เช†เชชเชฎเซ‡เชณเซ‡ เช•เชพเชฎ เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹. เชŸเชฐเซเชฎเชฟเชจเชธ เชคเชฎเชจเซ‡ เช†เชฆเซ‡เชถ เชตเชพเช•เซเชฏเชฎเชพเช‚เชฅเซ€ เชฎเชฒเซเชŸเชฟเชกเซ‡เชต เชตเชพเชคเชพเชตเชฐเชฃ เชฌเชจเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ เชชเชฐเชตเชพเชจเช—เซ€ เช†เชชเซ‡ เช›เซ‡ - เชฎเชพเชŸเซ‡ เช†เชฆเชฐเซเชถ เช—เชฟเชŸเชฒเซ‡เชฌ เชธเซ€.เช†เชˆ..

เช†เชจเซ‡ เชšเช•เชพเชธเชตเชพ เชฎเชพเชŸเซ‡ เช…เชฎเชจเซ‡ เชจเชตเซ€ เชฎเชฐเซเชœ เชตเชฟเชจเช‚เชคเซ€เชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡. เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชจเชตเซ€ เชถเชพเช–เชพ เชฌเชจเชพเชตเซ€เช git checkout -b auto-multidev-creation.

GitLab CI/CD เช•เชพเชฐเซเชฏเซ‹เชฎเชพเช‚ เชŸเชฐเซเชฎเชฟเชจเชธเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เชคเชฎเชพเชฐเซ‡ เชŸเชฐเซเชฎเชฟเชจเชธ เชธเชพเชฅเซ‡ เชชเซเชฐเชฎเชพเชฃเซ€เช•เชฐเชฃ เชฎเชพเชŸเซ‡ เชฎเชถเซ€เชจ เชŸเซ‹เช•เชจ เช…เชจเซ‡ เชŸเชฐเซเชฎเชฟเชจเชธ เชธเชพเชฅเซ‡ เช•เชจเซเชŸเซ‡เชจเชฐ เช‡เชฎเซ‡เชœเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡.

เชชเซ‡เชจเซเชฅเชฟเช“เชจ เชฎเชถเซ€เชจ เชŸเซ‹เช•เชจ เชฌเชจเชพเชตเชตเซเช‚, เชคเซ‡เชจเซ‡ เชธเซเชฐเช•เซเชทเชฟเชค เชœเช—เซเชฏเชพเช เชธเชพเชšเชตเซ‹ เช…เชจเซ‡ เชจเชพเชฎ เชธเชพเชฅเซ‡ GitLab เชฎเชพเช‚ เชตเซˆเชถเซเชตเชฟเช• เชชเชฐเซเชฏเชพเชตเชฐเชฃ เชšเชฒ เชคเชฐเซ€เช•เซ‡ เช‰เชฎเซ‡เชฐเซ‹ PANTHEON_MACHINE_TOKEN.

เชœเซ‹ เชคเชฎเซ‡ GitLab เชชเชฐเซเชฏเชพเชตเชฐเชฃ เชšเชฒเซ‹เชจเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช‰เชฎเซ‡เชฐเชตเซเช‚ เชคเซ‡ เชญเซ‚เชฒเซ€ เช—เชฏเชพ เช›เซ‹, เชคเซ‹ เช…เชฎเซ‡ เชœเซเชฏเชพเช‚ เชตเซเชฏเชพเช–เซเชฏเชพเชฏเชฟเชค เช•เชฐเซเชฏเซเช‚ เช›เซ‡ เชคเซเชฏเชพเช‚ เชชเชพเช›เชพ เชœเชพเช“ PANTHEON_SITE.

เชŸเชฐเซเชฎเชฟเชจเชธ เชธเชพเชฅเซ‡ เชกเซ‹เช•เชฐเชซเชพเช‡เชฒ เชฌเชจเชพเชตเชตเซ€

เชœเซ‹ เชคเชฎเซ‡ เชกเซ‹เช•เชฐเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชคเชพ เชจเชฅเซ€ เช…เชฅเชตเชพ เชคเชฎเชจเซ‡ เชซเชพเช‡เชฒเซ‹ เชชเชธเช‚เชฆ เชจเชฅเซ€ Dockerfile, เชฎเชพเชฐเซ€ เช›เชฌเซ€ เชฒเซ‹ registry.gitlab.com/ataylorme/pantheon-gitlab-blog-demo:latest เช…เชจเซ‡ เช† เชตเชฟเชญเชพเช— เช›เซ‹เชกเซ‹.

GitLab เชชเชพเชธเซ‡ เช•เชจเซเชŸเซ‡เชจเชฐ เชฐเชœเชฟเชธเซเชŸเซเชฐเซ€ เช›เซ‡, เชœเซเชฏเชพเช‚ เช…เชฎเซ‡ เช…เชฎเชพเชฐเชพ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸ เชฎเชพเชŸเซ‡ เชกเซ‹เช•เชฐเชซเชพเช‡เชฒ เชฌเชจเชพเชตเซ€ เช…เชจเซ‡ เชฎเซ‚เช•เซ€ เชถเช•เซ€เช เช›เซ€เช. เชšเชพเชฒเซ‹ เชชเซ‡เชจเซเชฅเชฟเช“เชจ เชธเชพเชฅเซ‡ เช•เชพเชฎ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชŸเชฐเซเชฎเชฟเชจเชธ เชธเชพเชฅเซ‡ เชเช• เชกเซ‹เช•เชฐเชซเชพเชˆเชฒ เชฌเชจเชพเชตเซ€เช.

เชŸเชฐเซเชฎเชฟเชจเชธ เช PHP เช•เชฎเชพเชจเซเชก เชฒเชพเช‡เชจ เชŸเซ‚เชฒ เช›เซ‡, เชคเซ‹ เชšเชพเชฒเซ‹ PHP เช‡เชฎเซ‡เชœเชฅเซ€ เชถเชฐเซ‚เช†เชค เช•เชฐเซ€เช. เชนเซเช‚ เช•เช‚เชชเซ‹เชเชฐ เชฆเซเชตเชพเชฐเชพ เชŸเชฐเซเชฎเชฟเชจเชธ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซ€ เชฐเชนเซเชฏเซ‹ เช›เซเช‚, เชคเซ‡เชฅเซ€ เชนเซเช‚ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชถ เชธเชคเซเชคเชพเชตเชพเชฐ เชกเซ‹เช•เชฐ เชฐเชšเชฏเชฟเชคเชพ เช›เชฌเซ€. เช…เชฎเซ‡ เชฌเชจเชพเชตเซ€เช เช›เซ€เช Dockerfile เชจเซ€เชšเซ‡เชจเซ€ เชธเชพเชฎเช—เซเชฐเซ€ เชธเชพเชฅเซ‡ เชธเซเชฅเชพเชจเชฟเช• เชฐเซ€เชชเซ‹เชเซ€เชŸเชฐเซ€ เชกเชฟเชฐเซ‡เช•เซเชŸเชฐเซ€เชฎเชพเช‚:

# Use the official Composer image as a parent image
FROM composer:1.8

# Update/upgrade apk
RUN apk update
RUN apk upgrade

# Make the Terminus directory
RUN mkdir -p /usr/local/share/terminus

# Install Terminus 2.x with Composer
RUN /usr/bin/env COMPOSER_BIN_DIR=/usr/local/bin composer -n --working-dir=/usr/local/share/terminus require pantheon-systems/terminus:"^2"

เชตเชฟเชญเชพเช—เชฎเชพเช‚เชฅเซ€ เช›เชฌเซ€เช“ เชเชธเซ‡เชฎเซเชฌเชฒ เช•เชฐเชตเชพ เช…เชจเซ‡ เชฎเซ‹เช•เชฒเชตเชพ เชฎเชพเชŸเซ‡เชจเซ€ เชธเซ‚เชšเชจเชพเช“เชจเซ‡ เช…เชจเซเชธเชฐเซ‹ เช›เชฌเซ€เช“ เชฌเชจเชพเชตเซ‹ เช…เชจเซ‡ เชฆเชฌเชพเชฃ เช•เชฐเซ‹ ะฒ เช•เชจเซเชŸเซ‡เชจเชฐ เชฐเชœเชฟเชธเซเชŸเซเชฐเซ€ เชฆเชธเซเชคเชพเชตเซ‡เชœเซ€เช•เชฐเชฃเชฎเชพเช‚เชฅเซ€ เช›เชฌเซ€ เชเช•เชคเซเชฐเชฟเชค เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ Dockerfile เช…เชจเซ‡ เชคเซ‡เชจเซ‡ GitLab เชชเชฐ เชฆเชฌเชพเชฃ เช•เชฐเซ‹.

เชตเชฟเชญเชพเช— เช–เซ‹เชฒเซ‹ เชฐเชœเชฟเชธเซเชŸเซเชฐเซ€ GitLab เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸเชฎเชพเช‚. เชœเซ‹ เชฌเชงเซเช‚ เชฏเซ‹เชœเชจเชพ เชฎเซเชœเชฌ เชšเชพเชฒเซเชฏเซเช‚ เชคเซ‹ เช…เชฎเชพเชฐเซ€ เช›เชฌเซ€ เชคเซเชฏเชพเช‚ เชนเชถเซ‡. เช‡เชฎเซ‡เชœ เชŸเซ‡เช—เชจเซ€ เชฒเชฟเช‚เช• เชฒเช–เซ‹ - เช…เชฎเชจเซ‡ เชซเชพเช‡เชฒ เชฎเชพเชŸเซ‡ เชคเซ‡เชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡ .gitlab-ci.yml.

GitLab เช…เชจเซ‡ Pantheon เชจเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช•เชจเซ‡เช•เซเชŸ เช•เชฐเชตเซเช‚ เช…เชจเซ‡ Drupal เช…เชจเซ‡ WordPress เชตเชฐเซเช•เชซเซเชฒเซ‹เชจเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช‘เชชเซเชŸเชฟเชฎเชพเช‡เช เช•เชฐเชตเซเช‚

เชตเชฟเชญเชพเช— script เชธเชฎเชธเซเชฏเชพเชฎเชพเช‚ deploy:multidev เชตเชงเชตเชพ เชฎเชพเช‚เชกเซ‡ เช›เซ‡, เชคเซ‹ เชšเชพเชฒเซ‹ เชคเซ‡เชจเซ‡ เช…เชฒเช— เชซเชพเช‡เชฒเชฎเชพเช‚ เช–เชธเซ‡เชกเซ€เช. เชจเชตเซ€ เชซเชพเชˆเชฒ เชฌเชจเชพเชตเซ‹ private/multidev-deploy.sh:

#!/bin/bash

# Store the mr- environment name
export PANTHEON_ENV=mr-$CI_MERGE_REQUEST_IID

# Authenticate with Terminus
terminus auth:login --machine-token=$PANTHEON_MACHINE_TOKEN

# Checkout the merge request source branch
git checkout $CI_COMMIT_REF_NAME

# Add the Pantheon Git repository as an additional remote
git remote add pantheon $PANTHEON_GIT_URL

# Push the merge request source branch to Pantheon
git push pantheon $CI_COMMIT_REF_NAME:$PANTHEON_ENV --force

# Create a function for determining if a multidev exists
TERMINUS_DOES_MULTIDEV_EXIST()
{
    # Stash a list of Pantheon multidev environments
    PANTHEON_MULTIDEV_LIST="$(terminus multidev:list ${PANTHEON_SITE} --format=list --field=id)"

    while read -r multiDev; do
        if [[ "${multiDev}" == "$1" ]]
        then
            return 0;
        fi
    done <<< "$PANTHEON_MULTIDEV_LIST"

    return 1;
}

# If the mutltidev doesn't exist
if ! TERMINUS_DOES_MULTIDEV_EXIST $PANTHEON_ENV
then
    # Create it with Terminus
    echo "No multidev for $PANTHEON_ENV found, creating one..."
    terminus multidev:create $PANTHEON_SITE.dev $PANTHEON_ENV
else
    echo "The multidev $PANTHEON_ENV already exists, skipping creating it..."
fi

เชธเซเช•เซเชฐเชฟเชชเซเชŸ เช–เชพเชจเช—เซ€ เชกเชฟเชฐเซ‡เช•เซเชŸเชฐเซ€เชฎเชพเช‚ เช›เซ‡ เช…เชจเซ‡ เชชเซ‡เชจเซเชฅเชฟเช“เชจ เชชเชฐ เชตเซ‡เชฌ เชเช•เซเชธเซ‡เชธเชจเซ€ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเชคเซเช‚ เชจเชฅเซ€. เช…เชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ เช…เชฎเชพเชฐเชพ เชฎเชฒเซเชŸเชฟเชกเซ‡เชต เชคเชฐเซเช• เชฎเชพเชŸเซ‡ เชเช• เชธเซเช•เซเชฐเชฟเชชเซเชŸ เช›เซ‡. เชšเชพเชฒเซ‹ เชนเชตเซ‡ เชตเชฟเชญเชพเช—เชจเซ‡ เช…เชชเชกเซ‡เชŸ เช•เชฐเซ€เช deploy:multidev เชซเชพเช‡เชฒ .gitlab-ci.ymlเชœเซ‡เชฅเซ€ เชคเซ‡ เช†เชจเชพ เชœเซ‡เชตเซเช‚ เชฌเชนเชพเชฐ เช†เชตเซ‡:

deploy:multidev:
  stage: deploy
  environment:
    name: multidev/mr-$CI_MERGE_REQUEST_IID
    url: https://mr-$CI_MERGE_REQUEST_IID-$PANTHEON_SITE.pantheonsite.io/
  script:
    # Run the multidev deploy script
    - "/bin/bash ./private/multidev-deploy.sh"
  only:
    - merge_requests

เช…เชฎเชพเชฐเซ‡ เช เชธเซเชจเชฟเชถเซเชšเชฟเชค เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡ เช•เซ‡ เช…เชฎเชพเชฐเชพ เช•เชพเชฐเซเชฏเซ‹ เชฌเชจเชพเชตเซ‡เชฒ เช•เชธเซเชŸเชฎ เชˆเชฎเซ‡เชœเชฎเชพเช‚ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡, เชคเซ‡เชฅเซ€ เชšเชพเชฒเซ‹ เชเช• เชตเซเชฏเชพเช–เซเชฏเชพ เช‰เชฎเซ‡เชฐเซ€เช image เชฐเชœเชฟเชธเซเชŸเซเชฐเซ€ URL เชฅเซ€ .gitlab-ci.yml. เชชเชฐเชฟเชฃเชพเชฎเซ‡, เช…เชฎเซ‡ เช†เชจเชพ เชœเซ‡เชตเซ€ เชซเชพเช‡เชฒ เชธเชพเชฅเซ‡ เชธเชฎเชพเชชเซเชค เชฅเชฏเชพ .gitlab-ci.yml:

image: registry.gitlab.com/ataylorme/pantheon-gitlab-blog-demo:latest

stages:
- deploy

before_script:
  # See https://docs.gitlab.com/ee/ci/ssh_keys/README.html
  - eval $(ssh-agent -s)
  - echo "$SSH_PRIVATE_KEY" | tr -d 'r' | ssh-add - > /dev/null
  - mkdir -p $HOME/.ssh && echo "StrictHostKeyChecking no" >> "$HOME/.ssh/config"
  - git config --global user.email "$GITLAB_USER_EMAIL"
  - git config --global user.name "Gitlab CI"

deploy:dev:
  stage: deploy
  environment:
    name: dev
    url: https://dev-$PANTHEON_SITE.pantheonsite.io/
  script:
    - git remote add pantheon $PANTHEON_GIT_URL
    - git push pantheon master --force
  only:
    - master

deploy:multidev:
  stage: deploy
  environment:
    name: multidev/mr-$CI_MERGE_REQUEST_IID
    url: https://mr-$CI_MERGE_REQUEST_IID-$PANTHEON_SITE.pantheonsite.io/
  script:
    # Run the multidev deploy script
    - "/bin/bash ./private/multidev-deploy.sh"
  only:
    - merge_requests

เช‰เชฎเซ‡เชฐเซ‹, เช•เชฎเชฟเชŸ เช•เชฐเซ‹ เช…เชจเซ‡ เชฎเซ‹เช•เชฒเซ‹ private/multidev-deploy.sh ะธ .gitlab-ci.yml. เชนเชตเซ‡ เช…เชฎเซ‡ GitLab เชชเชฐ เชชเชพเช›เชพ เช†เชตเซ€เช เช›เซ€เช เช…เชจเซ‡ CI/CD เช•เชพเชฐเซเชฏ เชชเซ‚เชฐเซเชฃ เชฅเชตเชพเชจเซ€ เชฐเชพเชน เชœเซเช“. เชงเซ€เชฐเชœ เชฐเชพเช–เซ‹: เชฎเชฒเซเชŸเชฟเชฆเซ‡เชต เชฌเชจเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ เชฅเซ‹เชกเซ€ เชฎเชฟเชจเชฟเชŸเซ‹ เชฒเชพเช—เซ€ เชถเช•เซ‡ เช›เซ‡.

เชชเช›เซ€ เช†เชชเชฃเซ‡ เชชเซ‡เชจเซเชฅเชฟเช“เชจ เชชเชฐ เชฎเชฒเซเชŸเชฟเชฆเซ‡เชต เชธเซ‚เชšเชฟ เชชเชฐ เชจเชœเชฐ เช•เชฐเซ€เช. เช“เชน เชšเชฎเชคเซเช•เชพเชฐ! เชฎเชฒเซเชŸเชฟเชฆเซ‡เชต เชชเชฐเซเชฏเชพเชตเชฐเชฃ mr-2 เชชเชนเซ‡เชฒเซ‡เชฅเซ€ เชœ เช…เชนเซ€เช‚.

GitLab เช…เชจเซ‡ Pantheon เชจเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช•เชจเซ‡เช•เซเชŸ เช•เชฐเชตเซเช‚ เช…เชจเซ‡ Drupal เช…เชจเซ‡ WordPress เชตเชฐเซเช•เชซเซเชฒเซ‹เชจเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช‘เชชเซเชŸเชฟเชฎเชพเช‡เช เช•เชฐเชตเซเช‚

เชจเชฟเชทเซเช•เชฐเซเชท

เชœเซเชฏเชพเชฐเซ‡ เช…เชฎเซ‡ เชฎเชฐเซเชœ เชตเชฟเชจเช‚เชคเซ€เช“ เช–เซ‹เชฒเชตเชพเชจเซเช‚ เช…เชจเซ‡ เช†เชชเชฎเซ‡เชณเซ‡ เชตเชพเชคเชพเชตเชฐเชฃ เชฌเชจเชพเชตเชตเชพเชจเซเช‚ เชถเชฐเซ‚ เช•เชฐเซเชฏเซเช‚ เชคเซเชฏเชพเชฐเซ‡ เชฎเชพเชฐเซ€ เชŸเซ€เชฎเชจเซ‡ เช˜เชฃเซ€ เชตเชงเซ เชฎเชœเชพ เช†เชตเซ€.

GitLab เช…เชจเซ‡ Pantheon เชจเชพ เชถเช•เซเชคเชฟเชถเชพเชณเซ€ เชธเชพเชงเชจเซ‹ เชธเชพเชฅเซ‡, เชคเชฎเซ‡ GitLab เชจเซ‡ Pantheon เชธเชพเชฅเซ‡ เช†เชชเชฎเซ‡เชณเซ‡ เช•เชจเซ‡เช•เซเชŸ เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹.

เช…เชฎเซ‡ GitLab CI/CD เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชคเชพ เชนเซ‹เชตเชพเชฅเซ€, เช…เชฎเชพเชฐเชพ เชตเชฐเซเช•เชซเซเชฒเซ‹เชจเซ‡ เชตเชงเชตเชพ เชฎเชพเชŸเซ‡ เชœเช—เซเชฏเชพ เชฎเชณเชถเซ‡. เชคเชฎเชจเซ‡ เชชเซเชฐเชพเชฐเช‚เชญ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เช…เชนเซ€เช‚ เช•เซ‡เชŸเชฒเชพเช• เชตเชฟเชšเชพเชฐเซ‹ เช›เซ‡:

GitLab, Pantheon เช…เชจเซ‡ เช“เชŸเซ‹เชฎเซ‡เชถเชจ เชตเชฟเชถเซ‡ เชคเชฎเซ‡ เชถเซเช‚ เชตเชฟเชšเชพเชฐเซ‹ เช›เซ‹ เชคเซ‡ เช…เชฎเชจเซ‡ เชœเชฃเชพเชตเซ‹.

PS เชถเซเช‚ เชคเชฎเซ‡ เชœเชพเชฃเซ‹ เช›เซ‹ เช•เซ‡ เชŸเชฐเซเชฎเชฟเชจเชธ, เชชเซ‡เชจเซเชฅเชฟเช“เชจเชจเซเช‚ เช•เชฎเชพเชจเซเชก เชฒเชพเช‡เชจ เชŸเซ‚เชฒ, เชชเซเชฒเช—เชˆเชจเซเชธ เชฆเซเชตเชพเชฐเชพ เชตเชฟเชธเซเชคเซƒเชค เช•เชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡?

เชชเซ‡เชจเซเชฅเชฟเช“เชจเชฎเชพเช‚ เช…เชฎเซ‡ เช…เชฎเชพเชฐเชพ เชธเช‚เชธเซเช•เชฐเชฃ 2 เชชเชฐ เชธเชพเชฐเซเช‚ เช•เชพเชฎ เช•เชฐเซเชฏเซเช‚ เช›เซ‡ เชŸเชฐเซเชฎเชฟเชจเชธ เชฌเชฟเชฒเซเชก เชŸเซ‚เชฒเซเชธ เชฎเชพเชŸเซ‡ เชชเซเชฒเช—เช‡เชจ GitLab เชธเชชเซ‹เชฐเซเชŸ เชธเชพเชฅเซ‡. เชœเซ‹ เชคเชฎเซ‡ เชฆเชฐเซ‡เช• เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸ เชฎเชพเชŸเซ‡ เชธเซ‡เชŸเชฟเช‚เช—เซเชธเชฅเซ€ เชชเชฐเซ‡เชถเชพเชจ เชฅเชตเชพ เชฎเชพเช‚เช—เชคเชพ เชจเชฅเซ€, เชคเซ‹ เช† เชชเซเชฒเช—เช‡เชจเชจเซ‡ เช…เชœเชฎเชพเชตเซ‹ เช…เชจเซ‡ เช…เชฎเชจเซ‡ v2 เชฌเซ€เชŸเชพเชจเซเช‚ เชชเชฐเซ€เช•เซเชทเชฃ เช•เชฐเชตเชพเชฎเชพเช‚ เชธเชนเชพเชฏ เช•เชฐเซ‹. เชŸเชฐเซเชฎเชฟเชจเชธ เชŸเซ€เชฎ เชฎเชพเชŸเซ‡ build:project:create เชคเชฎเชพเชฐเซ‡ เชซเช•เซเชค เชชเซ‡เชจเซเชฅเชฟเช“เชจ เชŸเซ‹เช•เชจ เช…เชจเซ‡ เช—เชฟเชŸเชฒเซ‡เชฌ เชŸเซ‹เช•เชจเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡. เชคเซ‡เชฃเซ€ เช•เช‚เชชเซ‹เชเชฐ เช…เชจเซ‡ เชธเซเชตเชšเชพเชฒเชฟเชค เชชเชฐเซ€เช•เซเชทเชฃ เชธเชพเชฅเซ‡เชจเชพ เชจเชฎเซ‚เชจเชพ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸเซเชธเชฎเชพเช‚เชฅเซ€ เชเช•เชจเซ‡ เชœเชฎเชพเชตเชถเซ‡, เชจเชตเซ€ เชชเซ‡เชจเซเชฅเชฟเช“เชจ เชธเชพเช‡เชŸ เช—เชฟเชŸเชฒเซ‡เชฌเชฎเชพเช‚ เชเช• เชจเชตเซ‹ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸ เชฌเชจเชพเชตเชถเซ‡ เช…เชจเซ‡ เชชเชฐเซเชฏเชพเชตเชฐเชฃ เชตเซ‡เชฐเซ€เชเชฌเชฒเซเชธ เช…เชจเซ‡ SSH เช•เซ€เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชคเซ‡เชจเซ‡ เช•เชจเซ‡เช•เซเชŸ เช•เชฐเชถเซ‡.

เชฒเซ‡เช–เช• เชตเชฟเชถเซ‡

เชเชจเซเชกเซเชฐเซ เชŸเซ‡เชฒเชฐ เชตเชฟเช•เชพเชธเช•เชฐเซเชคเชพเช“ เชฎเชพเชŸเซ‡ เชŸเซ‚เชฒเซเชธ เชฌเชจเชพเชตเซ‡ เช›เซ‡ เชธเชฐเซเชตเชฆเซ‡เชต.

เชธเซ‹เชฐเซเชธ: www.habr.com

เชเช• เชŸเชฟเชชเซเชชเชฃเซ€ เช‰เชฎเซ‡เชฐเซ‹