멤베이스의 개인 개발 모델에 대한 정보를 공유해야겠다고 생각했습니다.
저는 다음 명령을 사용하여 모든 개발을 수행하는 '샌드박스'를 설정했습니다:
트론드@오픈솔라리스> pfexec chown 트론드:직원 /소스
trond@opensolaris> mkdir /source/membase
트론드@오픈솔라리스> cd /소스/멤베이스
trond@opensolaris> git clone git://github.com/trondn/tools.git
트론드@오픈솔라리스> CD 도구/멤베이스
저는 변경 사항을 가능한 한 분리하여 변경 사항 간의 종속성을 줄이는 것을 좋아합니다. 버그 리포트를 수정할 때마다 저는 다음과 같은 작업을 수행합니다:
트론드@오픈솔라리스> cd bugnnn
트론드@오픈솔라리스> ln -s ../메이크파일
trond@opensolaris> make
그러면 전체 Membase 스택을 빌드하고 파일을 /tmp/membase-build
. 그런 다음 작업 디렉터리를 버그를 수정할 모듈로 변경하고 (희망적으로) 버그를 수정합니다.
버그를 수정한 후(그리고 테스트 케이스를 작성했습니다!) 다음 명령을 사용하여 변경 사항을 커밋하고 검토를 위해 푸시합니다:
trond@opensolaris> git commit -m "bugnnn: 어쩌구 저쩌구"
trond@opensolaris> git for-review
마지막 명령은 변경 사항을 검토 시스템으로 푸시하여 Dustin이나 다른 사람이 Diff를 읽고 마음에 들면 패치를 수락할 수 있도록 합니다.
위의 워크플로우를 보면 꽤 쉬워 보이지만, 한 가지 정말 귀찮은 점이 있습니다... 바로 Membase는 크로스 플랫폼 프로젝트이기 때문에 코드가 모든 플랫폼에서 컴파일되고 작동하는지 확인해야 한다는 점입니다. 위의 방법을 사용하면 다른 시스템에 로그인하여 모든 것을 설정하고 변경 사항을 복사하여 작동하는지 확인해야 합니다. 하나의 모듈에만 영향을 미치는 간단한 변경 사항의 경우 언제든지 빌드봇이나 허드슨을 사용하여 모든 플랫폼에서 테스트할 수 있지만, 모든 모듈에 영향을 미치는 인터페이스 변경을 수행하는 경우에는 이 방법이 작동하지 않습니다.
저는 게으른 편이라 그런 지루한 작업을 항상 하고 싶지 않았기 때문에 대신 모든 플랫폼에서 동일한 소스 트리를 쉽게 빌드할 수 있도록 소스를 설정하고 메이크파일을 만드는 스크립트를 작성했습니다.
이 기능을 사용하려면 파일 시스템에서 공유를 설정해야 합니다:
trond@opensolaris> pfexec zfs set sharesmb=name=소스 rpool/source
예를 들어 버그 9999에 대한 트리를 설정하려면 다음과 같이 실행합니다:
커밋 후크 다운로드 - 확인.
libmemcached(바자) 확인 - 확인.
구성 스크립트 생성 - 확인.
bucket_engine(git) 체크아웃 - 확인.
ep-engine(git) 확인 - 확인.
구성 스크립트 생성 - 확인.
libconflate(git) 체크아웃 - 확인.
구성 스크립트 생성 - 확인.
라이브러리버킷(git) 체크아웃 - 확인.
구성 스크립트 생성 - 확인.
멤캐시드(git) 체크아웃 - 확인.
구성 스크립트 생성 - 확인.
뜸(git) 확인 - 확인.
구성 스크립트 생성 - 확인.
vbucketmigrator(git) 확인 - 확인.
구성 스크립트 생성 - 확인.
멤베이스-cli(git) 체크아웃 - 확인.
ns_server(git) 체크아웃 - 확인.
멤캐시테스트(git) 확인 - 확인.
구성 스크립트 생성 - 확인.
SunOS용 빌드 구성
그러면 다음에서 멤베이스를 "멀티 아이사"(32비트 및 64비트 모두) 스택으로 빌드하는 Solaris용 빌드 환경이 설정됩니다. /tmp/membase
. 하지만 MacOSX, 우분투 및 데비안 박스에 대한 지원도 추가해 보겠습니다. 모든 코드가 제 오픈솔라리스 박스에 있기 때문에 -s
옵션을 사용하여 소스가 어디에 있는지 알려줍니다:
우분투용 빌드 구성
trond@opensolaris> ./setup.sh -s /net/opensolaris/source/membase/tools/membase -p Darwin bug_9999
Darwin용 빌드 구성
trond@opensolaris> ./setup.sh -s /net/opensolaris/source/membase/tools/membase -p Debian bug_9999
Debian용 빌드 구성
이제 내부를 살펴 보겠습니다. bug_9999
디렉터리로 이동합니다:
총 15
DRWXR-XR-X 13 트론드 직원 14 Oct 12 13:35 다윈
DRWXR-XR-X 13 트론드 직원 14 Oct 12 13:35 데비안
DRWXR-XR-X 13 트론드 스태프 14 Oct 12 13:33 SRC
drwxr-xr-x 4 트론드 직원 5 Oct 12 13:33 SunOS
DRWXR-XR-X 13 트론드 직원 14 Oct 12 13:35 우분투
모든 소스는 src 디렉터리에 있으며, 다양한 플랫폼의 모든 메이크파일은 해당 코드를 참조합니다.
모든 플랫폼을 기반으로 구축하기 위해 실행 중입니다:
trond@opensolaris> ssh debian "cd /net/opensolaris/source/membase/tools/membase/bug_9999/Debian && make" > debian.log 2>&1 &
trond@opensolaris> ssh darwin "cd /net/opensolaris/source/membase/tools/membase/bug_9999/Darwin && make" > darwin.log 2>&1 &
물론 스크립트에도 있습니다:
#! /bin/ksh
cd SunOS && gmake > sunos.log 2>&1 &
ssh ubuntu "cd /net/opensolaris/source/membase/tools/membase/bug_9999/Ubuntu && make" > ubuntu.log 2>&1 &
ssh debian "cd /net/opensolaris/source/membase/tools/membase/bug_9999/Debian && make" > debian.log 2>&1 &
ssh darwin "cd /net/opensolaris/source/membase/tools/membase/bug_9999/Darwin && make" > darwin.log 2>&1 &
xterm -T SunOS -e tail -f sunos.log &
xterm -T Ubuntu -e tail -f ubuntu.log &
xterm -T Debian -e tail -f debian.log &
xterm -T MacOS -e tail -f darwin.log &
안타깝게도 방금 설치한 멤베이스를 시작할 수 없습니다. /tmp/membase
하지만 노력 중입니다!