Olá! Meu nome é Dmitry, sou engenheiro de lançamento da equipe Avito CI / CD Speed. Há vários anos, meus colegas e eu somos responsáveis por tudo relacionado aos lançamentos de nossos aplicativos móveis e não só. Aleksey Shpirko falou detalhadamente sobre nossos "trens de lançamento" e como o fizemos .
Mas não estamos parados e hoje vamos tentar dizer como nosso sistema de CI / CD evoluiu de um conjunto de scripts e compilações TeamCity para um serviço de lançamento móvel completo que permite gerenciar todo o processo de lançamento do aplicativo por meio de uma interface conveniente.
Um pouco de contexto
O aplicativo móvel Avito é:
- Dezenas de equipes de produto.
- Mais de 20 desenvolvedores para cada plataforma.
- Milhares de testes de IU.
- Dezenas de milhares de testes UNIT.
- Centenas de milhares de linhas de código.
- Lançamentos semanais do Android.
- IOS é lançado a cada duas semanas.
O processo de liberação consiste nas seguintes partes:
- Corte o branch de lançamento do desenvolvimento e marque-o no git.
- Execute todas as verificações automáticas de código e todos os tipos de testes.
- Crie um candidato a lançamento.
- Upload do candidato a lançamento para AppStore / GooglePlay e armazenamento interno de artefatos.
- Envio das informações necessárias aos sistemas de monitoramento.
- -.
- 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 , . .
, « » , . , -. , .