Perforce를 구성에 통합

Perforce를 구성에 통합

이 문서는 툴킷과의 간단한 Perforce 통합을 설정하는 TD(기술 감독)를 위한 단계별 튜토리얼을 제공합니다. 이 튜토리얼을 마친 TD는 Perforce에 데이터를 만들고 게시하며 Perforce에서 가져올 수 있는 Maya, Shotgun, 툴킷 및 Perforce 간의 완전히 통합된 워크플로우를 진행하게 됩니다.
이 문서에서는 툴킷 구성에 대한 제어 권한이 있는 경우에만 사용할 수 있는 기능에 대해 설명합니다. 자세한 정보는 Shotgun 통합 관리자 안내서를 참조하십시오.

명확성과 간결성을 위해 Maya를 사용하여 에셋에 대해서만 Perforce를 설치하고 실행하는 데 필요한 사항을 살펴보겠습니다. 하나의 환경 파일에서 하나의 소프트웨어에 대해 설정하는 방법에 익숙해지면 모든 소프트웨어 및 모든 환경 파일에 대해 이를 구성할 수 있습니다.

Perforce 통합에서 제공하는 기능에 대해 익숙하지 않은 사용자는 먼저 이 페이지를 살펴보는 것이 좋습니다.

개요

Shotgun과 Perforce 통합은 세 가지 주요 구성요소로 구성됩니다.

  1. Shotgun 서버

  2. Perforce 서버

  3. Perforce-Shotgun 동기화 데몬

동기화 데몬은 Perforce 서버에서 만들어진 커밋을 모니터링하고 커밋 메타데이터를 다시 Shotgun 서버로 밀어넣습니다.

툴킷 측면에서, 사용자가 Perforce로 인증하고 p4 명령을 서버로 보내서 파일을 적절히 체크인 및 체크아웃할 수 있도록 파이프라인 구성을 변경해야 합니다.

제한 사항

현재 Shotgun에 있는 사용자의 이름은 Perforce의 사용자 이름과 일치해야 합니다. 이러한 제한 사항을 통해 Perforce에서 오는 데이터를 Shotgun 서버와 동기화하는 데몬이 새 버전을 게시한 사용자를 확인할 수 있습니다. 이 제한 사항에 대해서는 나중에 다시 검토하겠습니다.

Perforce 커밋을 트래킹하도록 Shotgun 구성

Shotgun 웹 앱에서 사용자 아이콘을 클릭한 다음 Site Preferences를 선택합니다. Entities 섹션을 확장하고 Revision 엔티티를 활성화합니다. 이렇게 하면 Shotgun에서 Perforce 커밋을 트래킹할 수 있습니다.

Perforce와 연결하도록 툴킷 구성

다음 섹션에서는 사용자가 툴킷 기반 파이프라인을 배포하는 데 이미 익숙하다고 가정합니다. 그렇지 않다면 첫 번째 프로젝트를 구성하는 방법에 대한 안내서를 읽어 보는 것이 좋습니다.

이 섹션을 마치면 Perforce Connection 앱을 사용하여 작업공간을 선택하고 Perforce-Shotgun 동기화 데몬을 실행할 수 있습니다.

공통 Perforce 설정, 앱 및 후크

여러 환경에서 사용할 수 있는 표준 구성이 있지만 복사하여 여러 파일에 붙여넣지 않으려고 합니다. 대신, 모든 구성을 단일 파일에 저장한 다음 이를 사용하는 다양한 환경 구성 파일에 해당 파일을 포함합니다. 파이프라인 구성에서 config/env/includes/perforce.yml 파일을 만들고 다음을 붙여넣습니다.

perforce-framework:
  hook_get_perforce_user: '{self}/get_perforce_user.py'
  hook_get_shotgun_user: '{self}/get_shotgun_user.py'
  hook_load_publish_data: default
  hook_load_review_data: default
  hook_store_publish_data: default
  hook_store_review_data: default
  host: ''
  location: {name: tk-framework-perforce, type: app_store, version: v0.1.15}
  server: tcp:localhost:1666
  server_aliases: []
  server_version: 2015.2
perforce_login:
  connect_on_startup: true
  hook_scene_operation: default
  location: {name: tk-multi-perforce, type: app_store, version: v0.1.2}

이제 공통되는 모든 부분을 단일 파일에 저장했으므로 구성을 업데이트할 수 있습니다. 여기서는 Perforce 서버를 설치하고 실행 중이며 사용자가 Perforce 저장소에 파일을 추가하는 방법에 익숙하다고 가정합니다.

사용할 서버 구성

