Devops 1회차/Jenkins
[Jenkins] Jenkins와 AWS EC2, Codedeploy를 활용한 배포
SOO_JUNE
2021. 8. 17. 16:54
최초작성일: 2018.08.19
어떻게 구성할까?
- 사용자가 Devap서버에 src와 src_properties 관련 자료들을 업로드한다.
src folder : ROOT.war 파일을 저장한다.(ROOT.war : index와 health 파일이 있다. 이는 Tomcat이 제대로 연결되었는지 확인할 수 있는 지표가 된다.)
src_properties : 사용자가 정의한 기능들의 속성파일들이 담겨 있다.(properties / .xml (xml은 사용자 임의 태그가 사용가능한 텍스트기반 Markup language)) 해당 폴더에 있는 파일들을 통하여 기능의 추가/수정/삭제가 이뤄진다. - 사용자의 데이터가 Devap1서버에 저장되면 실시간으로 Devdb1과 동기화가 이뤄진다.
- 젠킨스에서 배포를 위한 버튼 'RUN'을 누르게 되면 젠킨스내부에서 Build가 진행된다.
- 빌드 내용은 Devdb에 있는 instanceName을 참조하여 src폴더 및 src_properties폴더를 aws S3에 업로드하라는 코드이다.
## Define variable. instanceName="mart" deployPath="/data/deployment/st" serverEnv="staging" s3Bucket="{bucketName}" ## Check if ROOT.war is copied. for ((i=0; i<19; i++)); do if [ -f ${deployPath}/src/${instanceName}/ROOT.war ]; then break fi sleep 3 done if [ ! -f ${deployPath}/src/${instanceName}/ROOT.war ]; then echo "ROOT.war does not exist." exit 1 fi ## Deploy property file. sh ${deployPath}/scripts/aws-s3_syncFolder.sh "${deployPath}/src_properties/${instanceName}" "s3://${s3Bucket}/src_properties/${instanceName}" ## Deploy source file. python3 ${deployPath}/scripts/aws_deploy.sh ${instanceName} ${deployPath}/src/${instanceName}/ROOT.war ${serverEnv}
- 코드디플로이를 통한 배포가 이뤄지게끔 Trigger 역할
- 코드디플로이 배포를 위해 AWS S3에 접근한다.
<name.zip scripts information>
stat_server → tomcat start
validate_service → port info & tomcat health check
install-dependency → 기존 ROOT.war 파일 삭제 && S3로 부터 ROOT 와 소스 다운로드 - 사용자가 지정한 서버로 코드디플로이를 통하여 해당 소스들이 배포된다.