「まあ、頑張れ!」または契約に基づくCI / CDモバイルアプリケーション

こんにちは!私の名前はDmitryです。AvitoCI/ CDSpeedチームのリリースエンジニアです。ここ数年、同僚と私は、モバイルアプリケーションのリリースに関連するすべての責任を負っています。Aleksey Shpirkoは、私たちの「リリーストレイン」とその取り組みについて詳細に話しまし



しかし、私たちは立ち止まっておらず、今日は、CI / CDシステムが一連のスクリプトとTeamCityからどのように進化したかをお伝えします。これにより、便利なインターフェイスを介してアプリケーションリリースプロセス全体を管理できる本格的なモバイルリリースサービスになります。





ちょっとした文脈



Avitoモバイルアプリケーションは次のとおりです。



  • 数十の製品チーム。
  • プラットフォームごとに20人以上の開発者。
  • 何千ものUIテスト。
  • 数万のUNITテスト。
  • 数十万行のコード。
  • Androidの毎週のリリース。
  • IOSは2週間ごとにリリースします。


リリースプロセスは、次の部分で構成されています。



  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