• ssh - python
pipeline {
    agent any

    environment {
        GITLAB_PATH = "https://10.20.110.177:8929/magicztna/magicsdp-admin-back.git"
        GITLAB_CREDENTIAL_ID = "gitlab-jhkim"
        DEPOLY_SERVER_NAME = "depoly-server"
        REMOTE_SERVER_NAME = "10.20.110.62-MagicSDP"
        REMOTE_SERVER_IP = "10.20.110.62"
        SOURCE_FILES = "**/*"
        SOURCE_PATH_NAME = "magiczta"
        SOURCE_DIR_NAME = "magicsdp-admin-back"
        REMOTE_SOURCE_FILES = "magicsdp-admin-back, start-no-console.sh, shutdown-no-console.sh, resources/application-dream.yaml, resources/cert/*"
		REMOTE_PATH_NAME ="/usr/local/magiczta/"
		REMOTE_DIR_NAME ="magicsdp-admin-back"
		
    }

    stages {
        stage("clean Source Files") {
            steps {
                script {
                    sshPublisher(
                        publishers: [
                            sshPublisherDesc(
                                configName: "${DEPOLY_SERVER_NAME}",
                                verbose: true,
                                transfers: [
                                    sshTransfer(
                                        execCommand: """ cd ${SOURCE_PATH_NAME} && rm -rf ${SOURCE_DIR_NAME} """
                                    )
                                ]
                            )
                        ]
                    )
                }
            }
        }
        stage('Git Config Setting') {
            steps {
                sh 'git config --global http.sslVerify false'
            }
        }
        stage("Git Clone") {
            steps {
				git branch: 'develop', credentialsId: "${GITLAB_CREDENTIAL_ID}", url: "${GITLAB_PATH}"
            }
        }
        stage("Transfer Source Files") {
            steps {
                script {
                    sshPublisher(
                        publishers: [
                            sshPublisherDesc(
                                configName: "${DEPOLY_SERVER_NAME}",
                                verbose: true,
                                transfers: [
                                    sshTransfer(
                                        execCommand: """ mkdir -p ${SOURCE_PATH_NAME}/${SOURCE_DIR_NAME} """,
                                        execTimeout: 60000,
                                        flatten: false,
                                        makeEmptyDirs: false,
                                        noDefaultExcludes: false,
                                        patternSeparator: '[, ]+',
                                        remoteDirectory: """${SOURCE_PATH_NAME}/${SOURCE_DIR_NAME}""",
                                        remoteDirectorySDF: false,
                                        removePrefix: '',
                                        sourceFiles: """${SOURCE_FILES}"""
                                    )
                                ]
                            )
                        ]
                    )
                }
            }
        }
        stage("Build Source Files") {
            steps {
                script {
                    sshPublisher(
                        publishers: [
                            sshPublisherDesc(
                                configName: "${DEPOLY_SERVER_NAME}",
                                verbose: true,
                                transfers: [
                                    sshTransfer(
                                        execCommand: """ cd ${SOURCE_PATH_NAME}/${SOURCE_DIR_NAME} && python3 -m venv venv_magicsdpadmin && source ./venv_magicsdpadmin/bin/activate && pip install -r requirements.txt && pyinstaller --onefile --hidden-import=dependency_injector.errors --hidden-import=mysql.connector.plugins.mysql_native_password --exclude-module pkg_resources --exclude-module pkg_resources._vendor --exclude-module pkg_resources.py2_warn --hidden-import=_xxsubinterpreters --add-binary "/usr/lib/x86_64-linux-gnu/libpython3.12.so.1.0:./" -n ${SOURCE_DIR_NAME} main.py && deactivate && cp ./dist/${SOURCE_DIR_NAME} /jenkins/workspace/dream-magicsdp-admin-back/${SOURCE_DIR_NAME} """
                                    )
                                ]
                            )
                        ]
                    )
                }
            }
        }
        stage("Stop Process") {
            steps {
                script {
                    sshPublisher(
                        publishers: [
                            sshPublisherDesc(
                                configName: "${REMOTE_SERVER_NAME}",
                                verbose: true,
                                transfers: [
                                    sshTransfer(
                                        execCommand: """ cd /${REMOTE_PATH_NAME}${REMOTE_DIR_NAME} && ./shutdown-no-console.sh && sleep 3""",
                                    )
                                ]
                            )
                        ]
                    )
                }
            }
        }
        stage("Transfer Builded Files") {
            steps {
                script {
                    sshPublisher(
                        publishers: [
                            sshPublisherDesc(
                                configName: "${REMOTE_SERVER_NAME}",
                                verbose: true,
                                transfers: [
                                    sshTransfer(
                                        execCommand: """ cd ${REMOTE_PATH_NAME}${REMOTE_DIR_NAME} && chmod 755 ./start-no-console.sh && chmod 755 ./shutdown-no-console.sh && chmod 755 ./${REMOTE_DIR_NAME} && mv ${REMOTE_PATH_NAME}${REMOTE_DIR_NAME}/resources/application-dream.yaml ${REMOTE_PATH_NAME}${REMOTE_DIR_NAME}/resources/application.yaml && ./start-no-console.sh """,
                                        execTimeout: 60000,
                                        flatten: false,
                                        makeEmptyDirs: false,
                                        noDefaultExcludes: false,
                                        patternSeparator: '[, ]+',
                                        remoteDirectory: """/${REMOTE_PATH_NAME}${REMOTE_DIR_NAME}""",
                                        remoteDirectorySDF: false,
                                        removePrefix: '',
                                        sourceFiles: """${REMOTE_SOURCE_FILES}"""
                                    )
                                ]
                            )
                        ]
                    )
                }
            }
        }
    }
    post {
        success {
            slackSend (
                channel: '#jenkins-depoly', 
                color: '#00FF00', 
                message: "Success: ${env.JOB_NAME} [build ${env.BUILD_NUMBER}] [URL: http://${REMOTE_SERVER_IP}:7071/docs]"
            )
        }
        failure {
            slackSend (
                channel: '#jenkins-depoly', 
                color: '#FF0000', 
                message: "Fail: ${env.JOB_NAME} [build ${env.BUILD_NUMBER}] [URL: http://${REMOTE_SERVER_IP}:7071/docs]"
            )
        }
    }
 }
  • ssh - react
