salut! Je m'appelle Dmitry, je suis ingénieur de publication dans l'équipe Avito CI / CD Speed. Depuis plusieurs années maintenant, mes collègues et moi sommes responsables de tout ce qui concerne les sorties de nos applications mobiles et pas seulement. Aleksey Shpirko a parlé en détail de nos "trains de sortie" et de la façon dont nous y sommes arrivés .
Mais nous ne sommes pas en reste et aujourd'hui, nous allons essayer de vous dire comment notre système CI / CD a évolué à partir d'un ensemble de scripts et TeamCity se transforme en un service de publication mobile à part entière qui vous permet de gérer l'ensemble du processus de publication de l'application via une interface pratique.
Un peu de contexte
L'application mobile Avito est:
- Des dizaines d'équipes produit.
- 20+ développeurs pour chaque plate-forme.
- Des milliers de tests d'interface utilisateur.
- Des dizaines de milliers de tests UNIT.
- Des centaines de milliers de lignes de code.
- Sorties hebdomadaires Android.
- IOS sort toutes les deux semaines.
Le processus de lancement comprend les parties suivantes:
- Découpez la branche release de develop et étiquetez-la dans git.
- Exécutez toutes les vérifications de code automatiques et exécutez toutes sortes de tests.
- Créez une version candidate.
- Téléchargement de la release candidate sur AppStore / GooglePlay et stockage interne des artefacts.
- Envoi des informations nécessaires aux systèmes de surveillance.
- -.
- 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 , . .
, « » , . , -. , .