배포자동화를 위한 대표적인 예로서는 TravisCi와 Jenkins가 있다. 빌드 -> 테스트 -> 배포 까지 자동화를 시켜보자
요즘은 보통 Jenkins를 많이 사용하므로 TravisCi는 간단하게 사용법만 알아보자
Travis Ci를 활용해 코드가 레퍼지토리에 push 됬을때 자동으로 테스트 빌드까지 해보자
젠킨스가 TravisCi보다 좀 더 디테일한 커스터마이징이 가능하다.

TravisCi와 깃헙 레퍼지토리가 연결 됬다는 가정하에 진행
TraivsCi는 yml파일 명령어 기준으로 실행된다(.travis.yml)
깃헙에 푸쉬하면 알아서 yml파일 명령어를 실행 시켜준다
service: 도커로 올린 소스 기준이라 도커환경을 만들어준다
before_install:컨테이너 띄우기전에 도커 이미지를 만들어준다
script: 컨테이너를 띄우며 테스트 실행







깃헙에 있는 브랜치 네임 확인필수!
소스코드가 있는 저장소 등록후 build 항목에서 빌드시 실행할 명령어를 적어준다. clean->compile->package (war파일로)






SSH server 정보 입력후 ->빌드후 조치 에서 배포 설정
현재는 로컬에서 도커로 띄운 ssh 서버(docker server)로 보냄
publish ssh plugin 설치후 -> 시스템관리 -> ssh 정보입력
포트포워딩 주의!



도커로 띄운 ssh 서버에 배포완료
war 파일까지 서버에 배포 완료 했으니 나머지는 exec command 에 추가적으로 명령어를 넣어서 이미지(톰캣 +war)를 만들고 컨테이너로 만들면 된다




ansible all -m ping 간단한 명령어로 연결유무 확인가능
이렇게 성공 실패 결과를 알수 있다.
이외에도 ansible 서버에서 명령어만 내려주면 host ip에 해당하는 서버들에게 같은 명령어를 내려서 한번에 실행할 수 있음



- host: 타켓 ip
- tasks: 작업내용
- blokcinfile : 실질적 작업내용
ansible-playbook 을 이용해 미리 yml파일을 작성하여 해당 서버들(/etc/ansible/hosts)에게 명령을 내릴 수 있다.
ansible-playbook fisrt-playbook.yml(yml 실행 명령어)


flow


컨테이너 생성시 중복되면 안되기 때문에 playbook 에서 미리 도커 컨테이너 삭제 커맨드도 넣어준다
jnekins 에서 온 파일로 docker image를 만들어줄 playbook.yml을 ansible 서버에 작성해 준다.
command 여러개 가능


계정이름이 포함되어야함!
ansible 서버에 새로운 yml을 만들어준다. 이미지 빌드후 도커허브에 push 해주는 커맨드를 입력해준다.