pipeline {
    agent any

    environment {
        GITLAB_CREDENTIAL_ID = "gitlab-jhkim"
        DEPOLY_SERVER_NAME = "depoly-server"
        REMOTE_SERVER_NAME = "10.20.110.62-MagicSDP"
        REMOTE_SERVER_IP = "10.20.110.62"
        SOURCE_FILES = "**/*"
        REMOTE_SOURCE_FILES = "magicsdp-admin-front.tar.gz"
		
		BUILD_SOURCE_PATH_NAME = "magiczta"
        BUILD_SOURCE_DIR_NAME = "magicsdp-admin-front"
		
		SOURCE_PATH_NAME = "/jenkins/workspace/dream-magicsdp-admin-front"
        TAR_FILE_NAME = "magicsdp-admin-front.tar.gz"
		
    }

    stages {
        stage("clean Tar.gz Files") {
            steps {
                script {
                    sshPublisher(
                        publishers: [
                            sshPublisherDesc(
                                configName: "${DEPOLY_SERVER_NAME}",
                                verbose: true,
                                transfers: [
                                    sshTransfer(
                                        execCommand: """ cd ${SOURCE_PATH_NAME} && rm ${TAR_FILE_NAME} """
                                    )
                                ]
                            )
                        ]
                    )
                }
            }
        }
		stage("clean Source Files") {
            steps {
                script {
                    sshPublisher(
                        publishers: [
                            sshPublisherDesc(
                                configName: "${DEPOLY_SERVER_NAME}",
                                verbose: true,
                                transfers: [
                                    sshTransfer(
										execCommand: """ cd ${BUILD_SOURCE_PATH_NAME} && rm -rf ${BUILD_SOURCE_DIR_NAME} """
                                    )
                                ]
                            )
                        ]
                    )
                }
            }
        }
        stage('Git Config Setting') {
            steps {
                sh 'git config --global http.sslVerify false'
            }
        }
        stage("Git Clone") {
            steps {
                git branch: 'develop', credentialsId: "${GITLAB_CREDENTIAL_ID}", url: 'https://10.20.110.177:8929/magicztna/magicsdp-admin-front.git'
            }
        }
        stage("Transfer Source Files") {
            steps {
                script {
                    sshPublisher(
                        publishers: [
                            sshPublisherDesc(
                                configName: "${DEPOLY_SERVER_NAME}",
                                verbose: true,
                                transfers: [
                                    sshTransfer(
                                        execTimeout: 60000,
                                        flatten: false,
                                        makeEmptyDirs: false,
                                        noDefaultExcludes: false,
                                        patternSeparator: '[, ]+',
                                        remoteDirectory: "${BUILD_SOURCE_PATH_NAME}/${BUILD_SOURCE_DIR_NAME}",
                                        remoteDirectorySDF: false,
                                        removePrefix: '',
                                        sourceFiles: """${SOURCE_FILES}"""
                                    )
                                ]
                            )
                        ]
                    )
                }
            }
        }
        stage("Build Source Files") {
            steps {
                script {
                    sshPublisher(
                        publishers: [
                            sshPublisherDesc(
                                configName: "${DEPOLY_SERVER_NAME}",
                                verbose: true,
                                transfers: [
                                    sshTransfer(
                                        execCommand: """ cd ${BUILD_SOURCE_PATH_NAME}/${BUILD_SOURCE_DIR_NAME} && pwd && yarn install && mv ./.env-dream ./.env && yarn build && chmod 755 ./start-no-console.sh && chmod 755 ./shutdown-no-console.sh && cd .. && tar -zcvf ${TAR_FILE_NAME} ${BUILD_SOURCE_DIR_NAME} && mv ./${TAR_FILE_NAME} ${SOURCE_PATH_NAME}/${TAR_FILE_NAME}"""
                                    )
                                ]
                            )
                        ]
                    )
                }
            }
        }
        stage("Stop Process") {
            steps {
                script {
                    sshPublisher(
                        publishers: [
                            sshPublisherDesc(
                                configName: "${REMOTE_SERVER_NAME}",
                                verbose: true,
                                transfers: [
                                    sshTransfer(
                                        execCommand: """ cd /usr/local/magiczta/magicsdp-admin-front && ./shutdown-no-console.sh && sleep 3 && cd .. && rm -rf ./magicsdp-admin-front""",
                                    )
                                ]
                            )
                        ]
                    )
                }
            }
        }
        stage("Transfer Builded Files") {
            steps {
                script {
                    sshPublisher(
                        publishers: [
                            sshPublisherDesc(
                                configName: "${REMOTE_SERVER_NAME}",
                                verbose: true,
                                transfers: [
                                    sshTransfer(
                                        execCommand: """ cd /usr/local/magiczta/ && tar -zxvf ${TAR_FILE_NAME} && cd magicsdp-admin-front/ && ./start-no-console.sh """,
                                        execTimeout: 60000,
                                        flatten: false,
                                        makeEmptyDirs: false,
                                        noDefaultExcludes: false,
                                        patternSeparator: '[, ]+',
                                        remoteDirectory: "magiczta",
                                        remoteDirectorySDF: false,
                                        removePrefix: '',
                                        sourceFiles: """${REMOTE_SOURCE_FILES}"""
                                    )
                                ]
                            )
                        ]
                    )
                }
            }
        }
    }
    post {
        success {
            slackSend (
                channel: '#jenkins-depoly', 
                color: '#00FF00', 
                message: "Success: ${env.JOB_NAME} [build ${env.BUILD_NUMBER}] [URL: http://${REMOTE_SERVER_IP}:22005]"
            )
        }
        failure {
            slackSend (
                channel: '#jenkins-depoly', 
                color: '#FF0000', 
                message: "Fail: ${env.JOB_NAME} [build ${env.BUILD_NUMBER}] [URL: http://${REMOTE_SERVER_IP}:22005]"
            )
        }
    }
}

 

  • docker
