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"""
                                    )
                                ]
                            )
                        ]
                    )
        }
    }
        }
    }
}

김군...^^

[apt 업데이트]

sudo apt-get update

 

[apt 설치]

sudo apt-get install openssh-server

 

[ssh 시작]

sudo systemctl start ssh

 

[시스템등록 후 자동시작]

sudo ststemctl enable ssh

김군...^^

[활성화]

sudo ufw enable

 

[비활성화]

sudo ufw disable

 

[상태조회]

sudo ufw status verbose

 

[ssh 허용]

sudo ufw allow 22/tcp, sudo ufw allow 22/udp

 

[ssh 차단]

sudo ufw deny 22/tcp, sudo ufw deny 22/udp

 

[ssh 삭제]

sudo ufw delete deny ssh/tcp, sudo ufw delete deny ssh/udp

 

[IP 허용]

sudo ufw allow from 192.168.0.1

sudo ufw allow from 192.168.0.0/24

 

[IP, PORT 허용]

sudo ufw allow from 192.168.0.1 to any port 22

sudo ufw allow from 192.168.0.0/24 to any port 22

김군...^^

+ Recent posts