도커위에 젠킨스 컨테이너와 SSH가 설치되어있는 컨테이너가 있고
젠킨스의 컨테이너에서 빌드하여 SSH로 빌드파일을 전달한 뒤 해당 빌드 파일을 컨테이너화 시켜 도커로 구동합니다.(도커안에 도커)
docker run --privileged --name docker-server -itd -p 10022:22 -p 8081:8080 -e container=docker -v /sys/fs/cgroup:/sys/fs/cgroup:rw --cgroupns=host edowon0623/docker-server:m1 /usr/sbin/init
ssh root@localhost -p 10022
yum install -y iptables net-tools
새로운 아이템을 생성한 뒤 빌드 후 조치에서 Send build artifacts over SSH에서 앞전에 해두었던 SSH 설정을 지정해줍니다.
지금 빌드를 실행해주고 정상적으로 젠킨스서버에서 SSH서버로 war파일이 전달되었는지 확인해줍니다.
SSH 서버에 전달받은 war파일을 tomcat으로 구동하기 위한 DockerFile을 작성해줍니다.
해당 도커파일을 이미지로 빌드 해주고 컨테이너로 실행해줍니다.
8081포트로 접속해주시면 정상적으로 테스트가 된것을 확인할 수 있습니다.
앞전에서 SSH서버를 8081 -> 8080으로 포트포워딩 시켜주었기 때문에 8081로 접속했을때 정상적으로 구동이 된것을 확인할 수 있습니다.
DockerFile이 정상적으로 테스트 된것을 확인했다면
소스 코드 관리 -> 빌드 유발에 가시면 Poll SCM 을 선택해주고 스케쥴러를 원하는대로 설정해줍니다.
스케쥴러 설정해놓은대로 젠킨스가 해당 깃 레포지토리를 확인하여 새로운 커밋이 들어왔다면 젠킨스가 돌게 됩니다.
젠킨스 서버에서 SSH로 정상적으로 복사가 되었다면 Exec command에서 실행할 스크립트를 작성해줍니다.
중간에 컨테이너를 종료시키는 이유는 같은 이름의 컨테이너가 존재한다면 정상적으로 빌드가 되지않는 오류가 발생하기 때문에 종료를 해주고 컨테이너를 실행해줍니다.