pipeline {
    agent any
    environment {
        IMAGE_NAME = "test-api:lts"
        LOCAL_NAME = "depoly-server-root"
        REMOTE_NAME = "web-server-root"
        SOURCE_FILES = "*"
        REMOTE_DIRECTORY = "/test-api"
    }
    stages {
        stage('Git Clone') {
            steps {
                echo 'echo::Git Clone'
                git url: 'https://github.com/jaehun0210/test-api.git', branch: 'main', credentialsId: 'github_access_token_jaehun0210'
            }
        }
        stage('Docker Build Image') {
    steps {
        echo 'echo::Docker Build Image'
        script {
            sshPublisher(
                        publishers: [
                            sshPublisherDesc(
                                configName: "${LOCAL_NAME}",
                                verbose: true,
                                transfers: [
                                    sshTransfer(
                                        execCommand: 
                                        """
                                        cd /jenkins/workspace/test-api-2 && pwd && docker build -t ${IMAGE_NAME} . && docker save ${IMAGE_NAME} > ${IMAGE_NAME}.tar
                                        """
                                    )
                                ]
                            )
                        ]
                    )
        }
    }
        }
        stage('Docker Depoly Image') {
    steps {
        echo 'echo::Docker Depoly Image'
        script {
            sshPublisher(
                        publishers: [
                            sshPublisherDesc(
                                configName: "${REMOTE_NAME}",
                                verbose: true,
                                transfers: [
                                    sshTransfer(
                                        execCommand: """pwd && docker load -i ${IMAGE_NAME}.tar && docker compose stop && docker compose up -d --build""", // 원격 명령 (비워둘 수 있음)
                                        execTimeout: 120000, // 명령 실행 제한 시간 (밀리초)
                                        flatten: false, // true로 설정하면 원격 경로에서 파일이 복사됩니다.
                                        makeEmptyDirs: false, // true로 설정하면 원격 디렉토리에 빈 디렉토리가 생성됩니다.
                                        noDefaultExcludes: false,
                                        patternSeparator: '[, ]+',
                                        remoteDirectory: "/",
                                        remoteDirectorySDF: false,
                                        removePrefix: '', // 원본 파일 경로에서 제거할 접두사
                                        sourceFiles: """${IMAGE_NAME}.tar, docker-compose.yml"""
                                    )
                                ]
                            )
                        ]
                    )
        }
    }
        }
    }
}

 

+ Recent posts