በሞባይል ልማት ቡድን ውስጥ የ CI እድገት

ዛሬ, አብዛኛዎቹ የሶፍትዌር ምርቶች በቡድን ተዘጋጅተዋል. የተሳካ የቡድን እድገት ሁኔታዎች በቀላል ንድፍ መልክ ሊወከሉ ይችላሉ.

በሞባይል ልማት ቡድን ውስጥ የ CI እድገት

አንዴ ኮድዎን ከፃፉ በኋላ ማረጋገጥ አለብዎት፡-

  1. Аботает.
  2. ባልደረቦችህ የፃፉትን ኮድ ጨምሮ ምንም ነገር አይሰብርም።

ሁለቱም ሁኔታዎች ከተሟሉ, እርስዎ ወደ ስኬት መንገድ ላይ ነዎት. እነዚህን ሁኔታዎች በቀላሉ ለመፈተሽ እና ከትርፋማ መንገድ ላለመውጣት፣ ቀጣይ ውህደትን ይዘን መጥተናል።

CI በተቻለ መጠን የእርስዎን ኮድ ወደ አጠቃላይ የምርት ኮድ የሚያዋህዱበት የስራ ሂደት ነው። እና እርስዎ ብቻ ማዋሃድ ብቻ ሳይሆን ሁሉም ነገር እየሰራ መሆኑን በየጊዜው ያረጋግጡ. ብዙ እና ብዙ ጊዜ መፈተሽ ስለሚያስፈልግ, ስለ አውቶሜትድ ማሰብ ጠቃሚ ነው. ሁሉንም ነገር እራስዎ ማረጋገጥ ይችላሉ, ግን እርስዎ ማድረግ የለብዎትም, እና ለምን እንደሆነ እዚህ አለ.

  • ውድ ሰዎች. የማንኛውም ፕሮግራመር የአንድ ሰአት ስራ ከማንኛውም አገልጋይ ከአንድ ሰአት ስራ የበለጠ ውድ ነው።
  • ሰዎች ስህተት ይሠራሉ. ስለዚህ፣ ፈተናዎች በተሳሳተ ቅርንጫፍ ላይ ሲካሄዱ ወይም የተሳሳተ ድርጊት ለሞካሪዎች ሲዘጋጅ ሁኔታዎች ሊፈጠሩ ይችላሉ።
  • ሰዎች ሰነፍ ናቸው።. አልፎ አልፎ፣ አንድን ሥራ ስጨርስ፣ “ለመፈተሽ ምን አለ? ሁለት መስመሮችን ጻፍኩ - ሁሉም ነገር ይሰራል! አንዳንዶቻችሁም አንዳንድ ጊዜ እንደዚህ አይነት ሀሳብ ያላችሁ ይመስለኛል። ግን ሁልጊዜ ማረጋገጥ አለብዎት.

ቀጣይነት ያለው ውህደት በአቪቶ የሞባይል ልማት ቡድን ውስጥ እንዴት እንደተተገበረ እና እንደዳበረ ፣ በቀን ከ 0 ወደ 450 ግንባታዎች እንዴት እንደሄዱ እና ማሽኖች በቀን 200 ሰአታት እንደሚገጣጠሙ ይላል ኒኮላይ ኔስተሮቭ (ንስቴሮቭ) በሁሉም የ CI/CD አንድሮይድ አፕሊኬሽን ለውጦች ውስጥ ተሳታፊ ነው።

ታሪኩ በአንድሮይድ ትዕዛዝ ምሳሌ ላይ የተመሰረተ ነው፣ ነገር ግን አብዛኛዎቹ አቀራረቦች በ iOS ላይም ተፈጻሚነት አላቸው።


በአንድ ወቅት አንድ ሰው በአቪቶ አንድሮይድ ቡድን ውስጥ ሰርቷል። በትርጉም, ከቀጣይ ውህደት ምንም ነገር አያስፈልገውም: ማንም የሚዋሃድ አልነበረም.

ነገር ግን አፕሊኬሽኑ አደገ፣ ብዙ እና ብዙ አዳዲስ ስራዎች ታዩ፣ እና ቡድኑ በዚሁ መሰረት አደገ። የሆነ ጊዜ፣ የኮድ ውህደት ሂደትን ይበልጥ በመደበኛነት ለመመስረት ጊዜው አሁን ነው። የጂት ፍሰት ለመጠቀም ተወስኗል።

በሞባይል ልማት ቡድን ውስጥ የ CI እድገት

የጂት ፍሰት ጽንሰ-ሀሳብ በጣም የታወቀ ነው-አንድ ፕሮጀክት አንድ የጋራ ልማት ቅርንጫፍ አለው ፣ እና ለእያንዳንዱ አዲስ ባህሪ ፣ ገንቢዎች የተለየ ቅርንጫፍ ይቆርጣሉ ፣ ይንከባከባሉ ፣ ይገፋሉ እና ኮዳቸውን ወደ ልማት ቅርንጫፍ ለማዋሃድ ሲፈልጉ ፣ ይክፈቱ መጎተት ጥያቄ. እውቀትን ለመጋራት እና አቀራረቦችን ለመወያየት፣ የኮድ ግምገማን አስተዋውቀናል፣ ማለትም፣ ባልደረቦች የሌላውን ኮድ ማረጋገጥ እና ማረጋገጥ አለባቸው።

ቼኮች

ኮድን በአይንዎ ማየት ጥሩ ነው፣ ግን በቂ አይደለም። ስለዚህ, አውቶማቲክ ፍተሻዎች በመተዋወቅ ላይ ናቸው.

  • በመጀመሪያ ደረጃ, እንፈትሻለን የ ARK ስብሰባ.
  • በጣም ብዙ የጁኒት ሙከራዎች.
  • የኮድ ሽፋንን እንመለከታለንፈተናዎችን እየሮጥን ስለሆነ።

እነዚህ ቼኮች እንዴት መካሄድ እንዳለባቸው ለመረዳት በአቪቶ ውስጥ ያለውን የእድገት ሂደት እንመልከታቸው።

