Information Security Study

젠킨스 파이프라인에서 .sh 실행하기 본문

네트워크 캠퍼스/NHN클라우드-Jenkins

젠킨스 파이프라인에서 .sh 실행하기

gayeon_ 2024. 7. 23. 17:10

젠킨스 파이프라인에서 .sh 실행하기

 

젠킨스 파이프라인에서 shell 스크립트를 작성해서 실행하면 구문이 복잡해지기 때문에

github에 shell 스크립트를 작성해 받아와서 실행하는 방식을 사용했다.

 

 

 

 

먼저 파이프라인 타입으로 아이템을 생성했다.

 

 

pipeline {
    agent any

    stages {
        stage('Build') {
            steps {
                echo 'Building...'
            }
        }
        stage('Test') {
            steps {
                echo 'Testing...'
            }
        }
        stage('Deploy') {
            steps {
                echo 'Deploying...'
            }
        }
    }
}

 

스크립트에는 위와 같은 형식으로 작성할 것이다.

 

 

 

이제 인스턴스 자원을 주기적으로 확인하고 로깅하는 셸 스크립트를 작성할 것이다.

 

 

 

cpu, 메모리, 디스크 사용량을 로깅하는 셸 스크립트이다.

이 스크립트는 /var/log/resource_usage.log 파일에 주기적으로 자원 사용량을 기록한다.

 

 

 

저장한 뒤 실행 권한을 부여했다.

 

 

 

젠킨스는 보통 jenkins 이름으로 스크립트 명령을 내리기 때문에 ubuntu 계정이 갖는 요소에는 쓰기 작업이 불가능한 경우가 있다.

그래서 jenkins로 sudo 명령을 편하게 쓸 수 있도록 visudo에서 권한을 부여했다.

 

 

 

jenkins 사용자에게 비밀번호 없이 sudo 명령을 부여하는 구문

 

 

pipeline {
    agent any

    stages {
        stage('Clone github'){
            steps {
                git 'https://github.com/계정명/레포지토리명'
                sh 'ls'
                sh 'chmod +x resource_usage.sh'
                sh 'chmod +x build.sh'
                sh 'chmod +x test.sh'
                sh 'chmod +x deploy.sh'
            }
        }
        stage('Build') {
            steps {
                echo 'Building...'
                sh './build.sh'
            }
        }
        stage('Test') {
            steps {
                echo 'Testing...'
                sh './test.sh'
            }
        }
        stage('Deploy') {
            steps {
                echo 'Deploying...'
                sh './deploy.sh'
            }
        }
        stage('Logging'){
            steps {
                echo 'Logging...'
                // jenkins 계정으로는 /home/ubuntu 하위 경로에 저장 불가이므로 sudo 필요
                sh 'sudo ./resource_usage.sh'
                echo '------------- process --------------'
                // 조회시에도 jenkins 계정으로는 /home/ubuntu 하위 경로에 호출 불가이므로 sudo 필요
                sh 'sudo cat /home/ubuntu/log_test/resource_usage.log'
            }
        }
    }
}

 

깃허브 레포지토리에서 sh 파일을 받아서 실행한 뒤

로그 내역을 출력하는 파이프라인 스크립트이다.

 

빌드를 누르면 인스턴스의 /home/ubuntu/log_test/resource_usage.log 파일에 로깅이 되고

기록된 내역이 출력된다.

 

 

 

직접 powershell에서 cat으로 출력해도 동일한 결과가 출력된다.

 

 

 

젠킨스에서 console output으로 확인한 결과