Yocto 프로젝트와 CI/CD 통합 시, 자동 빌드 및 배포 설정은 매우 중요한 단계이다. 이를 통해 코드 변경 사항이 리포지토리에 푸시될 때마다 자동으로 빌드와 배포가 이루어지도록 할 수 있다.
CI/CD 파이프라인 설정
CI/CD 파이프라인을 설정하는 과정은 일반적으로 다음과 같은 단계로 이루어진다. 각 단계는 상세하게 설명하겠다.
- 리소스 준비
- 피클레이어와 메타레이어 설정
- 빌드 컴파일 환경 설정
- 자동 테스트
- 아티팩트 관리
- 자동 배포
1. 리소스 준비
CI/CD 파이프라인을 설정하기 위해 먼저 필요한 리소스를 준비해야 한다. 이는 다음과 같이 나눌 수 있다:
- 버전 관리 시스템 (VCS): Git을 주로 사용한다.
- CI 도구: Jenkins, GitLab CI, Travis CI, CircleCI 등.
- 서버 환경: 빌드 서버와 배포 서버를 설정한다.
2. 피클레이어와 메타레이어 설정
Yocto 프로젝트에서 빌드 환경을 설정하기 위해 피클레이어와 메타레이어를 설정한다. 이는 다음과 같이 진행된다:
- 피클레이어는 Yocto의 패키지 관리를 위해 사용된다.
- 메타레이어는 빌드 구성 요소와 빌드 스크립트를 정의한다.
git clone git://git.yoctoproject.org/poky.git
cd poky
git checkout <version>
source oe-init-build-env
3. 빌드 컴파일 환경 설정
CI 도구를 이용하여 자동 빌드를 설정한다. Jenkins를 예로 들어 설명하겠다.
- Jenkins 설치:
sudo apt-get update
sudo apt-get install openjdk-8-jdk
wget -q -O - https://pkg.jenkins.io/debian/jenkins.io.key | sudo apt-key add -
sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'
sudo apt-get update
sudo apt-get install jenkins
- Jenkins Job 설정:
- Job 유형 선택: Freestyle Project, Pipeline 등.
- SCM 설정: Git 리포지토리 URL 추가.
- 빌드 트리거 설정: GitHub hook trigger for GITScm polling.
- 빌드 환경 설정: Source the Yocto build environment, run bitbake commands.
pipeline {
agent any
stages {
stage('Checkout') {
steps {
git 'git@github.com:yocto-project/yocto.git'
}
}
stage('Setup Yocto Environment') {
steps {
sh 'source oe-init-build-env'
}
}
stage('Build') {
steps {
sh 'bitbake core-image-minimal'
}
}
}
}
4. 자동 테스트
빌드 후 자동으로 테스트를 실행하여 빌드의 안정성을 검증한다. 기본 테스트는 다음과 같이 설정한다:
- Unit 테스트: 각 모듈의 기능 테스트.
- Integration 테스트: 모듈 간의 상호작용 테스트.
- System 테스트: 전체 시스템의 동작 테스트.
sh './run-tests.sh'
5. 아티팩트 관리
빌드가 완료되면 빌드 아티팩트를 저장하고 관리한다. Jenkins의 경우, 아티팩트 보관을 위해 post-build actions에 Artifacts를 설정할 수 있다.
- 조치:
- Archive artifacts:
*.hddimg
,*.tar.bz2
,*.rpm
- Publish Over SSH: 빌드 아티팩트를 배포 서버로 전송.
6. 자동 배포
최종적으로 빌드가 완료된 이미지를 자동으로 배포한다. 이는 Jenkins와 같은 CI 도구를 통해 트리거할 수 있다:
- 배포 스크립트 작성: 배포 스크립트를 작성하여 아티팩트를 배포 서버로 전송한다.
scp build/tmp/deploy/images/<machine>/*.hddimg user@deploy-server:/path/to/deploy
- Jenkins 설정: Jenkins에서 post-build action으로 스크립트를 실행하여 배포를 자동으로 수행하도록 설정한다.
post {
success {
sshPublisher(publishers: [sshPublisherDesc(
configName: "my-config",
transfers: [sshTransfer(
sourceFiles: "build/tmp/deploy/images/<machine>/*.hddimg",
remoteDirectory: "/path/to/deploy",
removePrefix: "build/tmp/deploy/images",
excludeFiles: "",
patternSeparator: "[, ]+",
execCommand: '',
execTimeout: 120000
)],
usePromotionTimestamp: false,
useWorkspaceInPromotion: false,
verbose: true
)])
}
}
한눈에 보기
- 리소스 준비:
- Git 리포지토리 설정.
-
Jenkins 또는 다른 CI 도구 설치 및 설정.
-
피클레이어와 메타레이어 설정:
- Yocto 프로젝트 클론.
-
빌드 환경 초기화.
-
빌드 컴파일 환경 설정:
- Jenkins Job 설정.
- Yocto 환경 초기화 스크립트 실행.
-
빌드 실행.
-
자동 테스트:
-
유닛 테스트, 통합 테스트, 시스템 테스트 실행.
-
아티팩트 관리:
- 빌드 아티팩트 보관 및 관리.
-
Jenkins post-build action 설정.
-
자동 배포:
- 배포 스크립트 작성 및 실행.
- Jenkins post-build action으로 배포 자동화.
이와 같은 설정을 통해 Yocto 프로젝트의 CI/CD 파이프라인을 효율적으로 구축할 수 있다. 이는 코드 변경 사항이 리포지토리에 푸시될 때마다 자동으로 빌드, 테스트, 배포가 이루어져 개발 프로세스를 크게 개선할 것이다.