በሚከተለው መልኩ ሊወከል ይችላል፡-

  • አንድ ገንቢ በላፕቶፑ ላይ ኮድ ይጽፋል። የውህደት ፍተሻዎችን እዚህ ማሄድ ይችላሉ - ወይ በቁርጠኝነት መንጠቆ ወይም በቀላሉ ከበስተጀርባ ቼኮችን ያሂዱ።
  • ገንቢው ኮዱን ከገፋ በኋላ የመጎተት ጥያቄን ይከፍታል። የእሱ ኮድ በአዳጊው ቅርንጫፍ ውስጥ እንዲካተት የኮድ ግምገማን ማለፍ እና አስፈላጊውን የማረጋገጫ ብዛት መሰብሰብ አስፈላጊ ነው. ቼኮችን እና ግንባታዎችን እዚህ ማንቃት ይችላሉ፡ ሁሉም ግንባታዎች እስኪሳኩ ድረስ የመጎተት ጥያቄው ሊዋሃድ አይችልም።
  • የመጎተት ጥያቄው ከተዋሃደ እና ኮዱ በልማት ውስጥ ከተካተተ በኋላ ምቹ ጊዜ መምረጥ ይችላሉ-ለምሳሌ ፣ በምሽት ፣ ሁሉም አገልጋዮች ነፃ ሲሆኑ እና የፈለጉትን ያህል ቼኮች ያሂዱ።

ማንም ሰው በላፕቶፑ ላይ ስካን ማድረግን አልወደደም። አንድ ገንቢ አንድ ባህሪን ሲያጠናቅቅ በፍጥነት ሊገፋው እና የመሳብ ጥያቄ መክፈት ይፈልጋል። በዚህ ጊዜ አንዳንድ ረጅም ፍተሻዎች ከተጀመሩ ይህ በጣም ደስ የሚል ብቻ ሳይሆን እድገቱን ያቀዘቅዘዋል-ላፕቶፑ አንድ ነገር እየፈተሸ ሳለ, በእሱ ላይ በተለምዶ መስራት አይቻልም.

በምሽት ቼኮችን መሮጥ በጣም ወደድን፣ ምክንያቱም ብዙ ጊዜ እና አገልጋዮች ስላሉ፣ ዙሪያውን መዞር ይችላሉ። ግን በሚያሳዝን ሁኔታ፣ የባህሪ ኮድ ሲዘጋጅ፣ ገንቢው CI ያገኘውን ስህተቶች ለማስተካከል በጣም ያነሰ ተነሳሽነት አለው። በማለዳ ዘገባ ላይ የተገኙትን ስህተቶች ሁሉ ስመለከት አንድ ቀን በኋላ እንደማስተካክላቸው እያሰብኩ በየጊዜው እራሴን ያዝኩኝ ምክንያቱም አሁን በጅራ ውስጥ ጥሩ አዲስ ስራ አለ እና መስራት ልጀምር።

ቼኮች የመሳብ ጥያቄን ከከለከሉ በቂ ተነሳሽነት አለ ፣ ምክንያቱም ግንባታዎቹ አረንጓዴ እስኪሆኑ ድረስ ኮዱ አይዳብርም ፣ ይህ ማለት ተግባሩ አይጠናቀቅም ማለት ነው።

በውጤቱም, የሚከተለውን ስልት መርጠናል-በሌሊት ከፍተኛውን የቼኮች ስብስብ እናካሂዳለን, እና በጣም ወሳኝ የሆኑትን እና ከሁሉም በላይ, በጣም ፈጣን የሆኑትን በፍላጎት ጥያቄ እንጀምራለን. ግን እዚያ አናቆምም - በትይዩ ፣ የጥያቄ ቼኮችን ለመሳብ ከምሽት ሁነታ ለማስተላለፍ የፍተሻዎችን ፍጥነት እናስተካክላለን።

በዚያን ጊዜ ሁሉም ግንባታዎቻችን በፍጥነት የተጠናቀቁ ናቸው፣ስለዚህ በቀላሉ የ ARK ግንባታን፣ ጁኒት ሙከራዎችን እና የኮድ ሽፋን ስሌቶችን ለመጎተት ጥያቄ እንደ ማገጃ አካተናል። አበራነው፣ አስበነዋል፣ እና የኮድ ሽፋን አያስፈልገንም ብለን ስለተተወን ነው።

መሠረታዊውን ሲአይ (CI) ሙሉ በሙሉ ለማዘጋጀት ሁለት ቀናት ፈጅቶብናል (ከዚህ በኋላ የጊዜ ግምቱ ግምታዊ ነው፣ ለመመዘን ያስፈልጋል)።

ከዚያ በኋላ ፣ የበለጠ ማሰብ ጀመርን - በትክክል እያጣራን ነው? በግንባታ ጥያቄዎች ላይ በትክክል እየሰራን ነው?

የመጎተት ጥያቄው በተከፈተበት የቅርንጫፉ የመጨረሻ ቁርጠኝነት ላይ ግንባታውን ጀመርን። ነገር ግን የዚህ ቁርጠኝነት ሙከራዎች ገንቢው የጻፈው ኮድ እንደሚሰራ ብቻ ሊያሳዩ ይችላሉ። ነገር ግን ምንም እንዳልሰበረ አያረጋግጡም። እንደ እውነቱ ከሆነ, አንድ ባህሪ በውስጡ ከተቀላቀለ በኋላ የገንቢውን ቅርንጫፍ ሁኔታ ማረጋገጥ ያስፈልግዎታል.

በሞባይል ልማት ቡድን ውስጥ የ CI እድገት

ይህንን ለማድረግ, ቀለል ያለ የባሽ ስክሪፕት ጻፍን premerge.sh:

#!/usr/bin/env bash

set -e

git fetch origin develop

git merge origin/develop

እዚህ ሁሉም አዳዲስ ለውጦች በቀላሉ ተስበው ወደ የአሁኑ ቅርንጫፍ ይዋሃዳሉ። የቅድሚያ.sh ስክሪፕት በሁሉም ግንባታዎች ውስጥ እንደ መጀመሪያው ደረጃ ጨምረናል እና የምንፈልገውን በትክክል ማረጋገጥ ጀመርን ማለትም ውህደት.

ችግሩን ለትርጉም ለማድረግ፣ መፍትሄ ለማግኘት እና ይህን ስክሪፕት ለመጻፍ ሶስት ቀናት ፈጅቷል።

አፕሊኬሽኑ ተዘጋጅቷል፣ ብዙ ስራዎች ታዩ፣ ቡድኑ አደገ፣ እና premerge.sh አንዳንድ ጊዜ እኛን ዝቅ ማድረግ ጀመረ። ልማት ግንባታውን ያፈረሱ እርስ በእርሱ የሚጋጩ ለውጦች ነበሩት።

ይህ እንዴት እንደሚከሰት የሚያሳይ ምሳሌ፡-

በሞባይል ልማት ቡድን ውስጥ የ CI እድገት

ሁለት ገንቢዎች በአንድ ጊዜ በA እና B ባህሪያት ላይ መስራት ይጀምራሉ። የባህሪ ሀ ገንቢ በፕሮጀክቱ ውስጥ ጥቅም ላይ ያልዋለ ባህሪን አግኝቷል። answer() እና ልክ እንደ ጥሩ ልጅ ስካውት, ያስወግዳል. በተመሳሳይ ጊዜ የባህሪ B ገንቢ በእሱ ቅርንጫፍ ውስጥ ለዚህ ተግባር አዲስ ጥሪን ይጨምራል።

