เบงเบดเบงเบฑเบ”เบ—เบฐเบ™เบฒเบเบฒเบ™เบ‚เบญเบ‡ CI เปƒเบ™เบ—เบตเบกเบžเบฑเบ”เบ—เบฐเบ™เบฒเบกเบทเบ–เบท

เปƒเบ™เบกเบทเป‰เบ™เบตเป‰, เบœเบฐเบฅเบดเบ”เบ•เบฐเบžเบฑเบ™เบŠเบญเบšเปเบงเบชเปˆเบงเบ™เปƒเบซเบเปˆเป„เบ”เป‰เบ–เบทเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเปƒเบ™เบ—เบตเบก. เป€เบ‡เบทเปˆเบญเบ™เป„เบ‚เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบ—เบตเบกเบ‡เบฒเบ™เบชเบปเบšเบœเบปเบ™เบชเปเบฒเป€เบฅเบฑเบ”เบชเบฒเบกเบฒเบ”เป€เบ›เบฑเบ™เบ•เบปเบงเปเบ—เบ™เปƒเบ™เบฎเบนเบšเปเบšเบšเบ‚เบญเบ‡เปเบœเบ™เบงเบฒเบ”เบ—เบตเปˆเบ‡เปˆเบฒเบเบ”เบฒเบ.

เบงเบดเบงเบฑเบ”เบ—เบฐเบ™เบฒเบเบฒเบ™เบ‚เบญเบ‡ CI เปƒเบ™เบ—เบตเบกเบžเบฑเบ”เบ—เบฐเบ™เบฒเบกเบทเบ–เบท

เป€เบกเบทเปˆเบญเบ—เปˆเบฒเบ™เบ‚เบฝเบ™เบฅเบฐเบซเบฑเบ”เบ‚เบญเบ‡เบ—เปˆเบฒเบ™, เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เปƒเบซเป‰เปเบ™เปˆเปƒเบˆเบงเปˆเบฒเบกเบฑเบ™:

  1. ะฐะฑะพั‚ะฐะตั‚.
  2. เบกเบฑเบ™เบšเปเปˆเป„เบ”เป‰เบ—เปเบฒเบฅเบฒเบเบซเบเบฑเบ‡, เบฅเบงเบกเบ—เบฑเบ‡เบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเป€เบžเบทเปˆเบญเบ™เบฎเปˆเบงเบกเบ‡เบฒเบ™เบ‚เบญเบ‡เป€เบˆเบปเป‰เบฒเบ‚เบฝเบ™.

เบ–เป‰เบฒเบ—เบฑเบ‡เบชเบญเบ‡เป€เบ‡เบทเปˆเบญเบ™เป„เบ‚เบ–เบทเบเบšเบฑเบ™เบฅเบธ, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เป€เบˆเบปเป‰เบฒเบขเบนเปˆเปƒเบ™เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบชเบนเปˆเบ„เบงเบฒเบกเบชเปเบฒเป€เบฅเบฑเบ”. เป€เบžเบทเปˆเบญเบเบงเบ”เป€เบšเบดเปˆเบ‡เป€เบ‡เบทเปˆเบญเบ™เป„เบ‚เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เป„เบ”เป‰เบขเปˆเบฒเบ‡เบ‡เปˆเบฒเบเบ”เบฒเบเปเบฅเบฐเบšเปเปˆ deviate เบˆเบฒเบเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบ—เบตเปˆเบกเบตเบเปเบฒเป„เบฅ, เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบกเบฒเบเบฑเบšเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡เบขเปˆเบฒเบ‡เบ•เปเปˆเป€เบ™เบทเปˆเบญเบ‡.

CI เปเบกเปˆเบ™เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบ—เบตเปˆเบ—เปˆเบฒเบ™เบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™เบฅเบฐเบซเบฑเบ”เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เป€เบ‚เบปเป‰เบฒเปƒเบ™เบฅเบฐเบซเบฑเบ”เบœเบฐเบฅเบดเบ”เบ•เบฐเบžเบฑเบ™เป‚เบ”เบเบฅเบงเบกเป€เบฅเบทเป‰เบญเบเป†เป€เบ—เบปเปˆเบฒเบ—เบตเปˆเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰. เปเบฅเบฐเบ—เปˆเบฒเบ™เบšเปเปˆเบžเบฝเบ‡เปเบ•เปˆเบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™, เปเบ•เปˆเบเบฑเบ‡เบเบงเบ”เป€เบšเบดเปˆเบ‡เบขเบนเปˆเบชเบฐเป€เบซเบกเบตเบงเปˆเบฒเบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เป€เบฎเบฑเบ”เบงเบฝเบ. เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒเบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบเบงเบ”เป€เบšเบดเปˆเบ‡เบซเบผเบฒเบเปเบฅเบฐเป€เบฅเบทเป‰เบญเบเป†, เบกเบฑเบ™เบ„เบงเบ™เบˆเบฐเบ„เบดเบ”เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”. เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบเบงเบ”เป€เบšเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เบ”เป‰เบงเบเบ•เบปเบ™เป€เบญเบ‡, เปเบ•เปˆเบ—เปˆเบฒเบ™เบšเปเปˆเบ„เบงเบ™, เปเบฅเบฐเบ™เบตเป‰เปเบกเปˆเบ™เป€เบซเบ”เบœเบปเบ™.

  • เบ›เบฐเบŠเบฒเบŠเบปเบ™เบ—เบตเปˆเบฎเบฑเบเปเบžเบ‡. เบŠเบปเปˆเบงเป‚เบกเบ‡เป€เบฎเบฑเบ”เบงเบฝเบเบ‚เบญเบ‡เป‚เบ›เบฅเปเบเบฅเบกเปƒเบ”เบเปเปˆเบ•เบฒเบกเปเบกเปˆเบ™เบฅเบฒเบ„เบฒเปเบžเบ‡เบเบงเปˆเบฒเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบ‚เบญเบ‡เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบซเบ™เบถเปˆเบ‡เบŠเบปเปˆเบงเป‚เบกเบ‡.
  • เบ›เบฐเบŠเบฒเบŠเบปเบ™เป€เบฎเบฑเบ”เบœเบดเบ”เบžเบฒเบ”. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™เบญเบฒเบ”เบˆเบฐเป€เบเบตเบ”เบ‚เบทเป‰เบ™เป€เบกเบทเปˆเบญเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบ–เบทเบเบ”เปเบฒเป€เบ™เบตเบ™เบขเบนเปˆเปƒเบ™เบชเบฒเบ‚เบฒเบ—เบตเปˆเบšเปเปˆเบ–เบทเบเบ•เป‰เบญเบ‡เบซเบผเบทเบ„เปเบฒเบซเบกเบฑเป‰เบ™เบชเบฑเบ™เบเบฒเบ—เบตเปˆเบšเปเปˆเบ–เบทเบเบ•เป‰เบญเบ‡เบ–เบทเบเบฅเบงเบšเบฅเบงเบกเบชเปเบฒเบฅเบฑเบšเบœเบนเป‰เบ—เบปเบ”เบชเบญเบš.
  • เบ„เบปเบ™เบ‚เบตเป‰เบ„เป‰เบฒเบ™. เบšเบฒเบ‡เบ„เบฑเป‰เบ‡, เป€เบกเบทเปˆเบญเบ‚เป‰เบญเบเบชเปเบฒเป€เบฅเบฑเบ”เบงเบฝเบเบ‡เบฒเบ™, เบ„เบงเบฒเบกเบ„เบดเบ”เป€เบเบตเบ”เบ‚เบทเป‰เบ™เบงเปˆเบฒ: "เบกเบตเบซเบเบฑเบ‡เปƒเบซเป‰เบเบงเบ”เป€เบšเบดเปˆเบ‡? เบ‚เป‰เบญเบเบ‚เบฝเบ™เบชเบญเบ‡เปเบ–เบง - เบ—เบธเบเบขเปˆเบฒเบ‡เป€เบฎเบฑเบ”เบงเบฝเบ! เบ‚เป‰เบฒโ€‹เบžเบฐโ€‹เป€เบˆเบปเป‰เบฒโ€‹เบ„เบดเบ”โ€‹เบงเปˆเบฒโ€‹เบšเบฒเบ‡โ€‹เบ„เบปเบ™โ€‹เปƒเบ™โ€‹เบšเบฒเบ‡โ€‹เบ„เบฑเป‰เบ‡โ€‹เบเปโ€‹เบกเบตโ€‹เบ„เบงเบฒเบกโ€‹เบ„เบดเบ”โ€‹เป€เบŠเบฑเปˆเบ™โ€‹เบ™เบฑเป‰เบ™โ€‹. เปเบ•เปˆเบ—เปˆเบฒเบ™เบ„เบงเบ™เบเบงเบ”เป€เบšเบดเปˆเบ‡เบขเบนเปˆเบชเบฐเป€เบซเบกเบต.

เบงเบดเบ—เบตเบเบฒเบ™เบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™เบขเปˆเบฒเบ‡เบ•เปเปˆเป€เบ™เบทเปˆเบญเบ‡เป„เบ”เป‰เบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เปเบฅเบฐเบžเบฑเบ”เบ—เบฐเบ™เบฒเปƒเบ™เบ—เบตเบกเบ‡เบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบกเบทเบ–เบท Avito, เป€เบฎเบฑเบ”เปเบ™เบงเปƒเบ”เบžเบงเบเป€เบ‚เบปเบฒเป„เบ›เบˆเบฒเบ 0 เบซเบฒ 450 เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบ•เปเปˆเบกเบทเป‰, เปเบฅเบฐเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบเบ›เบฐเบเบญเบš 200 เบŠเบปเปˆเบงเป‚เบกเบ‡เบ•เปเปˆเบกเบทเป‰, Nikolai Nesterov (เป€เบ™เบชเบฐเป€เบ•เบตเบฃเบญเบŸ) เป€เบ›เบฑเบ™โ€‹เบœเบนเป‰โ€‹เป€เบ‚เบปเป‰เบฒโ€‹เบฎเปˆเบงเบกโ€‹เปƒเบ™โ€‹เบเบฒเบ™โ€‹เบ›เปˆเบฝเบ™โ€‹เปเบ›เบ‡โ€‹เบงเบดโ€‹เบงเบฑเบ”โ€‹เบเบฒเบ™โ€‹เบ—เบฑเบ‡โ€‹เบซเบกเบปเบ”โ€‹เบ‚เบญเบ‡โ€‹เบ„เปเบฒโ€‹เบฎเป‰เบญเบ‡โ€‹เบชเบฐโ€‹เบซเบกเบฑเบ CI/CD Androidโ€‹.

เป€เบฅเบทเปˆเบญเบ‡เปเบกเปˆเบ™เบญเบตเบ‡เปƒเบชเปˆเบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เบญเบ‡เบ„เปเบฒเบชเบฑเปˆเบ‡ Android, เปเบ•เปˆเบงเบดเบ—เบตเบเบฒเบ™เบชเปˆเบงเบ™เปƒเบซเบเปˆเปƒเบŠเป‰เปƒเบ™ iOS เบ„เบทเบเบฑเบ™.


เป€เบกเบทเปˆเบญเบเปˆเบญเบ™, เบ„เบปเบ™เบซเบ™เบถเปˆเบ‡เป„เบ”เป‰เป€เบฎเบฑเบ”เบงเบฝเบเบขเบนเปˆเปƒเบ™เบ—เบตเบก Avito Android. เป‚เบ”เบเบ„เปเบฒเบ™เบดเบเบฒเบก, เบฅเบฒเบงเบšเปเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เบซเบเบฑเบ‡เบˆเบฒเบเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡เบขเปˆเบฒเบ‡เบ•เปเปˆเป€เบ™เบทเปˆเบญเบ‡: เบšเปเปˆเบกเบตเปƒเบœเบ—เบตเปˆเบˆเบฐเบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™เบเบฑเบš.

เปเบ•เปˆเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™, เบงเบฝเบเบ‡เบฒเบ™เปƒเบซเบกเปˆเบซเบผเบฒเบเบ‚เบทเป‰เบ™, เปเบฅเบฐเบ—เบตเบกเบ‡เบฒเบ™เป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™เบ•เบฒเบกเบ„เบงเบฒเบกเป€เบซเบกเบฒเบฐเบชเบปเบก. เปƒเบ™เบšเบฒเบ‡เบˆเบธเบ”, เบกเบฑเบ™เป€เบ›เบฑเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบˆเบฐเบชเป‰เบฒเบ‡เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™เบฅเบฐเบซเบฑเบ”เบขเปˆเบฒเบ‡เป€เบ›เบฑเบ™เบ—เบฒเบ‡เบเบฒเบ™. เบกเบฑเบ™เป„เบ”เป‰เบ–เบทเบเบ•เบฑเบ”เบชเบดเบ™เปƒเบˆเบ—เบตเปˆเบˆเบฐเปƒเบŠเป‰ Git flow.

เบงเบดเบงเบฑเบ”เบ—เบฐเบ™เบฒเบเบฒเบ™เบ‚เบญเบ‡ CI เปƒเบ™เบ—เบตเบกเบžเบฑเบ”เบ—เบฐเบ™เบฒเบกเบทเบ–เบท

เปเบ™เบงเบ„เบงเบฒเบกเบ„เบดเบ”เบ‚เบญเบ‡ Git flow เป€เบ›เบฑเบ™เบ—เบตเปˆเบฎเบนเป‰เบˆเบฑเบเบเบฑเบ™เบ”เบต: เป‚เบ„เบ‡เบเบฒเบ™เบกเบตเบชเบฒเบ‚เบฒเบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบ—เบปเปˆเบงเป„เบ›, เปเบฅเบฐเบชเปเบฒเบฅเบฑเบšเปเบ•เปˆเบฅเบฐเบฅเบฑเบเบชเบฐเบ™เบฐเปƒเบซเบกเปˆ, เบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเป„เบ”เป‰เบ•เบฑเบ”เบชเบฒเบ‚เบฒเปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบ, เบซเบกเบฑเป‰เบ™เบชเบฑเบ™เบเบฒเบเบฑเบšเบกเบฑเบ™, เบŠเบธเบเบเบนเป‰, เปเบฅเบฐเป€เบกเบทเปˆเบญเบžเบงเบเป€เบ‚เบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบฅเบงเบกเบฅเบฐเบซเบฑเบ”เบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒเป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบชเบฒเบ‚เบฒเบžเบฑเบ”เบ—เบฐเบ™เบฒ, เป€เบ›เบตเบ”. เบ”เบถเบ‡โ€‹เบ„เปเบฒโ€‹เบฎเป‰เบญเบ‡โ€‹เบชเบฐโ€‹เบซเบกเบฑเบโ€‹. เป€เบžเบทเปˆเบญเปเบšเปˆเบ‡เบ›เบฑเบ™เบ„เบงเบฒเบกเบฎเบนเป‰เปเบฅเบฐเบ›เบถเบเบชเบฒเบซเบฒเบฅเบทเบงเบดเบ—เบตเบเบฒเบ™, เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เปเบ™เบฐเบ™เปเบฒเบเบฒเบ™เบ—เบปเบšเบ—เบงเบ™เบฅเบฐเบซเบฑเบ”, เบ™เบฑเป‰เบ™เปเบกเปˆเบ™, เป€เบžเบทเปˆเบญเบ™เบฎเปˆเบงเบกเบ‡เบฒเบ™เบ•เป‰เบญเบ‡เบเบงเบ”เบชเบญเบšเปเบฅเบฐเบขเบทเบ™เบขเบฑเบ™เบฅเบฐเบซเบฑเบ”เบ‚เบญเบ‡เบเบฑเบ™เปเบฅเบฐเบเบฑเบ™.

เบเบงเบ”เบเบฒ

เป€เบšเบดเปˆเบ‡เบฅเบฐเบซเบฑเบ”เบ”เป‰เบงเบเบ•เบฒเบ‚เบญเบ‡เป€เบˆเบปเป‰เบฒเปเบกเปˆเบ™เป€เบขเบฑเบ™, เปเบ•เปˆเบšเปเปˆเบžเบฝเบ‡เบžเป. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบเบฒเบ™เบเบงเบ”เบชเบญเบšเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เปเบกเปˆเบ™เป„เบ”เป‰เบ–เบทเบเบ™เปเบฒเบชเบฐเป€เบซเบ™เบต.

  • เบเปˆเบญเบ™เบญเบทเปˆเบ™ เปเบปเบ”, เบžเบงเบเป€เบฎเบปเบฒเบเบงเบ”เป€เบšเบดเปˆเบ‡ เบเบฒเบ™เบ›เบฐเบเบญเบš ARK.
  • เบซเบผเบฒเบ เบเบฒเบ™เบ—เบปเบ”เบชเบญเบš Junit.
  • เบžเบงเบเป€เบฎเบปเบฒเบžเบดเบˆเบฒเบฅเบฐเบ™เบฒเบเบฒเบ™เบ„เบธเป‰เบกเบ„เบญเบ‡เบฅเบฐเบซเบฑเบ”, เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเบเปเบฒเบฅเบฑเบ‡เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ—เบปเบ”เบชเบญเบš.

เป€เบžเบทเปˆเบญเป€เบ‚เบปเป‰เบฒเปƒเบˆเบงเปˆเบฒเบเบฒเบ™เบเบงเบ”เบชเบญเบšเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบ„เบงเบ™เบˆเบฐเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เปเบ™เบงเปƒเบ”, เปƒเบซเป‰เป€เบšเบดเปˆเบ‡เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเปƒเบ™ Avito.

