рдбрдХрд░ рдХрдиреНрдЯреЗрдирд░рдорд╛ рдПрдиреНрдбреНрд░реЛрдЗрдб рдкрд░рд┐рдпреЛрдЬрдирд╛ рдирд┐рд░реНрдорд╛рдг рдЧрд░реНрджреИ

рдПрдиреНрдбреНрд░реЛрдЗрдб рдкреНрд▓реЗрдЯрдлрд░реНрдордХреЛ рд▓рд╛рдЧрд┐ рдПрдЙрдЯрд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╡рд┐рдХрд╛рд╕ рдЧрд░реНрджрд╛, рд╕рд╛рдиреЛ рдкрдирд┐, рдврд┐рд▓реЛ рд╡рд╛ рдЪрд╛рдБрдбреЛ рддрдкрд╛рдИрдВрд▓реЗ рд╡рд┐рдХрд╛рд╕ рд╡рд╛рддрд╛рд╡рд░рдгрд╕рдБрдЧ рд╕рдореНрдЭреМрддрд╛ рдЧрд░реНрдиреБрдкрд░реНрдЫред рдПрдиреНрдбреНрд░реЛрдЗрдб SDK рдХреЛ рдЕрддрд┐рд░рд┐рдХреНрдд, рдпреЛ Kotlin, Gradle, рдкреНрд▓реЗрдЯрдлрд░реНрдо-рдЙрдкрдХрд░рдгрд╣рд░реВ, рдирд┐рд░реНрдорд╛рдг-рдЙрдкрдХрд░рдгрд╣рд░реВрдХреЛ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рд╣реБрдиреБ рдЖрд╡рд╢реНрдпрдХ рдЫред рд░ рдпрджрд┐ рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛рдХреЛ рдореЗрд╕рд┐рдирдорд╛ рдпреА рд╕рдмреИ рдирд┐рд░реНрднрд░рддрд╛рд╣рд░реВ рдПрдиреНрдбреНрд░реЛрдЗрдб рд╕реНрдЯреБрдбрд┐рдпреЛ IDE рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдзреЗрд░реИ рд╣рджрд╕рдореНрдо рд╕рдорд╛рдзрд╛рди рдЧрд░рд┐рдиреНрдЫ, рддреНрдпрд╕рдкрдЫрд┐ CI/CD рд╕рд░реНрднрд░рдорд╛ рдкреНрд░рддреНрдпреЗрдХ рдЕрдкрдбреЗрдЯрд▓реЗ рдЯрд╛рдЙрдХреЛ рджреБрдЦрд╛рдЗрдорд╛ рдкрд░рд┐рдгрдд рд╣реБрди рд╕рдХреНрдЫред рд░ рдпрджрд┐ рд╡реЗрдм рд╡рд┐рдХрд╛рд╕рдорд╛ рдбрдХрд░ рд╡рд╛рддрд╛рд╡рд░рдг рд╕рдорд╕реНрдпрд╛рдХреЛ рдорд╛рдирдХ рд╕рдорд╛рдзрд╛рди рднрдПрдХреЛ рдЫ, рддреНрдпрд╕реЛ рднрдП рдХрд┐рди рдПрдиреНрдбреНрд░реЛрдЗрдб рд╡рд┐рдХрд╛рд╕рдорд╛ рдпрд╕рдХреЛ рдкреНрд░рдпреЛрдЧ рдЧрд░реА рд╕рдорд╛рди рд╕рдорд╕реНрдпрд╛ рд╕рдорд╛рдзрд╛рди рдЧрд░реНрдиреЗ рдкреНрд░рдпрд╛рд╕ рдирдЧрд░реНрдиреЗ ...