ገንቢዎች ስራቸውን ጨርሰው በተመሳሳይ ጊዜ የመሳብ ጥያቄን ይከፍታሉ። ግንባታዎቹ ተጀምረዋል፣ premerge.sh የቅርብ ጊዜውን የእድገት ሁኔታ በተመለከተ ሁለቱንም የመሳብ ጥያቄዎችን ይፈትሻል - ሁሉም ቼኮች አረንጓዴ ናቸው። ከዚያ በኋላ የባህሪ ሀ የመሳብ ጥያቄ ተዋህዷል፣ የባህሪ B የመጎተት ጥያቄ ተዋህዷል... ቡም! ዕረፍቶችን ያዘጋጁ ምክንያቱም የገንቢ ኮድ ወደ ሕልውና ላልሆነ ተግባር ጥሪ ስላለው።

በሞባይል ልማት ቡድን ውስጥ የ CI እድገት

ማደግ በማይችልበት ጊዜ, እሱ ነው የአካባቢ አደጋ. ቡድኑ ምንም ነገር መሰብሰብ እና ለሙከራ ማቅረብ አይችልም።

ብዙ ጊዜ በመሠረተ ልማት ስራዎች ላይ የሰራሁት ተከሰተ፡- ትንታኔዎች፣ አውታረ መረብ፣ የውሂብ ጎታዎች። ማለትም፣ ሌሎች ገንቢዎች የሚጠቀሙባቸውን ተግባራት እና ክፍሎችን የጻፍኩት እኔ ነበርኩ። በዚህ ምክንያት ራሴን ብዙ ጊዜ ተመሳሳይ ሁኔታዎች አጋጥሞኝ ነበር። ይህ ምስል እንኳን ለተወሰነ ጊዜ ተሰቅሎ ነበር።

በሞባይል ልማት ቡድን ውስጥ የ CI እድገት

ይህ ስለማይስማማን ይህንን እንዴት መከላከል እንደሚቻል አማራጮችን መመርመር ጀመርን።

እንዴት ማዳበር እንደሌለበት

የመጀመሪያው አማራጭ: ልማትን በሚያዘምኑበት ጊዜ ሁሉንም የመሳብ ጥያቄዎችን እንደገና ይገንቡ። በእኛ ምሳሌ፣ በባህሪ ሀ ያለው የመሳብ ጥያቄ በልማት ውስጥ ለመካተት የመጀመሪያው ከሆነ፣ የባህሪ B የመጎተት ጥያቄ እንደገና ይገነባል፣ እና በዚህ መሰረት፣ ቼኮች በማጠናቀር ስህተት ምክንያት አይሳኩም።

ይህ ለምን ያህል ጊዜ እንደሚወስድ ለመረዳት፣ ከሁለት PRs ጋር አንድ ምሳሌ ተመልከት። ሁለት PRs እንከፍተዋለን-ሁለት ግንባታዎች ፣ ሁለት የቼኮች ሩጫዎች። የመጀመሪያው PR ወደ ልማት ከተዋሃደ በኋላ ሁለተኛው እንደገና መገንባት ያስፈልገዋል. በአጠቃላይ፣ ሁለት ፒአርዎች ሶስት የቼኮች ሩጫ ያስፈልጋቸዋል፡ 2 + 1 = 3።

በመርህ ደረጃ, ጥሩ ነው. ነገር ግን ስታቲስቲክስን ተመለከትን, እና በቡድናችን ውስጥ የተለመደው ሁኔታ 10 ክፍት PRs ነበር, ከዚያም የቼኮች ቁጥር የሂደቱ ድምር ነው: 10 + 9 +... + 1 = 55. ማለትም 10 ለመቀበል. PRs፣ 55 ጊዜ እንደገና መገንባት ያስፈልግዎታል። እና ይሄ በጥሩ ሁኔታ ላይ ነው፣ ሁሉም ቼኮች ለመጀመሪያ ጊዜ ሲያልፉ፣ ማንም ሰው ተጨማሪ የመሳብ ጥያቄ ሲከፍት እነዚህ ደርዘን በሂደት ላይ እያሉ።

እራስህን እንደ ገንቢ አስብ “ውህደት” የሚለውን ቁልፍ ለመንካት ቀዳሚ መሆን አለበት ምክንያቱም ጎረቤት ይህን ካደረገ ሁሉም ግንባታዎች እንደገና እስኪያልፉ ድረስ መጠበቅ አለቦት... አይሆንም፣ ያ አይሰራም። ልማትን በእጅጉ ይቀንሳል።

ሁለተኛው የሚቻል መንገድ: ከኮድ ግምገማ በኋላ የመሳብ ጥያቄዎችን ሰብስብ። ማለትም፣ የመጎተት ጥያቄን ከፍተህ፣ ከሥራ ባልደረቦችህ የሚፈለጉትን የማጽደቂያ ብዛት ይሰብስቡ፣ የሚፈለገውን ያርሙ እና ግንባታዎቹን ያስጀምራሉ። ስኬታማ ከሆኑ የመጎተት ጥያቄው ወደ ልማት ይቀላቀላል። በዚህ አጋጣሚ, ምንም ተጨማሪ ዳግም ማስጀመር የለም, ነገር ግን ግብረመልስ በጣም ቀርፋፋ ነው. እንደ ገንቢ፣ የመጎተት ጥያቄን ስከፍት፣ ወዲያውኑ እንደሚሰራ ለማየት እፈልጋለሁ። ለምሳሌ, አንድ ፈተና ካልተሳካ, በፍጥነት ማስተካከል ያስፈልግዎታል. ዘግይቶ ግንባታን በተመለከተ, ግብረመልስ ይቀንሳል, እና ስለዚህ አጠቃላይ እድገት. ይህ ለእኛም አይስማማንም።

በዚህ ምክንያት, ሦስተኛው አማራጭ ብቻ ይቀራል - ብስክሌት. ሁሉም የእኛ ኮድ ፣ ሁሉም ምንጮቻችን በ Bitbucket አገልጋይ ላይ ባለው ማከማቻ ውስጥ ተከማችተዋል። በዚህ መሠረት ለ Bitbucket ተሰኪ ማዘጋጀት ነበረብን።

በሞባይል ልማት ቡድን ውስጥ የ CI እድገት