เบกเบฑเบ™เบชเบฒเบกเบฒเบ”เบ–เบทเบเบชเบฐเปเบ”เบ‡เป‚เบ”เบ schematically เป€เบŠเบฑเปˆเบ™:

  • เบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเบ‚เบฝเบ™เบฅเบฐเบซเบฑเบ”เปƒเบชเปˆเบ„เบญเบกเบžเบดเบงเป€เบ•เบตเป‚เบ™เบ”เบšเบธเบเบ‚เบญเบ‡เบฅเบฒเบง. เบ—เปˆเบฒเบ™โ€‹เบชเบฒโ€‹เบกเบฒเบ”โ€‹เบ”เปเบฒโ€‹เป€เบ™เบตเบ™โ€‹เบเบฒเบ™โ€‹เบเบงเบ”โ€‹เบชเบญเบšโ€‹เบเบฒเบ™โ€‹เป€เบŠเบทเปˆเบญเบกโ€‹เป‚เบเบ‡โ€‹เป„เบ”เป‰โ€‹เบขเบนเปˆโ€‹เบ—เบตเปˆโ€‹เบ™เบตเป‰ - เบšเปเปˆโ€‹เบงเปˆเบฒโ€‹เบˆเบฐโ€‹เบกเบตโ€‹เบ„เปเบฒโ€‹เบซเบกเบฑเป‰เบ™โ€‹เบชเบฑเบ™โ€‹เบเบฒโ€‹, เบซเบผเบทโ€‹เบžเบฝเบ‡โ€‹เปเบ•เปˆโ€‹เบ”เปเบฒโ€‹เป€เบ™เบตเบ™โ€‹เบเบฒเบ™โ€‹เบเบงเบ”โ€‹เบชเบญเบšโ€‹เปƒเบ™โ€‹เบžเบทเป‰เบ™โ€‹เบ–เบฒเบ™โ€‹.
  • เบซเบผเบฑเบ‡เบˆเบฒเบเบ—เบตเปˆเบœเบนเป‰เบžเบฑเบ”เบ—เบฐเบ™เบฒเป„เบ”เป‰เบเบนเป‰เบฅเบฐเบซเบฑเบ”, เบฅเบฒเบงเป€เบ›เบตเบ”เบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เปเบ”เบถเบ‡. เป€เบžเบทเปˆเบญเปƒเบซเป‰เบฅเบฐเบซเบฑเบ”เบ‚เบญเบ‡เบกเบฑเบ™เบ–เบทเบเบฅเบงเบกเป€เบ‚เบปเป‰เบฒเปƒเบ™เบชเบฒเบ‚เบฒเบ—เบตเปˆเบžเบฑเบ”เบ—เบฐเบ™เบฒ, เบกเบฑเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบœเปˆเบฒเบ™เบเบฒเบ™เบเบงเบ”เบชเบญเบšเบฅเบฐเบซเบฑเบ”เปเบฅเบฐเป€เบเบฑเบšเบเปเบฒเบˆเปเบฒเบ™เบงเบ™เบเบฒเบ™เบขเบทเบ™เบขเบฑเบ™เบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™. เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบ›เบตเบ”เปƒเบŠเป‰เบเบฒเบ™เบเบงเบ”เบชเบญเบšเปเบฅเบฐเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เป„เบ”เป‰เบ—เบตเปˆเบ™เบตเป‰: เบˆเบปเบ™เบเปˆเบงเบฒเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบ—เบฑเบ‡เบซเบกเบปเบ”เบˆเบฐเบ›เบฐเบชเบปเบšเบœเบปเบ™เบชเปเบฒเป€เบฅเบฑเบ”, เบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเบ”เบถเบ‡เบšเปเปˆเบชเบฒเบกเบฒเบ”เบ–เบทเบเบฅเบงเบกเป€เบ‚เบปเป‰เบฒเบเบฑเบ™เป„เบ”เป‰.
  • เบซเบผเบฑเบ‡เบˆเบฒเบเบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เปเบ”เบถเบ‡เป„เบ”เป‰เบ–เบทเบเบฅเบงเบกเป€เบ‚เบปเป‰เบฒเบเบฑเบ™เปเบฅเบฐเบฅเบฐเบซเบฑเบ”เบ–เบทเบเบฅเบงเบกเป€เบ‚เบปเป‰เบฒเปƒเบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒ, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบฅเบทเบญเบเป€เบงเบฅเบฒเบ—เบตเปˆเบชเบฐเบ”เบงเบ: เบ•เบปเบงเบขเปˆเบฒเบ‡, เปƒเบ™เบ•เบญเบ™เบเบฒเบ‡เบ„เบทเบ™, เป€เบกเบทเปˆเบญเป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบ—เบฑเบ‡เบซเบกเบปเบ”เปเบกเปˆเบ™เบšเปเปˆเป€เบชเบเบ„เปˆเบฒ, เปเบฅเบฐเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบเบงเบ”เบชเบญเบšเบซเบผเบฒเบเป€เบ—เบปเปˆเบฒเบ—เบตเปˆเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™.

เบšเปเปˆเบกเบตเปƒเบœเบกเบฑเบเบเบฒเบ™เบชเบฐเปเบเบ™เปƒเบ™เปเบฅเบฑเบšเบ—เบฑเบญเบšเบ‚เบญเบ‡เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒ. เป€เบกเบทเปˆเบญเบœเบนเป‰เบžเบฑเบ”เบ—เบฐเบ™เบฒเป„เบ”เป‰เบชเปเบฒเป€เบฅเบฑเบ”เบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”, เบฅเบฒเบงเบ•เป‰เบญเบ‡เบเบฒเบ™เบเบนเป‰เบกเบฑเบ™เบขเปˆเบฒเบ‡เป„เบงเบงเบฒเปเบฅเบฐเป€เบ›เบตเบ”เบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เปเบ”เบถเบ‡. เบ–เป‰เบฒเป€เบงเบฅเบฒเบ™เบตเป‰เบšเบฒเบ‡เบเบฒเบ™เบเบงเบ”เบชเบญเบšเบเบฒเบงเบ–เบทเบเป€เบ›เบตเบ”เบ•เบปเบง, เบ™เบตเป‰เบšเปเปˆเบžเบฝเบ‡เปเบ•เปˆเบšเปเปˆเบซเบ™เป‰เบฒเบžเปเปƒเบˆ, เปเบ•เปˆเบเบฑเบ‡เป€เบฎเบฑเบ”เปƒเบซเป‰เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบŠเป‰เบฒเบฅเบปเบ‡: เปƒเบ™เบ‚เบฐเบ™เบฐเบ—เบตเปˆเบ„เบญเบกเบžเบดเบงเป€เบ•เบตเป‰เบเปเบฒเบฅเบฑเบ‡เบเบงเบ”เป€เบšเบดเปˆเบ‡เบšเบฒเบ‡เบชเบดเปˆเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡, เบกเบฑเบ™เป€เบ›เบฑเบ™เป„เบ›เบšเปเปˆเป„เบ”เป‰เบ—เบตเปˆเบˆเบฐเป€เบฎเบฑเบ”เบงเบฝเบเบ•เบฒเบกเบ›เบปเบเบเบฐเบ•เบด.

เบžเบงเบเป€เบฎเบปเบฒเบกเบฑเบเบเบฒเบ™เปเบฅเปˆเบ™เป€เบŠเบฑเบเปƒเบ™เป€เบงเบฅเบฒเบเบฒเบ‡เบ„เบทเบ™, เป€เบžเบฒเบฐเบงเปˆเบฒเบกเบตเป€เบงเบฅเบฒ เปเบฅเบฐเป€เบŠเบตเบšเป€เบงเบตเบซเบผเบฒเบ, เป€เบˆเบปเป‰เบฒเบชเบฒเบกเบฒเบ”เปเบฅเปˆเบ™เป„เบ›เบกเบฒเป„เบ”เป‰. เปเบ•เปˆเบซเบ™เป‰เบฒเป€เบชเบเบ”เบฒเบ, เป€เบกเบทเปˆเบญเบฅเบฐเบซเบฑเบ”เบ„เบธเบ™เบ™เบฐเบชเบปเบกเบšเบฑเบ”เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒ, เบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเบกเบตเปเบฎเบ‡เบˆเบนเบ‡เปƒเบˆเบซเบ™เป‰เบญเบเบ—เบตเปˆเบˆเบฐเปเบเป‰เป„เบ‚เบ‚เปเป‰เบœเบดเบ”เบžเบฒเบ”เบ—เบตเปˆ CI เบžเบปเบš. เบ‚เป‰เบญเบเบ„เบดเบ”เป€เบ›เบฑเบ™เป„เบฅเบเบฐเป† เป€เบกเบทเปˆเบญเบ‚เป‰เบญเบเป€เบšเบดเปˆเบ‡เบ‚เปเป‰เบœเบดเบ”เบžเบฒเบ”เบ—เบฑเบ‡เปเบปเบ”เบ—เบตเปˆเบžเบปเบšเปƒเบ™เบฅเบฒเบเบ‡เบฒเบ™เบ•เบญเบ™เป€เบŠเบปเป‰เบฒเบ—เบตเปˆเบ‚เป‰เบญเบเบˆเบฐเปเบเป‰เป„เบ‚เปƒเบซเป‰เบกเบฑเบ™เปƒเบ™เบกเบทเป‰เบ•เปเปˆเบกเบฒ, เป€เบžเบฒเบฐเบงเปˆเบฒเบ•เบญเบ™เบ™เบตเป‰เบกเบตเบงเบฝเบเปƒเปเปˆเป†เปƒเบ™ Jira เบ—เบตเปˆเบ‚เป‰เบญเบเบ•เป‰เบญเบ‡เบเบฒเบ™เป€เบฅเบตเปˆเบกเป€เบฎเบฑเบ”.

เบ–เป‰เบฒเบเบงเบ”เบชเบญเบšเบเบฒเบ™เบ‚เบฑเบ”เบ‚เบงเบฒเบ‡เบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเบเบฒเบ™เบ”เบถเบ‡, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบกเบตเปเบฎเบ‡เบˆเบนเบ‡เปƒเบˆเบžเบฝเบ‡เบžเป, เป€เบžเบฒเบฐเบงเปˆเบฒเบˆเบปเบ™เบเปˆเบงเบฒเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบ›เปˆเบฝเบ™เป€เบ›เบฑเบ™เบชเบตเบ‚เบฝเบง, เบฅเบฐเบซเบฑเบ”เบˆเบฐเบšเปเปˆเป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒ, เบŠเบถเปˆเบ‡เบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒเบงเบฝเบเบ‡เบฒเบ™เบˆเบฐเบšเปเปˆเบชเปเบฒเป€เบฅเบฑเบ”.

เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบžเบงเบเป€เบฎเบปเบฒเป€เบฅเบทเบญเบเบเบธเบ”เบ—เบฐเบชเบฒเบ”เบ”เบฑเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰: เบžเบงเบเป€เบฎเบปเบฒเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบเบงเบ”เบชเบญเบšเบ—เบตเปˆเบเปเบฒเบ™เบปเบ”เป„เบงเป‰เบชเบนเบ‡เบชเบธเบ”เปƒเบ™เป€เบงเบฅเบฒเบเบฒเบ‡เบ„เบทเบ™, เปเบฅเบฐเป€เบ›เบตเบ”เบ•เบปเบงเบ„เปเบฒเบชเปเบฒเบ„เบฑเบ™เบ—เบตเปˆเบชเบธเบ”เบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒเปเบฅเบฐ, เบชเปเบฒเบ„เบฑเบ™เบ—เบตเปˆเบชเบธเบ”, เป„เบงเบ—เบตเปˆเบชเบธเบ”เปƒเบ™เบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เปเบ”เบถเบ‡. เปเบ•เปˆเบžเบงเบเป€เบฎเบปเบฒเบšเปเปˆเบขเบธเบ”เบขเบนเปˆเบ—เบตเปˆเบ™เบฑเป‰เบ™ - เปƒเบ™เบ‚เบฐเบซเบ™เบฒเบ™, เบžเบงเบเป€เบฎเบปเบฒเป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ„เบงเบฒเบกเป„เบงเบ‚เบญเบ‡เบเบฒเบ™เบเบงเบ”เบชเบญเบšเป€เบžเบทเปˆเบญเป‚เบญเบ™เบžเบงเบเบกเบฑเบ™เบˆเบฒเบเป‚เบซเบกเบ”เบเบฒเบ‡เบ„เบทเบ™เป€เบžเบทเปˆเบญเบ”เบถเบ‡เบเบฒเบ™เบเบงเบ”เบชเบญเบšเบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เป.

เปƒเบ™เป€เบงเบฅเบฒเบ™เบฑเป‰เบ™, เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบ—เบฑเบ‡เบซเบกเบปเบ”เปเบกเปˆเบ™เบชเปเบฒเป€เบฅเบฑเบ”เบขเปˆเบฒเบ‡เป„เบงเบงเบฒ, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบžเบงเบเป€เบฎเบปเบฒเบžเบฝเบ‡เปเบ•เปˆเบฅเบงเบกเป€เบญเบปเบฒเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡ ARK, เบเบฒเบ™เบ—เบปเบ”เบชเบญเบš Junit เปเบฅเบฐเบเบฒเบ™เบ„เปเบฒเบ™เบงเบ™เบเบฒเบ™เบ„เบธเป‰เบกเบ„เบญเบ‡เบฅเบฐเบซเบฑเบ”เป€เบ›เบฑเบ™เบ•เบปเบงเบชเบฐเบเบฑเบ”เบชเปเบฒเบฅเบฑเบšเบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เปเบ”เบถเบ‡. เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เป€เบ›เบตเบ”เบกเบฑเบ™, เบ„เบดเบ”เบเปˆเบฝเบงเบเบฑเบšเบกเบฑเบ™, เปเบฅเบฐเบ›เบฐเบ–เบดเป‰เบกเบเบฒเบ™เบ„เบธเป‰เบกเบ„เบญเบ‡เบฅเบฐเบซเบฑเบ”เป€เบžเบฒเบฐเบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเบ„เบดเบ”เบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเบšเปเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เบกเบฑเบ™.

เบกเบฑเบ™เปƒเบŠเป‰เป€เบงเบฅเบฒเบžเบงเบเป€เบฎเบปเบฒเบชเบญเบ‡เบกเบทเป‰เป€เบžเบทเปˆเบญเบเปเบฒเบ™เบปเบ” CI เบžเบทเป‰เบ™เบ–เบฒเบ™เบขเปˆเบฒเบ‡เบชเบปเบกเบšเบนเบ™ (เบ•เปเปˆเป„เบ›เบ™เบตเป‰เปเบกเปˆเบ™เบเบฒเบ™เบ„เบฒเบ”เบ„เบฐเป€เบ™เบ—เบตเปˆเปƒเบŠเป‰เป€เบงเบฅเบฒเป‚เบ”เบเบ›เบฐเบกเบฒเบ™, เบˆเปเบฒเป€เบ›เบฑเบ™เบชเปเบฒเบฅเบฑเบšเบ‚เบฐเบซเบ™เบฒเบ”).

เบซเบผเบฑเบ‡โ€‹เบˆเบฒเบโ€‹เบ™เบฑเป‰เบ™โ€‹, เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹เป„เบ”เป‰โ€‹เป€เบฅเบตเปˆเบกโ€‹เบ•เบปเป‰เบ™โ€‹เบ—เบตเปˆโ€‹เบˆเบฐโ€‹เบ„เบดเบ”โ€‹เบ•เบทเปˆเบกโ€‹เบญเบตเบ - เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹เปเบกเปˆเบ™โ€‹เปเบ•เปˆโ€‹เบเบฒเบ™โ€‹เบเบงเบ”โ€‹เบชเบญเบšโ€‹เป„เบ”เป‰โ€‹เบ–เบทเบโ€‹เบ•เป‰เบญเบ‡โ€‹? เบžเบงเบเป€เบฎเบปเบฒเบเปเบฒเบฅเบฑเบ‡เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบชเป‰เบฒเบ‡เบ•เบฒเบกเบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เปเบเบฒเบ™เบ”เบถเบ‡เบขเปˆเบฒเบ‡เบ–เบทเบเบ•เป‰เบญเบ‡เบšเป?

เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เปƒเบ™เบ„เปเบฒเบซเบกเบฑเป‰เบ™เบชเบฑเบ™เบเบฒเบชเบธเบ”เบ—เป‰เบฒเบเบ‚เบญเบ‡เบชเบฒเบ‚เบฒเบˆเบฒเบเบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเบเบฒเบ™เบ”เบถเบ‡เป„เบ”เป‰เบ–เบทเบเป€เบ›เบตเบ”. เปเบ•เปˆเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบ‚เบญเบ‡เบ„เปเบฒเบซเบกเบฑเป‰เบ™เบชเบฑเบ™เบเบฒเบ™เบตเป‰เบžเบฝเบ‡เปเบ•เปˆเบชเบฒเบกเบฒเบ”เบชเบฐเปเบ”เบ‡เปƒเบซเป‰เป€เบซเบฑเบ™เบงเปˆเบฒเบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเบ‚เบฝเบ™เป€เบฎเบฑเบ”เบงเบฝเบ. เปเบ•เปˆเบžเบงเบเป€เบ‚เบปเบฒเบšเปเปˆเป„เบ”เป‰เบžเบดเบชเบนเบ”เบงเปˆเบฒเบฅเบฒเบงเบšเปเปˆเป„เบ”เป‰เบ—เปเบฒเบฅเบฒเบเบชเบดเปˆเบ‡เปƒเบ”. เปƒเบ™เบ„เบงเบฒเบกเป€เบ›เบฑเบ™เบˆเบดเบ‡, เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบเบงเบ”เป€เบšเบดเปˆเบ‡เบชเบฐเบ–เบฒเบ™เบฐเบ‚เบญเบ‡เบชเบฒเบ‚เบฒเบ—เบตเปˆเบžเบฑเบ”เบ—เบฐเบ™เบฒเบซเบผเบฑเบ‡เบˆเบฒเบเบ„เบธเบ™เบ™เบฐเบชเบปเบกเบšเบฑเบ”เบ–เบทเบเบฅเบงเบกเป€เบ‚เบปเป‰เบฒเปƒเบ™เบกเบฑเบ™.

เบงเบดเบงเบฑเบ”เบ—เบฐเบ™เบฒเบเบฒเบ™เบ‚เบญเบ‡ CI เปƒเบ™เบ—เบตเบกเบžเบฑเบ”เบ—เบฐเบ™เบฒเบกเบทเบ–เบท

เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เบชเบดเปˆเบ‡เบ™เบตเป‰, เบžเบงเบเป€เบฎเบปเบฒเบ‚เบฝเบ™ script bash เบ‡เปˆเบฒเบเบ”เบฒเบ premerge.sh:

#!/usr/bin/env bash

set -e

git fetch origin develop

git merge origin/develop

เบ—เบตเปˆเบ™เบตเป‰เบ—เบธเบเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบซเบฅเป‰เบฒเบชเบธเบ”เบˆเบฒเบเบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเปเบกเปˆเบ™เบžเบฝเบ‡เปเบ•เปˆเบ”เบถเบ‡เบ‚เบถเป‰เบ™เปเบฅเบฐเบฅเบงเบกเป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบชเบฒเบ‚เบฒเปƒเบ™เบ›เบฐเบˆเบธเบšเบฑเบ™. เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เป€เบžเบตเปˆเบกเบชเบฐเบ„เบดเบš premerge.sh เป€เบ›เบฑเบ™เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ—เปเบฒเบญเบดเบ”เปƒเบ™เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบ—เบฑเบ‡เบซเบกเบปเบ”เปเบฅเบฐเป€เบฅเบตเปˆเบกเบเบงเบ”เป€เบšเบดเปˆเบ‡เบชเบดเปˆเบ‡เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™, เบ™เบฑเป‰เบ™เปเบกเปˆเบ™. เบเบฒเบ™เบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™.