рдбрдХрд░ рднрдиреЗрдХреЛ рдХреЗ рд╣реЛ рднрдиреЗрд░ рдерд╛рд╣рд╛ рдирднрдПрдХрд╛рд╣рд░реВрдХрд╛ рд▓рд╛рдЧрд┐, рдпрд╕рд▓рд╛рдИ рд╕рд░рд▓ рд░реВрдкрдорд╛ рднрдиреНрдиреБрдкрд░реНрджрд╛, рдпреЛ рддрдерд╛рдХрдерд┐рдд рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреЗ рдЙрдкрдХрд░рдг рд╣реЛред "рдХрдиреНрдЯреЗрдирд░рд╣рд░реВ" рдЬрд╕рдорд╛ рдиреНрдпреВрдирддрдо OS рдХрд░реНрдиреЗрд▓ рд░ рд╕рдлреНрдЯрд╡реЗрдпрд░рдХреЛ рдЖрд╡рд╢реНрдпрдХ рд╕реЗрдЯ рд╣реБрдиреНрдЫ рдЬреБрди рд╣рд╛рдореАрд▓реЗ рдЪрд╛рд╣реЗрдХреЛ рдард╛рдЙрдБрдорд╛ рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдЧрд░реНрди рд╕рдХреНрдЫреМрдВ, рд╡рд╛рддрд╛рд╡рд░рдг рд╕рдВрд░рдХреНрд╖рдг рдЧрд░реНрджреИред рд╣рд╛рдореНрд░реЛ рдХрдиреНрдЯреЗрдирд░рдорд╛ рдареНрдпрд╛рдХреНрдХреИ рдХреЗ рд╣реБрдиреЗрдЫ рднрдиреНрдиреЗ рдХреБрд░рд╛ рдбрдХрд░рдлрд╛рдЗрд▓рдорд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдЧрд░рд┐рдиреНрдЫ, рдЬреБрди рддреНрдпрд╕рдкрдЫрд┐ рдЫрд╡рд┐рдорд╛ рднреЗрд▓рд╛ рд╣реБрдиреНрдЫ рдЬреБрди рдХрд╣рд┐рдБ рдкрдирд┐ рд▓рдиреНрдЪ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ рд░ рдЗрдбрдореНрдкреЛрдЯреЗрдиреНрд╕реА рдЧреБрдгрд╣рд░реВ рдЫрдиреНред

рдбрдХрд░рдХреЛ рд╕реНрдерд╛рдкрдирд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд░ рдЖрдзрд╛рд░рднреВрдд рдХреБрд░рд╛рд╣рд░реВ рдЙрд╣рд╛рдБрдорд╛ рдкреВрд░реНрдг рд░реВрдкрдорд╛ рд╡рд░реНрдгрди рдЧрд░рд┐рдПрдХреЛ рдЫ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╡реЗрдмрд╕рд╛рдЗрдЯред рддреНрдпрд╕рдХрд╛рд░рдг, рдЕрд▓рд┐ рдЕрдЧрд╛рдбрд┐ рд╣реЗрд░реНрджреИ, рдпреЛ рдбрдХрд░рдлрд╛рдЗрд▓ рд╣реЛ рдЬреБрди рд╣рд╛рдореАрд▓реЗ рд╕рдорд╛рдкреНрдд рдЧрд░реНрдпреМрдВ:

# ╨в.╨║. ╨╛╤Б╨╜╨╛╨▓╨╜╤Л╨╝ ╨╕╨╜╤Б╤В╤А╤Г╨╝╨╡╨╜╤В╨╛╨╝ ╨┤╨╗╤П ╤Б╨▒╨╛╤А╨║╨╕ 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"

рд╣рд╛рдореА рдпрд╕рд▓рд╛рдИ рд╣рд╛рдореНрд░реЛ рдПрдиреНрдбреНрд░реЛрдЗрдб рдкреНрд░реЛрдЬреЗрдХреНрдЯрдХреЛ рд╕рд╛рде рдлреЛрд▓реНрдбрд░рдорд╛ рдмрдЪрдд рдЧрд░реНрдЫреМрдВ рд░ рдЖрджреЗрд╢рдХреЛ рд╕рд╛рде рдХрдиреНрдЯреЗрдирд░ рдирд┐рд░реНрдорд╛рдг рдЧрд░реНрди рд╕реБрд░реБ рдЧрд░реНрдЫреМрдВ

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