ይህ ፕለጊን የመሳብ ጥያቄን የማዋሃድ ዘዴን ይሽራል። ጅምር መደበኛ ነው፡ PR ይከፈታል፣ ሁሉም ጉባኤዎች ተጀምረዋል፣ የኮድ ግምገማ ተጠናቋል። ነገር ግን የኮድ ግምገማው ከተጠናቀቀ በኋላ እና ገንቢው "ውህደት" ላይ ጠቅ ለማድረግ ከወሰነ በኋላ፣ የተሰኪው ፍተሻ ቼኮቹ እንደተሰሩ ይገልፃል። ግንባታው ከግንባታ በኋላ ከተዘመነ፣ ተሰኪው እንዲህ ዓይነቱን የመሳብ ጥያቄ ወደ ዋናው ቅርንጫፍ እንዲቀላቀል አይፈቅድም። በአንፃራዊነት የቅርብ ጊዜ ግንባታዎችን በቀላሉ እንደገና ይጀምራል።

በሞባይል ልማት ቡድን ውስጥ የ CI እድገት

በእኛ ምሳሌ ውስጥ እርስ በርሱ የሚጋጩ ለውጦች፣ እንደዚህ ያሉ ግንባታዎች በማጠናቀር ስህተት ምክንያት አይሳኩም። በዚህ መሠረት የባህሪ B ገንቢ ኮዱን ማረም ፣ ቼኮችን እንደገና ማስጀመር አለበት ፣ ከዚያ ተሰኪው የመሳብ ጥያቄውን በራስ-ሰር ይተገበራል።

ይህን ፕለጊን ከመተግበሩ በፊት፣ በእያንዳንዱ ጎተታ ጥያቄ በአማካይ 2,7 የግምገማ ሩጫዎችን አሳይተናል። ከተሰኪው ጋር 3,6 ማስጀመሪያዎች ነበሩ። ይህ አመቻችቶናል።

ይህ ፕለጊን ጉድለት እንዳለበት ልብ ሊባል የሚገባው ነው-ግንባቱን አንድ ጊዜ ብቻ እንደገና ያስጀምረዋል. ማለትም እርስ በርስ የሚጋጩ ለውጦች ሊዳብሩ የሚችሉበት ትንሽ መስኮት አሁንም አለ. ነገር ግን የዚህ እድላቸው ዝቅተኛ ነው, እና ይህንን የንግድ ልውውጥ በጅማሬዎች ብዛት እና ውድቀት መካከል አድርገናል. በሁለት አመታት ውስጥ አንድ ጊዜ ብቻ ተኮሰ, ስለዚህ ምናልባት በከንቱ ላይሆን ይችላል.

የ Bitbucket ፕለጊን የመጀመሪያውን ስሪት ለመጻፍ ሁለት ሳምንታት ፈጅቶብናል።

አዲስ ቼኮች

ይህ በእንዲህ እንዳለ ቡድናችን ማደጉን ቀጠለ። አዲስ ቼኮች ታክለዋል።

እኛ አሰብን: መከላከል ከተቻለ ለምን ስህተቶችን ያደርጋሉ? ተግባራዊ ያደረጉትም ለዚህ ነው። የማይንቀሳቀስ ኮድ ትንተና. በአንድሮይድ ኤስዲኬ ውስጥ የተካተተውን በሊንት ነው የጀመርነው። ነገር ግን በዚያን ጊዜ ከኮትሊን ኮድ ጋር እንዴት እንደሚሰራ አያውቅም ነበር, እና ቀደም ሲል በኮትሊን ውስጥ 75% የተጻፈ ማመልከቻ ነበረን. ስለዚህ, አብሮ የተሰሩ ወደ lint ተጨምረዋል አንድሮይድ ስቱዲዮ ቼኮች።

ይህንን ለማድረግ ብዙ ጠማማ ማድረግ ነበረብን፡ አንድሮይድ ስቱዲዮን ይውሰዱ፣ በዶከር ውስጥ ያሽጉትና በ CI ላይ በቨርቹዋል ሞኒተር ያሂዱት፣ ይህም በእውነተኛ ላፕቶፕ ላይ እየሰራ እንደሆነ እንዲያስብ ነው። ግን ሰራ።

ብዙ መጻፍ የጀመርነውም በዚህ ወቅት ነበር። የመሳሪያ ሙከራዎች እና ተግባራዊ ሆኗል ቅጽበታዊ ገጽ እይታ ሙከራ. ይህ ለተለየ ትንሽ እይታ የማጣቀሻ ቅጽበታዊ ገጽ እይታ ሲፈጠር ነው, እና ፈተናው ከእይታ ላይ ያለውን ቅጽበታዊ ገጽ እይታ በማንሳት እና ከመደበኛው ቀጥታ ፒክሴል በፒክሰል ጋር ማወዳደር ያካትታል. ልዩነት ካለ, አቀማመጡ የሆነ ቦታ ተሳስቷል ወይም በቅጦች ውስጥ የሆነ ችግር አለ ማለት ነው.

ነገር ግን የመሳሪያ ሙከራዎች እና የቅጽበታዊ ገጽ እይታ ሙከራዎች በመሳሪያዎች ላይ: በ emulators ወይም በእውነተኛ መሳሪያዎች ላይ መደረግ አለባቸው. ብዙ ሙከራዎች እንዳሉ እና በተደጋጋሚ እንደሚካሄዱ ግምት ውስጥ በማስገባት አንድ ሙሉ እርሻ ያስፈልጋል. የእራስዎን እርሻ መጀመር በጣም አድካሚ ነው, ስለዚህ ዝግጁ የሆነ አማራጭ አግኝተናል - Firebase Test Lab.

Firebase ሙከራ ቤተ ሙከራ

የተመረጠው ፋየር ቤዝ የጉግል ምርት ስለሆነ ነው፣ ይህም ማለት አስተማማኝ እና መሞት የማይቀር መሆን አለበት። ዋጋዎቹ ምክንያታዊ ናቸው፡ የእውነተኛ መሳሪያ በሰዓት 5 ዶላር፣ የኢሚሌተር ስራ በሰዓት 1 ዶላር።

የFirebase Test Lab ወደ የእኛ CI ለመተግበር በግምት ሦስት ሳምንታት ፈጅቷል።

ነገር ግን ቡድኑ ማደጉን ቀጠለ፣ እና ፋየርቤዝ፣ በሚያሳዝን ሁኔታ፣ እኛን መልቀቅ ጀመረ። በዚያን ጊዜ እሱ ምንም SLA አልነበረም. አንዳንድ ጊዜ ፋየርቤዝ የሚፈለገው የመሳሪያዎች ብዛት ለሙከራ ነፃ እስኪሆን ድረስ እንድንጠብቅ ያደርገናል፣ እና እንደፈለግነው ወዲያውኑ መፈፀም አልጀመርንም። ወረፋ መጠበቅ እስከ ግማሽ ሰአት የፈጀ ሲሆን ይህም በጣም ረጅም ጊዜ ነው። የመሳሪያ ሙከራዎች በእያንዳንዱ የህዝብ ግንኙነት ላይ ተካሂደዋል, መዘግየቶች ልማቱን በእውነት አዘገዩት, ከዚያም ወርሃዊ ሂሳቡ ከክብ ድምር ጋር መጣ. በአጠቃላይ ቡድኑ በበቂ ሁኔታ ስላደገ Firebaseን ትቶ በቤት ውስጥ ለመስራት ተወስኗል።

