Yocto 프로젝트와 CI/CD 통합 시, 자동 빌드 및 배포 설정은 매우 중요한 단계이다. 이를 통해 코드 변경 사항이 리포지토리에 푸시될 때마다 자동으로 빌드와 배포가 이루어지도록 할 수 있다.

CI/CD 파이프라인 설정

CI/CD 파이프라인을 설정하는 과정은 일반적으로 다음과 같은 단계로 이루어진다. 각 단계는 상세하게 설명하겠다.

  1. 리소스 준비
  2. 피클레이어와 메타레이어 설정
  3. 빌드 컴파일 환경 설정
  4. 자동 테스트
  5. 아티팩트 관리
  6. 자동 배포

1. 리소스 준비

CI/CD 파이프라인을 설정하기 위해 먼저 필요한 리소스를 준비해야 한다. 이는 다음과 같이 나눌 수 있다:

2. 피클레이어와 메타레이어 설정

Yocto 프로젝트에서 빌드 환경을 설정하기 위해 피클레이어와 메타레이어를 설정한다. 이는 다음과 같이 진행된다:

git clone git://git.yoctoproject.org/poky.git
cd poky
git checkout <version>
source oe-init-build-env

3. 빌드 컴파일 환경 설정

CI 도구를 이용하여 자동 빌드를 설정한다. 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
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. 자동 테스트

빌드 후 자동으로 테스트를 실행하여 빌드의 안정성을 검증한다. 기본 테스트는 다음과 같이 설정한다:

sh './run-tests.sh'

5. 아티팩트 관리

빌드가 완료되면 빌드 아티팩트를 저장하고 관리한다. Jenkins의 경우, 아티팩트 보관을 위해 post-build actions에 Artifacts를 설정할 수 있다.

6. 자동 배포

최종적으로 빌드가 완료된 이미지를 자동으로 배포한다. 이는 Jenkins와 같은 CI 도구를 통해 트리거할 수 있다:

scp build/tmp/deploy/images/<machine>/*.hddimg user@deploy-server:/path/to/deploy
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
        )])
    }
}

한눈에 보기

  1. 리소스 준비:
  2. Git 리포지토리 설정.
  3. Jenkins 또는 다른 CI 도구 설치 및 설정.

  4. 피클레이어와 메타레이어 설정:

  5. Yocto 프로젝트 클론.
  6. 빌드 환경 초기화.

  7. 빌드 컴파일 환경 설정:

  8. Jenkins Job 설정.
  9. Yocto 환경 초기화 스크립트 실행.
  10. 빌드 실행.

  11. 자동 테스트:

  12. 유닛 테스트, 통합 테스트, 시스템 테스트 실행.

  13. 아티팩트 관리:

  14. 빌드 아티팩트 보관 및 관리.
  15. Jenkins post-build action 설정.

  16. 자동 배포:

  17. 배포 스크립트 작성 및 실행.
  18. Jenkins post-build action으로 배포 자동화.

이와 같은 설정을 통해 Yocto 프로젝트의 CI/CD 파이프라인을 효율적으로 구축할 수 있다. 이는 코드 변경 사항이 리포지토리에 푸시될 때마다 자동으로 빌드, 테스트, 배포가 이루어져 개발 프로세스를 크게 개선할 것이다.