티스토리 뷰

최초작성일: 2018.08.19

어떻게 구성할까?

  1. 사용자가 Devap서버에 src와 src_properties 관련 자료들을 업로드한다.
    src folder : ROOT.war 파일을 저장한다.(ROOT.war : index와 health 파일이 있다. 이는 Tomcat이 제대로 연결되었는지 확인할 수 있는 지표가 된다.)
    src_properties : 사용자가 정의한 기능들의 속성파일들이 담겨 있다.(properties / .xml (xml은 사용자 임의 태그가 사용가능한 텍스트기반 Markup language)) 해당 폴더에 있는 파일들을 통하여 기능의 추가/수정/삭제가 이뤄진다.
  2. 사용자의 데이터가 Devap1서버에 저장되면 실시간으로 Devdb1과 동기화가 이뤄진다.
  3. 젠킨스에서 배포를 위한 버튼 'RUN'을 누르게 되면 젠킨스내부에서 Build가 진행된다.
  4. 빌드 내용은 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}
  5. 코드디플로이를 통한 배포가 이뤄지게끔 Trigger 역할
  6. 코드디플로이 배포를 위해 AWS S3에 접근한다.
    <name.zip scripts information>
    stat_server → tomcat start
    validate_service → port info & tomcat health check
    install-dependency → 기존 ROOT.war 파일 삭제 && S3로 부터 ROOT 와 소스 다운로드

  7. 사용자가 지정한 서버로 코드디플로이를 통하여 해당 소스들이 배포된다.