ዶከር + ፓይዘን + ባሽ

እኛ ዶከርን ወስደናል ፣ የተሞሉ ኢምፖችን ወደ እሱ ፣ በፓይዘን ውስጥ ቀላል ፕሮግራም ጻፍን ፣ ይህም በትክክለኛው ጊዜ የሚፈለጉትን የኢሜልተሮች ብዛት በሚፈለገው ስሪት ውስጥ ያመጣል እና አስፈላጊ በሚሆንበት ጊዜ ያቆማል። እና በእርግጥ, ሁለት የባሽ ስክሪፕቶች - ያለ እነርሱ የት እንሆናለን?

የራሳችንን የሙከራ አካባቢ ለመፍጠር አምስት ሳምንታት ፈጅቷል።

በውጤቱም፣ ለእያንዳንዱ የመሳብ ጥያቄ ሰፋ ያለ የውህደት እገዳ ዝርዝር ቼኮች ነበሩ፡-

  • የ ARK ስብሰባ;
  • የጁኒት ሙከራዎች;
  • ሊንት;
  • አንድሮይድ ስቱዲዮ ቼኮች;
  • የመሳሪያ ሙከራዎች;
  • የቅጽበታዊ ገጽ እይታ ሙከራዎች.

ይህ ብዙ ሊሆኑ የሚችሉ ብልሽቶችን ከልክሏል። በቴክኒካዊ ሁሉም ነገር ሠርቷል, ነገር ግን ገንቢዎች ውጤቱን መጠበቅ በጣም ረጅም እንደሆነ ቅሬታ አቅርበዋል.

በጣም ረጅም የሆነው ለምን ያህል ጊዜ ነው? እኛ ከ Bitbucket እና TeamCity መረጃን ወደ የትንታኔ ስርዓቱ ሰቅለናል እና ያንን ተገነዘብን። አማካይ የጥበቃ ጊዜ 45 ደቂቃዎች. ማለትም፣ ገንቢ፣ የመሳብ ጥያቄን ሲከፍት፣ ለግንባታው ውጤት በአማካይ 45 ደቂቃዎችን ይጠብቃል። በእኔ አስተያየት ይህ በጣም ብዙ ነው, እና እንደዛ መስራት አይችሉም.

እርግጥ ነው, ሁሉንም ግንባታዎቻችንን ለማፋጠን ወስነናል.

እንፍጠን

ግንባታዎች ብዙ ጊዜ በወረፋ ላይ ሲቆሙ ማየት የመጀመሪያው ነገር ነው። ተጨማሪ ሃርድዌር ገዛ - ሰፊ ልማት በጣም ቀላሉ ነው። ግንባታዎች ወረፋቸውን አቁመዋል፣ ነገር ግን የጥበቃ ጊዜ በትንሹ የቀነሰው፣ ምክንያቱም አንዳንድ ፍተሻዎች እራሳቸው ብዙ ጊዜ ወስደዋል።

በጣም ረጅም ጊዜ የሚወስዱ ቼኮችን በማስወገድ ላይ

የእኛ ቀጣይነት ያለው ውህደት እነዚህን አይነት ስህተቶች እና ችግሮች ሊይዝ ይችላል።

  • አይሄድም።. እርስ በርስ በሚጋጩ ለውጦች ምክንያት የሆነ ነገር ካልገነባ CI የማጠናቀር ስህተት ሊይዝ ይችላል። ቀደም ሲል እንደተናገርኩት ማንም ሰው ምንም ነገር መሰብሰብ አይችልም, እድገቱ ይቆማል, እና ሁሉም ሰው ይረበሻል.
  • በባህሪ ውስጥ ስህተት. ለምሳሌ አፕሊኬሽኑ ሲገነባ ነገር ግን አንድ ቁልፍ ሲጫኑ ይወድቃል ወይም ቁልፉ ጨርሶ ሳይጫን። ይህ መጥፎ ነው ምክንያቱም እንዲህ ዓይነቱ ስህተት ተጠቃሚው ላይ ሊደርስ ይችላል.
  • በአቀማመጥ ላይ ስህተት. ለምሳሌ, አንድ አዝራር ተጭኗል, ግን 10 ፒክሰሎች ወደ ግራ ተንቀሳቅሷል.
  • የቴክኒክ ዕዳ መጨመር.

ይህንን ዝርዝር ከተመለከትን በኋላ, የመጀመሪያዎቹ ሁለት ነጥቦች ብቻ ወሳኝ እንደሆኑ ተገነዘብን. መጀመሪያ እንደነዚህ ያሉትን ችግሮች ለመያዝ እንፈልጋለን. በአቀማመጡ ውስጥ ያሉ ስህተቶች በንድፍ ግምገማ ደረጃ ላይ ይገኛሉ እና ከዚያ በቀላሉ ሊስተካከሉ ይችላሉ። የቴክኒካል ዕዳን ማስተናገድ የተለየ ሂደት እና እቅድ ያስፈልገዋል፣ ስለዚህ በፍላጎት ጥያቄ ላይ ላለመሞከር ወስነናል።

በዚህ ምደባ መሰረት፣ የቼኮችን ዝርዝር በሙሉ አናውጣለን። ሊንት ተሻገረ እና ስራውን በአንድ ጀምበር አራዝሟል፡ በፕሮጀክቱ ውስጥ ምን ያህል ችግሮች እንደነበሩ ሪፖርት እንዲያቀርብ። ከቴክኒክ ዕዳ ጋር በተናጠል ለመሥራት ተስማምተናል, እና የአንድሮይድ ስቱዲዮ ቼኮች ሙሉ በሙሉ ተትተዋል።. በDocker ውስጥ ያለው አንድሮይድ ስቱዲዮ ፍተሻዎችን ለማካሄድ አስደሳች ይመስላል፣ ነገር ግን በድጋፍ ላይ ብዙ ችግር ይፈጥራል። ማንኛውም የ አንድሮይድ ስቱዲዮ ስሪቶች ዝማኔ ማለት ለመረዳት ከማይችሉ ስህተቶች ጋር መታገል ማለት ነው። እንዲሁም የቅጽበታዊ ገጽ እይታ ሙከራዎችን መደገፍ ከባድ ነበር፣ ምክንያቱም ቤተ መፃህፍቱ በጣም የተረጋጋ ስላልነበረ እና የውሸት አወንታዊ መረጃዎች ነበሩ። የቅጽበታዊ ገጽ እይታ ሙከራዎች ከቼክ ዝርዝሩ ተወግደዋል።.