рдкрд░рд┐рдорд┐рддрд┐ -t рд╣рд╛рдореНрд░реЛ рдХрдиреНрдЯреЗрдирд░рдХреЛ рдЯреНрдпрд╛рдЧ рд╡рд╛ рдирд╛рдо рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реНрджрдЫ, рдЬрд╕рдорд╛ рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛ рдпрд╕рдХреЛ рдирд╛рдо рд░ рд╕рдВрд╕реНрдХрд░рдг рд╣реБрдиреНрдЫред рд╣рд╛рдореНрд░реЛ рдХреЗрд╕рдорд╛, рд╣рд╛рдореАрд▓реЗ рдпрд╕рд▓рд╛рдИ рдПрдиреНрдбреНрд░реЛрдЗрдб-рдмрд┐рд▓реНрдб рднрдиреНрдпреМрдВ рд░ рд╕рдВрд╕реНрдХрд░рдгрдорд╛ рд╣рд╛рдореАрд▓реЗ рдЧреНрд░реЗрдбрд▓, рдПрдиреНрдбреНрд░реЛрдЗрдб-рдПрд╕рдбреАрдХреЗ рд░ рдкреНрд▓реЗрдЯрдлрд░реНрдо-рдЙрдкрдХрд░рдгрд╣рд░реВрдХреЛ рд╕рдВрд╕реНрдХрд░рдгрд╣рд░реВрдХреЛ рд╕реЗрдЯ рд╕рдВрдХреЗрдд рдЧрд░реНрдпреМрдВред рднрд╡рд┐рд╖реНрдпрдорд╛, рдпреЛ "рд╕рдВрд╕реНрдХрд░рдг" рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рд╣рд╛рдореАрд▓рд╛рдИ рдирд╛рдорджреНрд╡рд╛рд░рд╛ рдЖрд╡рд╢реНрдпрдХ рдЫрд╡рд┐ рдЦреЛрдЬреНрди рд╣рд╛рдореАрд▓рд╛рдИ рд╕рдЬрд┐рд▓реЛ рд╣реБрдиреЗрдЫред

рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдкреВрд░рд╛ рднрдПрдкрдЫрд┐, рд╣рд╛рдореА рд╣рд╛рдореНрд░реЛ рдЫрд╡рд┐ рд╕реНрдерд╛рдиреАрдп рд░реВрдкрдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХреНрдЫреМрдВ, рд╣рд╛рдореА рдпрд╕рд▓рд╛рдИ рдЖрджреЗрд╢рдХреЛ рд╕рд╛рде рдбрд╛рдЙрдирд▓реЛрдб рдЧрд░реНрди рд╕рдХреНрдЫреМрдВ рдбрдХрд░ рдзрдХреНрдХрд╛ рдпрд╕рд▓рд╛рдИ рдЕрдиреНрдп рдореЗрд╕рд┐рдирд╣рд░реВрдорд╛ рдбрд╛рдЙрдирд▓реЛрдб рдЧрд░реНрди рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╡рд╛ рдирд┐рдЬреА рдЫрд╡рд┐ рднрдгреНрдбрд╛рд░рдорд╛ред

рдЙрджрд╛рд╣рд░рдгрдХреЛ рд░реВрдкрдорд╛, рд╕реНрдерд╛рдиреАрдп рд░реВрдкрдорд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдирд┐рд░реНрдорд╛рдг рдЧрд░реМрдВред рдпреЛ рдЧрд░реНрдирдХрд╛ рд▓рд╛рдЧрд┐, рдкрд░рд┐рдпреЛрдЬрдирд╛рдХреЛ рд╕рд╛рде рдлреЛрд▓реНрдбрд░рдорд╛, рдЖрджреЗрд╢ рдЪрд▓рд╛рдЙрдиреБрд╣реЛрд╕реН

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

