도대체뭐가문제임

Android 프로젝트 CI/CD(Docker, Jenkins)[5] - Jenkins 아이템 세팅 및 빌드 본문

개발 기타

Android 프로젝트 CI/CD(Docker, Jenkins)[5] - Jenkins 아이템 세팅 및 빌드

뭐가문제임 2021. 6. 18. 11:07

이번 단계에서는 Git에 저장된 안드로이드 프로젝트 소스를 가져와 Jenkins에 앱을 빌드할 수 있도록 환경을 구성할 것이다.

 

먼저 좌측 메뉴에서 새로운 아이템을 클릭한다.

 

 

 

아이템의 이름을 입력하고 Freestyle project를 선택한 뒤 OK를 클릭한다.

 

소스 코드 관리에서 Git을 체크하고 Repository URL 을 입력한다.

공개된 Repository라면 URL만 작성해두면 되지만

Gitlab에 게시되어있거나 비공개 Repository라면 Credentials에 키를 접근가능한 계정을 등록해야한다.

Branches to build에는 빌드를 수행할 Branch를 입력한다.

 

Credential을 등록하려면 Add 버튼을 누르고 Username에 Github의 Username 혹은 Email, 패스워드를 입력한다.

Description은 공백이어도 무관하나 Credential이 많아지면 혼란을 방지하기위해 계정의 목적을 명시해두는 편이 좋다.

입력이 완료되면 Add버튼을 클릭한다.

 

Credentials에서 등록한 Credential을 선택했을 때 에러메시지 없어지면 연결에 성공한 것이다.

 

맨 아래로 스크롤을 내려 Build에서 Add build step을 클릭해 Invoke Gradle script를 선택한다.

Gradle Version에 환경변수로 등록한 GRADLE_HOME을 선택한다.

Tasks에는 Gradle 이 수행할 Task들을 나열한다.

ex) clean assemble cleanBuildCache

 

작성이 완료되면 저장버튼을 클릭한다.

좌측 메뉴에서 Build now 버튼을 클릭하면 본격적으로 앱의 빌드를 시작한다.

좌측 하단에 Build History에서 빌드 현황을 볼 수 있다.

현재 빌드가 진행중인 내역을 클릭한다.

프로젝트 관련 설정이 잘못된 부분이 있어서 몇번 실패했다.(Signing config 경로 에러, Build Tool 버전 에러)

프로젝트 설정에 문제가 없다면 빌드에 문제는 없을 것이다.

빌드가 또 실패했다... 원인을 찾기위해 좌측 메뉴 Console Output으로 이동한다.

 

Gradle Daemon이 갑자기 사라졌다는 내용의 오류다.

구글링 결과로는 가상머신의 메모리 부족으로 나타나는 오류라고 한다.

여러 해결책을 적용해봤지만 해결되지 않았다.

시도해본 방법

-> Gradle Daemon을 사용하지 않는 방법(Gradle script에 --no-daemon 추가)

-> 컨테이너 실행 시 메모리를 제한하는 방법

 

구글링 중 찾은 해결책 중 하나가 도움이 되었다.

 

1. Docker 앱을 실행해서 설정 화면으로 이동한다.

2. 좌측 Resource 메뉴로 이동해 메모리를 4GB 로 올리고 Apply & Restart를 클릭해 Docker를 재실행한다.

Container를 실행하고 다시 빌드해본다.

빌드를 성공적으로 마쳤다.

 

빌드된 apk를 확인하려면 컨테이너에 접속해서 디렉토리를 확인해보면 된다.

터미널에 다음 명령어를 입력한다.

 docker exec -it -u 0 "Container name" /bin/bash

 

다음 명령어를 통해 해당 디렉토리로 이동해보면 Jenkins에서 빌드된 apk를 확인해볼 수 있다.

cd /var/jenkins_home/workspace/젠킨스 아이템명/app/build/outputs/apk/release

Comments