เบกเบฑเบ™เปƒเบŠเป‰เป€เบงเบฅเบฒเบชเบฒเบกเบกเบทเป‰เป€เบžเบทเปˆเบญเปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒ, เบŠเบญเบเบซเบฒเบ—เบฒเบ‡เบญเบญเบ, เปเบฅเบฐเบ‚เบฝเบ™ script เบ™เบตเป‰.

เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบ—เบตเปˆเบžเบฑเบ”เบ—เบฐเบ™เบฒ, เบงเบฝเบเบ‡เบฒเบ™เบซเบผเบฒเบเบเบงเปˆเบฒเปเบฅเบฐเบซเบผเบฒเบเบ›เบฒเบเบปเบ”, เบ—เบตเบกเบ‡เบฒเบ™เบ‚เบฐเบซเบเบฒเบเบ•เบปเบง, เปเบฅเบฐ premerge.sh เบšเบฒเบ‡เบ„เบฑเป‰เบ‡เบเปเปˆเป€เบฅเบตเปˆเบกเบ›เปˆเบญเบเปƒเบซเป‰เบžเบงเบเป€เบฎเบปเบฒเบฅเบปเบ‡. เบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเบกเบตเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ—เบตเปˆเบ‚เบฑเบ”เปเบเป‰เบ‡เบเบฑเบ™เบ—เบตเปˆเบ—เปเบฒเบฅเบฒเบเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡.

เบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เบญเบ‡เบงเบดเบ—เบตเบเบฒเบ™เบ™เบตเป‰เป€เบเบตเบ”เบ‚เบถเป‰เบ™:

เบงเบดเบงเบฑเบ”เบ—เบฐเบ™เบฒเบเบฒเบ™เบ‚เบญเบ‡ CI เปƒเบ™เบ—เบตเบกเบžเบฑเบ”เบ—เบฐเบ™เบฒเบกเบทเบ–เบท

เบœเบนเป‰เบžเบฑเบ”เบ—เบฐเบ™เบฒเบชเบญเบ‡เบ„เบปเบ™เบžเป‰เบญเบกเบเบฑเบ™เป€เบฅเบตเปˆเบกเป€เบฎเบฑเบ”เบงเบฝเบเบเปˆเบฝเบงเบเบฑเบšเบ„เบธเบ™เบชเบปเบกเบšเบฑเบ” A เปเบฅเบฐ B. เบœเบนเป‰เบžเบฑเบ”เบ—เบฐเบ™เบฒเบ„เบธเบ™เบชเบปเบกเบšเบฑเบ” A เบ„เบปเป‰เบ™เบžเบปเบšเบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”เบ—เบตเปˆเบšเปเปˆเป„เบ”เป‰เปƒเบŠเป‰เปƒเบ™เป‚เบ„เบ‡เบเบฒเบ™. answer() เปเบฅเบฐ, เบ„เบทเบเบฑเบšเป€เบ”เบฑเบเบŠเบฒเบเบ—เบตเปˆเบ”เบต, เป€เบญเบปเบฒเบกเบฑเบ™เบญเบญเบ. เปƒเบ™เบ‚เบฐเบ™เบฐเบ”เบฝเบงเบเบฑเบ™, เบœเบนเป‰เบžเบฑเบ”เบ—เบฐเบ™เบฒเบ„เบธเบ™เบชเบปเบกเบšเบฑเบ” B เป„เบ”เป‰เป€เบžเบตเปˆเบกเบเบฒเบ™เป‚เบ—เปƒเบซเบกเปˆเปƒเบซเป‰เบเบฑเบšเบซเบ™เป‰เบฒเบ—เบตเปˆเบ™เบตเป‰เบขเบนเปˆเปƒเบ™เบชเบฒเบ‚เบฒเบ‚เบญเบ‡เบฅเบฒเบง.

เบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเบชเปเบฒเป€เบฅเบฑเบ”เบงเบฝเบเบ‡เบฒเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒเปเบฅเบฐเป€เบ›เบตเบ”เบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เปเบ”เบถเบ‡เปƒเบ™เป€เบงเบฅเบฒเบ”เบฝเบงเบเบฑเบ™. เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เป„เบ”เป‰เบ–เบทเบเป€เบ›เบตเบ”เบ•เบปเบง, premerge.sh เบเบงเบ”เป€เบšเบดเปˆเบ‡เบ—เบฑเบ‡เบชเบญเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เปเบ”เบถเบ‡เบเปˆเบฝเบงเบเบฑเบšเบฅเบฑเบ”เบžเบฑเบ”เบ—เบฐเบ™เบฒเบซเบฅเป‰เบฒเบชเบธเบ” - เบเบฒเบ™เบเบงเบ”เบชเบญเบšเบ—เบฑเบ‡เบซเบกเบปเบ”เปเบกเปˆเบ™เบชเบตเบ‚เบฝเบง. เบซเบผเบฑเบ‡โ€‹เบˆเบฒเบโ€‹เบ™เบฑเป‰เบ™โ€‹, เบเบฒเบ™โ€‹เบฎเป‰เบญเบ‡โ€‹เบ‚เปโ€‹เบ”เบถเบ‡โ€‹เบ‚เบญเบ‡โ€‹เบ„เบธเบ™โ€‹เบ™เบฐโ€‹เบชเบปเบกโ€‹เบšเบฑเบ” A เปเบกเปˆเบ™โ€‹เป„เบ”เป‰โ€‹เบ–เบทเบโ€‹เบฅเบงเบกโ€‹เป€เบ‚เบปเป‰เบฒโ€‹, เบเบฒเบ™โ€‹เบฎเป‰เบญเบ‡โ€‹เบ‚เปโ€‹เบ”เบถเบ‡โ€‹เบ‚เบญเบ‡โ€‹เบ„เบธเบ™โ€‹เบ™เบฐโ€‹เบชเบปเบกโ€‹เบšเบฑเบ” B เป„เบ”เป‰โ€‹เบ–เบทเบโ€‹เบฅเบงเบกโ€‹เป€เบ‚เบปเป‰เบฒ ... เบšเบนเบกโ€‹! เบžเบฑเบ”เบ—เบฐเบ™เบฒเบเบฒเบ™เบžเบฑเบเบœเปˆเบญเบ™เป€เบžเบฒเบฐเบงเปˆเบฒเบฅเบฐเบซเบฑเบ”เบžเบฑเบ”เบ—เบฐเบ™เบฒเบ›เบฐเบเบญเบšเบ”เป‰เบงเบเบเบฒเบ™เป‚เบ—เบซเบฒเบซเบ™เป‰เบฒเบ—เบตเปˆเบ—เบตเปˆเบšเปเปˆเบกเบตเบขเบนเปˆ.

เบงเบดเบงเบฑเบ”เบ—เบฐเบ™เบฒเบเบฒเบ™เบ‚เบญเบ‡ CI เปƒเบ™เบ—เบตเบกเบžเบฑเบ”เบ—เบฐเบ™เบฒเบกเบทเบ–เบท

เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบกเบฑเบ™เบˆเบฐเบšเปเปˆเบžเบฑเบ”เบ—เบฐเบ™เบฒ, เบกเบฑเบ™เปเบกเปˆเบ™ เป„เบžเบžเบดเบšเบฑเบ”เบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™. เบ—เบตเบกเบ‡เบฒเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เบšเปเปˆเบชเบฒเบกเบฒเบ”เป€เบเบฑเบšเบเปเบฒเบ‚เปเป‰เบกเบนเบ™เปเบฅเบฐเบชเบปเปˆเบ‡เป€เบžเบทเปˆเบญเบ—เบปเบ”เบชเบญเบš.

เบกเบฑเบ™เป€เบเบตเบ”เบ‚เบถเป‰เบ™เบซเบผเบฒเบเบ—เบตเปˆเบ‚เป‰เบญเบเบกเบฑเบเบˆเบฐเป€เบฎเบฑเบ”เบงเบฝเบเบเปˆเบฝเบงเบเบฑเบšเป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™: เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐ, เป€เบ„เบทเบญเบ‚เปˆเบฒเบ, เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™. เบ™เบฑเป‰เบ™เปเบกเปˆเบ™, เบกเบฑเบ™เปเบกเปˆเบ™เบ‚เป‰เบญเบเบ—เบตเปˆเบ‚เบฝเบ™เบซเบ™เป‰เบฒเบ—เบตเปˆเปเบฅเบฐเบŠเบฑเป‰เบ™เบฎเบฝเบ™เบ—เบตเปˆเบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเบญเบทเปˆเบ™เป†เปƒเบŠเป‰. เบ”เป‰เบงเบเป€เบซเบ”เบ™เบตเป‰, เบ‚เป‰เบญเบเบžเบปเบšเบ•เบปเบงเป€เบญเบ‡เปƒเบ™เบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™เบ—เบตเปˆเบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™เป€เบฅเบทเป‰เบญเบเป†. เบ‚เป‰เบฒโ€‹เบžเบฐโ€‹เป€เบˆเบปเป‰เบฒโ€‹เปเบกเปˆเบ™โ€‹เปเบ•เปˆโ€‹เป„เบ”เป‰โ€‹เบกเบตโ€‹เบฎเบนเบšโ€‹เบ™เบตเป‰โ€‹เบซเป‰เบญเบโ€‹เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบเบฒเบ™โ€‹เปƒเบ™โ€‹เบ‚เบฐโ€‹เบ™เบฐโ€‹เบ—เบตเปˆ.

เบงเบดเบงเบฑเบ”เบ—เบฐเบ™เบฒเบเบฒเบ™เบ‚เบญเบ‡ CI เปƒเบ™เบ—เบตเบกเบžเบฑเบ”เบ—เบฐเบ™เบฒเบกเบทเบ–เบท

เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒเบ™เบตเป‰เบšเปเปˆเป€เบซเบกเบฒเบฐเบชเบปเบกเบเบฑเบšเบžเบงเบเป€เบฎเบปเบฒ, เบžเบงเบเป€เบฎเบปเบฒเป€เบฅเบตเปˆเบกเบ„เบปเป‰เบ™เบซเบฒเบ—เบฒเบ‡เป€เบฅเบทเบญเบเบเปˆเบฝเบงเบเบฑเบšเบงเบดเบ—เบตเบเบฒเบ™เบ›เป‰เบญเบ‡เบเบฑเบ™เบ™เบตเป‰.

เบงเบดเบ—เบตเบเบฒเบ™เบšเปเปˆเบ—เปเบฒเบฅเบฒเบเบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒ

เบ•เบปเบงเป€เบฅเบทเบญเบเบ—เปเบฒเบญเบดเบ”: เบเปเปˆเบชเป‰เบฒเบ‡เบ„เบทเบ™เปƒเบซเบกเปˆเบ—เบธเบเบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เปเบเบฒเบ™เบ”เบถเบ‡เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒ. เบ–เป‰เบฒเปƒเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ, เบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเบ”เบถเบ‡เบเบฑเบšเบ„เบธเบ™เบชเบปเบกเบšเบฑเบ” A เปเบกเปˆเบ™เบ„เบฑเป‰เบ‡เบ—เปเบฒเบญเบดเบ”เบ—เบตเปˆเบˆเบฐเบ–เบทเบเบฅเบงเบกเป€เบ‚เบปเป‰เบฒเปƒเบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒ, เบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเบ”เบถเบ‡เบ‚เบญเบ‡เบ„เบธเบ™เบ™เบฐเบชเบปเบกเบšเบฑเบ” B เบˆเบฐเบ–เบทเบเบชเป‰เบฒเบ‡เปƒเบซเบกเปˆ, เปเบฅเบฐ, เบ•เบฒเบกเบ™เบฑเป‰เบ™, เบเบฒเบ™เบเบงเบ”เบชเบญเบšเบˆเบฐเบฅเบปเป‰เบกเป€เบซเบฅเบงเป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เบเบฒเบ™เบฅเบงเบšเบฅเบงเบก.

เป€เบžเบทเปˆเบญเป€เบ‚เบปเป‰เบฒเปƒเบˆเบงเปˆเบฒเบ™เบตเป‰เบˆเบฐเปƒเบŠเป‰เป€เบงเบฅเบฒเบ”เบปเบ™เบ›เบฒเบ™เปƒเบ”, เบžเบดเบˆเบฒเบฅเบฐเบ™เบฒเบ•เบปเบงเบขเปˆเบฒเบ‡เบ—เบตเปˆเบกเบตเบชเบญเบ‡ PRs. เบžเบงเบเป€เบฎเบปเบฒเป€เบ›เบตเบ”เบชเบญเบ‡ PR: เบชเบญเบ‡เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡, เบชเบญเบ‡เปเบฅเปˆเบ™เบ‚เบญเบ‡เบเบฒเบ™เบเบงเบ”เบชเบญเบš. เบซเบผเบฑเบ‡เบˆเบฒเบ PR เบ—เปเบฒเบญเบดเบ”เบ–เบทเบเบฅเบงเบกเป€เบ‚เบปเป‰เบฒเปƒเบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒ, เบญเบฑเบ™เบ—เบตเบชเบญเบ‡เบ•เป‰เบญเบ‡เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เปƒเบซเบกเปˆ. เปƒเบ™เบˆเปเบฒเบ™เบงเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”, เบชเบญเบ‡ PR เบ•เป‰เบญเบ‡เบเบฒเบ™เบชเบฒเบกเปเบฅเปˆเบ™เบ‚เบญเบ‡เบเบฒเบ™เบเบงเบ”เบชเบญเบš: 2 + 1 = 3.

เปƒเบ™เบซเบผเบฑเบเบเบฒเบ™, เบกเบฑเบ™เบ”เบต. เปเบ•เปˆเบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เป€เบšเบดเปˆเบ‡เบชเบฐเบ–เบดเบ•เบด, เปเบฅเบฐเบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™เบ›เบปเบเบเบฐเบ•เบดเปƒเบ™เบ—เบตเบกเบ‡เบฒเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเปเบกเปˆเบ™ 10 เป€เบ›เบตเบ” PRs, เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบˆเปเบฒเบ™เบงเบ™เบเบฒเบ™เบเบงเบ”เบชเบญเบšเปเบกเปˆเบ™เบœเบปเบ™เบฅเบงเบกเบ‚เบญเบ‡เบ„เบงเบฒเบกเบ„เบทเบšเบซเบ™เป‰เบฒ: 10 + 9 + ... + 1 = 55. เบ™เบฑเป‰เบ™เปเบกเปˆเบ™, เบเบญเบกเบฎเบฑเบš 10. PRs, เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบชเป‰เบฒเบ‡เปƒเบซเบกเปˆ 55 เป€เบ—เบทเปˆเบญ. เปเบฅเบฐเบ™เบตเป‰เปเบกเปˆเบ™เบขเบนเปˆเปƒเบ™เบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™เบ—เบตเปˆเป€เบซเบกเบฒเบฐเบชเบปเบก, เป€เบกเบทเปˆเบญเบเบฒเบ™เบเบงเบ”เบชเบญเบšเบ—เบฑเบ‡เบซเบกเบปเบ”เบœเปˆเบฒเบ™เบ„เบฑเป‰เบ‡เบ—เปเบฒเบญเบดเบ”, เป€เบกเบทเปˆเบญเบšเปเปˆเบกเบตเปƒเบœเป€เบ›เบตเบ”เบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เปเบ”เบถเบ‡เป€เบžเบตเปˆเบกเป€เบ•เบตเบกเปƒเบ™เบ‚เบฐเบ™เบฐเบ—เบตเปˆเบญเบฒเบเปเบเบฑเบชเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบเปเบฒเบฅเบฑเบ‡เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™.

เบˆเบดเบ™เบ•เบฐเบ™เบฒเบเบฒเบ™เบ•เบปเบงเป€เบญเบ‡เบงเปˆเบฒเป€เบ›เบฑเบ™เบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เป€เบ›เบฑเบ™เบ„เบปเบ™เบ—เปเบฒเบญเบดเบ”เบ—เบตเปˆเบเบปเบ”เบ›เบธเปˆเบก "เบฅเบงเบก", เป€เบžเบฒเบฐเบงเปˆเบฒเบ–เป‰เบฒเป€เบžเบทเปˆเบญเบ™เบšเป‰เบฒเบ™เป€เบฎเบฑเบ”เปเบšเบšเบ™เบตเป‰, เบ—เปˆเบฒเบ™เบˆเบฐเบ•เป‰เบญเบ‡เบฅเปเบ–เป‰เบฒเบˆเบปเบ™เบเปˆเบงเบฒเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบ—เบฑเบ‡เบซเบกเบปเบ”เบœเปˆเบฒเบ™เบญเบตเบเป€เบ—เบทเปˆเบญเบซเบ™เบถเปˆเบ‡ ... เบšเปเปˆ, เบกเบฑเบ™เบˆเบฐเบšเปเปˆเป€เบฎเบฑเบ”เบงเบฝเบ. , เบกเบฑเบ™เบˆเบฐเบŠเป‰เบฒเบฅเบปเบ‡เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบขเปˆเบฒเบ‡เบˆเบดเบ‡เบˆเบฑเบ‡.

เบงเบดเบ—เบตเบ—เบตเบชเบญเบ‡เบ—เบตเปˆเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰: เป€เบเบฑเบšเบเปเบฒเบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเบ”เบถเบ‡เบซเบผเบฑเบ‡เบˆเบฒเบเบเบฒเบ™เบเบงเบ”เบชเบญเบšเบฅเบฐเบซเบฑเบ”. เบ™เบฑเป‰เบ™เปเบกเปˆเบ™, เบ—เปˆเบฒเบ™เป€เบ›เบตเบ”เบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เปเบ”เบถเบ‡, เป€เบเบฑเบšเบเปเบฒเบˆเปเบฒเบ™เบงเบ™เบเบฒเบ™เบญเบฐเบ™เบธเบกเบฑเบ”เบˆเบฒเบเป€เบžเบทเปˆเบญเบ™เบฎเปˆเบงเบกเบ‡เบฒเบ™, เปเบเป‰เป„เบ‚เบชเบดเปˆเบ‡เบ—เบตเปˆเบˆเปเบฒเป€เบ›เบฑเบ™, เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เป€เบ›เบตเบ”เบ•เบปเบงเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡. เบ–เป‰เบฒเบžเบงเบเป€เบ‚เบปเบฒเบ›เบฐเบชเบปเบšเบœเบปเบ™เบชเปเบฒเป€เบฅเบฑเบ”, เบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเบ”เบถเบ‡เบˆเบฐเบ–เบทเบเบฅเบงเบกเป€เบ‚เบปเป‰เบฒเปƒเบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒ. เปƒเบ™โ€‹เบเปโ€‹เบฅเบฐโ€‹เบ™เบตโ€‹เบ™เบตเป‰โ€‹, เบšเปเปˆโ€‹เบกเบตโ€‹เบเบฒเบ™ restarts เป€เบžเบตเปˆเบกโ€‹เป€เบ•เบตเบกโ€‹, เปเบ•เปˆโ€‹เบ„เปเบฒโ€‹เบ„เบถเบ”โ€‹เบ„เปเบฒโ€‹เป€เบซเบฑเบ™โ€‹เปเบกเปˆเบ™โ€‹เบŠเป‰เบฒโ€‹เบฅเบปเบ‡โ€‹เบขเปˆเบฒเบ‡โ€‹เบซเบผเบงเบ‡โ€‹เบซเบผเบฒเบโ€‹. เปƒเบ™เบ–เบฒเบ™เบฐเป€เบ›เบฑเบ™เบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒ, เป€เบกเบทเปˆเบญเบ‚เป‰เบญเบเป€เบ›เบตเบ”เบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเบเบฒเบ™เบ”เบถเบ‡, เบ‚เป‰เบญเบเบ•เป‰เบญเบ‡เบเบฒเบ™เป€เบšเบดเปˆเบ‡เบงเปˆเบฒเบกเบฑเบ™เบˆเบฐเป€เบฎเบฑเบ”เบงเบฝเบเบซเบผเบทเบšเปเปˆ. เบ•เบปเบงเบขเปˆเบฒเบ‡, เบ–เป‰เบฒเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบฅเบปเป‰เบกเป€เบซเบฅเบง, เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เปเบเป‰เป„เบ‚เบขเปˆเบฒเบ‡เป„เบงเบงเบฒ. เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ‚เบญเบ‡เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบŠเบฑเบเบŠเป‰เบฒ, เบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™เบŠเป‰เบฒเบฅเบปเบ‡, เปเบฅเบฐเบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบ—เบฑเบ‡เบซเบกเบปเบ”. เบญเบฑเบ™เบ™เบตเป‰เบšเปเปˆเป€เบซเบกเบฒเบฐเบชเบปเบกเบเบฑเบšเบžเบงเบเป€เบฎเบปเบฒเบ„เบทเบเบฑเบ™.

เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบกเบตเบžเบฝเบ‡เปเบ•เปˆเบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ—เบตเบชเบฒเบกเป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™ - เบฅเบปเบ”โ€‹เบ–เบตเบš. เบฅเบฐเบซเบฑเบ”เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบ—เบฑเบ‡เบซเบกเบปเบ”, เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบ–เบทเบเป€เบเบฑเบšเป„เบงเป‰เปƒเบ™ repository เปƒเบ™เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ Bitbucket. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบžเบฑเบ”เบ—เบฐเบ™เบฒ plugin เบชเปเบฒเบฅเบฑเบš Bitbucket.

เบงเบดเบงเบฑเบ”เบ—เบฐเบ™เบฒเบเบฒเบ™เบ‚เบญเบ‡ CI เปƒเบ™เบ—เบตเบกเบžเบฑเบ”เบ—เบฐเบ™เบฒเบกเบทเบ–เบท

plugin เบ™เบตเป‰ overrides เบ”เบถเบ‡เบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเบเบฒเบ™เบฅเบงเบกเบเบปเบ™เป„เบ. เบเบฒเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบกเปˆเบ™เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™: PR เป€เบ›เบตเบ”, เบชเบฐเบžเบฒเปเบซเปˆเบ‡เบ—เบฑเบ‡เบซเบกเบปเบ”เบ–เบทเบเป€เบ›เบตเบ”เบ•เบปเบง, เบเบฒเบ™เบเบงเบ”เบชเบญเบšเบฅเบฐเบซเบฑเบ”เปเบกเปˆเบ™เบชเปเบฒเป€เบฅเบฑเบ”. เปเบ•เปˆเบซเบผเบฑเบ‡เบˆเบฒเบเบเบฒเบ™เบเบงเบ”เบชเบญเบšเบฅเบฐเบซเบฑเบ”เบชเปเบฒเป€เบฅเบฑเบ”เปเบฅเบฐเบœเบนเป‰เบžเบฑเบ”เบ—เบฐเบ™เบฒเบ•เบฑเบ”เบชเบดเบ™เปƒเบˆเบ„เบฅเบดเบเปƒเบชเปˆ "เบฅเบงเบก", plugin เบเบงเบ”เป€เบšเบดเปˆเบ‡เบงเปˆเบฒเบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบฅเบฑเบ”เปƒเบ”เบ—เบตเปˆเบเบฒเบ™เบเบงเบ”เบชเบญเบšเป„เบ”เป‰เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™. เบ–เป‰เบฒเบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเป„เบ”เป‰เบ–เบทเบเบ›เบฑเบšเบ›เบธเบ‡เบซเบผเบฑเบ‡เบˆเบฒเบเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡, plugin เบˆเบฐเบšเปเปˆเบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เปเบ”เบถเบ‡เบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเบ–เบทเบเบฅเบงเบกเป€เบ‚เบปเป‰เบฒเปƒเบ™เบชเบฒเบ‚เบฒเบ•เบปเป‰เบ™เบ•เป. เบกเบฑเบ™เบžเบฝเบ‡เปเบ•เปˆเบˆเบฐ restart เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบ‚เบญเบ‡เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒเบ‚เป‰เบญเบ™เบ‚เป‰เบฒเบ‡.

เบงเบดเบงเบฑเบ”เบ—เบฐเบ™เบฒเบเบฒเบ™เบ‚เบญเบ‡ CI เปƒเบ™เบ—เบตเบกเบžเบฑเบ”เบ—เบฐเบ™เบฒเบกเบทเบ–เบท

เปƒเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบเบฑเบšเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ—เบตเปˆเบ‚เบฑเบ”เปเบเป‰เบ‡, เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเบˆเบฐเบฅเบปเป‰เบกเป€เบซเบฅเบงเป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เบเบฒเบ™เบฅเบงเบšเบฅเบงเบก. เบ•เบฒเบกเบ™เบฑเป‰เบ™เปเบฅเป‰เบง, เบœเบนเป‰เบžเบฑเบ”เบ—เบฐเบ™เบฒเบ„เบธเบ™เบชเบปเบกเบšเบฑเบ” B เบˆเบฐเบ•เป‰เบญเบ‡เปเบเป‰เป„เบ‚เบฅเบฐเบซเบฑเบ”, restart เบเบฒเบ™เบเบงเบ”เบชเบญเบš, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™ plugin เบˆเบฐเบ™เปเบฒเปƒเบŠเป‰เบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เปเบ”เบถเบ‡เบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”.

เบเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐเบ›เบฐเบ•เบดเบšเบฑเบ” plugin เบ™เบตเป‰, เบžเบงเบเป€เบฎเบปเบฒเบชเบฐเป€เบฅเปˆเบ 2,7 เบเบฒเบ™เบ—เบปเบšเบ—เบงเบ™เบ„เบทเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ•เปเปˆเบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เปเบ”เบถเบ‡. เบ”เป‰เบงเบ plugin เบกเบตเบเบฒเบ™เป€เบ›เบตเบ”เบ•เบปเบง 3,6. เบ™เบตเป‰เป€เบซเบกเบฒเบฐเบชเบปเบกเบเบฑเบšเบžเบงเบเป€เบฎเบปเบฒ.

เบกเบฑเบ™เป€เบ›เบฑเบ™เบกเบนเบ™เบ„เปˆเบฒเบ—เบตเปˆเบชเบฑเบ‡เป€เบเบ”เบงเปˆเบฒ plugin เบ™เบตเป‰เบกเบตเบˆเบธเบ”เบญเปˆเบญเบ™: เบกเบฑเบ™เบžเบฝเบ‡เปเบ•เปˆ restarts เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบ„เบฑเป‰เบ‡เบ”เบฝเบง. เบ™เบฑเป‰เบ™เปเบกเปˆเบ™, เบเบฑเบ‡เบกเบตเบ›เปˆเบญเบ‡เบขเป‰เบฝเบกเบ‚เบฐเบซเบ™เบฒเบ”เบ™เป‰เบญเบเบ—เบตเปˆเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ—เบตเปˆเบ‚เบฑเบ”เปเบเป‰เบ‡เบชเบฒเบกเบฒเบ”เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒ. เปเบ•เปˆเบ„เบงเบฒเบกเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ‚เบญเบ‡เป€เบฅเบทเปˆเบญเบ‡เบ™เบตเป‰เปเบกเปˆเบ™เบ•เปเปˆเบฒ, เปเบฅเบฐเบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เป€เบฎเบฑเบ”เบเบฒเบ™เบŠเบทเป‰เบ‚เบฒเบเบ™เบตเป‰เบฅเบฐเบซเบงเปˆเบฒเบ‡เบˆเปเบฒเบ™เบงเบ™เบเบฒเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบฅเบฐเบ„เบงเบฒเบกเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ‚เบญเบ‡เบ„เบงเบฒเบกเบฅเบปเป‰เบกเป€เบซเบฅเบง. เปƒเบ™โ€‹เบชเบญเบ‡โ€‹เบ›เบตโ€‹เบ™เบตเป‰โ€‹เบกเบฑเบ™โ€‹เป„เบ”เป‰โ€‹เบเบดเบ‡โ€‹เบžเบฝเบ‡โ€‹เปเบ•เปˆโ€‹เบ„เบฑเป‰เบ‡โ€‹เบ”เบฝเบงโ€‹, เบชเบฐโ€‹เบ™เบฑเป‰เบ™โ€‹เบกเบฑเบ™โ€‹เบญเบฒเบ”โ€‹เบˆเบฐโ€‹เบšเปเปˆโ€‹เปเบกเปˆเบ™โ€‹เบขเบนเปˆโ€‹เปƒเบ™ vainโ€‹.

เบกเบฑเบ™เปƒเบŠเป‰เป€เบงเบฅเบฒเบชเบญเบ‡เบญเบฒเบ—เบดเบ”เป€เบžเบทเปˆเบญเบ‚เบฝเบ™เบชเบฐเบšเบฑเบšเบ—เปเบฒเบญเบดเบ”เบ‚เบญเบ‡ plugin Bitbucket.

เบเบฒเบ™เบเบงเบ”เบชเบญเบšเปƒเบซเบกเปˆ

เปƒเบ™เบ‚เบฐเบ™เบฐเบ”เบฝเบงเบเบฑเบ™, เบ—เบตเบกเบ‡เบฒเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบเบฑเบ‡เบชเบทเบšเบ•เปเปˆเบ‚เบฐเบซเบเบฒเบเบ•เบปเบง. เป€เบžเบตเปˆเบกเบเบฒเบ™เบเบงเบ”เบชเบญเบšเปƒเปเปˆเปเบฅเป‰เบง.

เบžเบงเบเป€เบฎเบปเบฒเบ„เบดเบ”เบงเปˆเบฒ: เป€เบ›เบฑเบ™เบซเบเบฑเบ‡เบˆเบถเปˆเบ‡เป€เบฎเบฑเบ”เบœเบดเบ”เบžเบฒเบ”เบ–เป‰เบฒเบžเบงเบเป€เบ‚เบปเบฒเบชเบฒเบกเบฒเบ”เบ›เป‰เบญเบ‡เบเบฑเบ™เป„เบ”เป‰? เปเบฅเบฐเบ™เบฑเป‰เบ™เปเบกเปˆเบ™เป€เบซเบ”เบœเบปเบ™เบ—เบตเปˆเบžเบงเบเป€เบ‚เบปเบฒเบ›เบฐเบ•เบดเบšเบฑเบ” เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเบฅเบฐเบซเบฑเบ”เบชเบฐเบ–เบดเบ”. เบžเบงเบเป€เบฎเบปเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ”เป‰เบงเบ lint, เป€เบŠเบดเปˆเบ‡เบฅเบงเบกเบขเบนเปˆเปƒเบ™ Android SDK. เปเบ•เปˆเปƒเบ™เป€เบงเบฅเบฒเบ™เบฑเป‰เบ™เบฅเบฒเบงเบšเปเปˆเบฎเบนเป‰เบงเบดเบ—เบตเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบšเบฅเบฐเบซเบฑเบ” Kotlin เบ—เบฑเบ‡เบซเบกเบปเบ”, เปเบฅเบฐเบžเบงเบเป€เบฎเบปเบฒเบกเบต 75% เบ‚เบญเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ—เบตเปˆเบ‚เบฝเบ™เปƒเบ™ Kotlin เปเบฅเป‰เบง. เป€เบžเบฒเบฐเบชเบฐเบ™เบฑเป‰เบ™, เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เปƒเบ™เป„เบ”เป‰เบ–เบทเบเป€เบžเบตเปˆเบกเปƒเบชเปˆ lint Android Studio เบเบงเบ”เบชเบญเบš.

เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เบชเบดเปˆเบ‡เบ™เบตเป‰, เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เป€เบฎเบฑเบ”เบเบฒเบ™เบšเบดเบ”เป€เบšเบทเบญเบ™เบซเบผเบฒเบเบขเปˆเบฒเบ‡: เป€เบญเบปเบฒ Android Studio, เบซเบธเป‰เบกเบซเปเปˆเบกเบฑเบ™เบขเบนเปˆเปƒเบ™ Docker เปเบฅเบฐเปเบฅเปˆเบ™เบกเบฑเบ™เบขเบนเปˆเปƒเบ™ CI เบ”เป‰เบงเบเบˆเป virtual, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบกเบฑเบ™เบ„เบดเบ”เบงเปˆเบฒเบกเบฑเบ™เบเปเบฒเบฅเบฑเบ‡เปเบฅเปˆเบ™เบขเบนเปˆเปƒเบ™เบ„เบญเบกเบžเบดเบงเป€เบ•เบตเป‰เบ—เบตเปˆเปเบ—เป‰เบˆเบดเบ‡. เปเบ•เปˆเบกเบฑเบ™เป€เบฎเบฑเบ”เบงเบฝเบ.

เบกเบฑเบ™เบเบฑเบ‡เป€เบ›เบฑเบ™เบŠเปˆเบงเบ‡เป€เบงเบฅเบฒเบ™เบตเป‰เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเป€เบฅเบตเปˆเบกเบ‚เบฝเบ™เบซเบผเบฒเบ เบเบฒเบ™โ€‹เบ—เบปเบ”โ€‹เบชเบญเบšโ€‹เป€เบ„เบทเปˆเบญเบ‡โ€‹เบกเบทโ€‹ เปเบฅเบฐเบ›เบฐเบ•เบดเบšเบฑเบ” เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบžเบฒเบšเบซเบ™เป‰เบฒเบˆเป. เบ™เบตเป‰เปเบกเปˆเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบžเบฒเบšเบซเบ™เป‰เบฒเบˆเปเบญเป‰เบฒเบ‡เบญเบตเบ‡เบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบทเป‰เบ™เบชเปเบฒเบฅเบฑเบšเบกเบธเบกเป€เบšเบดเปˆเบ‡เบ‚เบฐเบซเบ™เบฒเบ”เบ™เป‰เบญเบเปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบ, เปเบฅเบฐเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบ›เบฐเบเบญเบšเบ”เป‰เบงเบเบเบฒเบ™เบ–เปˆเบฒเบเบฎเบนเบšเบซเบ™เป‰เบฒเบˆเปเบˆเบฒเบเบกเบธเบกเป€เบšเบดเปˆเบ‡เปเบฅเบฐเบเบฒเบ™เบ›เบฝเบšเบ—เบฝเบšเบเบฑเบšเบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เป‚เบ”เบเบเบปเบ‡เป‚เบ”เบ pixels เบฅเบงเบ‡. เบ–เป‰เบฒเบกเบตเบ„เบงเบฒเบกเปเบ•เบเบ•เปˆเบฒเบ‡, เบกเบฑเบ™ เปเบฒเบ เบ„เบงเบฒเบกเบงเปˆเบฒเบเบฒเบ™เบˆเบฑเบ”เบงเบฒเบ‡เป„เบ”เป‰เบœเบดเบ”เบžเบฒเบ”เบขเบนเปˆเบšเปˆเบญเบ™เปƒเบ”เบšเปˆเบญเบ™ เปœเบถเปˆเบ‡ เบซเบผเบทเบšเบฒเบ‡เบชเบดเปˆเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡เบ—เบตเปˆเบœเบดเบ”เบžเบฒเบ”เปƒเบ™เบ„เปเป€เบ•เบปเป‰เบฒเป„เบ‚เปˆเบ—เบตเปˆ.

เปเบ•เปˆเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเป€เบ„เบทเปˆเบญเบ‡เบกเบทเปเบฅเบฐเบเบฒเบ™เบ—เบปเบ”เบชเบญเบš screenshot เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เปƒเบ™เบญเบธเบ›เบฐเบเบญเบ™: เปƒเบ™ emulators เบซเบผเบทเบญเบธเบ›เบฐเบเบญเบ™เบ—เบตเปˆเปเบ—เป‰เบˆเบดเบ‡. เบžเบดเบˆเบฒเบฅเบฐเบ™เบฒเบงเปˆเบฒเบกเบตเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบซเบผเบฒเบเปเบฅเบฐเบžเบงเบเบกเบฑเบ™เบ–เบทเบเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เป€เบฅเบทเป‰เบญเบเป†, เบเบฐเบชเบดเบเปเบฒเบ—เบฑเบ‡เบซเบกเบปเบ”เปเบกเปˆเบ™เบˆเปเบฒเป€เบ›เบฑเบ™. เบเบฒเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบเบฐเบชเบดเบเปเบฒเบ‚เบญเบ‡เบ—เปˆเบฒเบ™เป€เบญเบ‡เปเบกเปˆเบ™เปƒเบŠเป‰เปเบฎเบ‡เบ‡เบฒเบ™เบซเบผเบฒเบเป€เบเบตเบ™เป„เบ›, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบžเบปเบšเป€เบซเบฑเบ™เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ—เบตเปˆเบเบฝเบกเบžเป‰เบญเบก - Firebase Test Lab.

เบซเป‰เบญเบ‡เบ—เบปเบ”เบฅเบญเบ‡ Firebase

เบกเบฑเบ™เป„เบ”เป‰เบ–เบทเบเป€เบฅเบทเบญเบเป€เบžเบฒเบฐเบงเปˆเบฒ Firebase เป€เบ›เบฑเบ™เบœเบฐเบฅเบดเบ”เบ•เบฐเบžเบฑเบ™เบ‚เบญเบ‡ Google, เบŠเบถเปˆเบ‡เบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒเบกเบฑเบ™เบ„เบงเบ™เบˆเบฐเบกเบตเบ„เบงเบฒเบกเบซเบ™เป‰เบฒเป€เบŠเบทเปˆเบญเบ–เบทเปเบฅเบฐเบšเปเปˆเบซเบ™เป‰เบฒเบˆเบฐเบ•เบฒเบ. เบฅเบฒเบ„เบฒเปเบกเปˆเบ™เบชเบปเบกเป€เบซเบ”เบชเบปเบกเบœเบปเบ™: $5 เบ•เปเปˆเบŠเบปเปˆเบงเป‚เบกเบ‡เบ‚เบญเบ‡เบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบ‡เบฒเบ™เบ‚เบญเบ‡เบญเบธเบ›เบฐเบเบญเบ™เบ—เบตเปˆเปเบ—เป‰เบˆเบดเบ‡, 1 $ เบ•เปเปˆเบŠเบปเปˆเบงเป‚เบกเบ‡เบ‚เบญเบ‡เบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบ‡เบฒเบ™เบ‚เบญเบ‡ emulator.