рдпрд╕рдХреЛ рдЕрд░реНрде рдХреЗ рд╣реЛ рдмреБрдЭреМрдВ:

рдбрдХрд░ рд░рди - рдЫрд╡рд┐ рд╕реБрд░реБрд╡рд╛рдд рдЖрджреЗрд╢ рдЖрдлреИрдВ
-рдЖрд░рдПрдо - рдорддрд▓рдм рдпреЛ рд╣реЛ рдХрд┐ рдХрдиреНрдЯреЗрдирд░ рдмрдиреНрдж рднрдПрдкрдЫрд┐, рдпрд╕рд▓реЗ рдЖрдлреНрдиреЛ рдЬреАрд╡рдирдХреЛ рд╕рдордпрдорд╛ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░рд┐рдПрдХреЛ рд╕рдмреИ рдЪреАрдЬрд╣рд░реВ рдореЗрдЯрд╛рдЙрдБрдЫ
-v "$PWD":/home/gradle/ - рдЖрдиреНрддрд░рд┐рдХ рдХрдиреНрдЯреЗрдирд░ рдлреЛрд▓реНрдбрд░ /home/gradle/ рдорд╛ рд╣рд╛рдореНрд░реЛ рдПрдиреНрдбреНрд░реЛрдЗрдб рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕рдВрдЧ рд╣рд╛рд▓рдХреЛ рдлреЛрд▓реНрдбрд░ рдорд╛рдЙрдиреНрдЯ рдЧрд░реНрджрдЫред
-w/home/gradle - рдХрдиреНрдЯреЗрдирд░рдХреЛ рдХрд╛рд░реНрдп рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реНрджрдЫ
android-build: 5.4.1-28-27 тАФ рд╣рд╛рдореАрд▓реЗ рд╕рдЩреНрдХрд▓рди рдЧрд░реЗрдХреЛ рд╣рд╛рдореНрд░реЛ рдХрдиреНрдЯреЗрдирд░рдХреЛ рдирд╛рдо
gradle assembleDebug - рд╣рд╛рдореНрд░реЛ рдкрд░рд┐рдпреЛрдЬрдирд╛рд▓рд╛рдИ рднреЗрд▓рд╛ рдЧрд░реНрдиреЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рднрд╛ рдЯреЛрд▓реА

рдпрджрд┐ рд╕рдмреИ рдХреБрд░рд╛ рд░рд╛рдореНрд░рд░реА рдЬрд╛рдиреНрдЫ рднрдиреЗ, рддреНрдпрд╕рдкрдЫрд┐ рдХреЗрд╣рд┐ рд╕реЗрдХреЗрдиреНрдб / рдорд┐рдиреЗрдЯрдорд╛ рддрдкрд╛рдИрд▓реЗ рдЖрдлреНрдиреЛ рд╕реНрдХреНрд░рд┐рдирдорд╛ рдХреЗрд╣рд┐ рджреЗрдЦреНрдиреБрд╣реБрдиреЗрдЫ 8m 3s рдорд╛ рд╕рдлрд▓ рдмрдирд╛рдЙрдиреБрд╣реЛрд╕реН! рд░ рдПрдк/рдмрд┐рд▓реНрдб/рдЖрдЙрдЯрдкреБрдЯ/рдПрдкреАрдХреЗ рдлреЛрд▓реНрдбрд░рдорд╛ рдПрд╕реЗрдореНрдмрд▓ рдЧрд░рд┐рдПрдХреЛ рдПрдк рд╕рдорд╛рд╡реЗрд╢ рд╣реБрдиреЗрдЫред

рддрдкрд╛рдИрдВ рд╕рдорд╛рди рддрд░рд┐рдХрд╛рд▓реЗ рдЕрдиреНрдп 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 рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд╣рд░реВ рд░реЛрдХрд┐рдПред

рд╕реНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдердкреНрди