개발 공부 & 정리
Google cloud 에서 Jenkins를 통한 Spring build (with Github) 본문
목표 : Google cloud 에서 Spring을 Jenkins를 활용해 자동으로 배포하는 CI를 구축하기
환경 : Google compute engine, ubuntu 18.04
기술 스택 : Spring-boot, maven, GitHub, Jenkins
Google Cloud 세팅 & Jenkins 설치
순서 :
-
포트 설정( 8080 포트 열기)
-
젠킨스를 Google cloud instance 내에 설치해준다.
기본적으로 Jenkins는 8080 포트를 사용한다. 때문에 spring 기본 포트와 충돌하므로, Jenkins와 통신할 포트를 임의로 설정해 준다. (대개 1024~ 49151 까지의 포트는 유저가 이용해도 되는 포트이므로 사이의 포트를 열어준다.)
임의로 37000 포트를 열어주도록 하였다.
-
구글 클라우드에서 37000 포트 열어주기
구글 클라우드의 VPC network에서 firewall rules를 생성한다.
위와 같이 방화벽 규칙을 생성하고, 적용할 인스턴스 세팅에서 태그 추가로 해당 포트를 열어준다.
태그를 통해 적용 후 네트워크 상세보기를 통해 확인한다.
이로써 클라우드 네트워크 방화벽 설정이 끝났다.
이제 해당 인스턴스에 접속하여 Jenkins를 설치하고 배포를 준비한다.
젠킨스 설치
sudo wget -q -O - https://pkg.jenkins.io/debian/jenkins-ci.org.key | sudo apt-key add -
sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'
sudo apt-get update
sudo apt-get install -y jenkins
Jenkins 기본 포트는 8080이다.그러나 이렇게 될 경우 spring의 기본포트와 충돌하므로 /etc/default/jenkins 설정 파일에서 HTTP_PORT= 부분을 수정해주면 된다.
그 다음 Jenkins를 켜준다.
sudo service jenkins start
그리고 해당 ip주소/jenkins_port를 브라우저에서 접속하면 아래와 같은 화면이 나온다.
Jenkins를 활성화 하기 위해
sudo cat /var/lib/jenkins/secrets/initialAdminPassword
초기 암호를 copy & paste 한다.
그럼 선택화면이 나온다. 추천 플러그인 설치와 본인이 설정할 지에 관한것이다. 아무거나 누르고 설치해도 나중에 추가할 수 있기때문에 아무거나 누르고 진행한다.
그리고 나서 Jenkins 계정을 생성해 준다.
그리고 Jenkins url을 설정하면 드디어 준비가 끝났다.
모두 완료되면 아래와 같은 페이지가 나온다.
CI를 위한 Jenkins 세팅 (Github와 연동)
새 아이템을 만들어 준다.
그리고 github project 와 연결한다.
그리고 소스코드 관리에서 github 계정을 등록한다.
위와 같이 세팅을 하면 github 에서 master 로 push 할 때 web_hook trigger 가 발생하여 Jenkins 빌드가 실행된다.
이때 execution shell 이 실행되어 이전에 실행중이던 spring을 종료하고 새로운 spring을 실행한다.
만일 excuse shell 로 pkill을 sudo 로 하기 위해서는 Jenkins 쉘을 실행하는 Jenkins 계정의 권한을 바꿔준다.
sudo visudo 에서
jenkins ALL=(ALL) NOPASSWD: ALL
을 추가해주면 된다.
그리고 build now 를 통해 잘 빌드 되는지 확인해 본다.
GitHub web hook setting
이전의 GitHub web hook setting이 변경되어 GitHub user setting 에서 access token을 발행하고 token 값을 Jenkins 세팅에 등록해주면 된다.
위와 같이 생성된 토큰 값을 Jenkins에 등록하면, git push를 통해 build가 가능하다.
짠~!
'개발 > 이것 저것' 카테고리의 다른 글
[Git] Git stash 정리 (0) | 2020.09.29 |
---|---|
개발하며 느낀점 (TDD?) (0) | 2020.01.29 |
Selenium 종료시키는 법 (quit 와 close) (0) | 2020.01.21 |
Browserify 나 Webpack 을 사용해 bundle 하는 이유 (0) | 2019.12.17 |