jenkins 빌드/배포 서버 분리

이동명·2023년 10월 11일
0
post-thumbnail

이번 포스팅에서는 jenkins 로 빌드와 배포서버를 분리해보는 것.

1. jenkins 설정



2. jenkins plugin

3개의 플러그인을 설치하였다.

3. jenkins plugin config

아래의 Publish over SSH 메뉴에서 key 쪽에 jenkins 가 설치된 내 클라우드에서 ssh-keygen을 사용해서 나온 비밀키를 적어준다.

4. pipeline script

pipeline {
    agent any
    stages {
        stage('cloning') {
            steps {
                git url:'https://github.com/dongmyoungLee/linux_test_be.git',
                    branch: "master"
            }
        }
        stage('Build') {
            steps {
                sh ('chmod 744 gradlew')
                
                sh "./gradlew build"
            }
        }
        
        stage('Deploy'){
            steps{
                sshPublisher(
                    publishers: [
                        sshPublisherDesc(
                            configName: 'deploy',
                            transfers: [
                                sshTransfer(
                                    sourceFiles: 'build/libs/*T.jar',
                                    remoteDirectory: '',
                                    removePrefix:'build/libs',
                                    execCommand: 'java -jar *.jar > app.out 2>&1 &'
                                    )
                                ]
                        )
                    ]
                )
            }
        }
        
    }
}

여기까지 해주면 jenkins 설정은 완료되었다.

5. cloud 인스턴스 public_key 등록

현재 두개의 인스턴스가 있다.

  • A인스턴스 : jenkins가 설치된 build_server

  • B인스턴스 : jar 가 실행 될 deploy_server

jenkins 에서 B인스턴스에 접근할 수 있도록 A 인스턴스에서 ssh-keygen으로 생성한 비밀키과 공개키중 공개키를 B인스턴스의 .ssh/authorized_keys 에 기입해놓아야 한다.

이렇게 기입해놓을 시 A 클라우드에서 jenkins 계정에 접근한 뒤

ssh test@내부ip 

로 접속이 가능해진다.

6. jenkins build 결과

A클라우드에서 build 가 되었고,

B클라우드에선 실행이 되고 있는 모습이다.

profile
Web Developer

0개의 댓글