config/env/includes/perforce.yml을 열고 server 설정을 찾아 Perforce 서버의 주소로 설정합니다. 기본값은 tcp:localhost:1666입니다.

Perforce 작업공간 설정

Perforce 작업공간에는 프로젝트 루트의 모든 파일이 포함되어야 합니다. 예를 들어 기본 로컬 파일 저장소가 Y:\shotgun이고 프로젝트 이름이 big_buck_bunny인 경우 작업공간에 적어도 y:\shotgun\big_buck_bunny 폴더 전체가 포함되어 있어야 합니다. Perforce 작업공간은 실제로 Y:\Y:\shotgun에서 시작할 수 있습니다.

소프트웨어에서 Perforce로 인증 추가

1) config/env/project.yml, config/env/asset.ymlconfig/env/asset_step.yml에서 includes 섹션에 다음을 추가합니다. 이렇게 하면 공통되는 yaml 조각을 사용할 수 있습니다.

- ./includes/perforce.yml

2) 1단계에서 찾은 각 파일에서 engines 아래의 tk-maya 섹션을 찾고 apps 섹션 아래에 다음을 추가합니다. 이렇게 하면 컨텍스트에 관계없이 Maya를 시작한 후에 Perforce로 인증할 수 있습니다.

tk-multi-perforce: '@perforce_login'

3) frameworks 섹션을 찾아 다음을 추가합니다. 이렇게 하면 Perforce 앱에서 Perforce 프레임워크를 사용할 수 있습니다.

tk-framework-perforce_v0.x.x: '@perforce-framework'

4) ./tank cache_apps를 실행하여 방금 추가한 모든 도구를 다운로드합니다.

이 시점에서 Maya를 시작하면 Perforce에 로그인하여 작업공간을 선택하라는 메시지가 나타납니다. 메시지가 표시되지 않으면 위의 단계를 검토하십시오.

Perforce를 Shotgun 데몬으로 구성

Shotgun 서버와 Perforce 서버를 동기화하는 데몬을 설정해야 합니다. 데몬이 작동하는 방식은 Perforce로 들어가는 커밋을 검사한 다음 개별 게시를 Shotgun에 등록하는 것입니다. 이 데몬을 실행하려면 Shotgun 서버, Perforce 서버 및 파이프라인 구성에 액세스할 수 있는 컴퓨터를 찾아야 합니다.

1) Shotgun 프로젝트의 루트에서 tank/config/tank_configs.yml 파일을 만들어야 합니다. 위의 예에서는 Y:\shotgun\big_buck_bunny\tank\config\tank_configs.yml이 됩니다.

2) 이 파일에서 이 프로젝트의 파이프라인 구성 경로를 지정합니다. 예를 들어 파이프라인 구성이 X:\shotgun\big_buck_bunny\pipeline에 있는 경우 다음을 입력합니다.

# Be careful to put double backslashes if using backslashes. Otherwise the yaml file reader will try to
# interpret "\s", "\b" and "\p" as single characters.
- win32: "X:\\shotgun\\big_buck_bunny\\pipeline" 
  linux2: "/mnt/shotgun/big_buck_bunny/pipeline"
  darwin: "/mnt/shotgun/big_buck_bunny/pipeline"

일반적으로 툴킷에서 이와 같은 사전은 windows, linuxdarwin 키를 사용합니다. 이는 해결해야 할 버그입니다.

3) 이 파일을 Perforce에 커밋합니다.

4) 명령줄에 다음을 입력합니다.

./tank install_app project tk-shell tk-shell-perforcesync

5) 데몬을 실행하도록 지정한 컴퓨터에서 다음 명령을 사용하여 데몬을 시작합니다.

./tank --debug sync_perforce_daemon -s 123456 -u <perforce user> -p <perforce password>

6) 로그인 기반 인증을 사용하여 데몬을 실행하는 경우 데몬이 너무 오랫동안 유휴 상태이면 세션 시간이 초과될 수 있습니다. 따라서 데몬을 실행하려면 명령줄에서 스크립트 기반 인증을 사용하는 것이 좋습니다. 이 기능에 대해 자세히 알아보려면 명령줄에 다음을 입력하고

./tank --help

시작 부분의 "일반 옵션 및 정보" 섹션을 읽어 보십시오.

--script-name--script-key는 Toolkit Core를 v0.17.24 이상으로 업그레이드해야 합니다.

--debug 인수를 추가하여 데몬의 현재 상태를 확인하는 것이 좋습니다.