በውጤቱም, እኛ ቀርተናል:

  • የ ARK ስብሰባ;
  • የጁኒት ሙከራዎች;
  • የመሳሪያ ሙከራዎች.

የርቀት መሸጎጫ ግራድል

ያለ ከባድ ፍተሻዎች, ሁሉም ነገር የተሻለ ሆነ. ግን ለፍጽምና ምንም ገደብ የለም!

የእኛ መተግበሪያ አስቀድሞ ወደ 150 የግራድል ሞጁሎች ተከፍሏል። የግራድል የርቀት መሸጎጫ ብዙውን ጊዜ በዚህ ጉዳይ ላይ በደንብ ይሰራል፣ ስለዚህ እሱን ለመሞከር ወስነናል።

Gradle የርቀት መሸጎጫ በግለሰብ ሞጁሎች ውስጥ ለግል ተግባራት ቅርሶችን መሸጎጫ የሚያደርግ አገልግሎት ነው። Gradle፣ ኮዱን በትክክል ከማጠናቀር ይልቅ፣ የርቀት መሸጎጫውን ለማንኳኳት እና የሆነ ሰው ይህን ተግባር እንዳከናወነ ለመጠየቅ HTTP ይጠቀማል። አዎ ከሆነ, በቀላሉ ውጤቱን ያወርዳል.

Gradle የርቀት መሸጎጫ ማስኬድ ቀላል ነው ምክንያቱም Gradle Docker ምስል ይሰጣል። በሦስት ሰዓት ውስጥ ይህን ማድረግ ችለናል።

ማድረግ ያለብዎት ዶከርን ማስጀመር እና በፕሮጀክቱ ውስጥ አንድ መስመር መፃፍ ብቻ ነበር። ነገር ግን በፍጥነት መጀመር ቢቻልም, ሁሉም ነገር በደንብ እንዲሰራ በጣም ብዙ ጊዜ ይወስዳል.

ከታች ያለው መሸጎጫ ያጣው ግራፍ ነው።

በሞባይል ልማት ቡድን ውስጥ የ CI እድገት

ገና መጀመሪያ ላይ፣ የመሸጎጫ መጥፋት መቶኛ 65 ገደማ ነበር። ከሶስት ሳምንታት በኋላ ይህንን እሴት ወደ 20% ማሳደግ ችለናል። አንድሮይድ አፕሊኬሽኑ የሚሰበስባቸው ተግባራት እንግዳ የመሸጋገሪያ ጥገኞች ስላሏቸው ግራድል መሸጎጫውን አምልጦታል።

መሸጎጫውን በማገናኘት ግንባታውን በጣም አፋጥንን። ነገር ግን ከመሰብሰብ በተጨማሪ የመሳሪያዎች ሙከራዎችም አሉ, እና ብዙ ጊዜ ይወስዳሉ. ምናልባት ለእያንዳንዱ የመሳብ ጥያቄ ሁሉም ፈተናዎች መካሄድ አያስፈልጋቸውም። ለማወቅ, የተፅዕኖ ትንተና እንጠቀማለን.

ተጽዕኖ ትንተና

በፍላጎት ጥያቄ ላይ git diff እንሰበስባለን እና የተሻሻሉትን የ Gradle ሞጁሎችን እናገኛለን።

በሞባይል ልማት ቡድን ውስጥ የ CI እድገት

የተቀየሩትን ሞጁሎች እና በእነሱ ላይ የሚመረኮዙትን ሁሉንም ሞጁሎች የሚፈትሹ የመሳሪያ ሙከራዎችን ብቻ ማካሄድ ምክንያታዊ ነው። ለአጎራባች ሞጁሎች ሙከራዎችን ማካሄድ ምንም ፋይዳ የለውም: እዚያ ያለው ኮድ አልተለወጠም እና ምንም ሊሰበር አይችልም.

የመሳሪያ ሙከራዎች በጣም ቀላል አይደሉም, ምክንያቱም በከፍተኛ ደረጃ የመተግበሪያ ሞጁል ውስጥ መቀመጥ አለባቸው. እያንዳንዱ ፈተና የየትኛው ሞጁል እንደሆነ ለመረዳት ሂውሪስቲክስን ከባይቴኮድ ትንተና ጋር ተጠቀምን።

የተካተቱትን ሞጁሎች ብቻ እንዲሞክሩ የመሳሪያዎች ሙከራዎችን አሠራር ማሻሻል ስምንት ሳምንታት ያህል ፈጅቷል.

ፍተሻን ለማፋጠን የሚወሰዱ እርምጃዎች በተሳካ ሁኔታ ሠርተዋል። ከ 45 ደቂቃዎች እስከ 15 ድረስ ሄድን. ለግንባታ ሩብ ሰዓት መጠበቅ ቀድሞውኑ የተለመደ ነው.

አሁን ግን አልሚዎች የትኛዎቹ ግንባታዎች እየተጀመሩ እንደሆነ፣ ምዝግብ ማስታወሻው የት እንደሚታይ፣ ግንባታው ለምን ቀይ እንደሆነ፣ የትኛው ሙከራ እንዳልተሳካ፣ ወዘተ እንዳልገባቸው ቅሬታ ማቅረብ ጀምረዋል።

በሞባይል ልማት ቡድን ውስጥ የ CI እድገት

በግብረመልስ ላይ ያሉ ችግሮች እድገትን ይቀንሳሉ፣ስለዚህ ስለ እያንዳንዱ PR ግልፅ እና ዝርዝር መረጃ ለማቅረብ እና በተቻለ መጠን ለመገንባት ሞክረናል። የትኛው ግንባታ እንዳልተሳካ እና ለምን እንደሆነ በማመልከት በ Bitbucket ለ PR አስተያየቶችን በመስጠት ጀመርን እና በ Slack ውስጥ ኢላማ የተደረጉ መልዕክቶችን ጻፍን። በመጨረሻ፣ ለገጹ የPR ዳሽቦርድ ፈጠርን፤ በአሁኑ ጊዜ እየሰሩ ያሉ ሁሉም ግንባታዎች ዝርዝር እና ሁኔታቸው፡ ወረፋ፣ መሮጥ፣ ብልሽት ወይም ተጠናቅቋል። በግንባታው ላይ ጠቅ ማድረግ እና ወደ ምዝግብ ማስታወሻው መሄድ ይችላሉ።

