Git과 CI/CD 파이프라인으로 ROS 프로젝트 자동 배포
로봇 운영 체제(ROS)는 로봇 애플리케이션을 개발하는 데 매우 중요한 프레임워크입니다. 그러나 ROS 프로젝트의 배포 과정은 많은 시간이 소요될 수 있으며, 특히 팀으로 작업할 때 충돌 및 버전 관리 문제가 발생할 수 있습니다. 이러한 문제를 해결하기 위해 Git과 CI/CD(지속적 통합 및 지속적 배포) 파이프라인을 사용하는 방법을 배워보겠습니다. 본 블로그는 초보자를 대상으로 하며, 자동 배포를 통해 ROS 프로젝트의 효율성을 높이는 방법을 단계별로 설명합니다.
Git의 이해
Git은 버전 관리 시스템으로, 여러 명이 동시에 작업할 수 있도록 돕고, 변경 사항을 추적할 수 있게 해줍니다. Git을 이해하기 위해 알아야 할 기본 개념은 다음과 같습니다.
1. 저장소(Repository)
저장소는 Git 프로젝트의 모든 파일과 그 변경 이력을 저장하는 장소입니다. Git 저장소는 로컬 저장소와 원격 저장소로 나눌 수 있습니다.
2. 커밋(Commit)
커밋은 파일의 변경 사항을 저장하는 것입니다. 커밋을 통해 프로젝트의 특정 시점으로 돌아갈 수 있습니다.
3. 브랜치(Branch)
브랜치는 독립적인 개발 경로를 제공합니다. 여러 개발자가 동시에 기능을 추가할 수 있으며, 완료된 기능은 메인 브랜치에 병합됩니다.
4. 병합(Merge)
개발이 완료된 브랜치를 메인 브랜치에 통합하는 과정입니다. 이 과정에서 충돌 해결이 필요할 수 있습니다.
5. 풀 요청(Pull Request)
변경 사항을 메인 브랜치에 병합하기 전에 검토받기 위한 요청입니다. 팀원과 협력하며 코드 품질을 유지할 수 있도록 돕습니다.
CI/CD의 이해
CI/CD는 소프트웨어 개발 과정에서 코드 변경 사항을 자동으로 통합하고 배포하는 방법입니다. CI(지속적 통합)와 CD(지속적 배포)는 다음과 같은 단계로 구성됩니다.
1. 지속적 통합(Continuous Integration)
개발자가 변경 사항을 원격 저장소에 푸시할 때마다 자동으로 빌드하고 테스트하여, 코드의 품질을 지속적으로 유지합니다.
2. 지속적 배포(Continuous Deployment)
코드가 CI를 통과한 후, 자동으로 프로덕션 환경에 배포됩니다. 이는 새로운 기능이나 버그 수정이 즉시 사용자에게 제공됨을 의미합니다.
ROS 프로젝트와 Git 연동하기
ROS 프로젝트에서는 Git을 사용하여 버전 관리를 효과적으로 수행할 수 있습니다. 이를 위해 다음 단계를 따라해 보세요.
1. 저장소 생성
GitHub, GitLab 등에서 새로운 리포지토리를 생성합니다. 이곳에서 ROS 프로젝트를 관리할 수 있습니다.
2. 로컬 리포지토리 설정
- 프로젝트 폴더로 이동
git init
명령어로 로컬 저장소 초기화- 원격 저장소 연결:
git remote add origin [repository URL]
3. 파일 추가 및 커밋
변경 사항을 커밋하기 위해, 다음 명령어를 사용합니다.
git add .
로 변경된 파일 추가git commit -m "메시지"
로 커밋
4. 원격 저장소에 푸시
커밋한 내용을 원격 저장소에 보내려면 다음 명령어를 사용합니다.
git push origin master
CI/CD 파이프라인 설정하기
CI/CD를 설정하려면 다양한 도구들을 사용할 수 있습니다. 여기서는 GitHub Actions을 사용한 간단한 CI/CD 파이프라인 설정 방법을 설명합니다.
1. GitHub Actions 사용하기
GitHub Actions는 GitHub에서 제공하는 CI/CD 도구로, 리포지토리에 YAML 파일을 추가하여 파이프라인을 설정할 수 있습니다.
2. 워크플로우 파일 생성
프로젝트의 루트 디렉토리에 .github/workflows
폴더를 생성하고, 워크플로우 YAML 파일을 추가합니다. 아래는 예제 템플릿입니다.
name: ROS CI/CD
on:
push:
branches:
- master
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Set up ROS
run: |
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" >> /etc/apt/sources.list.d/ros-latest.list'
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key F42ED6FBAB17C654
sudo apt-get update
sudo apt-get install ros-noetic-desktop-full -y
- name: Build
run: |
source /opt/ros/noetic/setup.bash
cd ~/yourrosworkspace
catkin_make
- name: Test
run: |
source devel/setup.bash
rostest yourpackage testfile.test
3. 테스트 및 배포 단계 설정
워크플로우 파일의 마지막 부분에 테스트 및 배포 단계를 추가할 수 있습니다. 테스트를 통과하면 자동으로 배포하도록 설정할 수 있습니다.
자동 배포 과정 구현하기
자동 배포를 구현하기 위해 먼저 ROS 패키지를 Docker로 컨테이너화하고, 이를 사용하는 방법을 살펴보겠습니다.
1. Dockerfile 작성하기
Dockerfile을 생성하여 ROS 환경을 설정합니다.
FROM ros:noetic
RUN apt-get update && \
apt-get install -y ros-noetic-
COPY . /workspace
WORKDIR /workspace
CMD ["roslaunch", "yourpackage", "yourlaunch_file.launch"]
2. Docker 이미지 빌드 및 푸시
다음 명령어로 Docker 이미지를 빌드하고 Docker Hub에 푸시합니다. 이를 통해 자동 배포를 설정할 수 있습니다.
docker build -t yourimagename .
docker push yourdockerhubuser/yourimagename
3. Kubernetes와 통합하기
Kubernetes를 사용하여 Docker 컨테이너를 관리하고 배포하는 것도 좋은 방법입니다. Kubernetes 배포 파일을 만들어서 ROS 서비스를 실행할 수 있습니다.
결론
Git과 CI/CD 파이프라인을 이용한 ROS 프로젝트의 자동 배포는 효율적인 개발 환경을 제공합니다. 초보자도 이해하기 쉽게 설정할 수 있으며, 프로젝트의 품질과 생산성을 높이는 데 큰 도움이 됩니다. 이 를 참고하여 여러분의 ROS 프로젝트에 Git과 CI/CD를 적용해 보시기 바랍니다.





