Hallo! Mein Name ist Dmitry, ich bin Release-Ingenieur im Avito CI / CD Speed-Team. Seit einigen Jahren sind meine Kollegen und ich für alles verantwortlich, was mit der Veröffentlichung unserer mobilen Anwendungen zu tun hat, und nicht nur. Aleksey Shpirko sprach ausführlich über unsere "Release-Züge" und wie wir dorthin kamen .
Wir stehen jedoch nicht still und werden heute versuchen, Ihnen zu erklären, wie sich unser CI / CD-System aus einer Reihe von Skripten entwickelt hat und TeamCity zu einem vollwertigen mobilen Release-Service entwickelt, mit dem Sie den gesamten Prozess der Anwendungsfreigabe über eine praktische Oberfläche verwalten können.

Ein bisschen Kontext
Die mobile Avito-Anwendung ist:
- Dutzende von Produktteams.
- Über 20 Entwickler für jede Plattform.
- Tausende von UI-Tests.
- Zehntausende von UNIT-Tests.
- Hunderttausende von Codezeilen.
- Wöchentliche Android-Versionen.
- IOS wird alle zwei Wochen veröffentlicht.
Der Freigabeprozess besteht aus folgenden Teilen:
- Schneiden Sie den Release-Zweig von der Entwicklung ab und markieren Sie ihn in git.
- Führen Sie alle automatischen Codeprüfungen durch und führen Sie alle Arten von Tests durch.
- Erstellen Sie einen Release-Kandidaten.
- Hochladen des Release Candidate in AppStore / GooglePlay und interne Speicherung von Artefakten.
- Senden der erforderlichen Informationen an Überwachungssysteme.
- -.
- 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 , . .
, « » , . , -. , .