በሞባይል ልማት ቡድን ውስጥ የ CI እድገት

ለዝርዝር አስተያየት ስድስት ሳምንታት አሳልፈዋል።

ዕቅዶች

ወደ የቅርብ ጊዜ ታሪክ እንሂድ። የአስተያየት ጉዳዩን ከፈታን በኋላ አዲስ ደረጃ ላይ ደርሰናል - የራሳችንን ኢምፔል እርሻ ለመገንባት ወሰንን. ብዙ ሙከራዎች እና emulators አሉ ጊዜ, እነርሱ ለማስተዳደር አስቸጋሪ ናቸው. በውጤቱም፣ ሁሉም የእኛ emulators በተለዋዋጭ የግብዓት አስተዳደር ወደ k8s ክላስተር ተንቀሳቅሰዋል።

በተጨማሪም, ሌሎች እቅዶች አሉ.

  • ሊንት ይመለሱ (እና ሌላ የማይንቀሳቀስ ትንታኔ)። አስቀድመን በዚህ አቅጣጫ እየሰራን ነው.
  • ሁሉንም ነገር በ PR እገዳ ላይ ያሂዱ ከጫፍ እስከ መጨረሻ ፈተናዎች በሁሉም የኤስዲኬ ስሪቶች ላይ።

ስለዚህ በአቪቶ ውስጥ ቀጣይነት ያለው ውህደት እድገትን ታሪክ ተከታትለናል። አሁን ከተሞክሮ እይታ አንዳንድ ምክሮችን መስጠት እፈልጋለሁ.

ጠቃሚ ምክሮች

አንድ ምክር ብቻ ብሰጥ እንዲህ ይሆናል፡-

እባክዎ በሼል ስክሪፕቶች ይጠንቀቁ!

ባሽ በጣም ተለዋዋጭ እና ኃይለኛ መሳሪያ ነው, ስክሪፕቶችን ለመጻፍ በጣም ምቹ እና ፈጣን ነው. ነገር ግን ከእሱ ጋር ወጥመድ ውስጥ ሊወድቁ ይችላሉ, እና, በሚያሳዝን ሁኔታ, እኛ በውስጡ ወድቀናል.

ሁሉም የጀመረው በግንባታ ማሽኖቻችን ላይ በሚሰሩ ቀላል ስክሪፕቶች ነው፡-

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

ግን እንደምታውቁት ፣ ሁሉም ነገር እየዳበረ እና ከጊዜ ወደ ጊዜ እየተወሳሰበ ይሄዳል - አንዱን ስክሪፕት ከሌላው እናስኬድ ፣ የተወሰኑ መመዘኛዎችን እዚያ እናስተላልፍ - በመጨረሻ ምን ደረጃ ላይ እንዳለን የሚወስን ተግባር መፃፍ ነበረብን ። አስፈላጊ የሆኑትን ጥቅሶች ለማስገባት, ሁሉንም ለመጀመር.

በሞባይል ልማት ቡድን ውስጥ የ CI እድገት

ለእንደዚህ ዓይነቶቹ ስክሪፕቶች እድገት የሰው ኃይል ወጪዎችን መገመት ይችላሉ ። በዚህ ወጥመድ ውስጥ እንዳትገቡ እመክራችኋለሁ።

ምን ሊተካ ይችላል?

  • ማንኛውም የስክሪፕት ቋንቋ። ጻፍ Python ወይም Kotlin ስክሪፕት የበለጠ ምቹ ምክንያቱም ፕሮግራሚንግ እንጂ ስክሪፕት አይደለም።
  • ወይም ሁሉንም የግንባታ አመክንዮ በቅጹ ይግለጹ ብጁ gradle ተግባራት ለፕሮጀክትዎ.

ሁለተኛውን አማራጭ ለመምረጥ ወስነናል, እና አሁን ሁሉንም የባሽ ስክሪፕቶችን በስርዓት እየሰረዝን እና ብዙ ብጁ የግራድል ስራዎችን እየጻፍን ነው.

ጠቃሚ ምክር ቁጥር 2፡ መሠረተ ልማትን በኮድ ውስጥ ያከማቹ።

የቀጣይ ውህደት ቅንጅቱ በጄንኪንስ ወይም በቲምሲቲ ፣ ወዘተ በዩአይ በይነገጽ ውስጥ ሳይሆን በቀጥታ በፕሮጀክት ማከማቻ ውስጥ በጽሑፍ ፋይሎች መልክ ሲከማች ምቹ ነው። ይህ ስሪትነት ይሰጣል. ወደነበረበት መመለስ ወይም ኮዱን በሌላ ቅርንጫፍ ላይ መገንባት አስቸጋሪ አይሆንም።

ስክሪፕቶች በፕሮጀክት ውስጥ ሊቀመጡ ይችላሉ. ከአካባቢው ጋር ምን ይደረግ?

ጠቃሚ ምክር ቁጥር 3፡ ዶከር አካባቢን ሊረዳ ይችላል።

እሱ በእርግጠኝነት አንድሮይድ ገንቢዎችን ይረዳል ፣ iOS እስካሁን አንድ የለውም ፣ እንደ አለመታደል ሆኖ።

ይህ jdk እና አንድሮይድ-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

ይህንን ዶከር ፋይል ከጻፍኩ በኋላ (ሚስጥር እነግርዎታለሁ ፣ መጻፍ አያስፈልገዎትም ፣ ግን ዝግጁ ሆኖ ከ GitHub ይጎትቱት) እና ምስሉን ሰብስበው መተግበሪያውን የሚገነቡበት ምናባዊ ማሽን ያገኛሉ ። እና የጁኒት ሙከራዎችን ያሂዱ.

ይህ ትርጉም የሚሰጥበት ሁለቱ ዋና ዋና ምክንያቶች መለካት እና ተደጋጋሚነት ናቸው። ዶከርን በመጠቀም፣ ልክ ከቀዳሚው ጋር ተመሳሳይ አካባቢ የሚኖራቸውን ደርዘን የግንባታ ወኪሎችን በፍጥነት ማሳደግ ይችላሉ። ይህ የ CI መሐንዲሶችን ሕይወት በጣም ቀላል ያደርገዋል። አንድሮይድ-ኤስዲክን ወደ ዶከር መግፋት በጣም ቀላል ነው፣ ነገር ግን በኤሚሌተሮች አማካኝነት ትንሽ የበለጠ ከባድ ነው፡ ትንሽ ጠንክረህ መስራት አለብህ (ወይም የተጠናቀቀውን ከ GitHub እንደገና አውርድ)።

