Gradle에서 Travis CI와 통합하는 방법은 무엇인가요?
_____A1: `.travis.yml` 파일에 다음과 같이 Gradle을 사용하는 언어와 빌드 스크립트를 명시합니다.
```yaml
language: java
jdk:
- openjdk11
script:
- ./gradlew build
```
여기서 `./gradlew build` 명령어가 프로젝트를 빌드하고 테스트를 실행합니다.
---
Q2: Gradle Wrapper를 반드시 사용해야 하나요?
A2: 네, Gradle Wrapper(`gradlew`) 사용을 권장합니다. Travis CI 환경에서 Gradle 버전을 명확히 지정할 수 있고, 일관된 빌드 환경을 보장합니다. 프로젝트 루트에 `gradlew`와 `gradle/wrapper/gradle-wrapper.properties` 파일이 있어야 합니다.
---
Q3: Travis CI에서 Gradle 캐시를 사용하여 빌드 속도를 개선하려면?
A3: `.travis.yml`에 다음과 같이 캐시 디렉토리를 추가하면 빌드 시 의존성 다운로드 시간을 줄일 수 있습니다.
```yaml
cache:
directories:
- $HOME/.gradle/caches/
- $HOME/.gradle/wrapper/
```
---
Q4: 특정 Gradle 태스크만 실행하려면 어떻게 설정하나요?
A4: `script` 섹션에 원하는 태스크를 명시합니다. 예를 들어 테스트만 실행하려면:
```yaml
script:
- ./gradlew test
```
---
Q5: Travis CI에서 환경 변수나 시크릿 키를 Gradle 빌드에 전달하려면?
```yaml
env:
- API_KEY=your_api_key_here
```
Gradle `build.gradle`에서는 `System.getenv('API_KEY')`를 사용하여 키를 참조합니다.
---
Q6: 멀티모듈 Gradle 프로젝트를 Travis CI에 적용하려면 어떻게 해야 하나요?
A6: 기본적으로 루트 프로젝트의 `./gradlew build` 명령어로 모든 하위 모듈을 빌드합니다. 필요 시 각 모듈별로 태스크를 지정하거나 병렬 빌드를 위해 추가 스크립트를 작성할 수 있습니다.
---
Q7: 브랜치별로 다른 Gradle 태스크를 실행하려면?
A7: `.travis.yml`에서 `if` 조건을 사용하거나 스크립트 내부에서 `TRAVIS_BRANCH` 환경 변수를 참조해서 분기 처리 가능합니다. 예:
```yaml
script:
- if [ "$TRAVIS_BRANCH" = "master" ]; then ./gradlew clean build; else ./gradlew build; fi
```
---
Q8: Gradle 빌드 실패 시 Travis에서 실패로 처리되나요?
A8: 네, `./gradlew` 명령이 비정상 종료하면 Travis CI 빌드가 실패로 기록됩니다. 별도 설정 없이 기본 동작입니다.
---
Q9: 커스텀 Gradle 버전을 지정하고 싶다면?
A9: Gradle Wrapper의 `gradle-wrapper.properties` 파일 내 `distributionUrl`을 원하는 버전으로 설정하세요. Travis는 Wrapper에 정의된 버전을 사용합니다.
---
Q10: Travis CI에서 Gradle 빌드 결과물을 아티팩트로 저장하려면?
A10: Travis CI 자체는 기본적으로 빌드 아티팩트 저장을 지원하지 않으나, 외부 저장소(예: AWS S3, Nexus)나 GitHub Releases, 또는 Travis의 `deploy` 기능을 활용하여 저장 및 배포할 수 있습니다.
---
이상으로 Gradle과 Travis CI를 연동하는 기본 가이드입니다. 프로젝트 특성에 맞게 `.travis.yml`과 `build.gradle`을 조정하면 효율적인 CI 환경을 구성할 수 있습니다.
작성자:
정하린 [비회원]
| 작성일자: 1년 전
2025-01-01 07:52:03
조회수: 153 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
조회수: 153 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
내용이 부정확하다면 싫어요를 클릭해주세요.