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: Git
    • Repository 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'"
                        }
                    }
                }
            }
        }
    }
}
반응형