Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
«CI процессы в Android разработке Avito», Серге...
Search
AvitoTech
March 20, 2018
Programming
0
440
«CI процессы в Android разработке Avito», Сергей Пинчук, Avito
AvitoTech
March 20, 2018
Tweet
Share
More Decks by AvitoTech
See All by AvitoTech
Один кликстрим на все бэкенды. Дмитрий Хасанов (Авито)
avitotech
0
780
«Масштабируемая архитектура фронтенда» — Роман Дворнов, Avito
avitotech
0
1.2k
Атомарные SPA — Александр Китов, Альфа-Банк
avitotech
0
1.7k
Моделирование пользовательских предпочтений в мультимодальных данных. Hady W. Lauw, Максим Ткаченко (Singapore Management University)
avitotech
0
380
Кластеризация волатильных объявлений с помощью EM-алгоритма — Василий Лексин (Avito)
avitotech
0
400
«(Не)Безопасность 101» — Григорий Джанелидзе, Mosdroid
avitotech
0
500
Кластеризация волатильных объявлений с помощью EM-алгоритма — Василий Лексин (Avito)
avitotech
0
110
Аналитическое хранилище Avito.ru — от больших к очень большим данным — Артем Данилов (Avito)
avitotech
1
4.8k
Кросс-продуктовые эффекты, или как мы оценивали вклад «Электричек» — Екатерина Лосева (Туту.ру)
avitotech
0
4.6k
Other Decks in Programming
See All in Programming
AtCoder Conference 2025「LLM時代のAHC」
imjk
2
650
公共交通オープンデータ × モバイルUX 複雑な運行情報を 『直感』に変換する技術
tinykitten
PRO
0
180
GISエンジニアから見たLINKSデータ
nokonoko1203
0
190
.NET Conf 2025 の興味のあるセッ ションを復習した / dotnet conf 2025 quick recap for backend engineer
tomohisa
0
110
LLM Çağında Backend Olmak: 10 Milyon Prompt'u Milisaniyede Sorgulamak
selcukusta
0
140
生成AI時代を勝ち抜くエンジニア組織マネジメント
coconala_engineer
0
38k
React 19でつくる「気持ちいいUI」- 楽観的UIのすすめ
himorishige
11
4.6k
フルサイクルエンジニアリングをAI Agentで全自動化したい 〜構想と現在地〜
kamina_zzz
0
350
QAフローを最適化し、品質水準を満たしながらリリースまでの期間を最短化する #RSGT2026
shibayu36
0
1.7k
「コードは上から下へ読むのが一番」と思った時に、思い出してほしい話
panda728
PRO
39
26k
SQL Server 2025 LT
odashinsuke
0
130
リリース時」テストから「デイリー実行」へ!開発マネージャが取り組んだ、レガシー自動テストのモダン化戦略
goataka
0
160
Featured
See All Featured
30 Presentation Tips
portentint
PRO
1
180
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
0
110
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
74
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
54
49k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
140
Leo the Paperboy
mayatellez
1
1.3k
The untapped power of vector embeddings
frankvandijk
1
1.5k
The Language of Interfaces
destraynor
162
26k
Believing is Seeing
oripsolob
0
20
The Art of Programming - Codeland 2020
erikaheidi
56
14k
Building a Scalable Design System with Sketch
lauravandoore
463
34k
Transcript
CI процессы в Android разработке Avito Пинчук Сергей 1
План • Общие сведения о Avito Android • Интеграция проверок
на CI • Обзор набора тестов и их оптимизации • Планы на будущее • Итоги • Вопросы 2
Avito Android CI это • Более 11,000 unit-тестов • Более
800 компонентных тестов • Более 300 функциональных end-to-end тестов • Порядка 50 прогонов в день • Продолжительность 100 часов ежедневно 3
Время выполнения unit-тестов 4
Время выполнения unit-тестов 5
Стек технологий 6
Git flow 7
Git flow 8
Git flow 9
Git flow 10
Интеграция тестов на CI ?????? 11
Интеграция тестов на CI Tests 12
Интеграция тестов на CI 13
Интеграция тестов на CI Tests Tests 14
Интеграция тестов на CI 15
git merge origin/develop Tests 16
git merge origin/develop Tests 17
git merge origin/develop Tests 18
Pull request flow в Avito • Билды запускаются при открытии
Pull Request и каждом последующем коммите • Перед каждым тестом git merge origin/develop • “Контрольный” запуск тестов перед merge в develop 19
Причины хранить CI скрипты в VCS • Версионирование • Синхронизация
изменений • Тестирование изменений на ветке • Локальная воспроизводимость 20
Настройка окружения 21 VS
Плюсы использования Docker • Стабильность и повторяемость окружения • Локальный
запуск CI билдов • Централизованное и контролируемое обновление • Версионирование 22
Docker образы • Builder • Emulator • DevOps 23
Builder Dockerfile RUN wget https://dl.google.com/android/repository/sdk- tools-linux-3859397.zip -O android-sdk.zip RUN unzip
android-sdk.zip -d /opt/android-sdk COPY android-sdk-packages /android-sdk-packages RUN yes | sdkmanager —package_file=/android-sdk-packages RUN yes | sdkmanager —licenses 24
Builder Dockerfile RUN wget https://dl.google.com/android/repository/sdk- tools-linux-3859397.zip -O android-sdk.zip RUN unzip
android-sdk.zip -d /opt/android-sdk COPY android-sdk-packages /android-sdk-packages RUN yes | sdkmanager —package_file=/android-sdk-packages RUN yes | sdkmanager —licenses 25
Builder Dockerfile RUN wget https://dl.google.com/android/repository/sdk- tools-linux-3859397.zip -O android-sdk.zip RUN unzip
android-sdk.zip -d /opt/android-sdk COPY android-sdk-packages /android-sdk-packages RUN yes | sdkmanager —package_file=/android-sdk-packages RUN yes | sdkmanager —licenses 26
Builder Dockerfile RUN wget https://dl.google.com/android/repository/sdk- tools-linux-3859397.zip -O android-sdk.zip RUN unzip
android-sdk.zip -d /opt/android-sdk COPY android-sdk-packages /android-sdk-packages RUN yes | sdkmanager —package_file=/android-sdk-packages RUN yes | sdkmanager —licenses 27
Emulator Dockerfile RUN echo "no" | \ avdmanager create avd
\ —name emulator_19 \ —package "system-images;android-19;google_apis;x86" \ —abi google_apis/x86 RUN mksdcard -l e 512M /sdcard.img COPY hardware/config_19.ini \ $HOME/.android/avd/emulator_19.avd/config.ini 28
Emulator Dockerfile RUN echo "no" | \ avdmanager create avd
\ —name emulator_19 \ —package "system-images;android-19;google_apis;x86" \ —abi google_apis/x86 RUN mksdcard -l e 512M /sdcard.img COPY hardware/config_19.ini \ $HOME/.android/avd/emulator_19.avd/config.ini 29
Emulator Dockerfile RUN echo "no" | \ avdmanager create avd
\ —name emulator_19 \ —package "system-images;android-19;google_apis;x86" \ —abi google_apis/x86 RUN mksdcard -l e 512M /sdcard.img COPY hardware/config_19.ini \ $HOME/.android/avd/emulator_19.avd/config.ini 30
gradle.properties org.gradle.jvmargs=-Xmx8192m org.gradle.daemon=false org.gradle.caching=true org.gradle.parallel=true* org.gradle.workers.max=8 *broken in Kotlin 1.2.20
issue KT-22513 31
Билды на PR • Lint • Build release • Unit
tests • UI tests 32
Android lint • он есть (: 33
Build release 34 Gradle build durason sme, minutes 0 5,5
11 16,5 22 default build cache build cache + parallel *KT-22513
Unit tests 35
Unit tests 36
UI tests • Не запускаем автотесты на железных устройствах •
Отказались от Firebase • Тестируем на AVD эмуляторах 37
Цели на будущее • impact-анализ в UI тестах • gradle
remote cache 38
Итоги • Тестирование на CI это всегда компромисс между полнотой
проверок и затрачиваемыми ресурсами • Не делать карго-культ из CI/CD практик • Пробовать что-то новое 39
Спасибо! sapinchuk 40