5. 01
03
02
04
COMMIT
애플리케이션에 대한 수정을 완료한 후 소스
코드를 저장소에 커밋한다.
BUILD
수정된 내용을 저장소에서 체크아웃하여 실
제 실행가능하도록 빌드한다.
TESTS
수정사항은 다양한 각도에서 테스트 되어 동
작이 이상이 없고 기존 동작에 영향을 주지 않
음을 확인한다.
DEPLOY
빌드가 완료된 현재 버전으로 프로덕션에 배포된다
.
소프트웨어 개발 파이프라인
8. Continuous Delivery
지속적인 인도는 소프트웨어가 언제든지 릴리즈 될 수 있도록 준비
지속적인 통합, 자동화 테스트 및 배포 기능으로 안정적이고 빠르게
개발하고 최소한의 수동 오버헤드로 제품을 전달한다.
9. Continuous Deployment
지속적인 배포는 코드 변경시 전체 파이프라인을 통해 제품이 자동
사용자에게 배포된다.
지속적인 인도는 소프트웨어가 항상 릴리즈를 준비하지만 비즈니스
결정이 필요하여 마지막 배포단계는 수동이지만 지속적인 배포는
업데이트 작업 버전이 자동으로 푸시된다.
16. 아래 순서로 Google Play 개발자 콘솔에서 제품 출시관리자 서비스 계정을 등록
1. Google Play 콘솔 사이트를 오픈한다.
2. 설정 탭의 API 액세스 탭을 선택한다.
3. 새 프로젝트 만들기 버튼을 클릭하면 나오는 다이얼로그에서 Google API 콘솔 링크를 클릭하여 이동한다.
4. 해당 콘솔에서 ’서비스 계정 만들기’를 클릭하면 다이얼로그가 열린다.
5. 서비스 계정의 이름을 입력 한다.
6. 역활 선택에서 프로젝트 > 서비스 계정 행위자를 선택한다.
7. 새 비공개 키 제공 체크박스 선택한다.
8. 그러면 하단에 생기는 키 유형에 JSON을 선택한다.
9. 만들기를 눌르면 다이얼로그가 닫힌다 .
10. 컴퓨터에 JSON파일이 다운로드 되고 그 파일을 기억해 놓는다.
11. Google Play 개발자 콘솔로 다시 이동 한다.
12. 새로 생성된 서비스 계정의 액세스 권한 부여 버튼을 클릭한다.
13. 액세스 권한부여 다이얼로그에서 역활 선택에서 제품출시관리자로 선택
14. 하단의 사용자 추가 버튼을 눌러서 적용한다.
17. 적용할 프로젝트 폴더에서 fastlane을 초기화
sudo gem install fastlane
fastlane supply init
supply를 설정
json_key_file “/path/to/your/downloaded/key.json”
supply를 설정
fastlane supply run
18.
19.
20. 1. 각 빌드가 독립적으로 동작
- 의존성 있는 코드들 설치
- 프로젝트를 빌드
- 정적 분석 도구 실행 (lint, findbugs, pmd, checkstyle),
- 테스트 실행
- 아티팩트 아카이빙
2. 모던한 UI
3. 메일, 슬랙 등 다양한 서드파이와 연동 지원
4. 적절한 가격: 1달에 $50 (2 parallels)
5. circle.yml이라는 설정 파일을 수정하는 것만으로 간편하게 적용 가능
6. Github과 유기적인 연동
Circle CI의 장점
21.
22. machine:
environment:
PATH: $ANDROID_NDK:$PATH
GRADLE_OPTS: '-Dorg.gradle.jvmargs="-Xmx2048m -XX:+HeapDumpOnOutOfMemoryEr
java:
version: oraclejdk8
dependencies:
pre:
# if necessary SDK / build tools / support library folders do not exist, u
- if [ ! -d "/usr/local/android-sdk-linux/platforms/android-24" ]; then ec
- if [ ! -d "/usr/local/android-sdk-linux/build-tools/24.0.2" ]; then echo
- if [ ! -d "/usr/local/android_sdk/extras/android/m2repository/com/androi
test:
override:
- ./gradlew test assembleDebug -PdisablePreDex
circle.yml
27. # use curl to download a keystore from $KEYSTORE_URI, if set,
# to the path/filename set in $KEYSTORE.
if [[ $KEYSTORE && ${KEYSTORE} && $KEYSTORE_URI && ${KEYSTORE_URI} ]]
then
echo "Keystore detected - downloading..."
# we're using curl instead of wget because it will not
# expose the sensitive uri in the build logs:
curl -L -o ${KEYSTORE} ${KEYSTORE_URI}
else
echo "Keystore uri not set. .APK artifact will not be signed."
fi
misc/download_keystore.sh
28. machine:
environment:
PATH: $ANDROID_NDK:$PATH
GRADLE_OPTS: '-Dorg.gradle.jvmargs="-Xmx2048m -XX:+HeapDumpOnOutOfMemoryEr
KEYSTORE: ${HOME}/${CIRCLE_PROJECT_REPONAME}/signing.keystore
java:
version: oraclejdk8
dependencies:
pre:
# if necessary SDK / build tools / support library folders do not exist, u
- if [ ! -d "/usr/local/android-sdk-linux/platforms/android-24" ]; then ec
- if [ ! -d "/usr/local/android-sdk-linux/build-tools/24.0.2" ]; then echo
- if [ ! -d “/usr/local/android_sdk/extras/android/m2repository/com/androi
- bash ./misc/download_keystore.sh
test:
override:
- ./gradlew test assembleDebug -PdisablePreDex
circle.yml
52. Bitrise 장점
1. 기존의 circle ci의 장점은 대부분 수용
2. 워크플로우를 UI로 조정할 수 있음
3. fastlane을 자동화 툴로 지원
4. 가장 많고 간단한 서드파이와 연동 지원
5. preset이 잘 지정되어 있어 극단적으로 빠르게 적용 가능
6. docker 기반으로 circle ci보다 약간 빠른 느낌