ααααααααααα ααα·αααααΌα αααααααΆαα αααΎαααααΌαααΆααααααΎαααΆαααα»αα αααααααααααααΆααααΆαα’αα·αααααααααα»αααααααα’αΆα ααααΌαααΆαααααΆααααα»αααααααααααααΆααααΆαααΆααααα
αα
αααα’ααααααααααΌαααααα’αααα αΎα α’αααααααΌαααααααΆααααΆααΆα
- ααααΎααΆαα
- ααΆαα·αααΌα α’αααΈααΆααα’αα αα½αααΆαααααααΌαααααα·ααααα½αααΆαααΆαααααα’αααααΆαααααααααααα
ααααα·αααΎααααααααααΆααααΈαααααΌαααΆαααααα αααα’ααααααα»ααα ααΎααααΌααα ααΆααααΆαααααααα ααΎααααΈααΆααααα½ααα·αα·αααααΎαααααααααααΆααααα αα·ααα·αααΆαα ααααΈααααΌαααααααΆααα αααα ααΎαααΆαααααΆαα½αααΆααα½ααααα αΌαααΆαααααααααΆααα
CI ααΊααΆααα αΌαααΆαααΆααααα’ααααααα
αΌααααααΌαααααα’ααααα
αααα»αααΌαααα·αααααΆααααΌαα±ααααΆαααΉαααΆααααΆααααα’αΆα
ααααΎαα
ααΆαα α αΎαβα’αααβαα·αβααααΆααβααβαα½αβαααα
αΌαβααααΆβααα»αααααβαα ααα»ααααβααβαα·αα·αααβααΎαβααΆαα·α
αα
βααΆβα’αααΈβαααααβαααΆαβαααα»αβααααΎαααΆαα αααααΆαα’αααααααΌααα·αα·αααα
αααΎα αα·αααΉαααΆαα ααΆααΆαααααααα·αα’αααΈααααααααααααα·ααααα α’αααα’αΆα
αα·αα·αααα’αααΈαααααααααΆαααααα ααα»ααααα’ααααα·ααα½ααα α αΎααααααΆααΌαα ααα»α
- ααα»αααααΆααΈαααα. αα½αααααααααΆαααΆαααααα’αααααααααααααα·ααΈααΆαα½αααΆααααααααααααΆααα½αααααααααΆαααΆααααααααΆαααΈαααααΆαα½αα
- ααα»αααααααΎαα»α. ααΌα αααα ααααΆαααΆαα’αΆα ααΎαα‘αΎααα ααααααααΆαααααΎαααααααααΌαααΆαααααΎαααΆαααΎααΆααΆαα»α α¬ααα α»αααααΌαααΆαα ααααααααααΆααα’αααααΆαααααα
- ααα»ααααααα·αα. ααΌαααααα ααααααα»ααααα αααα·α αα ααΆααα½α αααα·αααΎαα‘αΎαααΆ βααΎααΆαα’αααΈαααααααΌααα·αα·ααα? αααα»ααααααααΈααα½α - α’αααΈαααααΎαααΆα! αααα»ααα·αααΆ α’αααααααααααΆααααα·ααααααααααα ααα»ααααα’ααααα½ααα·αα·αααααΎαααΆαα·α αα α
ααααααααααΆα ααααααααααααααΌαααΆαα’αα»αααα αα·ααααααΎααα
αααα»ααααα»αα’αα·ααααααα§αααααα
ααα Avito ααααααααα½αααααΆααα
ααΈ 0 αα
450 ααΆαααααααα»ααα½ααααα α αΎααααΆαααΈαααααααααΎαααΆααααααΌααααα»α 200 αααααααα»ααα½ααααα ααΆααα·ααΆαααΆ Nikolai Nesterov (
ααΏααααααΊααα’ααααΎα§ααΆα αααααααΆααααααααΆ Android ααα»αααααα·ααΈααΆαααααααΆαα αααΎαα’αΆα α’αα»ααααααΆααα ααΎ iOS αααααα
ααΆαααααα½α ααα»αααααααΆααααΆαααααΎααΆααα αααα»ααααα»α Avito Android α ααΆααα·ααααα ααΆαααα·αααααΌαααΆαα’αααΈααΈαααΆα ααααααααααααα ααααΆαααααΆααααΆααα’αΆα αα½ααααα αΌαααΆαα½αααΆαααα
ααα»αααααααααα·ααΈααΆαααΈαα ααααΎα ααΆαααΆαααααΈαααΆααααα αααΎαα‘αΎα α αΎααααα»αααααΈαα ααααΎααα ααΆαααααααα αα α ααα»α αααα ααΆαααααααααααααΌααααααΎαααααΎαααΆααα½ααααα αΌαααΌαααΆααααΌαααΆαα ααΆααααΌαααΆααααααα α α·αααααααΎ Git flow α
ααααααα·αααααα αΌα Git ααααΌαααΆαααααααΆαααααΆαα
αααΆααα αααααααα½αααΆαααΆααΆα’αα·ααααααααΌαα
αα½α α αΎααααααΆαααα»αααΆαααααΈααΈαα½αα α’αααα’αα·ααααααααΆαααΆααααΆααΆααΆα
ααααα‘αααα½α ααααααααΆα
ααααααΆ αα»α α αΎααα
αααααααα½αααα
αααααα
αΌαααΌααααααα½ααααα
αααα»αααΆααΆα’αα·αααααα ααΌαααΎα ααΆαααααΎα ααΎααααΈα
αααααααα
ααααααΉα αα·ααα·ααΆααααΆα’αααΈαα·ααΈααΆααααα ααΎαααΆαααααΆαααΆααα·αα·αααααΎαααΌα αααααΊ αα αααα·αααααΌααααα·αα·ααα αα·ααααααΆαααααααΌαααααααααΆαα
αα·ααα
ααα
αα·αα·ααα
ααΆαααΎαααΌαααααααααααααα’αααααΊαααααΆαα ααα»αααααα·ααααααααααΆααααα ααΌα ααααααΆααααα½ααα·αα·ααααααααααααααααααα·αααα»αααααΌαααΆαααααΆαα
- ααααΌαααΎααα·αα·ααα ααΆααα½αααααα»αααααΆ ARK.
- α αααΎα ααΆαααααΎααααα Junit.
- ααΎααα·α αΆαααΆααΎααΆαααααααααααααΌαα αΆααααΆααααΈααΎααααα»αααααΎαααΆαααΆαααααΎαααααα
ααΎααααΈαααααΈαααααααααΆααααα½ααα·αα·αααααΆααααααα½αααααααΎαααΆα ααΌαααΎαααααΎαααΆαα’αα·αααααααα αααα»α Avito α
ααΆα’αΆα ααααΌαααΆαααααΆαααααααααααΆαααααΌα ααα:
- α’αααα’αα·αααααααααααααΌααα ααΎαα»αααααΌααααα½αααααααααΆααα α’αααα’αΆα ααααΎαααΆαααΆααααα½ααα·αα·αααααΆααα½ααααα αΌααα ααΈααα - ααΆααααΆαα½α commit hook α¬ααααΆααααααααΎαααΆαααΆααααα½ααα·αα·ααααα αααα»αααααααΆααααααα
- αααααΆααβααΈβα’αααβα’αα·ααααααβααΆαβαα»αβααΌαβαα½α ααΆααβααΎαβααααΎβααΆαα ααΎααααΈα±αααααααΌαααααααΆααααΌαααΆααα½ααααα αΌααα αααα»αααΆααΆα’αα·αααααα ααΆα αΆαααΆα αααααΌαααααααΆααααΆααα·αα·αααααΌα αα·ααααααΌαα ααα½αααΆααααααΆαααααααααΌαααΆαα α’αααα’αΆα ααΎαααΆααααα½ααα·αα·ααα αα·ααααααΎααα ααΈαααα αα αΌααααααΆαααααΆαααΆααΆααα’ααααα½αααΆααααααα ααααΎααΆααα·αα’αΆα αααα αΌαα αΌαααααΆααΆαααα
- αααααΆααβααΈβααααΎβααΆαβααααΌαβααΆαβαααα αΌαβααααΆ α αΎαβααΌαβααααΌαβααΆαβαα½αβαααα αΌαβαααα»αβααΆαβα’αα·αααα α’αααβα’αΆα βααααΎαααΎαβαααβααααΆβααβααΆααααα½αβαα½αα α§ααΆα ααα αα βαααβααα αααβαααΆαααΈαβααβααΆααα’ααβααααα α αΎαβααααΎαααΆαβαα·αα·αααβα αααΎαβααΆαβαααβα’αααβα αΌαα α·αααα
ααααΆαααααΆααααΆααα αΌαα α·αααααααΎαααΆαααααααα ααΎαα»αααααΌααααα½ααααααααα½αααααα αα αααα’αααα’αα·ααααααααΆααααα αααα»αααΆααα½α ααΆααα αααα»αααΆα±ααααΏα α αΎαααΎαααααΎααΆαα ααααα·αααΎαα αααααα ααΆααααα½ααα·αα·αααααααααααααα½αα ααα½αααααΌαααΆαα αΆααααααΎα ααααα·αααααΉααααα·αααΈαααΆαααα»ααααααα ααα»αααααααααΆααααααΎα±ααααΆαα’αα·ααααααααΊααααααα ααααααααααα»αααααΌααααα½ααααααα»ααα·αα·αααα’αααΈαα½α ααΆαα·αα’αΆα αα αα½α αααααα»αααΆαααααΎαααΆαααΆααααααΆααΎααΆα
ααΎααα·αααΆα αΌαα α·αααααααΎαααΆαααΆααααα½ααα·αα·ααααα αααααα ααΈαααααααΆααααα αααΎα αα·ααααΆαααΈααα α’αααα’αΆα ααΎααα»ααα·αααΆαα ααα»ααααααΆα’αα»αα αα ααααααααΌααααααααα·αααααααΌαααΆααααααΎαα‘αΎα α’αααα’αα·ααααααααΆαααΆαααΎαααΉαα α·ααααα·α ααΆαα αααΎααααα»αααΆααα½ααα»αααα α»αααα CI ααΆαααααΎαα αααα»αααΆααα·ααααα½αα―αααΆαααα αΆα αα αααααααααα»αααΎαααα α»αααΆααα’αααααααΆαααααΎααα αααα»ααααΆαααΆααααααααααΉαααααααα»αααΉααα½ααα»αααΆαα ααααααΆαα½ααα αααααααα αααααα₯α‘αΌααααααΆααα·α αα ααΆαααααΈαααααααΆαααα½ααα αααα»α Jira ααααααα»αααααΆααααα ααα αΆααααααΎαααααΎα
ααααα·αααΎαα·αα·ααααααααααΆααααααΎαααΆα αααααΆαααΆαααΎαααΉαα α·ααααααααααααΆαα ααΈααααααα αΌααααααΆααααααΎααα ααΆααααααα ααΌαααΉααα·αααααΎαααΆααα αααααΆααααααΆαα·α αα ααΆαααΉααα·αααααΌαααΆααααα ααα
ααΆαααααα ααΎαααΆαααααΎαααΎααα»αααααΆαααααααΌα ααΆααααααα ααΎαααααΎαααΆαααΆααααα½ααα·αα·αααα’αα·ααααΆαααα’αΆα ααααΎαα ααΆααα αααααα α αΎαα αΆααααααΎαααΆααα·αααααααα»ααααααα½ααα α αΎαααααΆαααααα»αααΊααΏααααα»αααΆαααααΎαααΆαα ααα»ααααααΎααα·αααααα ααΈααααα - ααααααααΆ ααΎααααααΎαααααΏαααααΆααααα½ααα·αα·ααα ααΎααααΈααααααα½αααΆααΈαααααααααα ααΎααααΈααΆαααΆααααα½ααα·αα·αααααααΎα
αα αααααα ααΆαααΆααααααααααΎαααΆααα’ααααααΌαααΆααααα αααααΆαααΆαααα αα ααΌα ααααααΎαααααΆαααααα½ααααα αΌαααΆαααααΆαααΆ ARK ααΆαααααΎααααα Junit αα·αααΆαααααΆααΆαααααααααααααΌαααΆα’ααααααααααΆαααααααΆααααααΎααΆαα ααΎαααΆαααΎαααΆ αα·αα’αααΈααΆ α αΎαααααααααΆααααααααααααααααΌα αααααΆαααΎααα·αααΆααΎααα·αααααΌαααΆαααΆααα
ααΆααααΌαα αααΆααααααΈαααααααΎααααΈαααα α CI ααΌαααααΆαααΆαααααα»α (αααααΆααααΆααααΆααααααΆααααααααΆααΊαααα αΆαααααα αα ααααΌαααΆααααααΆααααααΆα)α
αααααΆααααΈαααααΎαα αΆααααααΎααα·αααααααααα - ααΎααΎααα·αα·αααααΎαααααΉαααααΌααα? ααΎβααΎαβαααα»αβααααΎαααΆαβαααααΎαβααΆαβααααΎβααΆαβααααΉαααααΌαβα¬βαα?
ααΎαααΆαα αΆααααααΎαααΆααααααΎααΆαααααααααΆα α·αααα α»ααααααααααΆααΆαααααααΎαααΆαααααΌαααΆαααΎαα ααα»ααααβααΆαβααΆαααααβααβααΆαβαααααααΉαααβαααβα’αΆα βαααα αΆαβααβααΆβααΌαβαααβα’αααβα’αα·ααααααβααΆαβαααααβααααΎαααΆαβααα»αααααα ααα»ααααβααβαα·αβαααααΆααβααΆβααΆααβαα·αβααΆαβαααααβα’αααΈβαααβααα ααΆααΆααα·α α’αααααααΌααα·αα·αααααΎαααααΆαααΆαααααΆααΆα’αα·αααααα αααααΆααααΈαααααααα·ααααα½αααααΌαααΆααααα αΌααα αααα»αααΆα
ααΎααααΈααααΎααΌα
αααααΎααααααααααααΈα bash ααΆαααα premerge.shα
#!/usr/bin/env bash
set -e
git fetch origin develop
git merge origin/develop
αα ααΈαααααΆααααΆαααααΆααααααΌαα α»αααααααααα’ααααΈααΆαα’αα·ααααααααΊααααΆααααααΆαα‘αΎα α αΎααααα αΌααα αααα»αααΆααΆαα αα α»ααααααα ααΎαααΆαααααααααααααΈα premerge.sh ααΆααα αΆαααααΌααααα»αααΆααααααΎαααΆααα’αα α αΎαα αΆααααααΎααα·αα·αααααΎαα’αααΈαααααΎαα ααααΆα αααααΊ ααΆααα½ααααα αΌα.
ααΆα αααΆααααααΈααααααΎααααΈααααΎααΌαααααΆααΈααααααααα αΆ ααααααααααααααααΆα αα·ααααααααααααΈααααα
αααααα·ααΈαααααΆαα’αα·αααα ααΆαααΆαααΆααααα αααΎαα‘αΎααααΆααααα αΆααααα½α αααα»αααΆαααΆαααΆαααΈαα ααααΎα α αΎαααααααα premerge.sh ααΆαα αΆααααααΎαααααΎα±ααααΎαααα α·αααα Develop ααΆαααΆαααααΆααααααΌαααααααα»αααααΆααααααααααΆαααααΆαααΆα
α§ααΆα ααααααααααααααΆααΎαα‘αΎαα
α’αααα’αα·ααααααααΈαααΆααα
αΆααααααΎαααααΎααΆαααΎαα»αααΆα A αα·α B αααα»ααααααααΆαααααΆα α’αααα’αα·αααααααα»αααΆα A ααααΎααα»αααΆαααααα·αααααΎαααα»ααααααα answer()
α αΎαααΌα
ααΆααΆαααΉαααα·αααααααα’ ααααΆα
ααα αααα»ααααααΆαα½αααααΆααα α’ααααααααΎααα»αααΆα B ααααααααΆαα α
ααααΈαα
ααΆαααα»αααΆαααααα
αααα»αααΆααΆααααααΆααα
α’αααα’αα·αααααααααα ααααΆαααΆααααααα½ααα α αΎαααΎαααααΎααΆααααα»αααααααα½αα ααΆαααααΆαααΆααααΌαααΆαααΎαααααΎαααΆα premerge.sh αα·αα·αααααααΎααΆαααΆααααΈαααΆααααααΉαααααΆαααΆαα’αα·ααααααα α»αααααααααα’αα - ααΆααααα½ααα·αα·αααααΆααα’ααααΆααααααααα αααααΆααααΈααα ααααΎααΆααααα»αααΆα A ααααΌαααΆααααα αΌαα αΌαααααΆ ααααΎααΆααααα»αααΆα B ααααΌαααΆααααα αΌα... αααΌα! α’αα·ααααααΆαααααααααααΆαααααΌαα’αα·ααααααααΆαααΆαα α αα ααΆαααα»αααΆαααααα·αααΆαα
αα
ααααααααΆααΉααα·αα’αα·αααα, ααΆααΊααΆ ααααααα αααααΆααααα»ααααα»α. αααα»αααΆααααΌααα·αα’αΆα
αααααΌαα’αααΈααΆααα’αα α αΎααααααΌαααΆαααααΆααααΆαααααΎαααααα
ααΆααΆαααΎαα‘αΎαααααααα»αααααΎααΆαααΆααΉαααΆαααααα»αααΎαα·α αα ααΆαα αααααΆαα ααΆααααααααα ααΆααα·ααΆα αααααΆα ααΌαααααΆααα·ααααααα αααβααΊβααΆβαααα»αβαααβααΆαβαααααβαα»αααΆα αα·αβααααΆααβαααβα’αααβα’αα·ααααααβαααααβαααβααααΎα αααβααΆαβααβααΏαβααα αααα»αβααΎαβαααα½αβα―αβαααα·αβαααα»αβααααΆαααΆαβααααααβααααΆβααΆβααΉαβααΆααα αααα»ααααααΆααααΆαααΌαααΆαααααααα½ααα½ααααα
αααααΆαααΆαα·αααααΉαααΎα ααΎαα
αΆααααααΎαααααααααααααΎαα’αααΈααααααΆαααΆααααα αΆαααα
ααααΎβαααα βαα»αβα²ααβααΌα βα’αα·αααααα
αααααΎαααααΌα: αααααΎαα‘αΎααα·αααΌαααααΎαααΆαααΆααα’αααα αααααααΎαα αα α»ααααααααΆαα’αα·ααααααα ααααα·αααΎαααα»αα§ααΆα αααααααααΎα ααααΎααΆααααααΆααααααααα·ααα A ααΊααΆααααΌααααααααΌαααΆααα½ααααα αΌααααα»αααΆαα’αα·αααααα ααααΎααΆααααααααααα·ααα B ααΉαααααΌαααΆαααααΆαααΆα‘αΎααα·α α αΎαααΆαααα ααΆααααα½ααα·αα·αααααΉααααΆααααααααΆαααααα α»ααααα»αααΆαα αααααα
ααΎααααΈαααααΈαααααααααααΆααΉαα αααΆααααααΌα ααΌααα·α αΆαααΆα§ααΆα αααααΆαα½α PRs ααΈαα ααΎαααΎα PRs ααΈα: ααΆααααααΎαααΈα, ααΆααααα½ααα·αα·αααααΈαα αααααΆααααΈ PR ααΈαα½αααααΌαααΆααααα αΌααα αααα»αααΆαα’αα·αααααα ααααααααΈααΈαααααΌαααΆααααα‘αΎααα·αα ααα»ααα PRs ααΈααααααΌαα±ααααΆαααΆααααα½ααα·αα·αααα ααα½αααΈ: 2 + 1 = 3 α
ααΆαααααΆαααααΆαα·αα’αΈααα ααα»ααααααΎαααΆαααΎααααα·αα·α αΎαααααΆαααΆαααααααΆαα αααα»ααααα»αααααααΎαααΊ 10 PRs ααΎαα αα α αΎααααααΆααααα ααα½αααααΆααααα½ααα·αα·αααααΊααΆααααΌααααααααααΆα: 10 + 9 + ... + 1 = 55 α αααααΊααΎααααΈααα½ααα 10 α PRs α’αααααααΌαααΆααααα‘αΎααα·α 55 ααα α αΎααααααΊαααα·ααααα»αααααΆαααΆαααααα’αα½α αα ααααααααΆααααα½ααα·αα·αααααΆααα’ααααααααΆααααΆααΎαααααΌα αα ααααααααααΆαααααΆααααΆααααΎαααααΎαααΆααααααα αααααααααααΆαααα·αααΆααααααααα»αααααΎαααΆαα
αααααααΆαααα½αα’αααααΆα’αααα’αα·αααααααααααααΌαααα α»α ααΎαααΌαα»α "αααα αΌαα αΌαααααΆ" ααΆαα»ααα·α ααΈαααααααααα·αααΎα’ααααα·αααΆαααααΎααΌα ααα α’αααααΉαααααΌααααα αΆααα αΌααααααΆαααααΆαααΆααΆααα’ααααααααΆααααααααα... αα ααΆααΉααα·αααααΎαααΆααα ααΆααΉαααααΎα±ααααΆαα’αα·ααααααααΊααααΆααααΆααααααααααα
αα·ααΈααΈααΈααααα’αΆα ααααΎααΆαα αααααΌαααααΎααΆααααααΆααααΈαα·αα·αααααΌαα αααααΊα’αααααΎαααααΎααΆααα½α αααααΌαα ααα½αααΆαααααααααααααααΌαααΆαααΈαα αααα·α αααααααΌαα’αααΈαααααααΌαααΆα α αΎααααααΆααααα αΆααααααΎαααΆαααααΆαααΆα ααααα·αααΎαα½αααααα½αααΆααααααα ααααΎααΆαααααΌαααΆααααα αΌααα αααα»αααΆαα’αα·ααααααα αααα»αααααΈααα αα·αααΆαααΆαα αΆααααααΎαα‘αΎααα·ααααααααα ααα»ααααααα·αααααα’ααααΌαααΆαααα α»ααααΆαααααΆααα αααα»αβααΆαβααΆβα’αααβα’αα·αααααα αααβαααα»αβααΎαβααααΎβααΆα αααα»αβα ααβααΉαβααααΆαβααΆβααΎβααΆβααΉαβααααΎαααΆαβα¬βα’ααα ααΆα§ααΆα ααα ααααα·αααΎααΆαααααΎααααααααΆααα α’αααααααΌααα½ααα»αααΆα±ααααΏαα αααα»αααααΈβααΆαβααΆααααβααΊααααΆα ααα·βαααααα’βααα α»α α αΎαβααΌα ααααβααΆαα’αα·ααααααβααΆααααΌαα ααααααα·αααααΉαααΎααααα
ααΆααααααααΆααααααααΎαααΈααΈααα»αααααααααα ααα - ααα. ααΌαααααααΎαααΆααα’αα αααααααααααΎαααΆααα’ααααααΌαααΆααααααΆαα»ααα αααα»αααααΆαααα½ααα ααΎαααΆαααΈααα Bitbucket α ααΌα ααααα αΎα ααΎαααααΌααααααααΎααααααα·ααΈαααα½ααααααΆαα Bitbucket α
αααααα·ααΈαααα½ααααααα·αααααααααΆαααααΆαα
ααααΆα
ααααα
αΌαααααΆααααααΎααΆαα ααΆαα
αΆααααααΎαααΊααΆαααααααΆαα PR ααΎα ααΆααα½αααααα»αααΆααα’ααααααΌαααΆαα
αΆααααααΎα ααΆααα·αα·αααααΎαααΌαααΎαα‘αΎαα ααα»αααααααααΆααααΈααΆααα·αα·αααααΎαααΌαααααΌαααΆααααα
αα αα·αα’αααα’αα·αααααααααααα
α
α·αααα
α»α
ααΎ "αααα
αΌαα
αΌαααααΆ" αααααα·ααΈαααα½αααΉααα·αα·αααααΎαααΆααΎααΆααα·αα·αααααΎαααααΌαααΆαααααΎαααΆααααααααααΆα ααααα·αααΎααΆαα’αα·ααααααααααΌαααΆαααααΎαα
αα
α»ααααααααΆααααααΆααααΈααΆαααααΆαααΆααα αααααα·ααΈαααα½αααΉααα·αα’αα»ααααΆαα±ααααααΎαααΆαααααααααααΌαααΆααααα
αΌααα
αααα»αααΆααΆα
αααααααααα ααΆααΉαα
αΆααααααΎαα‘αΎααα·αααΌαααΆααααααΎαααααΆαα’αα·ααααααααααΈαα
αααα»αα§ααΆα αααααααααΎαααΆαα½αααΉαααΆαααααΆααααααΌαααααααα»αααααΆ ααΆαααααΆαααΆααααααααΉααααΆααααααααΆαααααα α»ααααα»αααΆαα
αααααα ααΌα
ααααα αΎα α’αααα’αα·αααααααα»αααΆα B ααΉαααααΌαααααΌα α
αΆααααααΎαααΆααααα½ααα·αα·αααα‘αΎααα·α αααααΆαααααααααα·ααΈαααα½αααΉαα’αα»ααααααααΎααΆααααααααααααααααα·α
αα»ααααα’αα»αααααααααα·ααΈαααα½αααα ααΎαααΆαααΆααααααααΆααααα 2,7 ααααΎαααΆααααα»ααα½αααααΎααΆαα ααΆαα½αααΉααααααα·ααΈαααα½αααΆαααΆαααΎαααααΎαααΆα 3,6 α αααααααΉαααΎαα
ααΆαα½αα±ααααααααααΆααααΆαααααα·ααΈαααα½ααααααΆααα»ααα·ααααα·αα½α: ααΆα αΆααααααΎαααΆαααααΆαααΆα‘αΎααα·αααααααααα»αααααα αααβααΊβαα βααΆαβαααα’α½α βααΌα βαα½αβαααβααΆαβααααΆααβααααΌαβαααβααΆαβααααααβα’αΆα βααΆαβαααβααΆαβα’αα·ααααα ααα»ααααααααααΆαααααΆααααααΊααΆαααααα·αααΆα α αΎαααΎαααΆαααααΎααΆααααααΌαααααααΆαα ααα½αααααΆαα αΆααααααΎα αα·αααααααΆαααααΆααααΆαααα αααα»αβαααβαααβααΈαβααααΆαβααΆβααΆαβααΆααβααβαααα ααΌα ααααβααΆβαααα ααβααΆβαα·αβα₯αβααααααααβααα
ααΎαα αααΆααααααΈααααααΆα αααΎααααΈαααααααααααααΌααααααααα·ααΈαααα½α Bitbucket α
ααΆααααα½ααα·αα·αααααααΈα
αααααΉαααΉαααα αααα»αααααααΎαααΆαααααααΈαα ααααΎαα ααΆααααα½ααα·αα·αααααααΈααααΌαααΆαααααααα
ααΎαβαα·αβααΆβα βα ααα»βα’αααΈβααΆαβααΆβααααΎβαα»αβααααα·αβααΎβαα½αβααβα’αΆα βααααΌαβααΆαβααΆααΆαα? αααα αΎαααΆααΌαα ααα»ααααα½αααα’αα»αααα ααΆααα·ααΆαααΌααα·αα·αααα. ααΎαααΆαα αΆααααααΎαααΆαα½α lint αααααααΌαααΆααα½ααααα αΌααα αααα»α Android SDK α ααα»αααααα ααααααααΆαααα·αααΉαααΈααααααααΎααΆαααΆαα½αααΌα Kotlin ααΆααααααα α αΎαααΎαααΆα 75% αααααααα·ααΈαααααΆαααααααα αααα»α Kotlin αα½α α αΎαα ααΌα αααα ααααα»αααααααΆααααααΆαα½αααααΌαααΆααααα αΌααα αααα»ααααααΆααααΎ Android Studio αα·αα·αααα
ααΎααααΈααααΎααΌα αααα ααΎαααααΌαααααΎααΆααααααααααΆα αααΎαα αα Android Studio ααΆαααααα ααααΆαα αααα»α Docker α αΎαααααΎαααΆαααΆαα ααΎ CI ααΆαα½αααΉααααΌααΈααααα·αααα·α ααΎααααΈα±ααααΆαα·αααΆααΆααααΎαααΆαααΎαα»αααααΌααααα½ααααα·αααααΆααα ααα»ααααααΆααααΎαααΆαα
ααΆααααΆα’αα‘α»ααααααααααααΎαα αΆααααααΎααααααα αααΎαα ααΆαααααΎαααααα§ααααα αα·αααΆαα’αα»αααα ααΆαααααΎαααααα’αααααα. αααααΊααΆααααααααΌαααα’αααααααααααααΌαααΆααααααΎααααααΆαααα·αααααΆαααΌα αα½αααΆα ααααα‘αα α αΎαααΆαααααΎααααααα½αααΆαααΆαααα’ααααααααΈαα·αααααΆα α αΎαααααααααααΆααΆαα½αααΉααααααααΆααααααααΆαααααααΈαααααααααΈααααα ααααα·αααΎααΆαααΆααα·αααααααααΆ ααΆααΆααααααΆααααααα»αααααααααΆαα½α α¬ααΆαα’αααΈαα½ααα»ααα αααα»ααα ααΆαααααα
ααα»ααααααΆαααααΎαααααα§ααααα αα·αααΆαααααΎαααααα’ααααααααααΌαααααααΎαααΆααα ααΎα§αααααα αα ααΎαααααα·ααΈααααΆααααΆα α¬αα ααΎα§ααααααα·αα ααααα·α αΆαααΆααΆααΆαααΆαααααΎαααααααΆα αααΎα α αΎααα½αααααααΌαααΆαααααΎαααΆαααΆααΉαααΆαα ααα·ααααΆαααΆααααΌαααΊα αΆαααΆα αα ααΆαα αΆααααααΎαααα·ααααΆαααααΆαααααα½αααααα’αααααΊααΉαααα’ααααΎαααααΆααααααααααααΆααααα ααΌα ααααααΎαααΆαααααΎααααααΎααααααααααα½α ααΆααααα - Firebase Test Lab α
αααααΈααα·ααααα Firebase
ααΆααααΌαααΆαααααΎαααΎααααααΆααα Firebase ααΊααΆααα·ααααααα Google αααααΆααααααΆααΆαα½αααα’αΆα αα»αα α·αααααΆα αα·αααααααΆαα·αααααΆααα αααααααΊααα ααα»ααα 5 αα»ααααΆααααα»ααα½αααααααααααα·ααααα·ααΆαααααα§ααααααα·α 1 αα»ααααΆααααα»ααα½αααααααααααα·ααααα·ααΆααααααααααα·ααΈααααΆααααΆαα
ααΆα αααΆαααααααα ααααΈαααααΆα αααΎααααΈα’αα»αααα Firebase Test Lab αα αααα»α CI ααααααΎαα
ααα»αααααααα»ααααααΆαααααααΈαα ααααΎα α αΎαααΆα’αα»αα Firebase ααΆαα αΆααααααΎαααααΎα±ααααΎαααααΆααα α»αα αα ααααααααΆαααα·αααΆα SLA ααα ααααααα Firebase ααΆαααααΎα±ααααΎααααα αΆααα αΌααααα ααα½αα§ααααααααααααΌαααΆαααΊα₯ααα·ααααααααααΆααααΆαααααΎααααα α αΎααα·αααΆαα αΆααααααΎαααααΎαααΆααα½αααΆααααΆαα ααΌα αααααΎαα ααααΆααααααα ααΆααααα αΆααααα»ααα½αα αααΆααααααααα ααααααααα αααααΆααααααααααΌαα ααΆαααααΎαααααα§αααααααααΌαααΆαααααΎαααΆαααΎααΆαα PR ααΆααααααΆαααααα·αααΆααααΎα±ααααΆαα’αα·ααααααααΊααααΆα α αΎααααααΆαααααα·αααααααααααα αΆαααααΆαααααΆαα½αααΉαααααΌααα»αα ααΆααΌαα ααΆααααΌαααΆααααααα α α·αααααααααα αα Firebase αα·αααααΎααΆααααα»ααααα α αΆααααΆααααΈαααα»αααΆαααΈαα ααααΎααααααααααΆααα
Docker + Python + bash
ααΎαααΆααα Docker αααα αΌααααααα·ααΈααααΆααααΆααα αααα»αααΆ ααααααααααα·ααΈααΆαααααα½ααα αααα»α Python ααααα αααααααΉαααααΌαααΆαααααΌαα ααα½ααααααα·ααΈααααΆααααΆααααααΆαααΆααα αααα»ααααααααααααΌαααΆα α αΎαααααααααΆαα αααα αΆαααΆα αα α αΎαααΆααΆααα·αααΆαα ααααααΈα bash ααΈαααΈ - ααΎααΎαααΉααα α―ααΆαααααααΆααα½αααΆ?
ααΆα αααΆααααααααΆααααααΆα αααΎααααΈαααααΎαααα·ααΆααΆαααΆαααααααααΆαααααα½αααααααΎαα
ααΆαααααα αααααΆααααΆααααΆαααααΎαα»αααΆα ααΆααααααΈαααα½ααα·αα·ααααα½ααααα αΌαααααΆαααΆαααΌααααΌααΆαα
- ααΆααα½αααααα»αααααΆ ARK;
- ααΆαααααΎααααα Junit;
- ααΈα;
- αα·αα·ααα Android Studio;
- ααΆαααααΎαααααα§ααααα;
- ααΆαααααΎαααααααΌαααα’ααααααα
αααααΆαααΆααΆααααΆααααααΆαααααα’αΆα ααΎαααΆαααΆα αααΎαα ααΆααα αα αααααααααααααΆαααααΎαααΆα ααα»ααααα’αααα’αα·ααααααααΆαααα’αΌαααα’ααααΆααΆααααα αΆαααααααααΊααΌααααα
ααΎβααΌαβααα»ααααΆβαα ? ααΎαααΆααααα»ααα·ααααααααΈ Bitbucket αα·α TeamCity αα αααα»ααααααααααα·ααΆα α αΎαααΆαααΉαααΆ αααααααΆαααα αΆαααΆααααα 45 ααΆααΈα. αααααΊα’αααα’αα·αααααα αα αααααΎαααααΎααΆα αααα αΆαααΆααααα 45 ααΆααΈαααααΆααααααααααΆααααα ααΆααααα·ααααααααα»α αααααΊα αααΎαααΆαα α αΎαα’ααααα·αα’αΆα ααααΎααΆαααΌα αααααα
ααΆβααΆαβαα·αβααΆαα ααΎαβααΆαβαααααα βα α·αααβαααααΏαβααΆαβααΆαβαααβααααβααΎαβααΆααβα’ααα
ααααααααΎαααααΏα
αααααΎαααααααααα αααΎαααααααΆαα½α ααΏαααααΌααααααΎαααααΎααΊ ααΆααα·α Hardware ααααααααα - ααΆαα’αα·ααααααααΌααααΌααΆαααΊααΆαααααααα»αα Builds ααΆαααααααααΆααααααααα½α ααα»αααααααααααΆαααα αΆαααΆαααα α»αααααα·α ααα»ααααα αααααΆαααααΆααααα½ααα·αα·ααααα½αα ααα½αααααααα½αα―αα αααΆααααααΌαααΆααα
ααΆαααααΌααααααΆαααααααααα αααΆααααααΌαααα
ααΆααα½ααααα αΌαααΆαααααααααΆααααααααΎαα’αΆα α αΆααααααααααααααα α»α αα·ααααα αΆααΆαααααα
- αα·ααα . CI α’αΆα α αΆααααα α»ααααα»αααΆαα ααααααα ααααααα’αααΈαα½ααα·ααααααΎααααααΆαααααΆαααααΆααααααΌαααααααα»αααααΆα ααΌα ααααααα»αααΆααα·ααΆααα½α ααα αΎα ααααΆαααααΆααααΆααα’αΆα αααααΌααααα»αα’αααΈααΆαα‘αΎα ααΆαα’αα·ααααααααααα α αΎααααααααααΆααΆαααΆααααααααΆα α
- ααα α»ααααα»αα’αΆαααααα·αα·ααΆ. α§ααΆα ααα αα αααααααααααα·ααΈααααΌαααΆααααααΎαα‘αΎα ααα»ααααααΆαααα αααα’αααα α»α αααΌαα»α α¬αααΌαα»ααα·αααααΌαααΆαα α»α ααΆαααααααα ααααα·αααα’αα αααααααα α»αααααααα’αΆα αα αααα’αααααααΎααααΆααα
- ααα α»ααααα»αααααα. α§ααΆα ααα αααΌαα»ααα½αααααΌαααΆαα α»α ααα»ααααααΆαααααΆααααΈ 10 ααΈαααααα ααΆααααααα
- ααΆαααΎαα‘αΎααααααα»ααα αα ααααα.
αααααΆααβααΈβααΎαβαααααΈβααα ααΎαβααΆαβααΉαβααΆβααΆαβααβααΈαβα ααα»α βααααΌαβααα»αααααβαααβααααΆααα ααΎαα ααα αΆαααααα αΆααααααααΆαα»ααα·αα ααα α»ααα αααα»ααααααααααΌαααΆαααααΎααα ααααΆααααΆααα·αα·αααααΆααα ααΆ α αΎαα’αΆα ααααΆααααΆαααΆααααα½ααα ααααααα ααΆααααααααΆααααα»ααα αα αααααααΆαααΆαααααΎαααΆα αα·ααααααΆαααΆα ααααα‘αα ααΌα ααααααΎαααΆααααααα α α·ααααα·αααΆαααααααΆααΆαααααΎαααΆαα
αααααα’ααααΎααΆαα αΆααααααΆααααα ααΎαααΆααααααααααααΎαααααΈαααα½ααα·αα·αααααΆααααΌαα ααααααΆαα Lint α αΎαααΆααααααΆααααααΆαααΎαααααΎαααΆααααααααα½αααααα½ααααα ααΎααααΈα±ααααΆαααααΎααααΆαααΆαααα’αααΈαααα αΆααΆα αααΎααα αααα»αααααααα ααΎαααΆααααααααααααΎααΆααααα‘ααααΈααααΆααΆαα½αααΉααααα»ααα αα ααααα αα·α ααΆααααα½ααα·αα·ααα Android Studio ααααΌαααΆαααααααα ααααΆαααααα»α. Android Studio αα αααα»α Docker αααααΆααααααΎαααΆαααΆααααα½ααα·αα·αααααααΆαααα αα½αα±ααα αΆααα’αΆαααααα ααα»αααααααααΆαα±ααααΆααααα αΆααΆα αααΎααααα»αααΆαααΆααααα ααΆαα’αΆαααααααΆαα½αα αααααααα Android Studio ααΆααααααΆααΆαααΆαααααΌααΆαα½αααΉαααα α»αααααα·αα’αΆα αααααΆαα ααΆαααα·ααΆααααα»αααΆαααΆααααααΆαααααΎαααααααΌαααα’ααααααααααα ααΈααααααααααΆααααα·αααΆααααααααΆαααααΆαα α αΎαααΆαααΆααα·αααααΆααα·ααα·αα ααΆαααααΎαααααααΌαααα’ααααααααααΌαααΆαααα ααααΈαααααΈαααα½ααα·αα·ααα.
ααΆααααααααΎααα αααα
- ααΆααα½αααααα»αααααΆ ARK;
- ααΆαααααΎααααα Junit;
- ααΆαααααΎαααααα§αααααα
Gradle ααααΆαααααααΆααααΈα ααααΆα
ααΎααααΆαααΆααααα½ααα·αα·ααααααααααα α’αααΈαααΆααααααΎαα‘αΎα ααα»ααααααααΆαααααααααα ααααααΆαααα’α₯αααα αααα!
αααααα·ααΈααααααΎαααααΌαααΆαααααααα ααΆαααΌαα»α gradle αααα αα 150 αα½α α αΎαα ααααΆαααααααΆααααΈα ααααΆα Gradle ααΆααααααΆααααΎαααΆαααα’αααα»αααααΈααα ααΌα ααααααΎαααΆααααααα α α·αααααΆαααααααΆα
ααααΆαααααααΆααααΈα ααααΆα Gradle ααΊααΆααααΆαααααααα’αΆα αααααΎαααααΆαααααααΆαααααααΆαααα·α αα ααΆαααΈαα½αααα αααα»ααααΌαα»αααΈαα½ααα Gradle αααα½αα±ααααΆαα αααααααΌααα·αααααΆαα ααααΎ HTTP ααΎααααΈαααααααΆαααααααΆααααΈα ααααΆα α αΎααα½αααΆααΎααααΆααααΆααααΆαααααααα·α αα ααΆαααααα½α α αΎαα¬αα α ααααα·αααΎααΆα/α αΆα ααΆααααΆααααααΆαααααααααα
ααΆαααααΎαααΆαααααΆαααααααΆααααΈα ααααΆα Gradle ααΊααΆααααα½αααααα Gradle αααααααΌαααΌαααΆα Docker α ααΎαα’αΆα ααααΎααΆααΆααααα»αααααααααΈααααα
α’αααΈαααα’αααααααΌαααααΎααΊα αΆααααααΎα Docker α αΎαααααααα½ααααααΆαααα αααα»αααααααα ααα»αααααααααΈααΆααΆα’αΆα ααααΌαααΆαα αΆααααααΎααααΆαααΆαααα ααααααα ααΆααΉαααααΌαααΆααααααααΆα αααΎαααΎααααΈα±ααα’αααΈαααααΎαααΆαααΆαααα’α
ααΆααααααβαααβααΊβααΆβααααΆααβαααααΆααβααΉαβααααΆα ααα
αα
ααΎαααααΌα ααΆαααααααΆαααΆααααααΆαααααααΆααααΊαααα αα 65 α αααααΆααααΈααΈαααααΆα α ααΎαα’αΆα
αααααΎαααααααααααα 20% α ααΆααΆαααααααααΆαααΆααΆααα·α
αα
ααααααααα·ααΈ Android αααααΌαααΆαααΆαααΆαα’αΆαααααα’ααααααΆαα
ααααααααααΆαααααΆαααα Gradle ααααΆαααααΆαααααααΆααα
ααΆααααααΆαααααΆααααααΆαααααααΆαα ααΎαααΆααααααΎαααααΏαααΆααααΆααααΆαααααΆααα ααα»αααααααα ααΈααΆααα½αααααα»αααααΆ ααααΆαααΆαααααΎαααααα§αααααααααα α αΎααα½αααααααΌαα αααΆααααααΌαα αααα ααααΆαα·αααααααααααΆαααααΎαααααααΆααα’ααααααΌαααααΎαααΆααααααΆααααΆααααΆαααααΎαα»αααΆααααααα ααΎααααΈαααααααα ααΎαααααΎααΆααα·ααΆααααααααΆααα
ααΆααα·ααΆααααααααΆαα
ααΆαααααΎαααΆα ααΎααααααΌα git diff α αΎαααααααααααΌαα»α Gradle αααααΆαααααααα
ααΆααα ααα»αααααα»αααΆαααααΎαααΆαααααΆαααααΎαααααα§αααααααααα·αα·αααααΎααααΌαα»ααααααΆαααααΆααααααΌα αα·ααααΌαα»αααΆααα’αααααα’αΆαααααααΎαα½αααα αα·αααΆαα
ααα»α
ααΆαα½ααααα»αααΆαααααΎαααΆαααΆαααααΎααααααααααΆαααααΌαα»ααα·αααΆααααααα αααααΌααα
ααΈααααα·αααΆαααααΆααααααΌααα α αΎαααααΆαα’αααΈα’αΆα
αααααααΆαααα
ααΆαβααααΎβαααααβα§αααααβαα·αβααΆααααβαα αααααβααΆβααααΌαβααβααΆαβααΈααΆααβαα βαααα»αβαααΌαα»αβαααααα·ααΈβααααα·αβααααΌαα ααΎαααΆαααααΎ heuristics ααΆαα½αααΉαααΆααα·ααΆα bytecode ααΎααααΈαααααΈαααΌαα»αααΈαα½ααααααΆαααααΎαααααααΈαα½ααα
ααΆαααααΎα±αααααααΎαα‘αΎαααΌαααααα·ααααα·ααΆαααααΆαααααΎαααααα§αααααααΎααααΈα±αααα½αααααΆααααααααααΌαα»ααααααΆαααααααα αααΆαααααααα ααααααΆαααΈαααααΆα αα
αα·ααΆαααΆαβααΎααααΈβαααααΏαβααΆαβαααα½ααα·αα·αααβααΆαβααααΎαααΆαβαααβααααααα α αΆααααΈ 45 ααΆααΈ ααΎαα‘αΎαααααααα αα 15α ααΆααΆααΏαααααααΆαα α αΎααααα»αααΆααααα αΆααα½αααΆααα½ααααα½ααααααααααΆααααΆαααΆααααα
ααα»ααααα₯α‘αΌααααα’αααα’αα·ααααααααΆαα αΆααααααΎαααα’αΌαααα’ααααΆαα½ααααα·ααααααΆααΆαααααΆαααΆααΆαα½ααααα»αααααΎαααΆα αααααααααααααΌαααΎααααααα ααα» α ααα»α’αααΈααΆαααΆααΆαααααΆαααΆα‘αΎααααα α ααΆαααααΎααααααααΆαααααα
αααα αΆααΆαα½αααα·αααααα’ααΊααααΆααααα»αααΆαα’αα·αααααα ααΌα
ααααααΎαααΆαααααΆααΆααααααααααααΆαα
αααΆααααΆαα αα·ααααα’α·αα’αααΈ PR ααΈαα½αα αα·ααααααΎαααΆααααα’αΆα
ααααΎααΆαα ααΎαααΆαα
αΆααααααΎαααΆαα½αααΉαααα·ααααααα
αααα»α Bitbucket αα
ααΆαα PR ααααααα αΆαααΆααΆαααααΆαααΆααΆαα½αααΆααααΆααα αα·αααΌαα ααα»α’αααΈ α αΎαααΆααααααααΆαααααα
αα
αααα»α Slack α αα
ααΈαααα
αα ααΎαααΆααααααΎαααααΆααααααααααα PR αααααΆαααααααααΆαα½αααΉααααααΈααααΆαααΆααααααΆααα’ααααααααα»αααααΎαααΆα αα·αααααΆαααΆααααααα½αααα αααααααα½α ααααΎαααΆα ααΆαα α¬ααΆααααα
ααα α’αααα’αΆα
α
α»α
ααΎ build α αΎαα
αΌααα
ααΆαααααααα ααα»ααααααΆα
ααααΆααα½ααααααΆα αααααΌαααΆαα
αααΆαααΎααα·αααααα’αααα’α·αα
αααααΆα
α αΌααααααα αααααααα·ααααΈαα αααααΆααααααααΆααααα αΆααα·αααααα’ ααΎαααΆαααΆααααααααα·αααααΈαα½α ααΎαααΆααααααα α α·ααααααααΎαααα·ααααΆαααααΆααααΆαααααΆαααααα½αααααααΎαα αα ααααααααΆαααΆαααααΎααααα αα·ααααααα·ααΈααααΆααααΆαα αααΎα αα½ααααα·ααΆααααααααααααΆααα ααΆαααααα αααααα·ααΈααααΆααααΆαααααααΎαααΆααα’ααααΆαααααΆααααΈαα α ααααα k8s ααΆαα½αααΉαααΆααααααααααααααΆααααα’αΆα ααααααααΆαα
ααΎαααΈααααααααΆααααααΆαααααααααα
- αααα‘αα Lint (αα·αααΆααα·ααΆααα·αα·αααααααααααα) α ααΎααααα»αααααΎααΆααααα»ααα·ααα ααααα½α α αΎαα
- ααααΎαααΆαα’αααΈααααααααΆααα ααΎ PR blocker ααΆαααααΎααααααααα αα αα ααΎαααα SDK ααΆααα’ααα
ααΌα αααα, ααΎαααΆαααΆαααΆααααααααα·ααΆαααααααααΆαα’αα·αααααααααΆα αααααααααααα αααα»α Avito α α₯α‘αΌαααααααα»αα αααααααααααΌααααΆαααααααΈαααααααααααΆααααα·αααααα
ααααααΆααααα½α
ααααα·αααΎβαααα»αβα’αΆα βαααααβααααΌααααΆαβααβαα½αβαααααβααα ααΆβααΉαβααΆαβααΌα βαααα
ααΌαααααααααααΆαα½αααααααΈαααα!
Bash ααΊααΆα§ααααααααα’αΆα ααααααααΆα αα·αααΆαααΆαααααααΆαα ααΆααΆααααα½α αα·ααα αααααα»αααΆααααααααααααΈαα ααα»ααααα’αααα’αΆα ααααΆααα αΌααα αααα»αα’ααααΆααααΆαα½αααΆ α αΎαααΆα’αα»ααααΎαααΆαααααΆααα αΌααα αααα»αααΆα
ααΆααΆααα’ααααΆαα αΆααααααΎαααΆαα½αααΉαααααααΈαααΆαααααααααααΎαααΆαααΎαααΆαααΈααααααΎαααααααΎαα
#!/usr/bin/env bash
./gradlew assembleDebug
ααα»ααααααΌα αααα’αααααΆαααΉαα αΎαααΆ α’αααΈααααααααΆαααΈαα ααααΎα αα·αααΆαααααααα»αααααααΆαααΆααααααααΆ - αααααααΎαααΆαααααααΈααα½αααΈαα½αααα αααααααααΆαααααΆαααΆαααααααααααα ααΈααα - αα ααΈαααα ααααΎαααααΌαααααααα»αααΆαααααααααααΆααΎααΎααααα»ααααα·ααα ααααα·αααΆα₯α‘αΌααααααΆαααααΆαααααααα ααΎααααΈαααα αΌαααααααα αΆαααΆα α ααΎααααΈα αΆααααααΎαααΆααΆααα’ααα
α’αααα’αΆα
αααααααΎαααααααααααααααααΆααααΆαα’αα·ααααααααααααΈαααααααα αααα»αααααΆαα’ααααα»αα±ααααααΆααα
αΌααααα»αα’ααααΆαααααα
ααΎα’αααΈα’αΆα αααα½αααΆα?
- ααΆααΆααααααΈαααΆαα½αα αααααβαα ααΆαα Python α¬ Kotlin Script ααΆααααααΆααααα½ααααααααΆααΆαααααα·ααΈαα·ααααααααααΈαααα
- α¬αα·αααααΆα’αααΈαααααα·ααααΆααααΆαααΆααΆααα’αααααα»ααααααα αα·α αα ααΆαβααααα·αβααααΆααβαααα½α αααααΆααααααααααααα’αααα
ααΎαααΆααααααα α α·αααααααΎαααΎααααααΎαααΈααΈα α αΎαα₯α‘αΌααααααΎααααα»ααα»αααΆααααααααααΌαααααααΈα bash ααΆααα’αα αα·ααααααααΆααα·α αα ααΆαααααΆαααααααααααΆαααααα½αααΆα αααΎαα
αααααΉαααΈ 2: αααααΆαα»αα αααααΆαα ααΆαααααααααα αααα»αααΌαα
ααΆααΆααααα½ααα ααααααααΆααααααααΆααα½ααααα αΌαααΆαααααααααΆααααααΌαααΆααααααΆαα»ααα·ααα αααα»αα ααα»α αααααΆαα UI αααα Jenkins α¬ TeamCity ααΆααΎαα ααα»ααααααΆααααααα―αααΆαα’ααααααααααααΆαααα αααα»αααααΆααααααααα ααααααααααΌαααααααΆαααααααα ααΆααΉααα·ααα·ααΆααααα»αααΆααα·ααααααα α¬αααααΎαααΌααα ααΎααΆααΆααααααααααα
ααααααΈαα’αΆα ααααΌαααΆααααααΆαα»ααααα»αααααααα α’αααΈαααααααΌαααααΎααΆαα½αααα·ααααΆα?
αααααΉαααΈ 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) α αΎααααα»αααΌαααΆαααα α’αααααΉαααα½αααΆααααΆαααΈααα·αααα·ααααα’αααα’αΆα αααααΎααααααα·ααΈααΆαα αα·αααααΎαααΆαααΆαααααΎααααα Junit α
ααΌαα ααα»ααααΆααααΈααααααααΎα²αααααααΆαααΊ ααααααΆαααααΎααΆαααααααΆα αα·αααααααΆαααααΎαααααααα αααααααΎ docker α’αααα’αΆα αααααΎαααααΆααααΆααααααΎαααΆαααα·ααααΆαααΆαααα αααααααΉαααΆαααα·ααΆααΆαααΌα ααααΆαα ααΉααααααα·ααΈαα»ααααα αααααααΎα±ααααΈαα·ααααααα·ααααα CI ααΆααααααΆααααα½αα ααΆααΆααααα½αααΆαααααα»αααΆααα»α android-sdk α αΌααα αααα»α docker ααα»ααααααΆαα½αααΉααααααα·ααΈααααΆααααΆαααΆαα·ααΆαααΆααααααααα·α α α’αααααΉαααααΌαααααΉααααααααααα·α (α¬ααΆααααααααα·ααΈαααααΆααααα ααααΈ GitHub ααααααα)α
αααααΉαααΈα€α αα»αααααα ααΆ α’αα·ααΆααα·α αα αα·ααααααααΎα‘αΎαααΎααααΈααΆαααααααααααα’αα·ααΆααα·α αα αα ααα»αααααααααΆααααα»αααα
αα αα α αΎαααααΆαααααα»α ααα·αααααα’α αααΆααααΆααααΊααΆαααΆααααααΆααααΆαααααααΆααα’αααα’αα·ααααααα α’αααΈβαααβααΆαβαααααααΆα ααΆαβααΆαααααβα’αααΈβαααβααΆαβαααΆααα ααΎαααα»αβα’αΆα βααΎαβαααααα ααα»βααΆααααβαα α―ααΆα
αααααΉαααΈ 5: ααΆαααΆαααααΆαααα·αααα ααααααααΎαααΆααα½ααααα αΌαααΆαααααααααΆααα
αααα αααΆααα’αααΈααααααααααα α»ααααα’αααα ααααΆαααΆα ααΎααααΆαααα»ααααΆα αααααααΆ αα·ααααααααΆαα»αααααΌααααααα’ααααα»αα α·αααα αααΆαα ααΆα§ααΆα ααα ααΆααααα½ααα·αα·ααααααα αααΆααααααΌαααα α’αΆα ααααΌααααααΆααααααααα½ααααα α αΎαα’ααααααα αΆααααα α»ααα·αααααΆαααα½αααααΌαααΆαααααααα ααααΆαααααα»αα
αααααΉαααΈα¦α ααααΎα§ααααααααααααααα½α ααΆααααα α
α₯α‘αΌααααααΆααααα»αα αα»αααΆα αααΎααααααααα Cloud CI α
αααααΊααΆαααααααααΆαααααα’αααααΆαααααα»αααΌα
αα α’ααααα·αα
αΆαααΆα
αααΆααααα’αααΈααααα ααααΆααααα
αααΆαααααΆααααααα·α
ααααα½α
αααααΎααααααα·ααΈααααα’ααα αα·αααΌααααΈααααααΎαααΆαααΆαααααΎαααααα§αααααα
αααααΉαααΈ 7: αα αααα»ααααα»ααα αααααααααΆααααα»αααααααΆαααα ααααα αααΎαααΆαα
ααα»αααααα·αααΌααα·αααΆαα αα αααααααααα»αααΈαα ααααΎα αααααααααΆααααα»αααααααΉαααΆααααααα½αααΆαααα ααααα αααΎαα ααΆααααα αΆαα½αααΆαα½αααΉαααΆααααααα α α·αααααΆαααααα ααΆαα αααΆααααααΆαααα α»αααααΆααα αααΌααα αααα»αααααααα·α αα α αα αααα»αααααααααΆαα½α ααΆααααααα’ααΆαααααααααΆααααΈαα½ααααΊααΆαααααα·ααΆα α αΎαααΆαααΆαααΆααα·αα·αααααΆααααα αααΎαα
ααααααα·α αα αα·αααααΆα’αααΈααΈαα·αααΆααααΌαααααααΎα αα½αααΆααααΆααα½ααααα αΌαααΆαααααααααΆααα αααα»αααΆααααααΎαααΆααα·ααΆααααααααααααααααααΆααααααΆααααΆαααΈαα½ααααααΆαα’αα·αααααααααααΆα ααααααααααααααααΎαα
ααΆα
αααΆααααΆααααΆααΆααααααα’ααΆαα½αααΆαααααα·ααΆαα αααα‘ααααΎαααααΆα ααααα α’αααα’αΆα
αααααΆαααΆ αααΆα ααααααααααααααΌαααααααΌαααΆααααααΎαα‘αΎαααααααΆαααααΎαααααα ααααα»αα αααααΆααβαααα»αβααα»αααβααΈαβααΆαα ααΆαβα
αααΆαβααα 50 ααααβαααα»αβααΆαβαααααΎαβααα·ααααΆαβααααΆααααΆαβααΆααααα»αβααΊααΆβαααα·αβαααααα ααα»αααααααα»ααααααΆαα½αααααΆααα αααααΆαααααα»ααα ααΆααα·αααααΎαααΆα ααααααααααααααΆααΆααααααα ααααΆαααα·ααα·αααα’ααα ααααααααα αΆαααΆα αααααα ααΆααα½ααα»αααααΆααααααααα ααΆααΉαα
αααΆααααααΆααααα
αααΎαα
ααΎαα αΆααααααΎαααΆαα½αααΉααααα·ααααααΆ ααααααααααααα·ααααααΊααααΌαααΆαααΆα αΆαααΆα α ααΈαααααααα»αααααΆαααααααααα αα½αααααααΎαα»α αα·ααααα·αα ααα’αΌαα ααα»ααααααα»αααααααααααααααααα·αααα ααΌα αααααααα αΆααΌα ααααΆααΆααα’ααα’αα»ααααα ααααααααααααααααα·ααααα
- ααααααααααααα·ααααααΆααααααααααα α αα αΆαααΆααα·ααΆαααΆαααΆαα
- αα ααααα·ααΆαα’αααΈααααααααααααα·αααα ααα»αααααααΎαα»αα
- αααααααααΆαααα·ααααα»αααΆαααααΎααααααααααααα·αααα αααααα’αααΈαααααΎαααΆαααΌα αααα α ααα»α’αααΈβααΆαβααΆβααααΎβα±ααβαααααΎαβα‘αΎαβααΌαβα’αααΈβαααααβααα α ααα»βα’αααΈβααΆαβααΆβααΆαβααααΎβαααΆα ααααααβααααβααΆααβα’ααβααα?
ααα»αααααααα»αααΆααααα·αα·α ααα α»αααααΌαααΆαα αΆααααΆααα αααα»α 20% ααααααα·ααΆαα α αΎαααααα·αααααααααΆαααα’αααα’αα·ααααααααααααΎααααααααΌααα·αααΆαααα’αααααα αααααΊαααααΆαααα’αααα’αα·ααααααααΆααααα»αα α·αααααΆααααα·αααΎαα½αααααααΎαα»ααααα ααΆααΉααα·αααααΌαααΆααααα αααα αααα»αααΆαα’αα·ααααααααααα ααΆααΉαααααΌαααΆαα αΆαααααααΆααααα½ααα·αα·ααααααααααααααααααα·α ααΌα ααααα αΎα α’αααα’αα·ααααααα’αΆα α αααΆααααα αααΎααααα»αααΆααααααααΌα αα·αα’αααΈααααα½αα±ααα αΆααα’αΆαααααα ααΆααΆαααααΎαααΆα αα·αααΆαααααα’αααΈαα½ααα αααα»αααΌαααααΆαα
α’αα»ααααααΆααα½ααααα αΌαααΆαααααααααΆααα ααα»αααααααα»αααααα·ααααααα
ααααα·ααΈααα Nikolai Nesterov αα·αααααΉαααααααααααΆαααΆαααααα’ααα αΆαααααααααα½αα―αααα»ααααααααααααΆααααΆαααΆαα·αααααααααααΆαα·ααΆααααααα·ααΈαααααα
AppsConf αα·ααα½αα’αααααααααα ααα»αααααααΆααααΆαα’αααααααααααΆααα’αααα ααΆααααααα αα·αα’ααααααααααααααααααα·ααΈααααα·ααΈααααααΆααα’αΆα ααααΌαααΆαααΆααααααααααααααΆααααα αααα»αααΆααα·ααΆα . α αΎααααααΆααααααααΆααααα’α·α ααΌαααααΆαα Infospace αα ααααααΈ 22-23 ααααααΆα
ααααα: www.habr.com