ጠቃሚ ምክር ቁጥር 4: ፍተሻዎች የሚደረጉት ለቁጥጥር ሳይሆን ለሰዎች መሆኑን አይርሱ.

ፈጣን እና ከሁሉም በላይ ደግሞ ግልጽ የሆነ ግብረመልስ ለገንቢዎች በጣም አስፈላጊ ነው፡ ምን እንደተበላሸ፣ ምን ሙከራ አልተሳካም፣ የግንባታ ሎግ የት ማየት እችላለሁ።

ጠቃሚ ምክር ቁጥር 5፡ ቀጣይነት ያለው ውህደትን ሲያዳብሩ ተግባራዊ ይሁኑ።

ምን አይነት ስህተቶችን መከላከል እንደሚፈልጉ፣ ምን ያህል ግብዓቶች፣ ጊዜ እና የኮምፒዩተር ጊዜ ለማሳለፍ ፈቃደኛ እንደሆኑ በግልፅ ይረዱ። በጣም ረጅም ጊዜ የሚወስዱ ቼኮች ለምሳሌ በአንድ ሌሊት ለሌላ ጊዜ ማስተላለፍ ይችላሉ። እና በጣም አስፈላጊ ያልሆኑ ስህተቶችን የሚይዙት ሙሉ በሙሉ መተው አለባቸው.

ጠቃሚ ምክር ቁጥር 6፡ የተዘጋጁ መሳሪያዎችን ተጠቀም።

የደመና ሲአይኤን የሚያቀርቡ ብዙ ኩባንያዎች አሉ።

በሞባይል ልማት ቡድን ውስጥ የ CI እድገት

ይህ ለአነስተኛ ቡድኖች ጥሩ መፍትሄ ነው. ምንም ነገር መደገፍ አያስፈልግዎትም፣ ትንሽ ገንዘብ ብቻ ይክፈሉ፣ መተግበሪያዎን ይገንቡ እና የመሣሪያ ሙከራዎችን ያካሂዱ።

ጠቃሚ ምክር ቁጥር 7: በአንድ ትልቅ ቡድን ውስጥ, የቤት ውስጥ መፍትሄዎች የበለጠ ትርፋማ ናቸው.

ነገር ግን ፈጥኖም ሆነ ዘግይቶ, ቡድኑ እያደገ ሲሄድ, የቤት ውስጥ መፍትሄዎች የበለጠ ትርፋማ ይሆናሉ. በእነዚህ ውሳኔዎች ላይ አንድ ችግር አለ. በኢኮኖሚክስ ውስጥ ገቢን የመቀነስ ሕግ አለ-በማንኛውም ፕሮጀክት ውስጥ እያንዳንዱ ቀጣይ ማሻሻያ የበለጠ እና የበለጠ ከባድ እና ብዙ እና ተጨማሪ ኢንቨስትመንት ይፈልጋል።

ኢኮኖሚክስ ቀጣይነት ያለው ውህደትን ጨምሮ መላ ህይወታችንን ይገልፃል። ለቀጣይ ውህደታችን ለእያንዳንዱ የእድገት ደረጃ የሰራተኛ ወጪ መርሃ ግብር ገንብቻለሁ።

በሞባይል ልማት ቡድን ውስጥ የ CI እድገት

ማንኛውም ማሻሻያ ከጊዜ ወደ ጊዜ አስቸጋሪ እየሆነ መምጣቱ ግልጽ ነው. ይህንን ግራፍ ሲመለከቱ፣ በቡድን መጠን እድገት መሰረት ቀጣይነት ያለው ውህደት መጎልበት እንዳለበት መረዳት ይችላሉ። ለሁለት ሰዎች ቡድን 50 ቀናትን ማሳለፍ የውስጥ emulator እርሻን ማዳበር መካከለኛ ሀሳብ ነው። ግን በተመሳሳይ ጊዜ ለትልቅ ቡድን ቀጣይነት ያለው ውህደትን ጨርሶ አለማድረግ መጥፎ ሀሳብ ነው ምክንያቱም የመዋሃድ ችግሮች፣ ግንኙነትን ማስተካከል፣ ወዘተ. የበለጠ ጊዜ ይወስዳል።

ሰዎች ውድ ስለሆኑ ስህተት ስለሚሠሩ እና ሰነፍ ስለሆኑ አውቶሜሽን ያስፈልጋል ብለን ነበር የጀመርነው። ግን ሰዎች እንዲሁ በራስ-ሰር ይሰራሉ። ስለዚህ, ሁሉም ተመሳሳይ ችግሮች በራስ-ሰር ይሠራሉ.

  • አውቶሜሽን ውድ ነው። የሥራውን መርሃ ግብር አስታውሱ.
  • ወደ አውቶሜሽን ስንመጣ ሰዎች ስህተት ይሰራሉ።
  • አንዳንድ ጊዜ አውቶማቲክ ማድረግ በጣም ሰነፍ ነው, ምክንያቱም ሁሉም ነገር በዚህ መንገድ ይሰራል. ለምን ሌላ ነገር አሻሽሏል፣ ለምን ይህ ሁሉ ቀጣይነት ያለው ውህደት?

ነገር ግን ስታቲስቲክስ አለኝ፡ ስህተቶች በ20% ስብሰባዎች ተይዘዋል። እና ይሄ የእኛ ገንቢዎች ኮድን በደንብ ስለሚጽፉ አይደለም. ይህ የሆነበት ምክንያት ገንቢዎች አንዳንድ ስህተት ከሰሩ ወደ ልማት እንደማይሄድ እርግጠኛ ስለሆኑ በራስ-ሰር ቼኮች እንደሚያዙ ነው። በዚህ መሠረት ገንቢዎች በአገር ውስጥ የሆነን ነገር ከመሮጥ እና ከመሞከር ይልቅ ኮድ እና አስደሳች ነገሮችን በመጻፍ ብዙ ጊዜ ሊያጠፉ ይችላሉ።

ቀጣይነት ያለው ውህደትን ይለማመዱ. ግን በመጠኑ።

በነገራችን ላይ ኒኮላይ ኔስቴሮቭ እራሱን ታላቅ ሪፖርቶችን ብቻ ሳይሆን የፕሮግራሙ ኮሚቴ አባልም ነው AppsConf እና ሌሎች ለእርስዎ ትርጉም ያላቸውን ንግግሮች እንዲያዘጋጁ ያግዛል። የሚቀጥለው የኮንፈረንስ ፕሮግራም ሙሉነት እና ጠቃሚነት በርዕሶች ሊገመገም ይችላል። መርሐግብር. እና ለዝርዝር መረጃ፣ ኤፕሪል 22-23 ወደ Infospace ይምጡ።

ምንጭ: hab.com

አስተያየት ያክሉ