Continuous Integration
'지속적인 통합 및 지속적인 배포'를 의미
git repository에는 코드 통합 전 코드의 동작여부를 테스트
'동작하는 코드'만이 올라가게 하는데에 목적
터미널에서 가능한 모든 것을 자동 수행
.github
에서 특정 동작 수행 시 자동 명령어 수행
clang-format : code formatter 자동 수행
코드의 형식이 맞는지 확인
실패 시
코드 형식 변경 후 다시 push
./run-clang-format.py --style file -r -i modules
Protect matching branches > Require status checks to pass before merging
Azure 서버 대신 개인용 PC에서 GitHub Actions 돌리기
Adding self-hosted runners
Settings > Actions > Runners > New self-hosted runner
OS 선택 후 명령어 실행
runs-on: self-hosted
로 변경
jobs:
clang-format:
name: clang-format
# runs-on: ubuntu-latest
runs-on: self-hosted
연결 해제 후 다른 저장소와 연결 시
rm .runner
./config.sh remove
매일 특정 시각마다 3rdparty를 빌드하게 해주는 cron job 코드
3rdParty 라이브러리 변경 시 매일 CI가 그 라이브러리 변화를 추종 가능
base.dockerfile
을 이용해서 slam:base_temp
라는 이미지를 생성 후,
성공하면 기존의 slam:base
를 삭제하고 새 이미지로 업데이트
base.dockerfile
thirdparty가 사전 빌드된 slam:base
생성
명령어로 base.dockerfile
실행
sudo docker build \
--no-cache \
--progress=tty \
--force-rm \
-f base.dockerfile \
-t slam:base .
컨테이너 실행
docker run \
--name slambase \
-it \
-v /tmp/.X11-unix:/tmp/.X11-unix \
-e DISPLAY=$DISPLAY \
slam:base /bin/bash
build.dockerfile
을 이용해서 thirdparty를 담고있는 slam:base
를 기점으로
새로운 브랜치의 프로젝트 코드를 빌드하여 <repo명>:<hash명>
이미지 생성
명령어로 build.dockerfile
실행
sudo docker build \
--no-cache \
--progress=tty \
--force-rm \
-f build.dockerfile \
-t <REPO>:<HASH> .
현재 가동 중인 컨테이너로 접속 후 작업 수행할 것
VSCode Dev Containers
설치 후
Dev Containers: Attach to Running Container...
easy_profiler 확인 가능
./thirdparty/easy_profiler/build/Release/bin/profiler_gui