3. 젠킨스 설치 및 빌드 자동화
원래는 리눅스 서버에서 젠킨스를 사용하려 하였으나, 젠킨스의 설치가 끝난 이후 gitHub의 프로젝트를 빌드하려 할 때 마다 EC2 인스턴스의 동작이 멈추었다.
조금 더 찾아보니, 프리티어로 만들어 둔 EC2 인스턴스의 메모리가 충분히 크지 못해 생기는 문제였다.
SWAP을 통해 문제를 해결할 수도 있었으나, 이후의 과정들은 리눅스 환경 역시 젠킨스 관리 툴로 진행되기 때문에 윈도우 환경과 크게 다를 바가 없다는 생각이 들었다.
그런 이유로, 젠킨스는 윈도우에서 설치 후, 빌드된 실행 파일을 바로 배포용 서버에 전달해 주는 식으로 진행 해 보고자 한다.
젠킨스 설치
https://yeonyeon.tistory.com/56
설치 과정은 위 블로그를 참고하여 진행하였다
Service Logon Credentials
젠킨스 프로그램이 실행될 때 사용할 윈도우 계정을 설정하는 단계인 것 같다.
루트 권한으로 젠킨스를 실행하면 시스템 전체에 악영향을 줄 수 있다고 하므로, 젠킨스 전용 계정을 하나 만들어 사용하고자 한다.
이를 위해 젠킨스 전용 계정을 하나 만들어 주어야 한다.
윈도우에서 젠킨스 전용 계정을 하나 생성하자.
시작 > 설정 > 계정 > 계정 설정 > 다른 사용자 탭을 들어간다.
다른 사용자 우측의 계정 추가를 클릭한다. (필자는 이미 Jenkins 계정을 추가한 이후 캡쳐한 것이고, 원래는 Jenkins만 설치한 상황에서 Jenkins 계정이 자동으로 생기지는 않는다.)
이후 뜨는 창에서 '이 사람의 로그인 정보를 가지고 있지 않습니다.' 선택 후 주의 사항들에 동의 한다.
'Microsoft 계정 없이 사용자 추가'를 선택한다.
이후의 과정들을 진행해 사용자를 추가해 준다.
로컬 보안 정책 없음
나의 경우, 로컬 보안 정책에서 사용자를 추가해 주지 않아도 잘 진행이 되었다.
그러나, '**this account either does not have the privilege to logon as a service**' 에러가 발생하는 경우, 로컬 보안 정책에서 사용자를 추가해 주어야 한다.
나의 윈도우에서는 로컬 보안 정책이라는 프로그램이 설치되어 있지 않았기 때문에 직접 이를 설치 해 주어야 한다.
설치하는 과정은 다음의 블로그 포스팅을 참고하여 진행하였다.
https://m.blog.naver.com/toruin84/223047479594
설치 이후에는 cmd에서 `secpol.msc` 명령어 실행, 또는 시작 메뉴의 검색에 '로컬 보안 정책'을 검색하여 실행 해 주면 된다.
git 연동
https://be-developer.tistory.com/15
위 블로그를 따라 진행하였다.
빌드 자동화
https://be-developer.tistory.com/16
참고 블로그이다.
gitHub에 새로운 버전이 push 되면, gitHub webHook을 사용해 젠킨스에서 자동으로 빌드를 수행하도록 할 것이다.
그러기 위해선 gitHub에서 내 로컬의 Jenkins로 접근하기 위한 주소가 필요하다.
현재 우리는 Jenkins를 localhost를 사용해 접근하고 있지만, gitHub는 우리 로컬 환경으로 접근하기 위해 실제 주소가 필요하다.
이 문제를 ngrok을 통해 해결한다.
ngrok
설치가 완료되고, 계정 인증까지 끝낸 후에는 ngrok을 실행 해 주어야 한다.
ngrok http [사용할 포트]
ngrok은 이 때 사용한 포트로 포트 포워딩을 해 준다. 우리는 ngrok을 통해 젠킨스의 포트로 데이터를 전송해 주어야 하기 때문에 젠킨스가 사용하는 포트를 적어 주면 된다.
모든 과정이 진행되었으면 gitHub의 webHook을 연결해 둔 브랜치에 push해 보자.
빌드 성공!!!
남은 것은 젠킨스가 빌드한 결과물을 배포 서버로 전송하고, 배포 서버에서 톰캣을 재시작 하는 등의 배포 자동화 과정이다.
이 역시 천천히 진행해 볼것이다.