เบกเบฑเบ™เปƒเบŠเป‰เป€เบงเบฅเบฒเบ›เบฐเบกเบฒเบ™เบชเบฒเบกเบญเบฒเบ—เบดเบ”เป€เบžเบทเปˆเบญเบ›เบฐเบ•เบดเบšเบฑเบ” Firebase Test Lab เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™ CI เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ.

เปเบ•เปˆเบ—เบตเบกเบ‡เบฒเบ™เบเบฑเบ‡เบชเบทเบšเบ•เปเปˆเบ‚เบฐเบซเบเบฒเบเบ•เบปเบง, เปเบฅเบฐ Firebase, เปเบ•เปˆเบซเบ™เป‰เบฒเป€เบชเบเบ”เบฒเบ, เป„เบ”เป‰เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ—เบตเปˆเบˆเบฐเป€เบฎเบฑเบ”เปƒเบซเป‰เบžเบงเบเป€เบฎเบปเบฒเบ•เบปเบ. เปƒเบ™เป€เบงเบฅเบฒเบ™เบฑเป‰เบ™, เบฅเบฒเบงเบšเปเปˆเบกเบต SLA. เบšเบฒเบ‡เบ„เบฑเป‰เบ‡ Firebase เป€เบฎเบฑเบ”เปƒเบซเป‰เบžเบงเบเป€เบฎเบปเบฒเบฅเปเบ–เป‰เบฒเบˆเบปเบ™เบเปˆเบงเบฒเบˆเปเบฒเบ™เบงเบ™เบญเบธเบ›เบฐเบเบญเบ™เบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เปเบกเปˆเบ™เบšเปเปˆเป€เบชเบเบ„เปˆเบฒเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ—เบปเบ”เบชเบญเบš, เปเบฅเบฐเบšเปเปˆเป„เบ”เป‰เป€เบฅเบตเปˆเบกเบ›เบฐเบ•เบดเบšเบฑเบ”เบžเบงเบเบกเบฑเบ™เบ—เบฑเบ™เบ—เบต, เบ•เบฒเบกเบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™. เบเบฒเบ™เบฅเปเบ–เป‰เบฒเบขเบนเปˆเปƒเบ™เปเบ–เบงเปƒเบŠเป‰เป€เบงเบฅเบฒเป€เบ–เบดเบ‡เป€เบ„เบดเปˆเบ‡เบŠเบปเปˆเบงเป‚เบกเบ‡, เบŠเบถเปˆเบ‡เป€เบ›เบฑเบ™เป€เบงเบฅเบฒเบซเบผเบฒเบ. เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเป€เบ„เบทเปˆเบญเบ‡เบกเบทเป„เบ”เป‰เบ–เบทเบเบ”เปเบฒเป€เบ™เบตเบ™เบขเบนเปˆเปƒเบ™เบ—เบธเบเป† PR, เบเบฒเบ™เบŠเบฑเบเบŠเป‰เบฒเบเปเปˆเป€เบฎเบฑเบ”เปƒเบซเป‰เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบŠเป‰เบฒเบฅเบปเบ‡, เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบšเบฑเบ™เบŠเบตเบฅเบฒเบเบเบฒเบ™เบ›เบฐเบˆเปเบฒเป€เบ”เบทเบญเบ™เบกเบฒเบžเป‰เบญเบกเบเบฑเบšเบœเบปเบ™เบฅเบงเบกเบฎเบญเบš. เป‚เบ”เบเบ—เบปเปˆเบงเป„เบ›, เบกเบฑเบ™เป„เบ”เป‰เบ–เบทเบเบ•เบฑเบ”เบชเบดเบ™เปƒเบˆเบ—เบตเปˆเบˆเบฐเบ›เบฐเบ–เบดเป‰เบก Firebase เปเบฅเบฐเป€เบฎเบฑเบ”เบงเบฝเบเบขเบนเปˆเปƒเบ™เป€เบฎเบทเบญเบ™, เบ™เบฑเบšเบ•เบฑเป‰เบ‡เปเบ•เปˆเบ—เบตเบกเบ‡เบฒเบ™เป„เบ”เป‰เป€เบ•เบตเบšเปƒเบซเบเปˆเบžเบฝเบ‡เบžเป.

Docker + Python + bash

เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เป€เบญเบปเบฒ Docker, stuffed emulators เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบกเบฑเบ™, เบ‚เบฝเบ™เป‚เบ„เบ‡เบเบฒเบ™เบ‡เปˆเบฒเบเบ”เบฒเบเปƒเบ™ Python, เป€เบŠเบดเปˆเบ‡เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเป€เบซเบกเบฒเบฐเบชเบปเบกเบˆเบฐเบ™เปเบฒเป€เบญเบปเบฒเบˆเปเบฒเบ™เบงเบ™ emulators เบ—เบตเปˆเบเปเบฒเบ™เบปเบ”เป„เบงเป‰เปƒเบ™เบชเบฐเบšเบฑเบšเบ—เบตเปˆเบเปเบฒเบ™เบปเบ”เป„เบงเป‰เปเบฅเบฐเบขเบธเบ”เป€เบŠเบปเบฒเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบˆเปเบฒเป€เบ›เบฑเบ™. เปเบฅเบฐ, เปเบ™เปˆเบ™เบญเบ™, เบชเบญเบ‡เบ•เบปเบงเบญเบฑเบเบชเบญเบ™ bash - เบšเปˆเบญเบ™เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบขเบนเปˆเป‚เบ”เบเบšเปเปˆเบกเบตเบžเบงเบเบกเบฑเบ™?

เบกเบฑเบ™เปƒเบŠเป‰เป€เบงเบฅเบฒเบซเป‰เบฒเบญเบฒเบ—เบดเบ”เป€เบžเบทเปˆเบญเบชเป‰เบฒเบ‡เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเป€เบญเบ‡.

เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบชเปเบฒเบฅเบฑเบšเบ—เบธเบเป†เบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เปเบ”เบถเบ‡, เบกเบตเบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเบเบฒเบ™เบชเบฐเบเบฑเบ”เบเบฒเบ™เบฅเบงเบกเบเบฑเบ™เบขเปˆเบฒเบ‡เบเบงเป‰เบฒเบ‡เบ‚เบงเบฒเบ‡:

  • ARK เบ›เบฐเบเบญเบš;
  • เบเบฒเบ™เบ—เบปเบ”เบชเบญเบš Junit;
  • เบฅเบตเป‰เบ™;
  • Android Studio เบเบงเบ”เบชเบญเบš;
  • เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเป€เบ„เบทเปˆเบญเบ‡เบกเบท;
  • เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบžเบฒเบšเบซเบ™เป‰เบฒเบˆเป.

เบ™เบตเป‰เบ›เป‰เบญเบ‡เบเบฑเบ™เบเบฒเบ™เปเบ•เบเปเบเบเบ—เบตเปˆเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบซเบผเบฒเบ. เบ”เป‰เบฒเบ™เบงเบดเบŠเบฒเบเบฒเบ™เบ—เบธเบเบขเปˆเบฒเบ‡เป€เบฎเบฑเบ”เบงเบฝเบ, เปเบ•เปˆเบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเบˆเบปเปˆเบกเบงเปˆเบฒเบเบฒเบ™เบฅเปเบ–เป‰เบฒเบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเปเบกเปˆเบ™เบ”เบปเบ™เป€เบเบตเบ™เป„เบ›.

เบ”เบปเบ™เบ›เบฒเบ™เปƒเบ”เปเบกเปˆเบ™เบเบฒเบงเป€เบเบตเบ™เป„เบ›? เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบญเบฑเบšเป‚เบซเบฅเบ”เบ‚เปเป‰เบกเบนเบ™เบˆเบฒเบ Bitbucket เปเบฅเบฐ TeamCity เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบฅเบฐเบšเบปเบšเบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเปเบฅเบฐเบฎเบฑเบšเบฎเบนเป‰เบงเปˆเบฒ เป€เบงเบฅเบฒเบฅเปเบ–เป‰เบฒเบชเบฐเป€เบฅเปˆเบ 45 เบ™เบฒเบ—เบต. เบ™เบฑเป‰เบ™เปเบกเปˆเบ™, เบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒ, เป€เบกเบทเปˆเบญเป€เบ›เบตเบ”เบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเบเบฒเบ™เบ”เบถเบ‡, เบฅเปเบ–เป‰เบฒเป‚เบ”เบเบชเบฐเป€เบฅเปˆเบ 45 เบ™เบฒเบ—เบตเบชเปเบฒเบฅเบฑเบšเบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡. เปƒเบ™เบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™เบ‚เบญเบ‡เบ‚เป‰เบญเบ, เบ™เบตเป‰เปเบกเปˆเบ™เบซเบผเบฒเบ, เปเบฅเบฐเบ—เปˆเบฒเบ™เบšเปเปˆเบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เบงเบฝเบเปเบšเบšเบ™เบฑเป‰เบ™เป„เบ”เป‰.

เปเบ™เปˆเบ™เบญเบ™, เบžเบงเบเป€เบฎเบปเบฒเบ•เบฑเบ”เบชเบดเบ™เปƒเบˆเป€เบฅเบฑเปˆเบ‡เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบ—เบฑเบ‡เบซเบกเบปเบ”เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ.

เปƒเบซเป‰เป€เบฅเบฑเปˆเบ‡

เป€เบซเบฑเบ™เบงเปˆเบฒเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบกเบฑเบเบˆเบฐเบขเบทเบ™เบขเบนเปˆเปƒเบ™เปเบ–เบง, เบชเบดเปˆเบ‡เบ—เปเบฒเบญเบดเบ”เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเป€เบฎเบฑเบ”เปเบกเปˆเบ™ เบŠเบทเป‰เบฎเบฒเบ”เปเบงเป€เบžเบตเปˆเบกเป€เบ•เบตเบก - เบเบฒเบ™โ€‹เบžเบฑเบ”โ€‹เบ—เบฐโ€‹เบ™เบฒโ€‹เบขเปˆเบฒเบ‡โ€‹เบเบงเป‰เบฒเบ‡โ€‹เบ‚เบงเบฒเบ‡โ€‹เปเบกเปˆเบ™โ€‹เบ‡เปˆเบฒเบโ€‹เบ—เบตเปˆโ€‹เบชเบธเบ”โ€‹. เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบขเบธเบ”เป€เบŠเบปเบฒเบเบฒเบ™เบ•เปเปˆเบ„เบดเบง, เปเบ•เปˆเป€เบงเบฅเบฒเบฅเปเบ–เป‰เบฒเบซเบผเบธเบ”เบฅเบปเบ‡เป€เบฅเบฑเบเบ™เป‰เบญเบ, เป€เบžเบฒเบฐเบงเปˆเบฒเบšเบฒเบ‡เบเบฒเบ™เบเบงเบ”เบชเบญเบšเบ•เบปเบงเป€เบญเบ‡เปƒเบŠเป‰เป€เบงเบฅเบฒเบ”เบปเบ™เบซเบผเบฒเบ.

เบเบฒเบ™เบ–เบญเบ™เบเบฒเบ™เบเบงเบ”เบชเบญเบšเบ—เบตเปˆเปƒเบŠเป‰เป€เบงเบฅเบฒเบ”เบปเบ™เป€เบเบตเบ™เป„เบ›

เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡เบขเปˆเบฒเบ‡เบ•เปเปˆเป€เบ™เบทเปˆเบญเบ‡เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เบˆเบฑเบšเบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เปเบฅเบฐเบšเบฑเบ™เบซเบฒเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰.

  • เบšเปเปˆเป„เบ›. CI เบชเบฒเบกเบฒเบ”เบˆเบฑเบšเบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบšเบฒเบ‡เบชเบดเปˆเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡เบšเปเปˆเป„เบ”เป‰เบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ—เบตเปˆเบ‚เบฑเบ”เปเบเป‰เบ‡เบเบฑเบ™. เบ”เบฑเปˆเบ‡เบ—เบตเปˆเบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เป€เบงเบปเป‰เบฒเปเบฅเป‰เบง, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบšเปเปˆเบกเบตเปƒเบœเบชเบฒเบกเบฒเบ”เบฅเบงเบšเบฅเบงเบกเบชเบดเปˆเบ‡เปƒเบ”, เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบขเบธเบ”เป€เบŠเบปเบฒ, เปเบฅเบฐเบ—เบธเบเบ„เบปเบ™เบฎเบนเป‰เบชเบถเบเบเบฑเบ‡เบงเบปเบ™.
  • เปเบกเบ‡เป„เบกเป‰เปƒเบ™เบžเบถเบ”เบ•เบดเบเปเบฒ. เบ•เบปเบงเบขเปˆเบฒเบ‡, เป€เบกเบทเปˆเบญเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบทเป‰เบ™, เปเบ•เปˆเบ‚เบฑเบ”เบ‚เบทเป‰เบ™เป€เบกเบทเปˆเบญเบ—เปˆเบฒเบ™เบเบปเบ”เบ›เบธเปˆเบก, เบซเบผเบทเบ›เบธเปˆเบกเบšเปเปˆเป„เบ”เป‰เบเบปเบ”เป€เบฅเบตเบ. เบ™เบตเป‰เปเบกเปˆเบ™เบšเปเปˆเบ”เบตเป€เบžเบฒเบฐเบงเปˆเบฒเปเบกเบ‡เป„เบกเป‰เบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเบชเบฒเบกเบฒเบ”เบšเบฑเบ™เบฅเบธเบœเบนเป‰เปƒเบŠเป‰เป„เบ”เป‰.
  • เบšเบฑเบเปƒเบ™เป‚เบ„เบ‡เบฎเปˆเบฒเบ‡. เบ•เบปเบงเบขเปˆเบฒเบ‡, เบ›เบธเปˆเบกเบซเบ™เบถเปˆเบ‡เบ–เบทเบเบ„เบฅเบดเบ, เปเบ•เปˆเป„เบ”เป‰เบเป‰เบฒเบ 10 pixels เป„เบ›เบ—เบฒเบ‡เบŠเป‰เบฒเบ.
  • เปœเบตเป‰เบชเบดเบ™เบ—เบฒเบ‡เบงเบดเบŠเบฒเบเบฒเบ™เป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™.

เบซเบผเบฑเบ‡เบˆเบฒเบเป€เบšเบดเปˆเบ‡เบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเบ™เบตเป‰, เบžเบงเบเป€เบฎเบปเบฒเบฎเบนเป‰เบงเปˆเบฒเบžเบฝเบ‡เปเบ•เปˆเบชเบญเบ‡เบˆเบธเบ”เบ—เปเบฒเบญเบดเบ”เปเบกเปˆเบ™เบชเปเบฒเบ„เบฑเบ™. เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบˆเบฑเบšเบšเบฑเบ™เบซเบฒเบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเบเปˆเบญเบ™. เบ‚เปเป‰เบšเบปเบเบœเปˆเบญเบ‡เปƒเบ™เบฎเบนเบšเบฅเบฑเบเป„เบ”เป‰เบ–เบทเบเบ„เบปเป‰เบ™เบžเบปเบšเบขเบนเปˆเปƒเบ™เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบเบฒเบ™เบ—เบปเบšเบ—เบงเบ™เบเบฒเบ™เบญเบญเบเปเบšเบšเปเบฅเบฐเบชเบฒเบกเบฒเบ”เปเบเป‰เป„เบ‚เป„เบ”เป‰เบ‡เปˆเบฒเบเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™. เบเบฒเบ™เบˆเบฑเบ”เบเบฒเบ™เบเบฑเบšเบซเบ™เบตเป‰เบชเบดเบ™เบ”เป‰เบฒเบ™เบงเบดเบŠเบฒเบเบฒเบ™เบฎเบฝเบเบฎเป‰เบญเบ‡เปƒเบซเป‰เบกเบตเบ‚เบฐเบšเบงเบ™เบเบฒเบ™เปเบฅเบฐเบเบฒเบ™เบงเบฒเบ‡เปเบœเบ™เปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบ, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบžเบงเบเป€เบฎเบปเบฒเบˆเบถเปˆเบ‡เบ•เบฑเบ”เบชเบดเบ™เปƒเบˆเบ—เบตเปˆเบˆเบฐเบšเปเปˆเบ—เบปเบ”เบชเบญเบšเบกเบฑเบ™เบ•เบฒเบกเบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เปเบ”เบถเบ‡.

เบญเบตเบ‡เบ•เบฒเบกเบเบฒเบ™เบˆเบฑเบ”เบ›เบฐเป€เบžเบ”เบ™เบตเป‰, เบžเบงเบเป€เบฎเบปเบฒเบชเบฑเปˆเบ™เบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเบ‚เบญเบ‡เบเบฒเบ™เบเบงเบ”เบชเบญเบšเบ—เบฑเบ‡เบซเบกเบปเบ”. เบ‚เป‰เบฒเบก Lint เปเบฅเบฐเป„เบ”เป‰เป€เบฅเบทเปˆเบญเบ™เบเบฒเบ™เป€เบ›เบตเบ”เบ•เบปเบงเป„เบ›เบ„เบทเบ™: เบžเบฝเบ‡เปเบ•เปˆเบงเปˆเบฒเบกเบฑเบ™เบˆเบฐเบœเบฐเบฅเบดเบ”เบšเบปเบ”เบฅเบฒเบเบ‡เบฒเบ™เบเปˆเบฝเบงเบเบฑเบšเบšเบฑเบ™เบซเบฒเบˆเปเบฒเบ™เบงเบ™เบซเบผเบฒเบเบ—เบตเปˆเบกเบตเบขเบนเปˆเปƒเบ™เป‚เบ„เบ‡เบเบฒเบ™. เบžเบงเบเป€เบฎเบปเบฒเบ•เบปเบเบฅเบปเบ‡เบ—เบตเปˆเบˆเบฐเป€เบฎเบฑเบ”เบงเบฝเบเปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบเบเบฑเบšเบซเบ™เบตเป‰เบชเบดเบ™เบ”เป‰เบฒเบ™เบงเบดเบŠเบฒเบเบฒเบ™, เปเบฅเบฐ เบเบฒเบ™เบเบงเบ”เบชเบญเบš Android Studio เบ–เบทเบเบ›เบฐเบ–เบดเป‰เบกเบขเปˆเบฒเบ‡เบชเบปเบกเบšเบนเบ™. Android Studio เปƒเบ™ Docker เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบเบงเบ”เบชเบญเบšเบชเบฝเบ‡เบ—เบตเปˆเบซเบ™เป‰เบฒเบชเบปเบ™เปƒเบˆ, เปเบ•เปˆเป€เบฎเบฑเบ”เปƒเบซเป‰เป€เบเบตเบ”เบšเบฑเบ™เบซเบฒเบซเบผเบฒเบเปƒเบ™เบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™. เบเบฒเบ™เบญเบฑเบšเป€เบ”เบ”เบ—เบธเบเบฅเบธเป‰เบ™เบ‚เบญเบ‡ Android Studio เบซเบกเบฒเบเป€เบ–เบดเบ‡เบเบฒเบ™เบ•เปเปˆเบชเบนเป‰เบเบฑเบšเบ‚เปเป‰เบšเบปเบเบžเปˆเบญเบ‡เบ—เบตเปˆเบšเปเปˆเบชเบฒเบกเบฒเบ”เป€เบ‚เบปเป‰เบฒเปƒเบˆเป„เบ”เป‰. เบกเบฑเบ™เบเบฑเบ‡เบกเบตเบ„เบงเบฒเบกเบซเบเบธเป‰เบ‡เบเบฒเบเบ—เบตเปˆเบˆเบฐเบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบซเบ™เป‰เบฒเบˆเป, เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒเบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เบšเปเปˆเบซเบกเบฑเป‰เบ™เบ„เบปเบ‡เบซเบผเบฒเบเปเบฅเบฐเบกเบตเบœเบปเบ™เบšเบงเบเบ—เบตเปˆเบšเปเปˆเบ–เบทเบเบ•เป‰เบญเบ‡. เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบžเบฒเบšเบซเบ™เป‰เบฒเบˆเปเป„เบ”เป‰เบ–เบทเบเบฅเบถเบšเบญเบญเบเบˆเบฒเบเบฅเบฒเบเบเบฒเบ™เบเบงเบ”เบชเบญเบš.

เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบžเบงเบเป€เบฎเบปเบฒเบ–เบทเบเบ›เบฐเป„เบงเป‰เบเบฑเบš:

  • ARK เบ›เบฐเบเบญเบš;
  • เบเบฒเบ™เบ—เบปเบ”เบชเบญเบš Junit;
  • เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเป€เบ„เบทเปˆเบญเบ‡เบกเบท.

Gradle remote cache

เป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เบเบงเบ”เบเบฒเบขเปˆเบฒเบ‡เบซเบ™เบฑเบ, เบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เป„เบ”เป‰เบเบฒเบเป€เบ›เบฑเบ™เบ—เบตเปˆเบ”เบตเบเบงเปˆเบฒ. เปเบ•เปˆเบšเปเปˆเบกเบตเบ‚เบญเบšเป€เบ‚เบ”เบˆเปเบฒเบเบฑเบ”เบเบฑเบšเบ„เบงเบฒเบกเบชเบปเบกเบšเบนเบ™เปเบšเบš!

เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบ–เบทเบเปเบšเปˆเบ‡เบญเบญเบเป€เบ›เบฑเบ™เบ›เบฐเบกเบฒเบ™ 150 เป‚เบกเบ”เบนเบ™ gradle. Gradle remote cache เบ›เบปเบเบเบฐเบ•เบดเปเบฅเป‰เบงเป€เบฎเบฑเบ”เบงเบฝเบเป„เบ”เป‰เบ”เบตเปƒเบ™เบเปเบฅเบฐเบ™เบตเบ™เบตเป‰, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบ•เบฑเบ”เบชเบดเบ™เปƒเบˆเบ—เบปเบ”เบฅเบญเบ‡เปƒเบŠเป‰เบกเบฑเบ™.

Gradle remote cache เป€เบ›เบฑเบ™เบšเปเบฅเบดเบเบฒเบ™เบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบชเป‰เบฒเบ‡ cache เบชเป‰เบฒเบ‡ artifacts เบชเปเบฒเบฅเบฑเบšเปเบ•เปˆเบฅเบฐเบงเบฝเบเปƒเบ™เปเบ•เปˆเบฅเบฐเป‚เบกเบ”เบนเบ™. Gradle, เปเบ—เบ™เบ—เบตเปˆเบˆเบฐเบฅเบงเบšเบฅเบงเบกเบฅเบฐเบซเบฑเบ”เบ•เบปเบงเบˆเบดเบ‡, เปƒเบŠเป‰ HTTP เป€เบžเบทเปˆเบญเบฅเบปเบš cache เบซเปˆเบฒเบ‡เป„เบเบชเบญเบเบซเบผเบตเบเปเบฅเบฐเบ–เบฒเบกเบงเปˆเบฒเบœเบนเป‰เปƒเบ”เบœเบนเป‰เบซเบ™เบถเปˆเบ‡เป„เบ”เป‰เบ›เบฐเบ•เบดเบšเบฑเบ”เบงเบฝเบเบ‡เบฒเบ™เบ™เบตเป‰เปเบฅเป‰เบง. เบ–เป‰เบฒเปเบกเปˆเบ™, เบกเบฑเบ™เบžเบฝเบ‡เปเบ•เปˆเบ”เบฒเบงเป‚เบซเบฅเบ”เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบš.

เบเบฒเบ™เปเบฅเปˆเบ™ Gradle remote cache เปเบกเปˆเบ™เบ‡เปˆเบฒเบเป€เบžเบฒเบฐเบงเปˆเบฒ Gradle เปƒเบซเป‰เบฎเบนเบšเบžเบฒเบš Docker. เบžเบงเบเป€เบฎเบปเบฒเบˆเบฑเบ”เบเบฒเบ™เบ™เบตเป‰เปƒเบ™เบชเบฒเบกเบŠเบปเปˆเบงเป‚เบกเบ‡.

เบชเบดเปˆเบ‡เบ—เบตเปˆเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เป€เบฎเบฑเบ”เปเบกเปˆเบ™เป€เบ›เบตเบ” Docker เปเบฅเบฐเบ‚เบฝเบ™เป€เบชเบฑเป‰เบ™เบ”เบฝเบงเปƒเบ™เป‚เบ„เบ‡เบเบฒเบ™. เปเบ•เปˆเป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบกเบฑเบ™เบชเบฒเบกเบฒเบ”เป€เบ›เบตเบ”เบ•เบปเบงเป„เบ”เป‰เป„เบง, เบกเบฑเบ™เบˆเบฐเปƒเบŠเป‰เป€เบงเบฅเบฒเบ‚เป‰เบญเบ™เบ‚เป‰เบฒเบ‡เบซเบผเบฒเบเป€เบžเบทเปˆเบญเปƒเบซเป‰เบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เป€เบฎเบฑเบ”เบงเบฝเบเป„เบ”เป‰เบ”เบต.

เบ‚เป‰เบฒเบ‡เบฅเบธเปˆเบกเบ™เบตเป‰เปเบกเปˆเบ™ cache misses graph.

เบงเบดเบงเบฑเบ”เบ—เบฐเบ™เบฒเบเบฒเบ™เบ‚เบญเบ‡ CI เปƒเบ™เบ—เบตเบกเบžเบฑเบ”เบ—เบฐเบ™เบฒเบกเบทเบ–เบท

เปƒเบ™เบ•เบญเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™, เบญเบฑเบ”เบ•เบฒเบชเปˆเบงเบ™เบ‚เบญเบ‡ cache misses เปเบกเปˆเบ™เบ›เบฐเบกเบฒเบ™ 65. เบซเบผเบฑเบ‡เบˆเบฒเบเบชเบฒเบกเบญเบฒเบ—เบดเบ”, เบžเบงเบเป€เบฎเบปเบฒเบ„เบธเป‰เบกเบ„เบญเบ‡เบเบฒเบ™เป€เบžเบตเปˆเบกเบกเบนเบ™เบ„เปˆเบฒเบ™เบตเป‰เป€เบ–เบดเบ‡ 20%. เบกเบฑเบ™โ€‹เป„เบ”เป‰โ€‹เบซเบฑเบ™โ€‹เบญเบญเบโ€‹เบงเปˆเบฒโ€‹เบงเบฝเบโ€‹เบ‡เบฒเบ™โ€‹เบ—เบตเปˆโ€‹เบ„เปเบฒโ€‹เบฎเป‰เบญเบ‡โ€‹เบชเบฐโ€‹เบซเบกเบฑเบ Android เป€เบเบฑเบšโ€‹เบเปเบฒโ€‹เบกเบตโ€‹เบเบฒเบ™โ€‹เบ‚เบถเป‰เบ™โ€‹เบเบฑเบš transitive strangeโ€‹, เป€เบ™เบทเปˆเบญเบ‡โ€‹เบˆเบฒเบโ€‹เบงเปˆเบฒ Gradle เบžเบฒเบ”โ€‹เบ–เบฒเบ™โ€‹เบ„เบงเบฒเบกโ€‹เบˆเปเบฒโ€‹.

เป‚เบ”เบเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเปเบ„เบ”, เบžเบงเบเป€เบฎเบปเบฒเป€เบฅเบฑเปˆเบ‡เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบขเปˆเบฒเบ‡เบซเบผเบงเบ‡เบซเบผเบฒเบ. เปเบ•เปˆเบ™เบญเบเป€เบซเบ™เบทเบญเบˆเบฒเบเบเบฒเบ™เบ›เบฐเบเบญเบš, เบเบฑเบ‡เบกเบตเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเป€เบ„เบทเปˆเบญเบ‡เบกเบท, เปเบฅเบฐเบžเบงเบเป€เบ‚เบปเบฒเปƒเบŠเป‰เป€เบงเบฅเบฒเบ”เบปเบ™เบ™เบฒเบ™. เบšเบฒเบ‡เบ—เบตเบšเปเปˆเปเบกเปˆเบ™เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบ—เบฑเบ‡เบซเบกเบปเบ”เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบชเปเบฒเบฅเบฑเบšเบ—เบธเบเป†เบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เปเบ”เบถเบ‡. เป€เบžเบทเปˆเบญเบŠเบญเบเบซเบฒ, เบžเบงเบเป€เบฎเบปเบฒเปƒเบŠเป‰เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเบœเบปเบ™เบเบฐเบ—เบปเบš.

เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเบœเบปเบ™เบเบฐเบ—เบปเบš

เปƒเบ™เบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเบเบฒเบ™เบ”เบถเบ‡, เบžเบงเบเป€เบฎเบปเบฒเป€เบเบฑเบšเบเปเบฒ git diff เปเบฅเบฐเบŠเบญเบเบซเบฒเป‚เบกเบ”เบนเบ™ Gradle เบ”เบฑเบ”เปเบเป‰.

เบงเบดเบงเบฑเบ”เบ—เบฐเบ™เบฒเบเบฒเบ™เบ‚เบญเบ‡ CI เปƒเบ™เบ—เบตเบกเบžเบฑเบ”เบ—เบฐเบ™เบฒเบกเบทเบ–เบท

เบกเบฑเบ™เป€เบฎเบฑเบ”เปƒเบซเป‰เบ„เบงเบฒเบกเบฎเบนเป‰เบชเบถเบเบžเบฝเบ‡เปเบ•เปˆเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเป€เบ„เบทเปˆเบญเบ‡เบกเบทเบ—เบตเปˆเบเบงเบ”เป€เบšเบดเปˆเบ‡เป‚เบกเบ”เบนเบ™เบ—เบตเปˆเบกเบตเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เปเบฅเบฐเบ—เบธเบเป‚เบกเบ”เบนเบ™เบ—เบตเปˆเบ‚เบถเป‰เบ™เบเบฑเบšเบžเบงเบเบกเบฑเบ™. เบšเปเปˆเบกเบตเบˆเบธเบ”เปƒเบ”เปƒเบ™เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบชเปเบฒเบฅเบฑเบšเป‚เบกเบ”เบนเบ™เปƒเบเป‰เบ„เบฝเบ‡: เบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเบ™เบฑเป‰เบ™เบšเปเปˆเป„เบ”เป‰เบ›เปˆเบฝเบ™เปเบ›เบ‡เปเบฅเบฐเบšเปเปˆเบกเบตเบซเบเบฑเบ‡เบชเบฒเบกเบฒเบ”เบ—เปเบฒเบฅเบฒเบเป„เบ”เป‰.

เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเป€เบ„เบทเปˆเบญเบ‡เบกเบทเปเบกเปˆเบ™เบšเปเปˆเบ‡เปˆเบฒเบเบ”เบฒเบ, เป€เบžเบฒเบฐเบงเปˆเบฒเบžเบงเบเป€เบ‚เบปเบฒเบ•เป‰เบญเบ‡เบขเบนเปˆเปƒเบ™เป‚เบกเบ”เบนเบ™เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบฅเบฐเบ”เบฑเบšเบชเบนเบ‡เบชเบธเบ”. เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เปƒเบŠเป‰ heuristics เบเบฑเบšเบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐ bytecode เป€เบžเบทเปˆเบญเป€เบ‚เบปเป‰เบฒเปƒเบˆเบงเปˆเบฒเปเบ•เปˆเบฅเบฐเป‚เบกเบ”เบนเบ™เบ‚เบญเบ‡เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเป€เบ›เบฑเบ™เบ‚เบญเบ‡.

เบเบฒเบ™เบเบปเบเบฅเบฐเบ”เบฑเบšเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ‡เบฒเบ™เบ‚เบญเบ‡เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเป€เบ„เบทเปˆเบญเบ‡เบกเบทเป€เบžเบทเปˆเบญเปƒเบซเป‰เบžเบงเบเป€เบ‚เบปเบฒเบ—เบปเบ”เบชเบญเบšเบžเบฝเบ‡เปเบ•เปˆเป‚เบกเบ”เบนเบ™เบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เปƒเบŠเป‰เป€เบงเบฅเบฒเบ›เบฐเบกเบฒเบ™เปเบ›เบ”เบญเบฒเบ—เบดเบ”.

เบกเบฒเบ”โ€‹เบ•เบฐโ€‹เบเบฒเบ™โ€‹เป€เบฅเบฑเปˆเบ‡โ€‹เบฅเบฑเบ”โ€‹เบเบฒเบ™โ€‹เบเบงเบ”โ€‹เบเบฒโ€‹เป„เบ”เป‰โ€‹เบฎเบฑเบšโ€‹เบœเบปเบ™โ€‹เบชเบณโ€‹เป€เบฅเบฑเบ”. เบˆเบฒเบ 45 เบ™เบฒเบ—เบตเบžเบงเบเป€เบฎเบปเบฒเบ‚เบถเป‰เบ™เป„เบ›เบ›เบฐเบกเบฒเบ™ 15. เบกเบฑเบ™เป€เบ›เบฑเบ™เป€เบฅเบทเปˆเบญเบ‡เบ›เบปเบเบเบฐเบ•เบดเบ—เบตเปˆเบˆเบฐเบฅเปเบ–เป‰เบฒเบซเบ™เบถเปˆเบ‡เบชเปˆเบงเบ™เบชเบตเปˆเบ‚เบญเบ‡เบŠเบปเปˆเบงเป‚เบกเบ‡เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡.

เปเบ•เปˆเปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเป„เบ”เป‰เป€เบฅเบตเปˆเบกเบˆเบปเปˆเบกเบงเปˆเบฒเบžเบงเบเป€เบ‚เบปเบฒเบšเปเปˆเป€เบ‚เบปเป‰เบฒเปƒเบˆเบงเปˆเบฒเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เปƒเบ”เบ–เบทเบเป€เบ›เบตเบ”เบ•เบปเบง, เบšเปˆเบญเบ™เบ—เบตเปˆเป€เบซเบฑเบ™เบšเบฑเบ™เบ—เบถเบ, เป€เบ›เบฑเบ™เบซเบเบฑเบ‡เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เป€เบ›เบฑเบ™เบชเบตเปเบ”เบ‡, เป€เบŠเบดเปˆเบ‡เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบฅเบปเป‰เบกเป€เบซเบฅเบง, เปเบฅเบฐเบญเบทเปˆเบ™เป†.

เบงเบดเบงเบฑเบ”เบ—เบฐเบ™เบฒเบเบฒเบ™เบ‚เบญเบ‡ CI เปƒเบ™เบ—เบตเบกเบžเบฑเบ”เบ—เบฐเบ™เบฒเบกเบทเบ–เบท

เบšเบฑเบ™เบซเบฒเบ—เบตเปˆเบกเบตเบ„เปเบฒเบ„เบถเบ”เบ„เปเบฒเป€เบซเบฑเบ™เบŠเป‰เบฒเบฅเบปเบ‡เปƒเบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒ, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบžเบฐเบเบฒเบเบฒเบกเปƒเบซเป‰เบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบŠเบฑเบ”เป€เบˆเบ™เปเบฅเบฐเบฅเบฒเบเบฅเบฐเบญเบฝเบ”เบเปˆเบฝเบงเบเบฑเบšเปเบ•เปˆเบฅเบฐ PR เปเบฅเบฐเบเปเปˆเบชเป‰เบฒเบ‡เป€เบ—เบปเปˆเบฒเบ—เบตเปˆเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰. เบžเบงเบเป€เบฎเบปเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ”เป‰เบงเบเบ„เปเบฒเป€เบซเบฑเบ™เปƒเบ™ Bitbucket เบเบฑเบš PR, เบŠเบตเป‰เปƒเบซเป‰เป€เบซเบฑเบ™เบงเปˆเบฒเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เปƒเบ”เบฅเบปเป‰เบกเป€เบซเบฅเบงเปเบฅเบฐเป€เบ›เบฑเบ™เบซเบเบฑเบ‡, เปเบฅเบฐเบ‚เบฝเบ™เบ‚เปเป‰เบ„เบงเบฒเบกเป€เบ›เบปเป‰เบฒเบซเบกเบฒเบเปƒเบ™ Slack. เปƒเบ™เบ—เบตเปˆเบชเบธเบ”, เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบชเป‰เบฒเบ‡ dashboard PR เบชเปเบฒเบฅเบฑเบšเบซเบ™เป‰เบฒเบ—เบตเปˆเบกเบตเบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเบ‚เบญเบ‡เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบ—เบฑเบ‡เบซเบกเบปเบ”เบ—เบตเปˆเบเปเบฒเบฅเบฑเบ‡เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เปเบฅเบฐเบชเบฐเบ–เบฒเบ™เบฐเบžเบฒเบšเบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒ: เบ„เบดเบง, เปเบฅเปˆเบ™, crashed เบซเบผเบทเบชเปเบฒเป€เบฅเบฑเบ”. เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ„เบฅเบดเบเปƒเบชเปˆเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เปเบฅเบฐเป„เบ›เบซเบฒเบšเบฑเบ™เบ—เบถเบเบ‚เบญเบ‡เบกเบฑเบ™.

