こんにちは!私の名前はDmitryです。AvitoCI/ CDSpeedチームのリリースエンジニアです。ここ数年、同僚と私は、モバイルアプリケーションのリリースに関連するすべての責任を負っています。Aleksey Shpirkoは、私たちの「リリーストレイン」とその取り組みについて詳細に話しました。
しかし、私たちは立ち止まっておらず、今日は、CI / CDシステムが一連のスクリプトとTeamCityからどのように進化したかをお伝えします。これにより、便利なインターフェイスを介してアプリケーションリリースプロセス全体を管理できる本格的なモバイルリリースサービスになります。
ちょっとした文脈
Avitoモバイルアプリケーションは次のとおりです。
- 数十の製品チーム。
- プラットフォームごとに20人以上の開発者。
- 何千ものUIテスト。
- 数万のUNITテスト。
- 数十万行のコード。
- Androidの毎週のリリース。
- IOSは2週間ごとにリリースします。
リリースプロセスは、次の部分で構成されています。
- 開発からリリースブランチをスライスし、gitでタグ付けします。
- すべての自動コードチェックを実行し、すべての種類のテストを実行します。
- リリース候補を作成します。
- リリース候補をAppStore / GooglePlayにアップロードしてアーティファクトを内部ストレージします。
- 監視システムに必要な情報を送信します。
- -.
- what's new QA .
- Jira- — , , QA -.
- -.
- .
- .
- 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 .
?
- .
- , .
- .
- , .
- .
Nupokati — .
CD- Python .
CD- , CI, .
CD- — Release
.
, , :
:
, pipeline . , .
:
CI CD , . .
, « » , . , -. , .