게임 프로그래머의 만담, 게임코디 2nd
0 투표
1.4k views 만담 (38.9kp)
수정됨 , 1.4k views

이정도로 큰건 처음이라 ssd 2테라도 부족해서 2테라 더달았다가

브랜치 나눠진만큼 또 잡을려니 곧 터질거같아서

아예 슬레이브 노드 추가하게 되었습니다.

안드로이드 : 개발용 + 테스트환경별 4개 + 애셋번들

iOS : 개발용 + 테스트 환경별 2개 + 애셋번들

총 10개 + 브랜치에 동일하게 10개 해서 최종 job은 20개가  될 예정입니다.

 

대충

유니티 프로젝트 35GB

임포트 후 Library 13GB

SVN prinstine 37GB

기타 등등 해서 워크스페이스 당 87GB 정도합니다.

 

실제로는 아트리소스가 대부분이라

실제 빌드에 영향을 미치는 파일은 10GB 미만입니다

빌드는 증분빌드로 3분정도면 나오는데 이거 뭔가 뾰족한 수가 안떠오르는군요

 

 

 

 

대충 예상되는답 : 그냥 고민하지말고 스토리지 더 달아 달라하세요

 

 

어라 4TB 별루 안비싸네요

만담에 대한 답글을 하려면 로그인 또는 가입해야합니다.

5 answers

0 투표
젠킨스 잡 마다 따로 체크아웃을 받는 방식인가요?

 

만약 그렇다면, SVN 체크아웃 받는 폴더를 특정 폴더로 고정하고,

빌드 시작전에 지정된 브랜치로 스위치를 하고 빌드를 하면,

디스크 용량을 절약할 수 있지 않을까 싶습니다.

 

워크스페이스를 딱 하나만 만드는 방법도 있고,

사용 빈도 등에 따라 2~3개 정도 나누는 방법도 있습니다.
답글 (3.6kp)
빌드 4개를 테스트 환경별로 동시에 다른세팅으로 걸어야하기 때문에
워크스페이스 같은경로로 쓰는건 못쓰지 싶습니다 ;ㅅ;

하나끝나고 갈아끼우고 다시 빌드해야하는데 그럼 총 빌드타임이 3배라 흑흑

병렬로 4개 동시에 걸면 14분
-> 하나씩 나눠서 4빌드 걸면 40분이라 ㅠㅠㅠㅠㅠ
젠킨스 서버 기준으로는 병렬 빌드가 허용이 된다 하더라도, 빌드 에이전트 기준으로는 한번에 하나의 빌드만 돌아가기 때문에 워크스페이스 4개가 있다 하더라도 한번에 1개만 사용하는 걸로 압니다.
음 슬레이브 에이전트에 Number of executors : 4로 두면 4개 잡이 동시에 걸립니다
문제는 유니티가 4개 돌리면 높은확률로 gradle 돌아가다가 죽는다는게 문제지요 ;ㅅ;
심할때는 동일머신에서 3대 돌리다가도 뻗네요

경험상 유니티는 한머신에 최대 2개가 안정적인거같습니다
아항, # of executors 라고 옵션이 있었군요.
보통 빌드 돌릴 때는 cpu를 max치로 사용하기 때문에 하나의 에이전트에 여러 개의 잡을 돌리는 건 의미가 없어서 생각도 못해 봤는데, 가능은 하군요.
뭐, 그런 경우라면 디스크 용량을 늘릴 수밖에 없겠네요.
에이전트를 더 늘리는 게 더 좋아 보이긴 합니다만;
풀로 cpu 혹사시키는 제대로된 빌드절차라면
병렬로 돌리는게 큰 의미가 없고 오히려 퍼포먼스가 떨어지겠지만

유니티는 비싼 cpu를 사줘도 코어는 놀고 쉬엄쉬엄 하니까요 ㅋㅋ
그렇다고 또 많이 때려넣으면 머신당 제한이 있어서 빌드가 터지고.. 후...
0 투표
이럴때 쓰는게 퍼포스라고 배웟습니다.
답글 (12kp)
SVN도 클린업을 해 주면 일반적으로 용량 문제는 없지만,
그래도 pristine 때문에 최소 x2 정도의 용량을 차지하기 때문에
퍼포스를 쓰면 잇점이 있긴 하겠네요.
+1 vote

자답입니다만...

빌드에 영향을 미치지 않으며 용량이 커서 제외하고싶은 폴더에서 Update to revision 을 고르고

를 사용하여

제외시키면 워킹카피에서 빠지고 업데이트를 눌러도 업데이트 대상에서 제외됩니다

 

그리고 맨위로 올라가서 클린업 할때 프린스틴도 클리어 대상에 넣으면 프린스팅용량도 줄어드네요

 

다만 젠킨스에서도 호환이 될지는 확인해봐야겠습니다

젠킨스 subvision 플러그인은 해당 설정 무시하고 전부 살려내는군요

 

Do not touch working copy, it is updated by other script.

로 골라서 

Run buildstep before SCM runs 에서 svn update 를 직접 하면 정상적으로 제외 됩니다.

 

svn up --set-depth exclude Assets/Editor/Voice

로 제외 시키고

svn cleanup --vacuum-pristines

으로 제외된 파일의 프린스틴도 정리합니다

 

최신 거북이를 사용중이라면 

젠킨스 설정에서 svn버전을 1.8 로 올려주세요

저는 1.7로 사용중이라 테스트용 젠킨스에서 기능 테스트만 끝내놓고 아직 실제 적용은 못하고 있습니다 ;ㅅ;

답글 (38.9kp)
수정됨
다행히 플젝이 이미 그런 리소스에대한 빌드 의존성을 다끊어 놓아서

그냥 파일만 없게 처리하더라도 문제 없네요
0 투표
1. 아트 작업용 프로젝트 분리

2. 각 브랜치별로 공유가 가능한 아트 리소스는 한곳에 놓고 링크해서 사용
답글 (350p)
유니티가 그게 되나요???
번들 묶을때 다른 프로젝트에서 묶은거 시도를 안해봐서
+1 vote
SVN 이면 그냥 젠킨스 SVN 버전을 1.8로 지정하고 (그동안 1.7사용)

새로 체크아웃받으면 제외 가능하고 상태 유지됩니다.

 

허탈....

거북이로 미리 받은거 제외시킨거 압축해놨다가

최초에 워킹카피가 없으면 압축파일에서 풀어버리도록 스크립트 짜서 돌리면

클린빌드 1시간쯤 걸리던거 12~15분 땡 해버리네요 하하
답글 (38.9kp)
지금은 라이브 오래해서 워크스페이스가 200GB 정도합니다

쿨하게 머신두개 각 4TB 씩 해서

8TB 사용중... 인데 또 모자라서
더 달았어요 하하

게임 프로그래머의 만담 커뮤니티, 게임코디 입니다

온종일 코드와 씨름하는 우리들의 외로움을 삭이고자 합니다