Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
«CI процессы в Android разработке Avito», Серге...
Search
AvitoTech
March 20, 2018
Programming
480
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
«CI процессы в Android разработке Avito», Сергей Пинчук, Avito
AvitoTech
March 20, 2018
More Decks by AvitoTech
See All by AvitoTech
Один кликстрим на все бэкенды. Дмитрий Хасанов (Авито)
avitotech
0
840
«Масштабируемая архитектура фронтенда» — Роман Дворнов, Avito
avitotech
0
1.3k
Атомарные SPA — Александр Китов, Альфа-Банк
avitotech
0
2k
Моделирование пользовательских предпочтений в мультимодальных данных. Hady W. Lauw, Максим Ткаченко (Singapore Management University)
avitotech
0
410
Кластеризация волатильных объявлений с помощью EM-алгоритма — Василий Лексин (Avito)
avitotech
0
440
«(Не)Безопасность 101» — Григорий Джанелидзе, Mosdroid
avitotech
0
530
Кластеризация волатильных объявлений с помощью EM-алгоритма — Василий Лексин (Avito)
avitotech
0
130
Аналитическое хранилище Avito.ru — от больших к очень большим данным — Артем Данилов (Avito)
avitotech
1
4.9k
Кросс-продуктовые эффекты, или как мы оценивали вклад «Электричек» — Екатерина Лосева (Туту.ру)
avitotech
0
4.6k
Other Decks in Programming
See All in Programming
大喜利で理解するLLM as a Judge / Understanding LLM-as-a-Judge through Ogiri
rockname
0
140
フロントエンドUIフレームワークのこれまでとこれから
ssssota
5
2.8k
20260914 AIエージェント時代のPlatform Engineering LLM基盤とプロダクトの責務境界線
kanfab1
7
2.1k
速習iPhone Duo対応
yuukiw00w
1
640
数年滞っていたダークモード対応をおよそ2週間で完了させる
chigichan24
0
730
Snowflakeで業務アプリを作ろう。 Snowflakeのアプリ機能解説&実践ガイド
ayumu_yamaguchi
1
280
AIは賢い。でも実行環境は? CLIおじさんがAI時代に伝えたいこと ~ CLIおじさんがAI時代に伝えたいこと ~
curekoshimizu
1
250
変化を抱擁するドキュメントの作り方 - ビジネスルール駆動開発がもたらす、コードとの新しい関係
ioki
2
210
Are APIs Still Relevant in the AI Era?
soyuka
0
270
新卒PdEのリアル
ryu1013
1
500
Vue Fes Japan 2026 タイムテーブル徹底解説
448jp
1
250
Building an Out-of-Order CPU
latte72
1
790
Featured
See All Featured
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.3k
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
A designer walks into a library…
pauljervisheath
211
25k
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
660
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
540
Building AI with AI
inesmontani
PRO
1
1.2k
sira's awesome portfolio website redesign presentation
elsirapls
0
420
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
1
1.6k
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
590
jQuery: Nuts, Bolts and Bling
dougneiner
66
8.6k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.8k
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