"حسنا ، اذهب لذلك!" أو تطبيقات المحمول CI / CD على أساس العقد

مرحبا! اسمي ديمتري ، أنا مهندس تحرير في فريق Avito CI / CD Speed. لعدة سنوات حتى الآن ، كنت أنا وزملائي مسؤولين عن كل ما يتعلق بإصدارات تطبيقات الهاتف المحمول الخاصة بنا وليس فقط. تحدث أليكسي شبيركو بتفصيل كبير عن "قطارات الإطلاق" وكيف وصلنا إلى هناك .



لكننا لا نقف مكتوفي الأيدي واليوم سنحاول إخبارك بكيفية تطور نظام CI / CD الخاص بنا من مجموعة من البرامج النصية وبناء TeamCity إلى خدمة إصدار متنقلة كاملة تتيح لك إدارة عملية إصدار التطبيق بالكامل من خلال واجهة مريحة.





قليلا من السياق



تطبيق Avito للجوال هو:



  • العشرات من فرق المنتجات.
  • 20+ مطور لكل منصة.
  • الآلاف من اختبارات واجهة المستخدم.
  • عشرات الآلاف من اختبارات الوحدة.
  • مئات الآلاف من أسطر التعليمات البرمجية.
  • إصدارات Android الأسبوعية.
  • يتم إصدار IOS كل أسبوعين.


تتكون عملية التحرير من الأجزاء التالية:



  1. قطع فرع التحرير من التطوير ووضع علامات في git.
  2. قم بتشغيل جميع عمليات فحص التعليمات البرمجية التلقائية وتشغيل جميع أنواع الاختبارات.
  3. بناء مرشح الإصدار.
  4. تحميل الإصدار المرشح إلى AppStore / GooglePlay والتخزين الداخلي للقطع الأثرية.
  5. إرسال المعلومات اللازمة لأنظمة المراقبة.
  6.   -.
  7. what's new  QA .
  8. Jira- — ,  , QA -.
  9.   -.
  10. .
  11.    .
  12.  100% .






2019    TeamCity-. cron TeamCity-,   1-9.



, - . , -   ,   «»  .   .



  .



1.  TeamCity



  .   .   .





  TeamCity ,     :



  • .
  • .
  • .
  •  « ».


-1 , -3 1 4,  -7 ,   . ,  .   .



.



2.



,   .  — CI/CD team Testing team.   CD — .  Testing team   -  — ,   .



, , ( , Jira-, ,   ) .  , , , .



  .   , . .



3.



,   . : , , -. ,  , : -, , , . Slack-,   (Jira, Slack), -.   « 100%?», « ?», « ?», « ?».



  , , , , .





,   ,    CI CD .



,   .



CD:



  •  git;
  •  git;
  • CI-;
  • (Jira-, Release Notes);
  • ;
  •   ;
  • .


CI:



  • ;
  • ;
  • - ;
  •  .


,     .     TeamCity .



, , CI  CD. CD CI-   ,   . , «--» . CI CD, «».



 — JSON-,   CD  CI-, CI.





CD   , , CI . CI , «» CD.   .



config.json:



{
"schema_version": 1, 
"project": "avito", 
"release_version": "777.5", 
"output_descriptor": {
        "path":"http://artifactory.ru/releases/avito_android/777.5_1/output.json", 
        "skip_upload": false
},
 "deployments":  [
        {
        "type": "google-play",
        "artifact_type": "bundle",
        "build_variant": "release", 
        "track": "beta"
        }
  ]
}


CI-, «»   777.5, ,    ,  output_descriptor, «»,   .



output.json:



{
  "schema_version": 1,
  "teamcity_build_url": "https://tmct.ru/viewLog.html?buildId=17317583",
  "build_number": "777",
  "release_version": "777.5",
  "git_branch": {
    "name": "release-avito/777.5",
    "commit_hash": "2c54c50c220bf91bc1a6ca10b34f53a540c80551"
  },
  "test_results": {
    "report_id": "5f3e94fd23d67bf434e5c1b8",
    "report_url": "https://
tests.avito.ru/report/AvitoAndroid/FunctionalTests/2c54c50c220bf91",
    "report_coordinates": {
      "plan_slug": "AvitoAndroid",
      "job_slug": "FunctionalTests",
      "run_id": "2c54c50c220bf91"
    }
  },
  "artifacts": [
    {
      "type": "apk",
      "name": "avito-777.5-777-release.apk",
      "uri": "http://example.com/artifactory/android/avito/777.5-777/avito-777.5-777-release.apk",
      "build_variant": "release"
    },
   ]
}


CI     .



Nupokati:



  . , . «»  -   .



 TeamCity  CD .



  ?



  1. .
  2. ,   .
  3.   .
  4. , .
  5.   .


Nupokati —  .





  CD-  Python .

  CD- , CI,     .



 CD- — Release.





, , :





:





 , pipeline  .   ,   .



:







   













     





  CI CD    , .   .



, «  » , .       , -. , .




All Articles