728x90
반응형
구조
- Github Webhook -> Jenkins Server (Lightsail) -> Test Server (Lightsail)
- Jenkins Server에서 파이프라인 스크립트를 통해 SSH Agent를 이용하여 Test Server에 SSH 접속
과정
1. Jenkins 설치
- Lightsail에 Jenkins 설치 (자바 설치 필요)
2. Github Webhook 설정
- Payload URL:
http://<Jenkins-URL>/github-webhook/
3. SSH 키 생성 및 복사
- Jenkins Server에서 Test Server로 SSH 접속을 위한 키 발급
ssh-keygen
- 발급된 공개키를 Test Server로 복사
echo <public_key_string> >> ~/.ssh/authorized_keys
4. Jenkins 설정
4.1. Credential 등록
- Github Access Token: Jenkins의
Username with password
유형으로 등록 - SSH 키:
SSH Username with private key
유형으로 Jenkins Server에서 발급한 개인키 등록 - .env 파일:
Secret file
유형으로 등록
4.2. 플러그인 설치
- SSH Agent 플러그인 설치
4.3. 파이프라인 등록
Github 프로젝트
Project URL
등록GitHub hook trigger for GITScm polling
체크
파이프라인
Pipeline script from SCM
SCM
: GitRepository URL
: Git 프로젝트 주소 등록Credentials
: 등록한 Github Access Token 선택- Script path:
Jenkinsfile
(실행 스크립트가 작성된 Jenkins 파일)
pipeline {
agent any
stages {
stage('Running commands') {
steps {
script {
sshagent(['<test-server-ssh-private-key>']) {
withCredentials([file(credentialsId: 'env-file', variable: 'ENV_FILE')]) {
sh "scp -o StrictHostKeyChecking=no $ENV_FILE bitnami@<test-server-url>:workspace/<project-name>/.env"
sh "ssh -o StrictHostKeyChecking=no bitnami@<test-server-url> 'cd workspace/<project-name> && git pull && sudo docker compose up -d --build'"
}
}
}
}
}
}
}
반응형
'DevOps' 카테고리의 다른 글
AWS EKS 클러스터 구축하기(1) - EKS 클러스터 생성 (4) | 2024.08.30 |
---|---|
Minikube 및 Kubectl 자주 사용하는 명령어와 옵션 (0) | 2024.06.24 |
Kubernetes 오브젝트와 Minikube 예시 코드 (0) | 2024.06.24 |
Kubernetes(k8s) 기본 개념 정리 (0) | 2024.06.23 |
Docker 이미지, 컨테이너, 볼륨에 대한 이해 (0) | 2024.06.23 |