рдЯреНрд░реИрд╡рд┐рд╕ CI рдкрд░ рдПрдВрдбреНрд░реЙрдЗрдб рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдирд┐рд░реНрдорд╛рдг

рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рдореИрдВ рджрд┐рдЦрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдк рдЯреНрд░реИрд╡рд┐рд╕ рд╕реАрдЖрдИ рдкрд░ рдУрдкрди-рд╕реЛрд░реНрд╕ рдПрдВрдбреНрд░реЙрдЗрдб рдкреНрд░реЛрдЬреЗрдХреНрдЯ (рдорд╛рд╡реЗрди) рдХреИрд╕реЗ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред

рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреНрдпрд╛ рд╣реИ?



рд╣рдо рдХреНрдпрд╛ рдкрд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ?


рдореЗрд▓ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рдЧрддрд┐ рд░рд┐рдкреЛрд░реНрдЯ рдХреЗ рд╕рд╛рде рдХрдорд┐рдЯ рдкрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рдирд┐: рд╢реБрд▓реНрдХ рд╕рдВрдпреЛрдЬрдиред рдЙрд╕реА рд╕рдордп, рд╣рдо рдПрдореБрд▓реЗрдЯрд░ рдкрд░ рдПрдХреАрдХрд░рдг рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдФрд░ рдЕрддрд┐рд░рд┐рдХреНрдд рдПрд╕рдбреАрдХреЗ рдШрдЯрдХреЛрдВ (рдПрдбреЛрди, рдПрдХреНрд╕реНрдЯреНрд░рд╛, рдЖрджрд┐) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

рд╣рдо рдЗрд╕реЗ рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВрдЧреЗ?


рдПрдХ рдЖрдзрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ, рд╣рдо рддреИрдпрд╛рд░ рд▓рд┐рдкрд┐рдпреЛрдВ рдХреЛ github: https://github.com/sero/android-common рдкрд░ рд▓реЗрддреЗ рд╣реИрдВред
рдЯреНрд░реИрд╡рд┐рд╕ рд╕реАрдЖрдИ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдореБрдЦреНрдп рд╕реНрдХреНрд░рд┐рдкреНрдЯ .travis.yml рд╣реИ:
language: java jdk: oraclejdk7 before_install: - chmod +x $PWD/.travis_install_android.sh - $PWD/.travis_install_android.sh - export ANDROID_HOME=$PWD/android-sdk-linux - export PATH=${PATH}:${ANDROID_HOME}/tools:${ANDROID_HOME}/platform-tools - chmod +x $PWD/.travis_install_android_dependencies.sh - $PWD/.travis_install_android_dependencies.sh - chmod +x $PWD/.travis_start_emulator.sh - $PWD/.travis_start_emulator.sh before_script: - chmod +x $PWD/.travis_wait_for_emulator.sh - $PWD/.travis_wait_for_emulator.sh script: mvn install -Pwith-tests 

рдпрд╣ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рдЖрдзрд╛рд░ рднрд╛рд╖рд╛ - рдЬрд╛рд╡рд╛, рдлрд┐рд░ jdk рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ - рдореИрдВ Oracle рд╕реЗ JDK 7 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред
рдмрд┐рд▓реНрдб рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рд╣рдореЗрдВ рдПрдВрдбреНрд░реЙрдЗрдб рдПрд╕рдбреАрдХреЗ, рд╕рд╛рде рд╣реА рдЗрд╕рдХреЗ рдШрдЯрдХреЛрдВ (рдПрдкреАрдЖрдИ, рдПрдХреНрд╕реНрдЯреНрд░рд╛, рдПрдбрди, рдЖрджрд┐) рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рд▓рд┐рдП bash рд╕реНрдХреНрд░рд┐рдкреНрдЯ .travis_install_android.sh рдФрд░ .travis_install_android_sdk.sh рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИрдВред рдЗрд╕рдХреЗ рдмрд╛рдж, рд╣рдореЗрдВ рдХреБрдЫ рдПрдВрдбреНрд░реЙрдЗрдб рдХрд▓рд╛рдХреГрддрд┐рдпреЛрдВ рдХреЛ рд╕реНрдерд╛рдиреАрдп рдорд╛рд╡реЗрди рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдЕрдкрд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ - .travis_install_android_dependencies.sh рд╕реНрдХреНрд░рд┐рдкреНрдЯ, рдПрдореБрд▓реЗрдЯрд░ рдЪрд▓рд╛рдПрдВ - .travis_start_emulator.sh рдФрд░ рдЗрд╕реЗ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВ редtravis_wait_for_emulator.sh ред

Android рд╕реНрдерд╛рдкрдирд╛

 #!/bin/sh # Script installs Android SDK sudo apt-get update -qq if [ `uname -m` = x86_64 ]; then sudo apt-get install -qq libstdc++6:i386 lib32z1; fi wget -O android-sdk.tgz http://dl.google.com/android/android-sdk_r22.0.4-linux.tgz tar xzf android-sdk.tgz export ANDROID_HOME=$PWD/android-sdk-linux export PATH=${PATH}:${ANDROID_HOME}/tools:${ANDROID_HOME}/platform-tools sudo apt-get install expect chmod +x $PWD/.travis_install_android_sdk.sh $PWD/.travis_install_android_sdk.sh 

