이 글은 기존 운영했던 WordPress 블로그인 PyxisPub: Development Life (pyxispub.uzuki.live) 에서 가져온 글 입니다. 모든 글을 가져오지는 않으며, 작성 시점과 현재 시점에는 차이가 많이 존재합니다.
작성 시점: 2017-11-01
CircleCI 2.0이 나온지 아마 3개월 정도 지났는데, 슬슬 1.0에서 올려야 될 타이밍인 것 같아서 CircleCI 1.0 에서 2.0으로 올리는 방법을 정리하려고 한다
기존 CircleCI 1.0에 비해 2.0은 이미 빌드되어 있는 Docker Image를 사용한다. 그와 동시에 캐시 기능도 확실히 제공하기 때문에 1.0에 비해 더 빠른 속도를 제공한다.
왼쪽이 1.0, 오른쪽이 2.0인데 확실히 봐도 속도가 빨라졌음을 알 수 있다.
general:
artifacts:
- /home/ubuntu/RichUtilsKt/app/build/outputs/apk/
machine:
environment:
ANDROID_HOME: /usr/local/android-sdk-linux
GRADLE_OPTS: '-Dorg.gradle.jvmargs="-Xmx2048m -XX:+HeapDumpOnOutOfMemoryError"'
dependencies:
pre:
- echo y | android update sdk --no-ui --all --filter tools,platform-tools,android-26
- echo y | android update sdk --no-ui --all --filter build-tools-26.0.2
override:
- ANDROID_HOME=/usr/local/android-sdk-linux
compile:
override:
- (./gradlew dependencies):
timeout: 360
test:
override:
- (./gradlew test):
timeout: 360
단 기존 환경 기준으로 API 26을 사용했다는 것 만큼은 기억해두고 지우자.
2.0에서 부터는 설정 파일이 .circleci 란 폴더 안에 config.yml 로서 존재하게 되었다.
version: 2
jobs:
build:
working_directory: ~/RichUtilsKt
docker:
- image: circleci/android:api-26-alpha
environment:
JVM_OPTS: -Xmx3200m
steps:
- checkout
- run :
name: display directory
command: ls -la
- restore_cache:
key: jars-{{ checksum "build.gradle" }}-{{ checksum "app/build.gradle" }}
- run:
name: Download Dependencies
command: ./gradlew androidDependencies
- save_cache:
paths:
- ~/.gradle
key: jars-{{ checksum "build.gradle" }}-{{ checksum "app/build.gradle" }}
- run:
name: Run Tests
command: ./gradlew lint test
- store_artifacts:
path: app/build/reports
destination: reports
- store_test_results:
path: richutils/build/test-results
조금 길은데, 하나씩 살펴보자.
여기서 주의할 점은 checksum, store_artifacts, store_test_results 경로를 제대로 설정해야 하는데, 대소문자 구별하는 듯 하다. 실제 파일이 있는 경로를 가리키도록 설정하면 된다.
마지막으로 저장하고 커밋하면 CircleCI 에 빌드 트리거가 걸리고 빌드가 시작된다.
private repo 같은 경우 1x container, 오픈소스 저장소의 경우 4x container 가 지원되는 것 같으니, 앞으로 나오는 왠만한 저장소에 부착하려고 한다.
가끔 정신 나간 상태로 코딩하다 보면 CircleCI 쪽에서 실패 메일이 오게 되면 그때서야 정신을 차리는 일이 다반사이기 때문이다(...