Π‘Π±ΠΎΡ€ΠΊΠ° Π½Π° Android ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π² Docker ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€

ΠšΠΎΠ³Π°Ρ‚ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π²Π°Ρ‚Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π·Π° Android, Π΄ΠΎΡ€ΠΈ ΠΈ Π½Π°ΠΉ-малкият, Ρ€Π°Π½ΠΎ ΠΈΠ»ΠΈ късно сС ΡΠ±Π»ΡŠΡΠΊΠ²Π°Ρ‚Π΅ с Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π²Π°Ρ‰Π°Ρ‚Π° срСда. ОсвСн Android SDK Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° ΠΈΠΌΠ°Ρ‚Π΅ послСдната вСрсия Π½Π° Kotlin, Gradle, platform-tools ΠΈ build-tools. И Π°ΠΊΠΎ Π½Π° ΠΌΠ°ΡˆΠΈΠ½Π°Ρ‚Π° Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° Ρ‚Π΅Π·ΠΈ зависимости сС Ρ€Π΅ΡˆΠ°Π²Π°Ρ‚ ΠΏΡ€Π΅Π΄ΠΈΠΌΠ½ΠΎ Ρ‡Ρ€Π΅Π· Android Studio IDE, Ρ‚ΠΎ Π½Π° CI/CD ΡΡŠΡ€Π²ΡŠΡ€Π° всяка актуализация ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΏΡ€Π΅Π²ΡŠΡ€Π½Π΅ Π² Π³ΠΎΠ»ΠΎΠ²ΠΎΠ±ΠΎΠ»ΠΈΠ΅. И Π°ΠΊΠΎ Π·Π° ΡƒΠ΅Π± Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ‚Π° Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° с ΠΎΠΊΠΎΠ»Π½Π°Ρ‚Π° срСда стана стандарт с Docker, Π·Π°Ρ‰ΠΎ Π΄Π° Π½Π΅ ΠΎΠΏΠΈΡ‚Π°ΠΌΠ΅ Π΄Π° Ρ€Π΅ΡˆΠΈΠΌ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π΅Π½ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ ΠΈ Π² Android Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ‚Π°...

Π—Π° Ρ‚Π΅Π·ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ Π½Π΅ знаят ΠΊΠ°ΠΊΠ²ΠΎ Π΅ Docker β€” Π² Π½Π°ΠΉ-простия Π²ΠΈΠ΄, Ρ‚ΠΎΠ²Π° Π΅ инструмСнт Π·Π° създаванС Π½Π° Ρ‚.Π½. β€žΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈβ€œ, Π² ΠΊΠΎΠΈΡ‚ΠΎ сС ΡΡŠΠ΄ΡŠΡ€ΠΆΠ° ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½ΠΎΡ‚ΠΎ ядро Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Π°Ρ‚Π° систСма ΠΈ нСобходимия софтуСр, ΠΊΠΎΠΈΡ‚ΠΎ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Ρ€Π°Π·Π³Ρ€ΡŠΡ‰Π°ΠΌΠ΅ ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ ΠΏΠΎΠΆΠ΅Π»Π°Π΅Ρ‚Π΅, Π·Π°ΠΏΠ°Π·Π²Π°ΠΉΠΊΠΈ ΡΡŠΡ‰Π΅Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΎΠΊΠΎΠ»Π½Π°Ρ‚Π° срСда. Какво Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‰Π΅ бъдС Π² нашия ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ сС опрСдСля Π² Dockerfile, ΠΊΠΎΠΉΡ‚ΠΎ слСд Ρ‚ΠΎΠ²Π° сС ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π° Π² ΠΎΠ±Ρ€Π°Π·, ΠΊΠΎΠΉΡ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° сС стартира навсякъдС ΠΈ ΠΏΡ€ΠΈΡ‚Π΅ΠΆΠ°Π²Π° свойствата Π½Π° идСмпотСнтност.

ΠŸΡ€ΠΎΡ†Π΅ΡΡŠΡ‚ Π½Π° инсталиранС ΠΈ основитС Π½Π° Docker са прСкрасно описани Π² докумСнтацията ΠΌΡƒ. официалния сайтЗатова, ΠΊΠ°Ρ‚ΠΎ забягвамС ΠΌΠ°Π»ΠΊΠΎ Π½Π°ΠΏΡ€Π΅Π΄, Π΅Ρ‚ΠΎ какъв Dockerfile ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ…ΠΌΠ΅.