데몬이 올바르게 작동하려면 Perforce 사용자가 Perforce 카운터를 업데이트할 수 있어야 하므로 이 데몬에 Perforce 관리 계정을 사용하는 것이 좋습니다.

Perforce 서버에 이미 많은 커밋이 있는 경우에는 동기화 데몬이 서버의 모든 커밋을 확인하지 않도록 -s 및 커밋 ID로 시작하는 것이 좋습니다.

툴킷 앱 구성

다음 섹션에서는 현재 Perforce에 파일이 없는 새 프로젝트를 시작한다고 가정합니다. Perforce에서 버전을 트래킹하므로 버전 토큰 없이 파일이 만들어지도록 먼저 템플릿 및 File Manager 도구 설정을 업데이트합니다. 그런 다음 Publish 앱을 업데이트하여 파일을 Perforce로 밀기 시작할 수 있습니다. 마지막으로 Perforce에서 해당 파일을 검색할 수 있도록 Loader 앱 설정을 업데이트합니다.

Shotgun File Manager 앱 구성

현재, 원래의 Shotgun File Manager만 Perforce에서 지원됩니다.

1) config/core/templates.yml 내에서 다음 템플릿을 찾아 버전 번호가 삭제되도록 업데이트합니다.

maya_asset_work: '@asset_work_area_maya/{name}.ma'
maya_asset_snapshot: '@asset_work_area_maya/snapshots/{name}.{timestamp}.ma'

2) config/env/project.yml에서, tk-mayaapps 섹션에서 tk-multi-workfiles 줄을 tk-multi-workfiles: '@workfiles-launch-at-startup-tk-maya'로 업데이트합니다. 이렇게 하면 다른 앱 설정에 영향을 주지 않습니다.

3) config/env/asset.yml 내에서 같은 작업을 수행합니다.

4) config/env/includes/common_apps.yml에서 workfiles-launch-at-startup 블록을 복사하여 아래에 붙여넣습니다. 붙여넣은 복사본의 이름을 workfiles-launch-at-startup-tk-maya로 바꾸고 다음 설정을 업데이트합니다.

workfiles-launch-at-startup-tk-maya:
  hook_filter_publishes: '{tk-framework-perforce_v0.x.x}/shared/filter_publishes.py'
  hook_filter_work_files: '{tk-framework-perforce_v0.x.x}/tk-multi-workfiles/filter_work_files.py'
  hook_scene_operation: '{tk-framework-perforce_v0.x.x}/tk-multi-workfiles/scene_operation_tk-maya.py'

5) config/env/asset_step.yml에서 tk-maya 섹션의 tk-multi-workfiles 설정을 찾아 다음 설정을 업데이트합니다.

workfiles-launch-at-startup-tk-maya:
    hook_filter_publishes: '{tk-framework-perforce_v0.x.x}/shared/filter_publishes.py'
    hook_filter_work_files: '{tk-framework-perforce_v0.x.x}/tk-multi-workfiles/filter_work_files.py'
    hook_scene_operation: '{tk-framework-perforce_v0.x.x}/tk-multi-workfiles/scene_operation_tk-maya.py'
    template_publish: maya_asset_work
    template_publish_area: asset_work_area_maya
    template_work: maya_asset_work
    template_work_area: asset_work_area_maya

템플릿 설정을 자세히 살펴보면 작업 영역과 게시 영역이 모두 동일한 위치를 가리키고 있다는 것을 알 수 있습니다. 즉, Perforce 워크플로우에 따라 동일한 위치에서 게시 및 작업하게 됩니다.

6) project.yml에서와 마찬가지로, 동일한 파일에서 includesframeworks 섹션을 업데이트합니다.

7) Perforce 워크플로우와 호환되지 않으므로 tk-multi-snapshot 앱의 설정을 제거할 수 있습니다.

모두 작동하는지 테스트하려면 지정된 태스크에 대한 새로운 씬을 간단히 만듭니다. 파일 이름에는 버전 번호가 없어야 합니다.

Publish 앱 구성

1) config/env/asset_step.yml을 열고 tk-maya 엔진에 대한 tk-multi-publish 설정을 찾아서 다음 설정을 업데이트합니다.