เบงเบดเบงเบฑเบ”เบ—เบฐเบ™เบฒเบเบฒเบ™เบ‚เบญเบ‡ CI เปƒเบ™เบ—เบตเบกเบžเบฑเบ”เบ—เบฐเบ™เบฒเบกเบทเบ–เบท

เบซเบปเบเบญเบฒเบ—เบดเบ”เป„เบ”เป‰เปƒเบŠเป‰เป€เบงเบฅเบฒเปƒเบ™เบเบฒเบ™เบ•เบดเบŠเบปเบกเบฅเบฐเบญเบฝเบ”.

เปเบœเบ™เบเบฒเบ™

เปƒเบซเป‰เบเป‰เบฒเบงเป„เบ›เบชเบนเปˆเบ›เบฐเบซเบงเบฑเบ”เบชเบฒเบ”เบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒ. เป‚เบ”เบเป„เบ”เป‰เปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒเบเบฒเบ™เบ•เบดเบŠเบปเบก, เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบšเบฑเบ™เบฅเบธเบฅเบฐเบ”เบฑเบšเปƒเบซเบกเปˆ - เบžเบงเบเป€เบฎเบปเบฒเบ•เบฑเบ”เบชเบดเบ™เปƒเบˆเบชเป‰เบฒเบ‡เบŸเบฒเบก emulator เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเป€เบญเบ‡. เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบกเบตเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเปเบฅเบฐ emulators เบซเบผเบฒเบ, เบžเบงเบเป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเบกเบตเบ„เบงเบฒเบกเบซเบเบธเป‰เบ‡เบเบฒเบเปƒเบ™เบเบฒเบ™เบ„เบธเป‰เบกเบ„เบญเบ‡. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, emulators เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบ—เบฑเบ‡เบซเบกเบปเบ”เป„เบ”เป‰เบเป‰เบฒเบเป„เบ› cluster k8s เบ”เป‰เบงเบเบเบฒเบ™เบˆเบฑเบ”เบเบฒเบ™เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบ—เบตเปˆเบกเบตเบ„เบงเบฒเบกเบเบทเบ”เบซเบเบธเปˆเบ™.

เบ™เบญเบเบˆเบฒเบเบ™เบฑเป‰เบ™, เบเบฑเบ‡เบกเบตเปเบœเบ™เบเบฒเบ™เบญเบทเปˆเบ™เป†.

  • เบเบฑเบšเบ„เบทเบ™ Lint (เปเบฅเบฐเบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเบชเบฐเบ–เบดเบ”เบญเบทเปˆเบ™เป†). เบžเบงเบเป€เบฎเบปเบฒเป€เบฎเบฑเบ”เบงเบฝเบเบขเบนเปˆเปƒเบ™เบ—เบดเบ”เบ—เบฒเบ‡เบ™เบตเป‰เปเบฅเป‰เบง.
  • เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ—เบธเบเบขเปˆเบฒเบ‡เปƒเบ™เบ•เบปเบงเบšเบฅเบฑเบญเบ PR เบเบฒเบ™เบ—เบปเบ”เบชเบญเบš end-to-end เปƒเบ™เบ—เบธเบเบฅเบธเป‰เบ™ SDK.

เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบ•เบดเบ”เบ•เบฒเบกเบ›เบฐเบซเบงเบฑเบ”เบชเบฒเบ”เบ‚เบญเบ‡เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบ‚เบญเบ‡เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡เบขเปˆเบฒเบ‡เบ•เปเปˆเป€เบ™เบทเปˆเบญเบ‡เปƒเบ™ Avito. เบ•เบญเบ™เบ™เบตเป‰เบ‚เป‰เบญเบเบ•เป‰เบญเบ‡เบเบฒเบ™เปƒเบซเป‰เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบšเบฒเบ‡เบขเปˆเบฒเบ‡เบˆเบฒเบเบ—เบฑเบ”เบชเบฐเบ™เบฐเบ—เบตเปˆเบกเบตเบ›เบฐเบชเบปเบšเบเบฒเบ™.

เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒ

เบ–เป‰เบฒเบ‚เป‰เบญเบเบชเบฒเบกเบฒเบ”เปƒเบซเป‰เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบžเบฝเบ‡เปเบ•เปˆเบซเบ™เบถเปˆเบ‡เบญเบฑเบ™, เบกเบฑเบ™เบˆเบฐเป€เบ›เบฑเบ™เบ™เบตเป‰:

เบเบฐเบฅเบธเบ™เบฒเบฅเบฐเบงเบฑเบ‡เบ•เบปเบงเบ‚เบฝเบ™ shell!

Bash เป€เบ›เบฑเบ™เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบ—เบตเปˆเบกเบตเบ„เบงเบฒเบกเบเบทเบ”เบซเบเบธเปˆเบ™เปเบฅเบฐเบกเบตเบญเปเบฒเบ™เบฒเบ”เบซเบผเบฒเบ, เบกเบฑเบ™เบชเบฐเบ”เบงเบเบซเบผเบฒเบเปเบฅเบฐเป„เบงเปƒเบ™เบเบฒเบ™เบ‚เบฝเบ™เบชเบฐเบ„เบดเบš. เปเบ•เปˆเบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ•เบปเบเบขเบนเปˆเปƒเบ™เบˆเบฑเปˆเบ™เบˆเบฑเบšเบเบฑเบšเบกเบฑเบ™, เปเบฅเบฐ, เปเบ•เปˆเบซเบ™เป‰เบฒเป€เบชเบเบ”เบฒเบ, เบžเบงเบเป€เบฎเบปเบฒเบ•เบปเบเป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบกเบฑเบ™.

เบกเบฑเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ”เป‰เบงเบ scripts เบ‡เปˆเบฒเบเป†เบ—เบตเปˆเปเบฅเปˆเบ™เบขเบนเปˆเปƒเบ™เป€เบ„เบทเปˆเบญเบ‡เบเปเปˆเบชเป‰เบฒเบ‡เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ:

#!/usr/bin/env bash
./gradlew assembleDebug

เปเบ•เปˆ, เบ•เบฒเบกเบ—เบตเปˆเบ—เปˆเบฒเบ™เบฎเบนเป‰, เบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เบžเบฑเบ”เบ—เบฐเบ™เบฒเปเบฅเบฐเบชเบฑเบšเบชเบปเบ™เบซเบผเบฒเบเบ‚เบทเป‰เบ™เปƒเบ™เป„เบฅเบเบฐเป€เบงเบฅเบฒ - เปƒเบซเป‰เปเบฅเปˆเบ™เบชเบฐเบ„เบดเบšเบซเบ™เบถเปˆเบ‡เบˆเบฒเบเบ•เบปเบงเบญเบทเปˆเบ™, เปƒเบซเป‰เบœเปˆเบฒเบ™เบ•เบปเบงเบเปเบฒเบ™เบปเบ”เบเบฒเบ™เบšเบฒเบ‡เบขเปˆเบฒเบ‡เบขเบนเปˆเบ—เบตเปˆเบ™เบฑเป‰เบ™ - เปƒเบ™เบ—เบตเปˆเบชเบธเบ”เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบ‚เบฝเบ™เบซเบ™เป‰เบฒเบ—เบตเปˆเบเปเบฒเบ™เบปเบ”เบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเบขเบนเปˆเปƒเบ™เบฅเบฐเบ”เบฑเบšเปƒเบ” bash nesting เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบขเบนเปˆเปƒเบ™เบ„เปเบฒเบชเบฑเปˆเบ‡. เป€เบžเบทเปˆเบญเปƒเบชเปˆเบ„เปเบฒเบญเป‰เบฒเบ‡เบญเบตเบ‡เบ—เบตเปˆเบˆเปเบฒเป€เบ›เบฑเบ™, เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เปƒเบซเป‰เบกเบฑเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ—เบฑเบ‡เบซเบกเบปเบ”.

เบงเบดเบงเบฑเบ”เบ—เบฐเบ™เบฒเบเบฒเบ™เบ‚เบญเบ‡ CI เปƒเบ™เบ—เบตเบกเบžเบฑเบ”เบ—เบฐเบ™เบฒเบกเบทเบ–เบท

เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบˆเบดเบ™เบ•เบฐเบ™เบฒเบเบฒเบ™เบ„เปˆเบฒเปƒเบŠเป‰เบˆเปˆเบฒเบเปเบฎเบ‡เบ‡เบฒเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบชเบฐเบ„เบดเบšเบ”เบฑเปˆเบ‡เบเปˆเบฒเบง. เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเปเบ™เบฐเบ™เปเบฒเปƒเบซเป‰เบ—เปˆเบฒเบ™เบšเปเปˆเบ•เบปเบเบขเบนเปˆเปƒเบ™เบˆเบฑเปˆเบ™เบˆเบฑเบšเบ™เบตเป‰.

เบชเบดเปˆเบ‡เบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบ—เบปเบ”เปเบ—เบ™เป„เบ”เป‰?

  • เบžเบฒเบชเบฒเบชเบฐเบ„เบฃเบดเบšเปƒเบ”เบ™เบถเปˆเบ‡. เบ‚เบฝเบ™เบซเบฒ Python เบซเบผเบท Kotlin Script เบชเบฐเบ”เบงเบเบเบงเปˆเบฒเป€เบžเบฒเบฐเบงเปˆเบฒเบกเบฑเบ™เป€เบ›เบฑเบ™เบเบฒเบ™เบ‚เบฝเบ™เป‚เบ›เบฅเปเบเบฅเบก, เบšเปเปˆเปเบกเปˆเบ™เบชเบฐเบ„เบดเบš.
  • เบซเบผเบทเบญเบฐเบ—เบดเบšเบฒเบเป€เบซเบ”เบœเบปเบ™เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบ—เบฑเบ‡เบซเบกเบปเบ”เปƒเบ™เบฎเบนเบšเปเบšเบš เปœเป‰เบฒเบงเบฝเบ gradle เปเบšเบšเบเบณเบ™เบปเบ”เป€เบญเบ‡ เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เป‚เบ„เบ‡โ€‹เบเบฒเบ™โ€‹เบ‚เบญเบ‡โ€‹เบ—เปˆเบฒเบ™โ€‹.

เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบ•เบฑเบ”เบชเบดเบ™เปƒเบˆเป€เบฅเบทเบญเบเบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ—เบตเบชเบญเบ‡, เปเบฅเบฐเปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบžเบงเบเป€เบฎเบปเบฒเบเปเบฒเบฅเบฑเบ‡เบฅเบถเบš bash scripts เบ—เบฑเบ‡เบซเบกเบปเบ”เบขเปˆเบฒเบ‡เป€เบ›เบฑเบ™เบฅเบฐเบšเบปเบšเปเบฅเบฐเบ‚เบฝเบ™เบซเบผเบฒเบเบซเบ™เป‰เบฒเบ—เบตเปˆเบเปเบฒเบ™เบปเบ”เป€เบญเบ‡.

เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒ #2: เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™เปƒเบ™เบฅเบฐเบซเบฑเบ”.

เบกเบฑเบ™เบชเบฐเบ”เบงเบเป€เบกเบทเปˆเบญเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡เบขเปˆเบฒเบ‡เบ•เปเปˆเป€เบ™เบทเปˆเบญเบ‡เบšเปเปˆเป„เบ”เป‰เบ–เบทเบเป€เบเบฑเบšเป„เบงเป‰เปƒเบ™เบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบš UI เบ‚เบญเบ‡ Jenkins เบซเบผเบท TeamCity, เปเบฅเบฐเบญเบทเปˆเบ™เป†, เปเบ•เปˆเปƒเบ™เบฎเบนเบšเปเบšเบšเบ‚เบญเบ‡เป„เบŸเบฅเปŒเบ‚เปเป‰เบ„เบงเบฒเบกเป‚เบ”เบเบเบปเบ‡เปƒเบ™ repository เป‚เบ„เบ‡เบเบฒเบ™. เบ™เบตเป‰เป€เบฎเบฑเบ”เปƒเบซเป‰เบชเบฐเบšเบฑเบšเบžเบฒเบชเบฒ. เบกเบฑเบ™เบˆเบฐเบšเปเปˆเป€เบ›เบฑเบ™เบเบฒเบ™เบเบฒเบเบ—เบตเปˆเบˆเบฐ rollback เบซเบผเบทเบชเป‰เบฒเบ‡เบฅเบฐเบซเบฑเบ”เปƒเบ™เบชเบฒเบ‚เบฒเบญเบทเปˆเบ™.

เบชเบฐเบ„เบฃเบดเบšเบชเบฒเบกเบฒเบ”เบ–เบทเบเป€เบเบฑเบšเป„เบงเป‰เปƒเบ™เป‚เบ„เบ‡เบเบฒเบ™. เบˆเบฐเป€เบฎเบฑเบ”เปเบ™เบงเปƒเบ”เบเบฑเบšเบชเบดเปˆเบ‡เปเบงเบ”เบฅเป‰เบญเบก?

เป€เบ„เบฑเบ”เบฅเบฑเบš #3: Docker เบชเบฒเบกเบฒเบ”เบŠเปˆเบงเบเบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเป„เบ”เป‰.

เบกเบฑเบ™เบˆเบฐเบŠเปˆเบงเบเปƒเบซเป‰เบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒ Android เปเบ™เปˆเบ™เบญเบ™, เปเบ•เปˆเบซเบ™เป‰เบฒเป€เบชเบเบ”เบฒเบ, iOS เบเบฑเบ‡เบšเปเปˆเบ—เบฑเบ™เบกเบตเป€เบ—เบทเปˆเบญ.

เบ™เบตเป‰เปเบกเปˆเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เบญเบ‡เป„เบŸเบฅเปŒ docker เบ‡เปˆเบฒเบเป†เบ—เบตเปˆเบกเบต jdk เปเบฅเบฐ android-sdk:

FROM openjdk:8

ENV SDK_URL="https://dl.google.com/android/repository/sdk-tools-linux-3859397.zip" 
    ANDROID_HOME="/usr/local/android-sdk" 
    ANDROID_VERSION=26 
    ANDROID_BUILD_TOOLS_VERSION=26.0.2

# Download Android SDK
RUN mkdir "$ANDROID_HOME" .android 
    && cd "$ANDROID_HOME" 
    && curl -o sdk.zip $SDK_URL 
    && unzip sdk.zip 
    && rm sdk.zip 
    && yes | $ANDROID_HOME/tools/bin/sdkmanager --licenses

# Install Android Build Tool and Libraries
RUN $ANDROID_HOME/tools/bin/sdkmanager --update
RUN $ANDROID_HOME/tools/bin/sdkmanager "build-tools;${ANDROID_BUILD_TOOLS_VERSION}" 
    "platforms;android-${ANDROID_VERSION}" 
    "platform-tools"

RUN mkdir /application
WORKDIR /application

เป‚เบ”เบเป„เบ”เป‰เบ‚เบฝเบ™เป„เบŸเบฅเปŒ Docker เบ™เบตเป‰ (เบ‚เป‰เบญเบเบˆเบฐเบšเบญเบเบ„เบงเบฒเบกเบฅเบฑเบšเบ‚เบญเบ‡เป€เบˆเบปเป‰เบฒ, เป€เบˆเบปเป‰เบฒเบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบ‚เบฝเบ™เบกเบฑเบ™, เปเบ•เปˆเบžเบฝเบ‡เปเบ•เปˆเบ”เบถเบ‡เบกเบฑเบ™เบžเป‰เบญเบกเบ—เบตเปˆเบˆเบฐเป€เบฎเบฑเบ”เบˆเบฒเบ GitHub) เปเบฅเบฐเบ›เบฐเบเบญเบšเบฎเบนเบšเบžเบฒเบš, เบ—เปˆเบฒเบ™เบˆเบฐเป„เบ”เป‰เบฎเบฑเบšเป€เบ„เบทเปˆเบญเบ‡ virtual เบ—เบตเปˆเบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบชเป‰เบฒเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเป„เบ”เป‰. เปเบฅเบฐเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ—เบปเบ”เบชเบญเบš Junit.

เบชเบญเบ‡เป€เบซเบ”เบœเบปเบ™เบซเบผเบฑเบเบ—เบตเปˆเป€เบฎเบฑเบ”เปƒเบซเป‰เบ„เบงเบฒเบกเบฎเบนเป‰เบชเบถเบเบ™เบตเป‰เบกเบตเบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เบ‚เบฐเบซเบเบฒเบเป„เบ”เป‰เปเบฅเบฐเบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เบŠเป‰เปเบฒเป„เบ”เป‰. เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰ docker, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบเบปเบเบชเบนเบ‡เป€เบ›เบฑเบ™เบญเบฒเบเปเบเบฑเบชเบ•เบปเบงเปเบ—เบ™เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบขเปˆเบฒเบ‡เป„เบงเบงเบฒเบ—เบตเปˆเบˆเบฐเบกเบตเบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบ„เบทเบเบฑเบ™เบเบฑเบšเบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒ. เบ™เบตเป‰เป€เบฎเบฑเบ”เปƒเบซเป‰เบŠเบตเบงเบดเบ”เบ‚เบญเบ‡เบงเบดเบชเบฐเบงเบฐเบเบญเบ™ CI เบ‡เปˆเบฒเบเบ‚เบถเป‰เบ™เบซเบผเบฒเบ. เบกเบฑเบ™เบ‚เป‰เบญเบ™เบ‚เป‰เบฒเบ‡เบ‡เปˆเบฒเบเบ—เบตเปˆเบˆเบฐเบเบนเป‰ android-sdk เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™ docker, เปเบ•เปˆเบเบฑเบš emulators เบกเบฑเบ™เบกเบตเบ„เบงเบฒเบกเบซเบเบธเป‰เบ‡เบเบฒเบเป€เบฅเบฑเบเบ™เป‰เบญเบ: เบ—เปˆเบฒเบ™เบˆเบฐเบ•เป‰เบญเบ‡เป€เบฎเบฑเบ”เบงเบฝเบเบซเบ™เบฑเบเบเบงเปˆเบฒเป€เบฅเบฑเบเบ™เป‰เบญเบ (เบซเบผเบทเบ”เบฒเบงเป‚เบซเบฅเบ”เบญเบฑเบ™เบชเปเบฒเป€เบฅเบฑเบ”เบฎเบนเบšเบˆเบฒเบ GitHub เบญเบตเบเป€เบ—เบทเปˆเบญเบซเบ™เบถเปˆเบ‡).

เบ‚เปเป‰เบ—เบต 4: เบขเปˆเบฒเบฅเบทเบกเบงเปˆเบฒเบเบฒเบ™เบเบงเบ”เบเบฒเบšเปเปˆเป„เบ”เป‰เป€เบฎเบฑเบ”เป€เบžเบทเปˆเบญเบœเบปเบ™เบ›เบฐเป‚เบซเบเบ”เบ‚เบญเบ‡เบเบฒเบ™เบเบงเบ”เบเบฒ, เปเบ•เปˆเป€เบžเบทเปˆเบญเบ›เบฐเบŠเบฒเบŠเบปเบ™.