рд╡рд┐рд╡рд░рдг: 64-рдмрд┐рдЯ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреА рд╕реВрдЪреА рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВ - рдЕрддрд┐рд░рд┐рдХреНрдд рдкреИрдХреЗрдЬ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ ( рдпрд╣рд╛рдВ рдЪрд░реНрдЪрд╛ рджреЗрдЦреЗрдВ)ред рдЕрдЧрд▓рд╛, рд╣рдо рдмрд╛рд╣рд░ рдкрдВрдк рдХрд░рддреЗ рд╣реИрдВ, рдПрдВрдбреНрд░реЙрдЗрдб рдПрд╕рдбреАрдХреЗ рдХреЛ рдЕрдирдЬрд╝рд┐рдк рдХрд░реЗрдВ рдФрд░ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рд╕реЗрдЯ рдХрд░реЗрдВ (рдХреНрдпреЛрдВрдХрд┐ рдмреИрд╢ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдЗрд╕рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рдмрд╛рдж рд░реАрд╕реЗрдЯ рд╣реЛ рдЬрд╛рдПрдВрдЧреЗ, рд╣рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рдлрд┐рд░ рд╕реЗ .travis.yml рдореЗрдВ рд╕реЗрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛)ред

Android SDK рдШрдЯрдХ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ

 #!/usr/bin/expect -f # Script installs Android SDK components spawn android update sdk --filter tools,platform-tools,build-tools-19.0.0,extra-android-support,android-17,sysimg-17,addon-google_apis-google-17,android-19,sysimg-19,addon-google_apis-google-19,addon-google_apis-google-19,extra-google-play_billing,extra-google-m2repository,extra-google-analytics_sdk_v2,extra-google-gcm,extra-google-google_play_services,extra-google-play_apk_expansion,extra-android-m2repository --no-ui --force --all expect "Do you accept the license *:" send -- "y\r" expect "Do you accept the license *:" send -- "y\r" expect "Do you accept the license *:" send -- "y\r" expect "Do you accept the license *:" send -- "y\r" expect "Do you accept the license *:" send -- "y\r" expect "Do you accept the license *:" send -- "y\r" expect "Do you accept the license *:" send -- "y\r" interact # WORKAROUND: for some reason we need to download following extras separately (otherwise we will get PkgVersion=2 instead of PkgVersion=2.0.0) spawn android update sdk --filter extra-google-admob_ads_sdk,extra-google-play_licensing --no-ui --force --all expect "Do you accept the license *:" send -- "y\r" interact 