tk-multi-publish:
  hook_post_publish: '{tk-framework-perforce_v0.x.x}/tk-multi-publish/post_publish.py'
  hook_primary_pre_publish: '{tk-framework-perforce_v0.x.x}/tk-multi-publish/primary_pre_publish.py'
  hook_primary_publish: '{tk-framework-perforce_v0.x.x}/tk-multi-publish/primary_publish.py'
  hook_scan_scene: '{tk-framework-perforce_v0.x.x}/tk-multi-publish/scan_scene_tk-maya.py'
  hook_secondary_pre_publish: '{tk-framework-perforce_v0.x.x}/tk-multi-publish/secondary_pre_publish_tk-maya.py'
  hook_secondary_publish: '{tk-framework-perforce_v0.x.x}/tk-multi-publish/secondary_publish_tk-maya.py'
  primary_publish_template: null
  secondary_outputs:
  - description: Submit all published files to Perforce
    display_group: Perforce
    display_name: Submit To Perforce
    icon: icons/p4_publish_submit.png
    name: p4_submit
    publish_template: null
    required: false
    scene_item_type: perforce_submit
    selected: true
    tank_type: ''

tk-multi-publish 설정의 secondary_outputs 섹션에서 툴킷이 기본적으로 사용자 대신 Perforce로 파일을 커밋하지 않도록 하려면 selected 설정을 false로 변경할 수 있습니다.

Maya 이외의 소프트웨어를 사용하여 이를 테스트하는 경우 이전의 후크 설정에서 tk-maya를 사용하려는 소프트웨어로 대체합니다. 3dsmax, Photoshop 및 Maya용 공용 후크의 Perforce 인식 버전은 여기에서 찾을 수 있습니다. 다른 소프트웨어를 사용하는 경우 자체 버전의 후크를 지금 롤아웃해야 합니다.

2) 더 이상 필요하지 않으므로 config/core/templates.yml 내부에서 asset_publish_area_mayamaya_asset_publish에 대한 줄을 선택적으로 제거할 수 있습니다.

3) 이 파일을 파이프라인 구성의 config/icons 폴더에 복사합니다. 이 아이콘은 게시 도구의 UI에서 사용됩니다.

이제 Perforce에 대한 게시를 테스트할 준비가 되었습니다.

  1. Maya를 실행합니다.
  2. File Manager에서 새 씬을 만듭니다.
  3. 테스트를 위해 일부 지오메트리를 추가합니다.
  4. Shotgun File Manager를 사용하여 씬을 저장합니다.
  5. Publish 앱을 사용하여 씬을 게시합니다.

Perforce 동기화 도구의 출력으로 전환하면 도구 출력에 이와 유사한 내용이 표시됩니다.

DEBUG [08:54:41 73.5399723053]: Looking for the next change submitted to 
Perforce...
DEBUG [08:54:41 75.3729343414]:  > Found change {'status': 'submitted',
'fileSize': ['74214'], 'changeType': 'public', 'rev': ['2'], 'client':
'jfboismenu_Jean-Francoiss-MacBook-Pro_1287', 'user': 'jfboismenu', 'time':
'1456148646', 'action': ['edit'], 'path':
'//depot/assets/Character/test/Art/work/maya/*', 'digest':
['2741D8E09CD05C6622E1C8494CBCE14A'], 'type': ['text'], 'depotFile':
['//depot/assets/Character/test/Art/work/maya/scene.v001.ma'], 'change': '4',
'desc': 'Shotgun publish\n'}
DEBUG [08:54:41 75.6020545959]: Checking that change '4' contains files that 
are in the current project... 
Creating Shotgun Revision entity for Perforce change 4
DEBUG [08:54:41 578.094005585]: Successfully created Shotgun Revision entity
14 for Perforce change 4
DEBUG [08:54:41 578.372955322]: Updating the Perforce counter
'tk_perforcesync_project_74' to 4

특히 중요한 부분은 Creating Shotgun Revision entity for Perforce change 4Successfully created Shotgun Revision entity14 for Perforce change 4 줄입니다. 이는 파일이 Shotgun과 성공적으로 동기화되었음을 의미합니다.

Loader 앱 구성

1) config/env/asset_step.yml에서 tk-multi-loader2 섹션을 찾아 다음 설정을 업데이트합니다.

tk-multi-loader2:
    filter_publishes_hook: '{tk-framework-perforce_v0.x.x}/shared/filter_publishes.py'
    actions_hook: '{tk-framework-perforce_v0.x.x}/tk-multi-loader2/tk-maya_actions.py'

작업이 모두 끝났습니다. 이제 파일을 씬으로 가져올 수 있습니다. 테스트하려면 다음을 수행합니다.

  1. Maya를 실행합니다.
  2. File Manager에서 새 씬을 만듭니다.
  3. Loader 앱을 사용하여 파일을 참조합니다.

파일이 현재 작업공간에 없으면 서버에서 복사됩니다.

 
팔로우

0 댓글

댓글을 남기려면 로그인하세요.