티스토리 뷰

728x90

1. 개요

Proxmox VE와 Jenkins를 활용하여 다양한 OS 환경에서 빌드 및 테스트를 자동화하는 프로젝트 지원 범위를 정의합니다. 이 구성은 CI/CD 파이프라인을 통해 여러 OS에서 동시에 빌드 및 테스트를 수행하며, GitLab과의 통합으로 소스 코드의 관리 및 배포를 자동화합니다.


2. 시스템 설계 흐름

  1. Proxmox에서 각 OS(컨테이너 또는 VM)에 고유 IP를 부여
  2. Jenkins에서 각 OS를 빌드 에이전트(노드)로 등록
  3. GitLab에서 코드 푸시 시 Jenkins가 Proxmox에서 해당 OS로 빌드 및 테스트 요청
  4. 빌드 결과 및 테스트 리포트를 GitLab으로 피드백

3. Proxmox에서 OS별 IP 할당 및 Jenkins 에이전트 구성

1. CT/VM 네트워크 설정

  • 브리지 네트워크를 사용해 각 CT/VM이 외부에서 접근 가능하도록 설정
  • Proxmox Web UI:
    • Datacenter > Node > Network > vmbr0 (브리지)
    • IP 대역 설정 후 DHCP 또는 고정 IP 할당
  • 각 컨테이너 생성 시 IP 설정 예시:
    pct set 100 --net0 name=eth0,bridge=vmbr0,ip=192.168.1.100/24
    pct set 101 --net0 name=eth0,bridge=vmbr0,ip=192.168.1.101/24
    

2. OS별 Jenkins 에이전트 설치 및 등록

  • 각 CT/VM에 Jenkins 에이전트를 설치하고 마스터와 연결
    wget http://<jenkins-url>:8080/jnlpJars/agent.jar
    java -jar agent.jar -jnlpUrl http://<jenkins-url>:8080/computer/ubuntu20/jenkins-agent.jnlp
    
  • Jenkins에서 노드로 등록하고 Labels에 OS 정보 추가

4. Jenkins 빌드 요청 자동화 (CI/CD 파이프라인)

1. Jenkins 노드 구성 예시

  • Proxmox에서 구성된 각 OS에 맞게 Jenkins 노드 생성
  • Jenkins Web UI:
    • Manage Jenkins > Manage Nodes and Clouds > New Node
    • 노드 이름: ubuntu20, centos8, debian11 등
    • 실행 모드: Permanent Agent
    • 라벨: ubuntu20, centos8 (빌드 스크립트에서 사용)
    • 원격 root 경로: /home/jenkins
    • 런처: JNLP 에이전트 또는 SSH 연결

2. Jenkinsfile (OS별 빌드 요청 예시)

pipeline {
    agent none
    stages {
        stage('Build on Ubuntu 20.04') {
            agent { label 'ubuntu20' }
            steps {
                sh 'cmake . && make'
                sh './run_tests'
            }
        }
        stage('Build on CentOS 8') {
            agent { label 'centos8' }
            steps {
                sh 'cmake . && make'
                sh './run_tests'
            }
        }
    }
}

5. 테스트 자동화 전략

  1. OS별 유닛 테스트 실행
    • 각 OS에서 컴파일 후 테스트 스크립트를 실행하고 결과를 Jenkins로 리포트
  2. 빌드 실패 시 롤백
    • 빌드 또는 테스트 실패 시 해당 OS에서 롤백 스크립트 실행
  3. 병렬 빌드 및 테스트
    • 여러 OS에서 병렬로 빌드 및 테스트 수행

6. Proxmox와 Jenkins 연동 팁

  • Proxmox API를 사용해 Jenkins에서 동적으로 CT/VM 생성 및 삭제 가능
  • Terraform을 사용해 Proxmox 리소스를 자동화할 수 있음
  • Ansible과 연동해 Jenkins에서 Proxmox 환경을 자동 구성 가능

7. 기대 효과

  • 다양한 OS 환경에서 동시 빌드 및 테스트 가능
  • Windows, Linux, Unix, MacOS 환경에서 코드 호환성과 안정성 검증
  • GitLab과 연동해 완전 자동화된 빌드 및 배포 파이프라인 구축 가능
반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함
250x250