생성된 파이프라인 설정에 접속

image.png

Definition을 Pipeline Script 로 선택한 후

파이프라인 스크립트 입력

pipeline {
    agent any
    
    tools {
        jdk 'openjdk-17'
    }
    
    environment {
        ADMIN_EMAILS= credentials('ADMIN_EMAILS')
        MYSQL_PASSWORD = credentials('MYSQL_PASSWORD')
        GMAIL_USERNAME = credentials('GMAIL_USERNAME')
        GMAIL_PASSWORD = credentials('GMAIL_PASSWORD')
        JWT_KEY = credentials('JWT_KEY')
        RECAPTCHA_SECRET_KEY = credentials('RECAPTCHA_SECRET_KEY')
    }
    
    stages {
        stage('Checkout') {
            steps {
                git branch: 'master', 
                    url: '<https://github.com/excuse-dict/excuse-dict-backend.git>'
            }
        }
        
        stage('Build') {
            steps {
                sh 'chmod +x ./gradlew'
                sh './gradlew clean build -x test --parallel'
            }
        }
        
        stage('Deploy') {
				    steps {
				        sh '''
				            docker stop excuse-dict || true
				            docker rm excuse-dict || true
				            docker build -t excuse-dict:latest .
				            
				            docker run -d --name excuse-dict \\
				                --network host \\
				                -e MYSQL_PASSWORD="$MYSQL_PASSWORD" \\
				                -e GMAIL_USERNAME="$GMAIL_USERNAME" \\
				                -e GMAIL_PASSWORD="$GMAIL_PASSWORD" \\
				                -e JWT_KEY="$JWT_KEY" \\
				                -e RECAPTCHA_SECRET_KEY="$RECAPTCHA_SECRET_KEY" \\
				                -e ADMIN_EMAILS="$ADMIN_EMAILS" \\
				                excuse-dict:latest
				            
				            docker ps | grep excuse-dict
				        '''
				    }
				}
    }
    
    post {
        failure {
            sh '''
                echo "=== Build/Deploy Failed ==="
                if [ -f /tmp/app.log ]; then
                    echo "=== Application Logs ==="
                    tail -20 /tmp/app.log
                fi
            '''
        }
    }
}