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

따로 파이프 라인 구성하지 않고 기존에 사용중인 프리스타일 프로젝트를 걸 수 있습니다

소스는 똑같고 뽑는 세팅만 다른 여러 빌드가 있는경우 일일히 누르지 않고  한번에 실행됩니다


 

node {
  stage('Parallel-main') {
      parallel 'Build1' : {
          stage('APK QA') {
            build job: 'qa', parameters: [string(name: 'FIXREV', value: "${params.REV}")]
          }
      } , 
      'Build2' : {
        stage('APK QA GPG') {
            build job: 'qa_pc', parameters: [string(name: 'FIXREV', value: "${params.REV}")]
        }
      } , 
      'Build3' : {
          stage('APK LIVE') {          
            build job: 'live', parameters: [string(name: 'FIXREV', value: "${params.REV}")]
        }
      },
      'Build4' : {
        stage('APK LIVE GPG') {          
            build job: 'live_pc', parameters: [string(name: 'FIXREV', value: "${params.REV}")]
        }
      },
      'Build5' : {
          stage('APK Dev') {          
            build job: 'live_devel', parameters: [string(name: 'FIXREV', value: "${params.REV}")]
        }
      },
      'Build6' : {
          stage('IPA QA') {          
            build job: 'qa_ipa', parameters: [string(name: 'FIXREV', value: "${params.REV}")]
        }
      },
      'Build7' : {
          stage('IPA LIVE') {          
            sleep(time:60,unit:"SECONDS")
            build job: 'live_ipa', parameters: [string(name: 'FIXREV', value: "${params.REV}")]
        }
      } 
  }
}

build job 에 기존 프로젝트명을 적으면 됩니다

저는 SVN 사용중이라 병렬 job에 svn revision을 보내주는 방식으로 동일한 상태로 빌드가 나오도록 구성했습니다

 파이프 라인쪽

 

받는 프리스타일 프로젝트 쪽 

IPA빌드는 동시에 걸면 이상하게 사이닝에러가 빈번하게 발생하여 1분 대기 시켰습니다

각 스테이지별로 빌드 시간을 확인할 수 있습니다

다만 현재 젠킨스 구현이 모든 병렬잡을 진행상황을 실시간으로 표시하지않고 완료된경우만 시간을 표시합니다

그래서 1개잡만 진행중->완료 프로그레스UI가 올라가고 나머지는 

대기->완료 처리됩니다 (실제로는 병렬로 실행중)

 

사용되는 에이전트는 물리머신 3대입니다

3+2+2 = 7

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

2 answers

0 투표
전에 말씀하신대로 하나의 노드(빌드 에이전트 머신)에서 병렬로 빌드를 돌리시는 거죠?

빌드 돌리는 동안 누가 커밋을 해 버리면 HEAD의 리비전이 바뀌는 문제가 있을 거 같은데..

그럴 때는 수동으로 리비전 번호를 입력하나요?
답글 (3.6kp)
네 그래서 파라미터 받습니다
일단 QA중에는 소스코드변경만 감지후 상시 HEAD 기준으로 자동으로 돌아가서 HEAD가 맞춰지고
QA완료되면 마지막 QA한 리비전을 불러주고
그걸 파이프라인 빌드에 지정해서 최종 스토어용 빌드를 뽑습니다
첨부파일을 잘못올렸네요 지금 다시 보시면 의도를 이해하실겁니다
근데 이럴때 쓰라고있는게 tag 죠 ㅋㅋ
아, svn이니까.. tag 쓰면 되겠군요. 저희는 퍼포스 쓰는데요.
업무시간에 빌드 돌릴 일이 많은데, 그때마다 tag를 달거나 revision(CL)번호를 확인한 다음에 넣기가 귀찮아서..
그냥 최신 버전을 자동으로 얻어오는 코드를 처음에 한번 돌린 후,
그걸 다른 빌드 잡에 넘겨주는 방식으로 작업을 했었네요.
이렇게 동시에 여러개 거는건 하루에 딱한번 수동으로 걸구요 (스토어 업로드 빌드)

실행하기위햐 하루에 여러번 뽑는건 따로 사람이 걸지 않습니다 커밋만 하면 항상 따끈한 빌드가 자동으로 나옵니다

커밋했다고 알려주기만하고 받는사람은 그냥 기다리면 되도록 업무프로세스 잡아놨습니다
0 투표
너무 머싯습니다. 요즘 프로젝트 크기도 크기인데 (언리얼....)
플랫폼 종류도 너무 많아져서 (윈 리 맥 안드 ios 엑박 플스 스위치 어쩌구패드등등등 )

이런게 있으면 빌드 작업이 엄청 빨라지겐네요
심지어 요즘 16코어가 일반인 구매 가능 CPU가 되면서

게임개발하기 참 좋은 시대가 되었네요! ?
옛날앤 2코어 쓰고 싶어서 cpu두개 꼽히는 메인보드를....
답글 (12kp)
수정됨
킹치만 유니티는 한 물리머신에 2개만 안정적으로 돌아갑니다 3개 동시 돌리면 높은 확률로 지혼자 죽음
그리고 CPU는 미지근하게 놀고있죠 흑흑

그래서 싱글빠른 14900K 두대 구매요청했습니다 과연 올지 어떨지...
더 예전에는 부동소수점을 연산하는 FPU가 없어서 게임코딩시 대부분 정수를 써야만 했었죠. ㅎㅎ

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

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