I te wa e whakawhanake ana i tetahi kaupapa mo te papanga Android, ahakoa ko te mea iti rawa, i muri mai ranei me mahi koe ki te taiao whanaketanga. I tua atu i te Android SDK, he mea tika ki te whai i te putanga hou o Kotlin, Gradle, papa-taputapu, hanga-taputapu. A, ki te mea kei runga i te miihini a te kaiwhakawhanake ka whakatauhia katoatia enei ti'aturi ki te whakamahi i te Android Studio IDE, na i runga i te kaimau CI/CD ka taea e ia whakahou te huri ki te mahunga. A, ki te mea i roto i te whanaketanga paetukutuku kua riro a Docker hei otinga paerewa mo te raru o te taiao, na te aha e kore ai e ngana ki te whakaoti i tetahi raru rite ki te whanaketanga Android ma te whakamahi ...
Mo te hunga kaore e mohio he aha te Docker, ki te ngawari, he taputapu mo te hanga i te mea e kiia nei. "ipu" kei roto he pata OS iti me te huinga raupaparorohiko e tika ana ka taea e matou te tuku ki nga waahi katoa e hiahia ana matou, me te tiaki i te taiao. He aha nga mea kei roto i ta maatau ipu ka whakatauhia i roto i te Dockerfile, ka kohia ki tetahi ahua ka taea te whakarewahia ki nga waahi katoa me nga ahuatanga ngoikore.
Ko te tukanga whakaurunga me nga kaupapa o Docker e tino whakaahuahia ana i roto i tana
# Т.к. основным инструментом для сборки Android-проектов является Gradle,
# и по счастливому стечению обстоятельств есть официальный Docker-образ
# мы решили за основу взять именно его с нужной нам версией Gradle
FROM gradle:5.4.1-jdk8
# Задаем переменные с локальной папкой для Android SDK и
# версиями платформы и инструментария
ENV SDK_URL="https://dl.google.com/android/repository/sdk-tools-linux-3859397.zip"
ANDROID_HOME="/usr/local/android-sdk"
ANDROID_VERSION=28
ANDROID_BUILD_TOOLS_VERSION=28.0.3
# Создаем папку, скачиваем туда SDK и распаковываем архив,
# который после сборки удаляем
RUN mkdir "$ANDROID_HOME" .android
&& cd "$ANDROID_HOME"
&& curl -o sdk.zip $SDK_URL
&& unzip sdk.zip
&& rm sdk.zip
# В следующих строчках мы создаем папку и текстовые файлы
# с лицензиями. На оф. сайте Android написано что мы
# можем копировать эти файлы с машин где вручную эти
# лицензии подтвердили и что автоматически
# их сгенерировать нельзя
&& mkdir "$ANDROID_HOME/licenses" || true
&& echo "24333f8a63b6825ea9c5514f83c2829b004d1" > "$ANDROID_HOME/licenses/android-sdk-license"
&& echo "84831b9409646a918e30573bab4c9c91346d8" > "$ANDROID_HOME/licenses/android-sdk-preview-license"
# Запускаем обновление SDK и установку build-tools, platform-tools
RUN $ANDROID_HOME/tools/bin/sdkmanager --update
RUN $ANDROID_HOME/tools/bin/sdkmanager "build-tools;${ANDROID_BUILD_TOOLS_VERSION}"
"platforms;android-${ANDROID_VERSION}"
"platform-tools"
Ka tiakina e matou i roto i te kōpaki me ta maatau kaupapa Android ka tiimata ki te hanga i te ipu me te whakahau
docker build -t android-build:5.4-28-27 .
Taumahi -t e tohu ana i te tohu, i te ingoa ranei o ta maatau ipu, kei roto ko tona ingoa me tona putanga. I roto i to maatau, i kiia e matou he Android-hanga, a, i roto i te putanga i tohuhia e matou he huinga o nga putanga o te gradle, phi-sdk me nga taputapu-papa. I te wa kei te heke mai, ka ngawari ake te rapu i te ahua e hiahiatia ana ma te ingoa ma te whakamahi i tenei "putanga".
Ka oti te huihuinga, ka taea e taatau te whakamahi i to maatau ahua o te rohe, ka taea e taatau te tango ma te whakahau pana waka ki tetahi putunga whakaahua a te iwi, motuhake ranei hei tango atu ki etahi atu miihini.
Hei tauira, me hanga he kaupapa mo te rohe. Ki te mahi i tenei, i roto i te kōpaki me te kaupapa, whakahaerehia te whakahau
docker run --rm -v "$PWD":/home/gradle/ -w /home/gradle android-build:5.4.1-28-27 gradle assembleDebug
Kia mohio tatou he aha te tikanga:
ka oma te mahi - te whakahau whakarewa whakaahua ake
-rm — ko te tikanga ka mutu te ipu, ka mukua e ia nga mea katoa i hanga i tona oranga
-v "$PWD":/home/gradle/ - ka whakairihia te kōpaki o nāianei me ta maatau kaupapa Android ki roto i te kōpaki ipu o roto / home / gradle /
-w /home/gradle — ka whakatakoto i te raarangi mahi o te ipu
phi-hanga: 5.4.1-28-27 — te ingoa o ta matou ipu i kohia e matou
gradle assembleDebug — te roopu hui tuturu e whakahiato ana i ta maatau kaupapa
Mena ka pai nga mea katoa, i roto i te rua hēkona/meneti ka kite koe i runga i to mata tetahi mea penei HANGA ANGitu i roto i te 8m 3s! Na kei roto i te kōpaki taupānga / hanga / putanga / apk te tono kua kohia.
Ka taea e koe te mahi i etahi atu mahi gradle i te ahua rite - tirohia te kaupapa, whakahaere whakamatautau, aha atu. Ko te painga nui ko te mea ka hiahia taatau ki te hanga i te kaupapa ki runga i tetahi atu miihini, kaore e tika kia maaharahara ki te whakauru i te taiao katoa ka nui ki te tango i te ahua e tika ana me te whakahaere i te hanga ki roto.
Kaore te ipu e penapena i nga huringa, ka whakarewahia ia huihuinga mai i te wahanga, i tetahi taha, ka whakamanahia te tuakiri o te huihuinga ahakoa te waahi ka whakarewahia, i tetahi atu ringa, ia wa me tango e koe nga whakawhirinaki katoa me te whakahiato ano i nga waehere katoa, a he wa nui tenei. Na reira, i tua atu i te tiimata "makariri", kei a maatau te kowhiringa ki te tiimata i te hanga i te wa e penapena ana nga mea e kiia nei. "keteroki", ka tiakina e matou te kōpaki ~/.gradle ma te kape noa ki te kōpaki mahi o te kaupapa, a i te timatanga o te hanga e whai ake nei ka whakahokia mai e matou. I nukuhia e matou nga tikanga kape katoa ki roto i nga tuhinga motuhake ka tiimata te ahua o te whakahau whakarewatanga
docker run --rm -v "$PWD":/home/gradle/ -w /home/gradle android-build:5.4.1-28-27 /bin/bash -c "./pre.sh; gradle assembleDebug; ./post.sh"
Ko te mutunga mai, he maha nga wa i whakaitihia ai to maatau wa hanga kaupapa (i runga i te maha o nga whakawhirinakitanga ki te kaupapa, engari ko te kaupapa toharite i timata ki te huihui i roto i te 1 meneti hei utu mo te 5 meneti).
Ko enei katoa, ko te tikanga, ka whai tikanga noa mena kei a koe to kaimau CI/CD o roto, e tautoko ana koe i a koe ano. Engari inaianei he maha nga ratonga kapua ka whakatauhia enei raru katoa kaore koe e awangawanga mo taua mea, ka taea hoki te tohu i nga waahanga huihuinga e tika ana ki nga tautuhinga kaupapa.
Ko nga kaiwhakamahi kua rehita anake ka uru ki te rangahau.
Kei te pupuri koe i to punaha CI/CD i roto i te whare, kei te whakamahi ratonga tuatoru ranei?
-
Ka whakamahia e matou he tūmau o roto
-
Ka whakamahia e matou he ratonga o waho
-
Kaore matou e whakamahi CI/CD
-
Ētahi atu
42 nga kaiwhakamahi i pooti. 16 nga kaiwhakamahi i aukati.
Source: will.com