เป„เบงเปเบฅเบฐเบชเปเบฒเบ„เบฑเบ™เบ—เบตเปˆเบชเบธเบ”, เบ„เปเบฒเบ„เบดเบ”เป€เบซเบฑเบ™เบ—เบตเปˆเบŠเบฑเบ”เป€เบˆเบ™เปเบกเปˆเบ™เบกเบตเบ„เบงเบฒเบกเบชเปเบฒเบ„เบฑเบ™เบซเบผเบฒเบเบชเปเบฒเบฅเบฑเบšเบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒ: เบชเบดเปˆเบ‡เบ—เบตเปˆเปเบ•เบ, เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเปƒเบ”เบฅเบปเป‰เบกเป€เบซเบฅเบง, เบ‚เป‰เบญเบเบˆเบฐเป€เบซเบฑเบ™ buildlog เป„เบ”เป‰เบขเบนเปˆเปƒเบช.

เป€เบ„เบฑเบ”โ€‹เบฅเบฑเบš #5โ€‹: เบˆเบฐ pragmatic เปƒเบ™โ€‹เป€เบงโ€‹เบฅเบฒโ€‹เบ—เบตเปˆโ€‹เบžเบฑเบ”โ€‹เบ—เบฐโ€‹เบ™เบฒโ€‹เบเบฒเบ™โ€‹เป€เบŠเบทเปˆเบญเบกโ€‹เป‚เบเบ‡โ€‹เบขเปˆเบฒเบ‡โ€‹เบ•เปเปˆโ€‹เป€เบ™เบทเปˆเบญเบ‡โ€‹.

เป€เบ‚เบปเป‰เบฒเปƒเบˆเบขเปˆเบฒเบ‡เบˆเบฐเปเบˆเป‰เบ‡เบงเปˆเบฒเบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เบ—เบตเปˆเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เบ—เบตเปˆเบˆเบฐเบ›เป‰เบญเบ‡เบเบฑเบ™, เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบซเบผเบฒเบเบ›เบฒเบ™เปƒเบ”, เป€เบงเบฅเบฒ, เปเบฅเบฐเป€เบงเบฅเบฒเบ„เบญเบกเบžเบดเบงเป€เบ•เบตเบ—เบตเปˆเป€เบˆเบปเป‰เบฒเป€เบ•เบฑเบกเปƒเบˆเบ—เบตเปˆเบˆเบฐเปƒเบŠเป‰. เบเบฒเบ™เบเบงเบ”เบชเบญเบšเบ—เบตเปˆเปƒเบŠเป‰เป€เบงเบฅเบฒเบ”เบปเบ™เป€เบเบตเบ™เป„เบ›, เบ•เบปเบงเบขเปˆเบฒเบ‡, เบˆเบฐเบ–เบทเบเป€เบฅเบทเปˆเบญเบ™เบญเบญเบเป„เบ›เปƒเบ™เบ„เบทเบ™. เปเบฅเบฐเบœเบนเป‰เบ—เบตเปˆเบˆเบฑเบšเบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เบ—เบตเปˆเบšเปเปˆเบชเปเบฒเบ„เบฑเบ™เบซเบผเบฒเบเบ„เบงเบ™เบ–เบทเบเบ›เบฐเบ–เบดเป‰เบกเบขเปˆเบฒเบ‡เบชเบปเบกเบšเบนเบ™.

เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒ #6: เปƒเบŠเป‰เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบ—เบตเปˆเป€เบฎเบฑเบ”เปเบฅเป‰เบง.

เบกเบตเบซเบผเบฒเบเบšเปเบฅเบดเบชเบฑเบ”เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบ—เบตเปˆเปƒเบซเป‰เบšเปเบฅเบดเบเบฒเบ™ cloud CI.

เบงเบดเบงเบฑเบ”เบ—เบฐเบ™เบฒเบเบฒเบ™เบ‚เบญเบ‡ CI เปƒเบ™เบ—เบตเบกเบžเบฑเบ”เบ—เบฐเบ™เบฒเบกเบทเบ–เบท

เบ™เบตเป‰เปเบกเปˆเบ™เบเบฒเบ™เปเบเป‰เป„เบ‚เบ—เบตเปˆเบ”เบตเบชเปเบฒเบฅเบฑเบšเบ—เบตเบกเบ‡เบฒเบ™เบ‚เบฐเบซเบ™เบฒเบ”เบ™เป‰เบญเบ. เบ—เปˆเบฒเบ™เบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบซเบเบฑเบ‡, เบžเบฝเบ‡เปเบ•เปˆเบˆเปˆเบฒเบเป€เบ‡เบดเบ™เบžเบฝเบ‡เป€เบฅเบฑเบเบ™เป‰เบญเบ, เบชเป‰เบฒเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ‚เบญเบ‡เบ—เปˆเบฒเบ™เปเบฅเบฐเปเบกเป‰เบเบฐเบ—เบฑเป‰เบ‡เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเป€เบ„เบทเปˆเบญเบ‡เบกเบท.

เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒ #7: เปƒเบ™เบ—เบตเบกเบ‡เบฒเบ™เบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆ, เบเบฒเบ™เปเบเป‰เป„เบ‚เบžเบฒเบเปƒเบ™เป€เบฎเบทเบญเบ™เปเบกเปˆเบ™เบกเบตเบเปเบฒเป„เบฅเบซเบผเบฒเบเบเบงเปˆเบฒ.

เปเบ•เปˆเบšเปเปˆเบ”เบปเบ™เบซเบผเบทเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™, เป€เบกเบทเปˆเบญเบ—เบตเบกเบ‡เบฒเบ™เป€เบ•เบตเบšเป‚เบ•, เบเบฒเบ™เปเบเป‰เป„เบ‚เบžเบฒเบเปƒเบ™เบˆเบฐเบเบฒเบเป€เบ›เบฑเบ™เบเปเบฒเป„เบฅเบซเบผเบฒเบ. เบกเบตเบšเบฑเบ™เบซเบฒเบซเบ™เบถเปˆเบ‡เบเบฑเบšเบเบฒเบ™เบ•เบฑเบ”เบชเบดเบ™เปƒเบˆเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰. เบกเบตเบเบปเบ”เบซเบกเบฒเบเบงเปˆเบฒเบ”เป‰เบงเบเบเบฒเบ™เบซเบผเบธเบ”เบฅเบปเบ‡เบ‚เบญเบ‡เบœเบปเบ™เบ•เบญเบšเปเบ—เบ™เบ—เบฒเบ‡เป€เบชเบ”เบ–เบฐเบเบดเบ”: เปƒเบ™เป‚เบ„เบ‡เบเบฒเบ™เปƒเบ”เบเปเปˆเบ•เบฒเบก, เปเบ•เปˆเบฅเบฐเบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡เบ•เปเปˆเบกเบฒเปเบกเปˆเบ™เบกเบตเบ„เบงเบฒเบกเบซเบเบธเป‰เบ‡เบเบฒเบเบซเบผเบฒเบเปเบฅเบฐเบ•เป‰เบญเบ‡เบเบฒเบ™เบเบฒเบ™เบฅเบปเบ‡เบ—เบถเบ™เบซเบผเบฒเบเบ‚เบถเป‰เบ™.

เป€เบชเบ”เบ–เบฐเบชเบฒเบ”เบญเบฐเบ—เบดเบšเบฒเบเบ•เบฐเบซเบผเบญเบ”เบŠเบตเบงเบดเบ”เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ, เบฅเบงเบกเบ—เบฑเบ‡เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡เบขเปˆเบฒเบ‡เบ•เปเปˆเป€เบ™เบทเปˆเบญเบ‡. เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบชเป‰เบฒเบ‡เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบ„เปˆเบฒเปƒเบŠเป‰เบˆเปˆเบฒเบเปเบฎเบ‡เบ‡เบฒเบ™เบชเปเบฒเบฅเบฑเบšเปเบ•เปˆเบฅเบฐเบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ‚เบญเบ‡เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡เบขเปˆเบฒเบ‡เบ•เปเปˆเป€เบ™เบทเปˆเบญเบ‡เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ.

เบงเบดเบงเบฑเบ”เบ—เบฐเบ™เบฒเบเบฒเบ™เบ‚เบญเบ‡ CI เปƒเบ™เบ—เบตเบกเบžเบฑเบ”เบ—เบฐเบ™เบฒเบกเบทเบ–เบท

เบกเบฑเบ™เป€เบ›เบฑเบ™เบ—เบตเปˆเบŠเบฑเบ”เป€เบˆเบ™เบงเปˆเบฒเบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡เปƒเบ”เบเปเปˆเบ•เบฒเบกเปเบกเปˆเบ™เบกเบตเบ„เบงเบฒเบกเบซเบเบธเป‰เบ‡เบเบฒเบเบซเบผเบฒเบเบ‚เบทเป‰เบ™. เบŠเบญเบเบซเบฒเบขเบนเปˆเปƒเบ™เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบ™เบตเป‰, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบ‚เบปเป‰เบฒเปƒเบˆเป„เบ”เป‰เบงเปˆเบฒเบเบฒเบ™เบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™เบขเปˆเบฒเบ‡เบ•เปเปˆเป€เบ™เบทเปˆเบญเบ‡เบ•เป‰เบญเบ‡เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเปƒเบซเป‰เบชเบญเบ”เบ„เปˆเบญเบ‡เบเบฑเบšเบเบฒเบ™เบ‚เบฐเบซเบเบฒเบเบ•เบปเบงเบ‚เบญเบ‡เบ‚เบฐเบซเบ™เบฒเบ”เบ‚เบญเบ‡เบ—เบตเบกเบ‡เบฒเบ™. เบชเปเบฒเบฅเบฑเบšเบ—เบตเบกเบ‡เบฒเบ™เบชเบญเบ‡เบ„เบปเบ™, เปƒเบŠเป‰เป€เบงเบฅเบฒ 50 เบกเบทเป‰เป€เบžเบทเปˆเบญเบžเบฑเบ”เบ—เบฐเบ™เบฒเบŸเบฒเบก emulator เบžเบฒเบเปƒเบ™เปเบกเปˆเบ™เป€เบ›เบฑเบ™เบ„เบงเบฒเบกเบ„เบดเบ”เบ›เบฒเบ™เบเบฒเบ‡. เปเบ•เปˆเปƒเบ™เป€เบงเบฅเบฒเบ”เบฝเบงเบเบฑเบ™, เบชเปเบฒเบฅเบฑเบšเบ—เบตเบกเบ‡เบฒเบ™เบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆ, เบเบฒเบ™เบšเปเปˆเป€เบฎเบฑเบ”เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡เบขเปˆเบฒเบ‡เบ•เปเปˆเป€เบ™เบทเปˆเบญเบ‡เบ—เบฑเบ‡เบซเบกเบปเบ”เบเบฑเบ‡เป€เบ›เบฑเบ™เบ„เบงเบฒเบกเบ„เบดเบ”เบ—เบตเปˆเบšเปเปˆเบ”เบต, เป€เบžเบฒเบฐเบงเปˆเบฒเบšเบฑเบ™เบซเบฒเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡, เบเบฒเบ™เปเบเป‰เป„เบ‚เบเบฒเบ™เบชเบทเปˆเบชเบฒเบ™, เปเบฅเบฐเบญเบทเปˆเบ™เป†. เบกเบฑเบ™เบˆเบฐเปƒเบŠเป‰เป€เบงเบฅเบฒเบซเบผเบฒเบเบเบงเปˆเบฒเป€เบเบปเปˆเบฒ.

เบžเบงเบเป€เบฎเบปเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ”เป‰เบงเบเบ„เบงเบฒเบกเบ„เบดเบ”เบ—เบตเปˆเบงเปˆเบฒเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เปเบกเปˆเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เป€เบžเบฒเบฐเบงเปˆเบฒเบ„เบปเบ™เบกเบตเบฅเบฒเบ„เบฒเปเบžเบ‡, เบžเบงเบเป€เบ‚เบปเบฒเป€เบฎเบฑเบ”เบœเบดเบ”เบžเบฒเบ”เปเบฅเบฐเบ‚เบตเป‰เบเบฝเบ”. เปเบ•เปˆเบ›เบฐเบŠเบฒเบŠเบปเบ™เบเบฑเบ‡เบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบšเบฑเบ™เบซเบฒเบ”เบฝเบงเบเบฑเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เบ™เปเบฒเปƒเบŠเป‰เบเบฑเบšเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”.

  • เบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เปเบกเปˆเบ™เบฅเบฒเบ„เบฒเปเบžเบ‡. เบˆเบทเปˆเบ•เบฒเบ•เบฐเบฅเบฒเบ‡เปเบฎเบ‡เบ‡เบฒเบ™.
  • เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบกเบฑเบ™เบกเบฒเบเบฑเบšเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”, เบ›เบฐเบŠเบฒเบŠเบปเบ™เป€เบฎเบฑเบ”เบœเบดเบ”เบžเบฒเบ”.
  • เบšเบฒเบ‡เบ„เบฑเป‰เบ‡เบกเบฑเบ™เบ‚เบตเป‰เบ„เป‰เบฒเบ™เบซเบผเบฒเบเบ—เบตเปˆเบˆเบฐเป€เบฎเบฑเบ”เบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”, เป€เบžเบฒเบฐเบงเปˆเบฒเบ—เบธเบเบขเปˆเบฒเบ‡เป€เบฎเบฑเบ”เบงเบฝเบเปเบšเบšเบ™เบฑเป‰เบ™. เป€เบ›เบฑเบ™เบซเบเบฑเบ‡เบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡เบญเบฑเบ™เบญเบทเปˆเบ™, เป€เบ›เบฑเบ™เบซเบเบฑเบ‡เบเบฒเบ™เบฅเบงเบกเบ•เบปเบงเบขเปˆเบฒเบ‡เบ•เปเปˆเป€เบ™เบทเปˆเบญเบ‡เบ—เบฑเบ‡เบซเบกเบปเบ”เบ™เบตเป‰?

เปเบ•เปˆเบ‚เป‰เบญเบเบกเบตเบชเบฐเบ–เบดเบ•เบด: เบ‚เปเป‰เบœเบดเบ”เบžเบฒเบ”เบ–เบทเบเบˆเบฑเบšเบขเบนเปˆเปƒเบ™ 20% เบ‚เบญเบ‡เบชเบฐเบžเบฒเปเบซเปˆเบ‡. เปเบฅเบฐเบ™เบตเป‰เบšเปเปˆเปเบกเปˆเบ™เบเป‰เบญเบ™เบงเปˆเบฒเบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบ‚เบฝเบ™เบฅเบฐเบซเบฑเบ”เบšเปเปˆเบ”เบต. เบ™เบตเป‰เปเบกเปˆเบ™เบเป‰เบญเบ™เบงเปˆเบฒเบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเบซเบกเบฑเป‰เบ™เปƒเบˆเบงเปˆเบฒเบ–เป‰เบฒเบžเบงเบเป€เบ‚เบปเบฒเป€เบฎเบฑเบ”เบœเบดเบ”เบžเบฒเบ”เบšเบฒเบ‡เบขเปˆเบฒเบ‡, เบกเบฑเบ™เบˆเบฐเบšเปเปˆเบชเบดเป‰เบ™เบชเบธเบ”เปƒเบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒ, เบกเบฑเบ™เบˆเบฐเบ–เบทเบเบˆเบฑเบšเป‚เบ”เบเบเบฒเบ™เบเบงเบ”เบชเบญเบšเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”. เบ•เบฒเบกเบ™เบฑเป‰เบ™เปเบฅเป‰เบง, เบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเบชเบฒเบกเบฒเบ”เปƒเบŠเป‰เป€เบงเบฅเบฒเบซเบผเบฒเบเบเบงเปˆเบฒเบเบฒเบ™เบ‚เบฝเบ™เบฅเบฐเบซเบฑเบ”เปเบฅเบฐเบชเบดเปˆเบ‡เบ—เบตเปˆเบซเบ™เป‰เบฒเบชเบปเบ™เปƒเบˆ, เปเบ—เบ™เบ—เบตเปˆเบˆเบฐเปเบฅเปˆเบ™เปเบฅเบฐเบ—เบปเบ”เบชเบญเบšเบšเบฒเบ‡เบชเบดเปˆเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡เปƒเบ™เบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™.

เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡เบขเปˆเบฒเบ‡เบ•เปเปˆเป€เบ™เบทเปˆเบญเบ‡. เปเบ•เปˆเบขเบนเปˆเปƒเบ™เบ›เบฒเบ™เบเบฒเบ‡.

เป‚เบ”เบเบงเบดเบ—เบตเบ—เบฒเบ‡เบเบฒเบ™, Nikolai Nesterov เบšเปเปˆเบžเบฝเบ‡เปเบ•เปˆเปƒเบซเป‰เบšเบปเบ”เบฅเบฒเบเบ‡เบฒเบ™เบ—เบตเปˆเบเบดเปˆเบ‡เปƒเบซเบเปˆเบ‚เบญเบ‡เบ•เบปเบ™เป€เบญเบ‡, เปเบ•เปˆเบเบฑเบ‡เป€เบ›เบฑเบ™เบชเบฐเบกเบฒเบŠเบดเบเบ‚เบญเบ‡เบ„เบฐเบ™เบฐเบเปเบฒเบกเบฐเบเบฒเบ™เป‚เบ„เบ‡เบเบฒเบ™. AppsConf เปเบฅเบฐเบŠเปˆเบงเบเบ„เบปเบ™เบญเบทเปˆเบ™เบเบฐเบเบฝเบกเบ„เปเบฒเป€เบงเบปเป‰เบฒเบ—เบตเปˆเบกเบตเบ„เบงเบฒเบกเบซเบกเบฒเบเบชเปเบฒเบฅเบฑเบšเบ—เปˆเบฒเบ™. เบ„เบงเบฒเบกเบชเบปเบกเบšเบนเบ™เปเบฅเบฐเป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”เบ‚เบญเบ‡เป‚เบ„เบ‡เบเบฒเบ™เบเบญเบ‡เบ›เบฐเบŠเบธเบกเบ•เปเปˆเป„เบ›เบชเบฒเบกเบฒเบ”เบ–เบทเบเบ›เบฐเป€เบกเบตเบ™เป‚เบ”เบเบซเบปเบงเบ‚เปเป‰เปƒเบ™ เบ•เบฒเบ•เบฐเบฅเบฒเบ‡. เปเบฅเบฐเบชเปเบฒเบฅเบฑเบšเบฅเบฒเบเบฅเบฐเบญเบฝเบ”, เบกเบฒ Infospace เปƒเบ™เบงเบฑเบ™เบ—เบต 22-23 เป€เบ”เบทเบญเบ™เป€เบกเบชเบฒ.

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: www.habr.com

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™