이전 포스팅에서 로컬에서 git을 연결, 로컬에 테스트까지 완료하였다

해당 포스팅에선 로컬 -> ec2로 배포까지 자동화를 진행한다.

 

플러그인 다운목록

Publish over SSH -> ec2에 접근을 위한 SSH 인증을 진행해줌 (Manage Jenkins -> System의 Publish over SSH 부분 입력)

 

Publish over SSH 설정하기

jenkins manage -> system 메뉴 클릭 -> publish over ssh로 이동 (없을경우 플러그인이 제대로 설치된게 아님)

jenkins가 배포를 진행하려는 인스턴스의 접근을 위한 key를 입력해준다 - aws에 인스턴스를 생성하면서 발급받은 key를 입력해주면 되며 메모장 또는 브라우저에 드래그 앤 드롭을 진행하면 나타난다

-----BEGIN ~ PRIVATE KEY----까지 전부 입력해줘야 문제없이 진행된다.

Name - 내가 사용할 이름으로 후에 pipeline에서 사용예정

Hostname - ec2에서 사용중인 ip (public ip)

Username - ec2에 connect를 진행할때 로그인되는 id

Remote Directory - 배포할 위치 (tomcat에 배포할 예정이라 다음과 같이 나타났다)

전부 문제없이 입력한경우 Test Configuration 을 클릭해 테스트 가능

pipeline 변경

(이전 코드에서 deploy 부분 추가)

pipeline {
    agent any
    tools {
        maven 'Maven_PLUS' // Maven 도구 이름으로 따로 만들어놓은 Maven을 사용할경우 입력
    }
    
    environment {        //어디에 위치한 JDK를 사용할지 입력하며 로컬에 있는 파일을 사용예정이기에 다음처럼 입력
        JAVA_HOME = 'C:\\Program Files\\Eclipse Adoptium\\jdk-21.0.3.9-hotspot'
        PATH = "${env.JAVA_HOME}\\bin;${env.PATH}"
    }
    
    stages {
		stage('Checkout') {	                // Git 레포지토리에서 코드를 가져오는 단계
            steps {
                // Git 레포지토리에서 코드를 가져오는 단계
                git branch: 'master', 
                    credentialsId: 'deploy-ssh-credentials-id', 
                    url: 'https://github.com/myname/projectname.git'
            }
        }
        
        stage('Build') { // Maven을 사용하여 빌드
            steps {
                bat "\"${tool 'Maven_PLUS'}\\bin\\mvn\" clean package"            
            }
        }
        stage('Test') { // Maven을 사용하여 테스트 실행
            steps {
                bat "\"${tool 'Maven_PLUS'}\\bin\\mvn\" test"
            }
        }
        
        stage('Deploy') {	//배포진행
            steps {
                sshPublisher(publishers: [
                    sshPublisherDesc(
                        configName: 'test_ssh_server',	//publish over에서 설정한 이름
                        transfers: [
                            sshTransfer(	
                                sourceFiles: '**/target/deployfilename.war', 	//해당 형태로 war를 생성
                                removePrefix: 'target', 	//sourcesFiles에서 앞에 붙은 target을 삭제하기 위함
                                execCommand: '''
                                    sudo /opt/tomcat/bin/shutdown.sh;	//기존 톰캣 중지
									sudo /opt/tomcat/bin/startup.sh;	//톰캣 재실행
                                '''
                            )
                        ],
                        usePromotionTimestamp: false,
                        useWorkspaceInPromotion: false,
                        verbose: true
                    )
                ])
            }
        }
    }
}

 

 

실제 배포여부가 완료되었다면 1~2분뒤 본인이 배포한 사이트에 접속을 진행해보자

또한 빌드 자동화를 진행했으니 다음엔 블루-그린 배포전략에 대해서 알아보다

 

'Spring' 카테고리의 다른 글

타임리프 css 미적용 문제 + redirect 문제  (0) 2024.08.31
젠킨스 로컬에서 자동화하기 - 1  (0) 2024.06.27
젠킨스 관련 에러 내용 (crumb, 용량부족)  (0) 2024.06.16
Jmeter - 2  (0) 2024.06.12
Jmeter - 1  (0) 2024.06.08

+ Recent posts