рд╡рд┐рд╡рд░рдг: рд╣рдо рдПрд╕рдбреАрдХреЗ рдШрдЯрдХреЛрдВ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЬрд┐рдирдХреА рд╣рдореЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣рд╛рдВ рдереЛрдбрд╝реА рд╕реА рдЪрд╛рд▓ рд╣реИ - рдПрдВрдбреНрд░реЙрдЗрдб рдЕрдкрдбреЗрдЯ рдПрд╕рдбреАрдХреЗ рд╣рдореЗрдВ рдХреБрдЫ рдШрдЯрдХреЛрдВ рдХреЗ рд▓рд╛рдЗрд╕реЗрдВрд╕ рд╕реЗ рд╕рд╣рдордд рд╣реЛрдиреЗ рдХреА рдкреЗрд╢рдХрд╢ рдХрд░реЗрдЧрд╛, рдФрд░ рддрдм рд╕реЗ рд╣рдо рдЬрд╡рд╛рдм рдирд╣реАрдВ рджреЗ рдкрд╛рдПрдВрдЧреЗ (рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рджреВрд░рд╕реНрде рд░реВрдк рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ), рд╣рдореЗрдВ рд╕реНрдкреЙрди рдХрдорд╛рдВрдб (рдЬреЛ рдЗрд╕ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╡рд┐рд╡реЗрдХрдкреВрд░реНрдг рддрд░реАрдХреЗ рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЬрд╡рд╛рдм рджреЗрдирд╛ рд╣реЛрдЧрд╛ред
рдореЗрд░реЗ рд▓рд┐рдП рдХрд┐рд╕реА рдЕрдЬреНрдЮрд╛рдд рдХрд╛рд░рдг рд╕реЗ, рдПрдВрдбреНрд░реЙрдЗрдб рдЕрд▓рдЧ-рдЕрд▓рдЧ рд░реВрдк рд╕реЗ рдХреЙрдореНрдкреНрд▓реЛрдм рдФрд░ рдкреНрд▓реЗ_рд╕реИрд▓рд┐рдВрдЧ рдШрдЯрдХреЛрдВ рдХреЛ рдЕрдкрд╡рд┐рддреНрд░ рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдЙрдиреНрд╣реЗрдВ рдкрд╣рд▓реЗ рдЕрдкрдбреЗрдЯ рдореЗрдВ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рддреЛ PkgVersion = 2.0.0 рдХреЗ рдмрдЬрд╛рдп PkgVersion = 2 рд╣реЛрдЧрд╛, рдЬреЛ рд╣рдореЗрдВ рдмрд╣реБрдд рд╕реВрдЯ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ (рдЪреВрдВрдХрд┐ рдпрд╣ рдЪрд░ Maven рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рд╡рд┐рд░реВрдкрдг рд╕рд╛рдХреНрд╖реНрдп рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИ)ред

рдорд╛рд╡реЗрди рднрдВрдбрд╛рд░ рдореЗрдВ рдХрд▓рд╛рдХреГрддрд┐рдпреЛрдВ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ

 #!/bin/sh # Scripts installs Android SDK artifacts in local Maven repository git clone git://github.com/serso/maven-android-sdk-deployer.git cd ./maven-android-sdk-deployer/ git checkout tags/api-19 mvn install -P4.2 cd .. 

рд╡рд┐рд╡рд░рдг: рдПрдкреА -19 рдЯреИрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдорд╛рд╡реЗрди рдПрдВрдбреНрд░реЙрдЗрдб рдПрд╕рдХреЗ рдбрд┐рдкреНрд▓реЙрдпрд░ рдХрд╛рдВрдЯрд╛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ рдФрд░ рдПрдВрдбреНрд░реЙрдЗрдб рд╕рдВрд╕реНрдХрд░рдг 4.2 рдХреЗ рд▓рд┐рдП рдЕрдкрдиреА рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдЪрд▓рд╛рдПрдВ (рдореИрдВрдиреЗ рдЗрд╕реЗ рдЕрднреА рддрдХ 4.4 рдкрд░ рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ)ред рд╣рдо рдореВрд▓ рдХреЗ рдмрдЬрд╛рдп рдХрд╛рдВрдЯрд╛ рдХреНрдпреЛрдВ рдкрдВрдк рдХрд░рддреЗ рд╣реИрдВ? рдореВрд▓ рдореЗрдВ рдХреЛрдИ рдЯреИрдЧ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдЗрд╕рд▓рд┐рдП рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛрдб рдореЗрдВ рдХрд┐рдП рдЧрдП рдХреЛрдИ рднреА рдкрд░рд┐рд╡рд░реНрддрди рд╣рдорд╛рд░реА рдЕрд╕реЗрдВрдмрд▓реА рдХреЛ рддреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред

рдПрдореБрд▓реЗрдЯрд░ рд▓реЙрдиреНрдЪ

 #!/bin/sh # Scripts starts Android emulator with name 'Default' echo no | android create avd --force -n Default -t android-17 --abi armeabi-v7a emulator -avd Default -no-skin -no-audio -no-window & 

рд╡рд┐рд╡рд░рдг: рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдирд╛рдо рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд░реНрдЪреБрдЕрд▓ рдбрд┐рд╡рд╛рдЗрд╕ рдмрдирд╛рдПрдВ рдФрд░ рдЗрд╕реЗ рдПрдХ рдЕрд▓рдЧ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдЪрд▓рд╛рдПрдВред

рдЗрд╕рдХреЗ рдмрд╛рдж, рдЯреНрд░реИрд╡рд┐рд╕ рдиреЗ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рдПрдХ рдкрд░реАрдХреНрд╖рдг рд╕реНрдерд╛рдкрдирд╛ рд╢реБрд░реВ рдХреА, рдЬрд┐рд╕рдХреЗ рдЕрдВрдд рдореЗрдВ рдкрд╣рд▓реЗ_рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд░рдг рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╣рдо рдПрдореБрд▓реЗрдЯрд░ рдХреЗ рд╢реБрд░реВ рд╣реЛрдиреЗ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рддреЗ рд╣реИрдВред

рд╕рднрд╛

рдЕрдВрддрд┐рдо рд░рд╛рдЧ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдХрд╛ рд╢реБрднрд╛рд░рдВрдн рд╣реИред рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рдЗрди-рдЯреЗрд╕реНрдЯ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рд╛рде mvn рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХреЙрд▓ рд╣реИ, рдЬреЛ рдПрдХреАрдХрд░рдг рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдПрдЧрд╛ред
 script: mvn install -Pwith-tests 


рдирд┐рд╖реНрдХрд░реНрд╖


рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдП рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдкреНрд░рддреНрдпреЗрдХ рдХрдорд┐рдЯ рдХреЛ рдмрд╛рдж рдХреА рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдХреЗ рд╕рд╛рде рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдХреЗ рд▓реЙрдиреНрдЪ рддрдХ рд▓реЗ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ, рдЖрдк рдЯреНрд░реИрд╡рд┐рд╕ рд╕реАрдЖрдИ рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реА рд╡рд┐рдзрд╛рдирд╕рднрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдПрдВрдбреНрд░реЙрдЗрдб рдХреЙрдорди рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдкреНрд░реЛрдЬреЗрдХреНрдЯ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред
рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреЛрдИ рдкреНрд░рд╢реНрди рдпрд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ - рдЯрд┐рдкреНрдкрдгреА рдореЗрдВ рдЖрдкрдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИред рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

Source: https://habr.com/ru/post/In200646/


All Articles