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"""
)
]
)
]
)
}
}
}
}
}
pipeline 예제
2025. 2. 16. 22:38
ssh 설치
2025. 2. 10. 17:55
[apt 업데이트]
sudo apt-get update
[apt 설치]
sudo apt-get install openssh-server
[ssh 시작]
sudo systemctl start ssh
[시스템등록 후 자동시작]
sudo ststemctl enable ssh
ufw 명령어
2025. 2. 10. 17:52
[활성화]
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