제대로된 스크립트를 찾을 수 없어서 하루 정도 삽질을 했지만 일단 bamboo 설치 + 소스 체크아웃 + 빌드 + 에뮬 띄워서 테스트 까지는 완료 했고
배포는 원래 사용하던 배포 스크립트를 호출하면 될듯 싶다.
References
1. https://confluence.atlassian.com/bamboo/getting-started-with-java-and-bamboo-289277286.html
2. https://www.softpost.org/bamboo/adding-gradle-build-in-bamboo/
3. http://craigthomas.ca/blog/2015/06/01/android-and-bamboo-testing-using-the-android-emulator-on-a-ci-server/
일단 설치 와 소스 체크아웃은 References 로 확인 가능 하니 건너 뛰고
온라인 상에 내용이 별로 안맞는 에뮬을 띄우는 Shell 을 수정했는데 이를 먼저 보면
#!/bin/bash
export ANDROID_HOME=/Users/aucd29/Documents/android/sdk
export ANDROID_SDK_HOME=/Users/aucd29/Documents/android/sdk
EMULATOR_PORT=5556
PID_FILE="/tmp/android-emulator-$EMULATOR_PORT.pid" # 필요없다.
LOG_FILE="/tmp/android-emulator-$EMULATOR_PORT.log"
EXEC_FILE="$ANDROID_HOME/emulator/emulator"
AVD_NAME="Pixel_2_API_28" # 따로 에뮬 생성한 이름을 입력 하면 된다.
$EXEC_FILE -avd $AVD_NAME -no-audio -no-window \
-port $EMULATOR_PORT \
-accel auto \
> $LOG_FILE 2>&1 & echo $! > $PID_FILE
# 이게 중요 !!!! 기존에 돌아다니는 스크립트는 에뮬을 시작 시키고 나서 부팅이 완료될때 까지 기다려주는 코드가 없어서
# 부팅이 빨리 되었을때는 동작하였지만 그렇지 않은 경우 문제가 발생되었기에 adb 의 wait-for-device 를 통해
# 부팅이 완료되기를 기다려주는 코드를 추가 했다.
adb wait-for-device shell <<ENDSCRIPT
echo -n "Waiting for device to boot "
echo "" > /data/local/tmp/zero
getprop dev.bootcomplete > /data/local/tmp/bootcomplete
while cmp /data/local/tmp/zero /data/local/tmp/bootcomplete; do
{
echo -n "."
sleep 1
getprop dev.bootcomplete > /data/local/tmp/bootcomplete
}; done
echo "Booted."
exit
ENDSCRIPT
exit 0
이후 에뮬 종료 스크립트는
export ANDROID_HOME=/Users/aucd29/Documents/android/sdk
EXEC_FILE="$ANDROID_HOME/platform-tools/adb"
$EXEC_FILE devices | grep emulator | cut -f1 | while read line; do $EXEC_FILE -s $line emu kill; done
이렇게 하면 되고
JUnit Parser 는 **/app/build/outputs/androidTest-results/connected/*.xml 를 넣으면 된다.
배포는 원래 사용하던 배포 스크립트를 호출하면 될듯 싶다.
References
1. https://confluence.atlassian.com/bamboo/getting-started-with-java-and-bamboo-289277286.html
2. https://www.softpost.org/bamboo/adding-gradle-build-in-bamboo/
3. http://craigthomas.ca/blog/2015/06/01/android-and-bamboo-testing-using-the-android-emulator-on-a-ci-server/
일단 설치 와 소스 체크아웃은 References 로 확인 가능 하니 건너 뛰고
온라인 상에 내용이 별로 안맞는 에뮬을 띄우는 Shell 을 수정했는데 이를 먼저 보면
#!/bin/bash
export ANDROID_HOME=/Users/aucd29/Documents/android/sdk
export ANDROID_SDK_HOME=/Users/aucd29/Documents/android/sdk
EMULATOR_PORT=5556
PID_FILE="/tmp/android-emulator-$EMULATOR_PORT.pid" # 필요없다.
LOG_FILE="/tmp/android-emulator-$EMULATOR_PORT.log"
EXEC_FILE="$ANDROID_HOME/emulator/emulator"
AVD_NAME="Pixel_2_API_28" # 따로 에뮬 생성한 이름을 입력 하면 된다.
$EXEC_FILE -avd $AVD_NAME -no-audio -no-window \
-port $EMULATOR_PORT \
-accel auto \
> $LOG_FILE 2>&1 & echo $! > $PID_FILE
# 이게 중요 !!!! 기존에 돌아다니는 스크립트는 에뮬을 시작 시키고 나서 부팅이 완료될때 까지 기다려주는 코드가 없어서
# 부팅이 빨리 되었을때는 동작하였지만 그렇지 않은 경우 문제가 발생되었기에 adb 의 wait-for-device 를 통해
# 부팅이 완료되기를 기다려주는 코드를 추가 했다.
adb wait-for-device shell <<ENDSCRIPT
echo -n "Waiting for device to boot "
echo "" > /data/local/tmp/zero
getprop dev.bootcomplete > /data/local/tmp/bootcomplete
while cmp /data/local/tmp/zero /data/local/tmp/bootcomplete; do
{
echo -n "."
sleep 1
getprop dev.bootcomplete > /data/local/tmp/bootcomplete
}; done
echo "Booted."
exit
ENDSCRIPT
exit 0
이후 에뮬 종료 스크립트는
export ANDROID_HOME=/Users/aucd29/Documents/android/sdk
EXEC_FILE="$ANDROID_HOME/platform-tools/adb"
$EXEC_FILE devices | grep emulator | cut -f1 | while read line; do $EXEC_FILE -s $line emu kill; done
이렇게 하면 되고
JUnit Parser 는 **/app/build/outputs/androidTest-results/connected/*.xml 를 넣으면 된다.
'Android' 카테고리의 다른 글
dagger + OkHttp3IdlingResource (0) | 2019.07.31 |
---|---|
dagger 에서 koin 으로 convert (0) | 2019.06.12 |
koin 에서 viewmodel 을 대상 클래스를 generics 로 전달 받기 ? (0) | 2019.05.22 |
ui test code 작성 (0) | 2019.05.17 |
android q 에서 sandbox 경로 (0) | 2019.05.15 |