ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [AWS 자동 배포 시스템] 10. Jenkins private subnet EC2(Ubuntu) 배포(Inoticoming)
    AWS 2022. 3. 14. 13:03
    반응형

    Inoticoming(특정 폴더에 파일을 감지하여 Event를 실행)를 사용하여 Jenkins 서버 -> Public 서버 -> Private 서버에 배포 해보려고 한다.

    Ubuntu에서만 설치 가능하다.

     

    먼저 Public 서버와 Private 서버에 inoticoming을 설치하자.

    sudo apt install -y inoticoming

     

     

    다음으로 Public 서버에 app.jar 라는 파일이 변경됬을 때 실행되는 shell script를 생성하자.

    app.jar를 Private 서버로 복사한다.

    #!/bin/sh
    scp -i ~/.ssh/private-server.pem ~/watch/app.jar ubuntu@10.0.3.31:/home/ubuntu/project/app/app.jar

     

     

    inoticoming 명령어를 실행하자.

    필자는 crontab에 등록하였다.

    inoticoming --logfile logs/log --pid-file pid /home/ubuntu/watch --suffix app.jar /home/ubuntu/watch/watchApp.sh \;
    
    
    
    inoticoming --logfile logs/log(log 파일 생성 위치) --pid-file pid(실행된 프로세스 아이디 저장하는 파일명) /home/ubuntu/watch(감지할 디렉토리) --suffix app.jar(감지할 파일) /home/ubuntu/watch/watchApp.sh(감지됬을 때 실행할 이벤트) \;

     

     

    다음으로 Public 서버 작업을 하자.

    Public과 동일하게 shell script를 생성하자.

    여기서는 단순히 서버를 restart만 한다.

    스크립트는 알아서 구현하자.

    #!/bin/sh
    
    cd ~/project/app
    ./restart_app.sh

     

     

    그 다음 inoticoming 명령어를 실행하자.

    crontab에 등록하여 사용하자.

    inoticoming --logfile logs/log --pid-file pid /home/ubuntu/project/app --suffix app.jar /home/ubuntu/project/watch/watchApp.sh \;

     

     

     

    Jenkins 파이프 라인 코드이다.

    pipeline {
        agent any
    
        environment {
            PROJECT_NAME = 'app-server'
            BRANCH = 'develop'
            MODULE_NAME = 'app'
        }
    
        stages {
                    
            stage ('Git Clone'){ 
            	steps { 
                	git branch: BRANCH, 
                    credentialsId: 'GIT_ACCOUNT', 
                    url: 'YOUR_GIT_URL' 
                } 
            } 
            
    
            stage('Gradle Build') {
                steps {
                    sh 'find ~/.gradle -type f -name *.lock -delete'
                    sh './gradlew clean'
                    sh './gradlew build -x test'
                }
            }
            
            stage('Deploy') {
                steps {
                    sh 'scp -i ~/.ssh/public-server.pem ${MODULE_NAME}/build/libs/${MODULE_NAME}.jar ubuntu@YOUR_PUBLIC_URL:/home/ubuntu/watch/${MODULE_NAME}.jar'
                }
            }
    
            
        }
        
    }

     

     

    Jenkins를 빌드하면 Jenkins -> Public -> Private 순으로 app.jar 파일이 이동하여 서버가 재구동 될 것이다.

    반응형
Designed by Tistory.