티스토리 뷰
728x90
1. 개요
Proxmox VE와 Jenkins를 활용하여 다양한 OS 환경에서 빌드 및 테스트를 자동화하는 프로젝트 지원 범위를 정의합니다. 이 구성은 CI/CD 파이프라인을 통해 여러 OS에서 동시에 빌드 및 테스트를 수행하며, GitLab과의 통합으로 소스 코드의 관리 및 배포를 자동화합니다.
2. 시스템 설계 흐름
- Proxmox에서 각 OS(컨테이너 또는 VM)에 고유 IP를 부여
- Jenkins에서 각 OS를 빌드 에이전트(노드)로 등록
- GitLab에서 코드 푸시 시 Jenkins가 Proxmox에서 해당 OS로 빌드 및 테스트 요청
- 빌드 결과 및 테스트 리포트를 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. 테스트 자동화 전략
- OS별 유닛 테스트 실행
- 각 OS에서 컴파일 후 테스트 스크립트를 실행하고 결과를 Jenkins로 리포트
- 빌드 실패 시 롤백
- 빌드 또는 테스트 실패 시 해당 OS에서 롤백 스크립트 실행
- 병렬 빌드 및 테스트
- 여러 OS에서 병렬로 빌드 및 테스트 수행
6. Proxmox와 Jenkins 연동 팁
- Proxmox API를 사용해 Jenkins에서 동적으로 CT/VM 생성 및 삭제 가능
- Terraform을 사용해 Proxmox 리소스를 자동화할 수 있음
- Ansible과 연동해 Jenkins에서 Proxmox 환경을 자동 구성 가능
7. 기대 효과
- 다양한 OS 환경에서 동시 빌드 및 테스트 가능
- Windows, Linux, Unix, MacOS 환경에서 코드 호환성과 안정성 검증
- GitLab과 연동해 완전 자동화된 빌드 및 배포 파이프라인 구축 가능
반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 성산블루버블
- C
- C#.NET
- C#
- C# 고급 기술
- 서귀포
- 현포다이브
- CMake
- OpenSource
- 블루버블다이빙팀
- 블루버블
- 윈도우
- Windows
- 제주도
- 패턴
- Thread
- 스쿠버 다이빙
- C++
- 리눅스
- 울릉도
- 블루버블다이브팀
- ip
- 외돌개
- Linux
- PowerShell
- Build
- 암호화
- DLL
- 스쿠버다이빙
- 서귀포블루버블
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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