아마도 오늘이 블로그 만들기 마지막 시간 일듯 싶다. 아주 잘 만든건 아니지만 spring boot를 처음 접하는 사람에게 조금이라도 도움이 되었으면 한다. 조금 더 보수를 한 다음에 블로그를 옮길 생각이다. 그게 언제 될지는 모르겠지만..

오늘은 우리가 만든 Spring boot를 실제 빌드 및 테스트 배포를 할 수 있는 ci를 이용하고 무료 paas인 heroku를 이용해서 클라우드에 올려보자. 현재 필자가 개인적으로 사용하고 있는 semaphoreci이라는 툴인데 ui도 나쁘지 않지만 사람들이 잘 모르는거 같다. 나쁘지 않으니 한번 써보도록 하자. 물론 많이 사용하고 있는 travis를 이용해도 된다.

https://semaphoreci.com/https://www.heroku.com 에가서 가입하자. 가입 방법은 아주 간단하니 생략하자.

또 이미지가 안나온다. 이상하네.. 몇일 지나면 다시 나오고… 일단 안나오면 여기로 http://blog.wonwoo.ml/wordPress/1328

메일 인증을 하고 로그인을 하면 semaphoreci에 메인이 나올 것이다.
9-blog1

위와 같이 나왔다면 Add new project를 누르자.
9-blog2
그럼 select Account라는 페이지가 나온다. CLOUD ACCOUNT 아래 자신의 name을 클릭하자.

9-blog3

github와 bitbucket이 존재한다. 안타깝게 github와 bitbucket만 지원한다. gitlab은 지원하지 않늗다.
주로 많이 사용하는 git이 github이기 때문에 그렇게 많은 문제는 안될 것 같다.

9-blog4
public과 private을 선택 할 수 있다. 필자는 public 프로젝트이다. private으로 사용하는 계정이라면 private을 선택하면 된다. 일단 github와 연동은 되었다.

이제우리가 만든 프로젝트를 연동해보자. 다시 select Account가 나왔다면 한번더 자신의 아이디를 클릭하자.

9-blog6
그럼 github의 import할 project를 선택하면 된다. 필자는 spring-boot-clean-blog라는 레파지토명으로 했다.
9-blog7
다음으로는 branch를 선택하는 화면이 나온다. 혼자 개발하는 것도 branch를 나누는것이 좋겠지만 귀찮아서 그냥 맨날 마스터 한개만 사용한다. 마스터를 클릭하자.
9-blog8
9-blog9
그럼 위와 같은 화면이 나올 것이다. 창을 닫지 말라고 하니 닫지말자!
9-blog10
완료가 되었다면 위와 같이 java 버전과 setup job등을 설정 할 수 있다. 현재는 test package 정도만 있으면 될 듯 싶다. 더 추가 하고 싶으면 add new command line 버튼을 눌러 더 추가하자.

9-blog11

완료를 누르면 위와 같이 빌드를 시작할 것이다. building 버튼을 누르면 아래와 같이 빌드 과정을 볼 수 있다.

9-blog12

일단 ci 셋팅은 되었다. 그 다음에는 ci와 heroku와 연동을 해보자.

9-blog13
위의 화면에서 set up deployment 버튼을 클릭하자 그럼 아래와 같은 화면이 나올 것이다.

9-blog14
우리는 현재 heroku 라는 클라우드 서버를 이용할 것이다. 만약 다른 클라우드 서버도 활용하고 싶다면 여러 클라우드를 지원하니 한번 해보는 것도 나쁘지 않다. 필자는 heroku만 써봐서 잘 모르겠다. 나머지는…

9-blog15

빌드가 되면 자동으로 heroku에 배포를 해야 한다. 물론 혼자 개발하고 사용자가 별로 없으니 그냥 자동으로 진행 하였다. 하지만 실제 운영하고 있는 서버라면 자동보다는 수동으로 해야 안전할 듯 하다.

9-blog16
다음으로는 branch 를 선택하자. 아까 위에서 마찬가지로 마스터만 있으니 마스터를 클릭하자.

9-blog17
다음은 heroku에 api키를 받아와야 한다. heroku에 접속하자.

9-blog18
api키를 받기전에 heroku의 app을 생성하자. 그래야 semaphore 에 api 키를 입력하면 heroku app들이 나온다.

9-blog19

필자는 github의 repository와 동일하게 spring-boot-clean-blog라고 app명을 넣었다.

9-blog22
그런후에 오른쪽 상단에 account 버튼을 눌러 account setting에 들어가자.

9-blog20
맨 아래 쯤에 API key가 존재한다. 개인 정보로 인해 필자의 API key는 삭제 했다.

9-blog21

다시 semaphore 화면으로 가서 해당 API key를 입력후에 next를 누르면 위와 같이 heroku에 등록된 app이 보인다. 우리가 작업하고 있던 spring-boot-clean-blog를 선택하자.

9-blog23
휴 거의 다왔다. 마지막으로 server name을 입력하자. 원하는 명을 아무거나 입력하면 된다.

9-blog24
그럼 첫번째 deploy를 해보자. deploy 버튼을 눌러보자.

9-blog25

deploy 가 완료 되었다면 위와 같이 DEPLOYED 표시가 나올 것이다. 잘 되었나 heroku에 가서 확인하자.
heroku에 가서 아까 만든 spring-boot-clean-blog로 가면 오른쪽 상단에 open app을 눌러 어플리케이션을 띄어보자. 혹은 자신의 https://appname.herokuapp.com으로 접속해도 된다.

9-blog26

위와 같이 아주 잘된다. ci툴인 semaphore 도 잘되고 heroku도 잘된다. 안타까운점은 heroku는 30분? 정도 동안 아무 작업을 하지 않으면 서버가 내려가는 듯하다. 그러다가 다시 접속하면 그때 다시 서버를 재 시작하는 느낌이 든다. 오랫동안 접속하지 않으면 자동으로 서버가 내려가서 처음 접속할 때 조금 버벅거린다. 그게 조금 안타깝다. 그래도 무료니까 그정도는 감수 해야지 않나 싶다. 그리고 무료로 mysql postgresql도 지원하는 듯하다. 하지만 용량이 작고 커넥션수도 작다. 무료로 지원해주는 것만으로도 감사해야지 뭐… 개인적인 테스트 용도로는 적합하지만 실제 사용은 못할듯 하다. 더 빠르고 좋은 기능을 사용하려면 돈을 지불하자!

우리는 이렇게 마지막으로 ci와 paas 서버인 heroku를 사용해 봤다. semaphore 와 heroku에 기능은 더 많이 있으니 문서를 참고하여 이것저것 해보면 될 듯하다.

이상으로 블로그 포스팅은 여기서 끝을 내야겠다.

  1. [spring-boot] 블로그를 만들자 (1)

  2. [spring-boot] 블로그를 만들자. (2) JPA

  3. [spring-boot] 블로그를 만들자. (3) Category 와 Comment

  4. [spring-boot] 블로그를 만들자. (4) thymeleaf

  5. [spring-boot] 블로그를 만들자. (5) markdown, catetory

  6. [spring-boot] 블로그를 만들자. (6) 댓글과 Navigation

  7. [spring-boot] 블로그를 만들자. (7) 캐시와 에러페이지

  8. [spring-boot] 블로그를 만들자. (8) GitHub login

  9. [spring-boot] 블로그를 만들자. (9) CI 와 배포