# Π’.ΠΊ. основным инструмСнтом для сборки 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"

Π—Π°ΠΏΠ°Π·Π²Π°ΠΌΠ΅ Π³ΠΎ Π² ΠΏΠ°ΠΏΠΊΠ°Ρ‚Π° с нашия Android ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΈ стартирамС сборката Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° с ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π°.

docker build -t android-build:5.4-28-27 .

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚ΡŠΡ€ -t опрСдСля Ρ‚Π°Π³ ΠΈΠ»ΠΈ ΠΈΠΌΠ΅Ρ‚ΠΎ Π½Π° нашия ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€, ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ сС ΡΡŠΡΡ‚ΠΎΠΈ ΠΎΡ‚ ΠΈΠΌΠ΅Ρ‚ΠΎ ΠΌΡƒ ΠΈ вСрсията. Π’ нашия случай Π³ΠΎ Π½Π°Ρ€Π΅ΠΊΠΎΡ…ΠΌΠ΅ android-build, Π° Π² вСрсията посочихмС ΡΡŠΠ²ΠΊΡƒΠΏΠ½ΠΎΡΡ‚Ρ‚Π° ΠΎΡ‚ вСрсиитС Π½Π° gradle, android-sdk ΠΈ platform-tools. По-късно Ρ‰Π΅ Π½ΠΈ бъдС ΠΏΠΎ-лСсно Π΄Π° Ρ‚ΡŠΡ€ΡΠΈΠΌ нуТния ΠΎΠ±Ρ€Π°Π· ΠΏΠΎ ΠΈΠΌΠ΅, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ Ρ‚Π°ΠΊΠ°Π²Π° β€žΠ²Π΅Ρ€ΡΠΈΡβ€œ.

Π‘Π»Π΅Π΄ ΠΊΠ°Ρ‚ΠΎ сборката Π΅ Π·Π°Π²ΡŠΡ€ΡˆΠ΅Π½Π°, ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ нашия ΠΎΠ±Ρ€Π°Π· Π»ΠΎΠΊΠ°Π»Π½ΠΎ, ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Π³ΠΎ ΠΊΠ°Ρ‡ΠΈΠΌ с ΠΊΠΎΠΌΠ°Π½Π΄Π°. docker push Π² ΠΏΡƒΠ±Π»ΠΈΡ‡Π΅Π½ ΠΈΠ»ΠΈ частСн Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ Π½Π° ΠΎΠ±Ρ€Π°Π·ΠΈ, Π·Π° Π΄Π° ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Π³ΠΎ ΠΈΠ·Ρ‚Π΅Π³Π»ΠΈΠΌ Π½Π° Π΄Ρ€ΡƒΠ³ΠΈ машини.

Π’ качСството Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ‰Π΅ ΡΡŠΠ±Π΅Ρ€Π΅ΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π»ΠΎΠΊΠ°Π»Π½ΠΎ. Π—Π° Ρ†Π΅Π»Ρ‚Π° Π² ΠΏΠ°ΠΏΠΊΠ°Ρ‚Π° с ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° изпълнявамС ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π°.

docker run --rm -v "$PWD":/home/gradle/ -w /home/gradle android-build:5.4.1-28-27 gradle assembleDebug

Π”Π° Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΠΊΠ°ΠΊΠ²ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π²Π° тя:

docker run β€” самата ΠΊΠΎΠΌΠ°Π½Π΄Π° Π·Π° стартиранС Π½Π° ΠΎΠ±Ρ€Π°Π·Π°.
-rm β€” ΠΎΠ·Π½Π°Ρ‡Π°Π²Π°, Ρ‡Π΅ слСд спиранСто Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°, Ρ‚ΠΎΠΉ ΠΈΠ·Ρ‚Ρ€ΠΈΠ²Π° всичко, ΠΊΠΎΠ΅Ρ‚ΠΎ Π΅ създадСно Π² процСса Π½Π° ΠΆΠΈΠ²ΠΎΡ‚Π° ΠΌΡƒ.
-v "$PWD":/home/gradle/ β€” ΠΌΠΎΠ½Ρ‚ΠΈΡ€Π° Ρ‚Π΅ΠΊΡƒΡ‰Π°Ρ‚Π° ΠΏΠ°ΠΏΠΊΠ° с нашия Android ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ във Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½Π°Ρ‚Π° ΠΏΠ°ΠΏΠΊΠ° Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° /home/gradle/
-w /home/gradle β€” Π·Π°Π΄Π°Π²Π° Ρ€Π°Π±ΠΎΡ‚Π½Π°Ρ‚Π° дирСктория Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°.
android-build:5.4.1-28-27 β€” ΠΈΠΌΠ΅Ρ‚ΠΎ Π½Π° нашия ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€, ΠΊΠΎΠΉΡ‚ΠΎ ΡΡŠΠ·Π΄Π°Π΄ΠΎΡ…ΠΌΠ΅.
gradle assembleDebug β€” Π΅ΠΊΠΈΠΏΡŠΡ‚, ΠΊΠΎΠΉΡ‚ΠΎ ΡΡŠΠ±ΠΈΡ€Π° нашия ΠΏΡ€ΠΎΠ΅ΠΊΡ‚

Ако всичко Π²ΡŠΡ€Π²ΠΈ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ, слСд няколко сСкунди/ΠΌΠΈΠ½ΡƒΡ‚Ρ‹ Π½Π° Π΅ΠΊΡ€Π°Π½Π° Π²ΠΈ Ρ‰Π΅ Π²ΠΈΠ΄ΠΈΡ‚Π΅ Π½Π΅Ρ‰ΠΎ ΠΊΠ°Ρ‚ΠΎ BUILD SUCCESSFUL in 8m 3s! Π’ ΠΏΠ°ΠΏΠΊΠ°Ρ‚Π° app/build/output/apk Ρ‰Π΅ бъдС ΡΡŠΠ±Ρ€Π°Π½ΠΎΡ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.

По ΠΏΠΎΠ΄ΠΎΠ±Π΅Π½ Π½Π°Ρ‡ΠΈΠ½ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° сС ΠΈΠ·ΠΏΡŠΠ»Π½ΡΠ²Π°Ρ‚ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈ Π·Π°Π΄Π°Ρ‡ΠΈ Π½Π° gradle β€” ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, стартиранС Π½Π° тСстовС ΠΈ Ρ‚.Π½. ΠžΡΠ½ΠΎΠ²Π½ΠΎΡ‚ΠΎ прСдимство Π΅, Ρ‡Π΅ ΠΏΡ€ΠΈ нСобходимост ΠΎΡ‚ ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π½Π° Π΄Ρ€ΡƒΠ³Π° машина, Π½Π΅ трябва Π΄Π° сС притСснявамС Π·Π° инсталиранС Π½Π° цялата срСда, Π° Π΅ Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ‡Π½ΠΎ Π΄Π° ΠΈΠ·Ρ‚Π΅Π³Π»ΠΈΠΌ нСобходимия ΠΎΠ±Ρ€Π°Π· ΠΈ Π΄Π° стартирамС ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅Ρ‚ΠΎ.

ΠšΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΡŠΡ‚ Π½Π΅ ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π° Π½ΠΈΠΊΠ°ΠΊΠ²ΠΈ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ ΠΈ всяко ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ стартира ΠΎΡ‚ Π½ΡƒΠ»Π°, ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΎΡ‚ Π΅Π΄Π½Π° страна Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€Π° идСнтичността Π½Π° сглобяванСто нСзависимо ΠΎΡ‚ мястото Π½Π° стартиранС, Π° ΠΎΡ‚ Π΄Ρ€ΡƒΠ³Π° страна всСки ΠΏΡŠΡ‚ сС Π½Π°Π»Π°Π³Π° Π΄Π° изтСглямС всичкитС зависимости ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π°ΠΌΠ΅ цСлия ΠΊΠΎΠ΄ ΠΎΡ‚Π½ΠΎΠ²ΠΎ, ΠΊΠΎΠ΅Ρ‚ΠΎ понякога ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΎΡ‚Π½Π΅ΠΌΠ΅ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ Π²Ρ€Π΅ΠΌΠ΅. Π—Π°Ρ‚ΠΎΠ²Π°, освСн обикновСния β€žΡΡ‚ΡƒΠ΄Π΅Π½β€œ старт, ΠΈΠΌΠ°ΠΌΠ΅ опция Π·Π° стартиранС Π½Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅Ρ‚ΠΎ с Π·Π°ΠΏΠ°Π·Π²Π°Π½Π΅ Π½Π° Ρ‚.Π½. β€žΠΊΠ΅Ρˆβ€œ, ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ Π·Π°ΠΏΠ°Π·Π²Π°ΠΌΠ΅ ΠΏΠ°ΠΏΠΊΠ°Ρ‚Π° ~/ .gradle, просто я ΠΊΠΎΠΏΠΈΡ€Π°ΠΉΠΊΠΈ Π² Ρ€Π°Π±ΠΎΡ‚Π½Π°Ρ‚Π° ΠΏΠ°ΠΏΠΊΠ° Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, Π° Π² Π½Π°Ρ‡Π°Π»ΠΎΡ‚ΠΎ Π½Π° слСдващото ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ я Π²Ρ€ΡŠΡ‰Π°ΠΌΠ΅ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ. Всички ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ΠΈ ΠΏΠΎ ΠΊΠΎΠΏΠΈΡ€Π°Π½Π΅ смС изнСсли Π² ΠΎΡ‚Π΄Π΅Π»Π½ΠΈ скриптовС ΠΈ самата ΠΊΠΎΠΌΠ°Π½Π΄Π° Π·Π° стартиранС стана Ρ‚Π°ΠΊΠ°Π²Π°

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"

Π’ ΠΊΡ€Π°ΠΉΠ½Π° смСтка, срСдното Π²Ρ€Π΅ΠΌΠ΅ Π·Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π½ΠΈ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ сС ΡΡŠΠΊΡ€Π°Ρ‚ΠΈ (Π² зависимост ΠΎΡ‚ броя Π½Π° зависимоститС, Π½ΠΎ срСдният ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ сСга сС ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π° Π·Π° 1 ΠΌΠΈΠ½ΡƒΡ‚Π° вмСсто 5 ΠΌΠΈΠ½ΡƒΡ‚ΠΈ).

Всичко Ρ‚ΠΎΠ²Π° Ρ€Π°Π·Π±ΠΈΡ€Π° сС ΠΈΠΌΠ° смисъл само Π°ΠΊΠΎ Ρ€Π°Π·ΠΏΠΎΠ»Π°Π³Π°Ρ‚Π΅ с Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ΅Π½ CI/CD ΡΡŠΡ€Π²ΡŠΡ€, Π·Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ°Ρ‚Π° Π½Π° ΠΊΠΎΠΉΡ‚ΠΎ сами сС Π³Ρ€ΠΈΠΆΠΈΡ‚Π΅. Но сСга ΠΈΠΌΠ° ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π»Π°Ρ‡Π½ΠΈ услуги, Π² ΠΊΠΎΠΈΡ‚ΠΎ всички Ρ‚Π΅Π·ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ са Ρ€Π΅ΡˆΠ΅Π½ΠΈ ΠΈ Π½Π΅ Π΅ Π½ΡƒΠΆΠ½ΠΎ Π΄Π° сС Ρ‚Ρ€Π΅Π²ΠΎΠΆΠΈΡ‚Π΅ Π·Π° Ρ‚ΠΎΠ²Π°, Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΈΡ‚Π΅ свойства Π·Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° сС Π·Π°Π΄Π°Π΄Π°Ρ‚ ΠΈ Π² настройкитС Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

Π‘Π°ΠΌΠΎ рСгистрирани ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° участват Π² Π°Π½ΠΊΠ΅Ρ‚Π°Ρ‚Π°. Π’Π»Π΅Π·Ρ‚Π΅, моля.

ΠŸΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Ρ‚Π΅ Π»ΠΈ CI/CD систСма Π²ΡŠΡ‚Ρ€Π΅ ΠΈΠ»ΠΈ ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ външСн ΡΡŠΡ€Π²ΠΈΡ

  • ИзползвамС Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ΅Π½ ΡΡŠΡ€Π²ΡŠΡ€

  • ИзползвамС външСн ΡΡŠΡ€Π²ΠΈΡ

  • НС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ CI/CD

  • Π”Ρ€ΡƒΠ³ΠΈ

Гласували 42 ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈ. Π’ΠΎΠ·ΡŠΡ€ΠΆΠ°Π»ΠΈ сС 16 ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈ.

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ | ProHoster