기술 자료

지원

빌드 프로세스 동안 커스텀 스크립트 실행

Follow this workflow to run custom scripts before and after the build process.
읽는 시간 1분최근 업데이트: 한 달 전

Build Automation은 사용자가 생성한 사전 빌드 커스텀 스크립트와 포스트 빌드 커스텀 스크립트를 모두 지원합니다. 커스텀 스크립트를 사용하려면 해당 스크립트를 소스 저장소에 체크인하고, 빌드의 고급 설정에서 저장소의 루트를 기준으로 한 스크립트에 대한 상대 경로를 설정합니다.

사전 익스포트 메서드와 포스트 익스포트 메서드

사전 익스포트 메서드와 포스트 익스포트 메서드를 사용하여 클라우드에 Unity 프로젝트가 빌드되기 전후에 작업을 트리거할 수 있습니다. 이러한 메서드는
Assets/Editor
폴더의 클래스에 존재해야 합니다. 디렉토리에 에디터 폴더가 없는 경우 폴더를 생성할 수 있습니다.

사전 익스포트 메서드 이름

사전 익스포트 메서드를 사용하려면 Unity 에디터에서 프로젝트를 익스포트하기 전과 Unity 에디터 스크립트 컴파일 단계 후에 실행할 코드가 포함된 Unity 프로젝트의 퍼블릭 정적 메서드를 생성합니다.
public static void PreExport()
Build Automation을 활성화하여 메서드 서명에서
BuildManifestObject
오브젝트를 파라미터로 지정하여 현재 빌드의 빌드 매니페스트를 사전 익스포트 메서드에 전달할 수 있습니다. 그런 다음 프로젝트를 익스포트하기 전에 프로젝트나 플레이어 설정을 변경할 수 있습니다.
public static void PreExport(UnityEngine.CloudBuild.BuildManifestObject manifest)
Unity Build Automation이 메서드를 호출하면 현재 빌드의 빌드 매니페스트로
BuildManifestObject
를 사용하여 선택 사항 파라미터로
BuildManifestObject
오브젝트를 전달합니다.

포스트 익스포트 메서드 이름

포스트 익스포트 메서드를 사용하려면 Unity 에디터에서 프로젝트를 익스포트한 후 실행할 코드가 포함된 Unity 프로젝트에 퍼블릭 정적 메서드를 생성합니다.
public static void PostExport(string exportPath)
Unity Build Automation에서 메서드를 호출하면 다음 문자열이 전달됩니다.
  • iOS가 아닌 빌드 타겟의 경우 문자열에는 익스포트된 프로젝트의 경로가 포함됩니다.
  • iOS 프로젝트의 경우 문자열에는 익스포트한 Xcode 프로젝트의 경로가 포함됩니다. 경로를 사용하여 익스포트한 Xcode 프로젝트를 찾아 빌드 프로세스를 완료하기 위해 Xcode가 호출되기 전에 추가 사전 프로세싱을 수행할 수 있습니다.

커스텀 스크립팅 #define 지시문

Build Automation을 사용하여 커스텀 스크립팅 #define 지시문을 만들 수 있습니다. Unity Dashboard에서 빌드 타겟의 Advanced settings로 이동합니다. Scripting Define Symbols 필드에서 커스텀 스크립팅 #define 지시문을 사용 가능한 빌트인 선택 항목에 추가할 수 있습니다. 각 빌드 타겟에 정의할 기호의 이름을 입력합니다. 그런 다음 빌트인 기호와 마찬가지로 이러한 기호를 #if 지시문의 조건으로 사용할 수 있습니다. 자세한 내용은 조건부 컴파일을 참고하십시오.

노드 버전 변경

빌드 프로세스 중에 다른 노드 버전으로 전환할 수 있도록 NVM이 빌드 머신에 설치됩니다. 다음 샘플 스크립트는 Node 16.13.0을 설치하고 전환합니다.
#!/usr/bin/env bash## Source profile##install-nvm-modules-and-set-version. ~/.profile## Install NVM modules and set version##output-node-version-usednvm install 16.13.0nvm use 16.13.0## Output Node version used##source-profilenode -vexit 0

다른 Ruby 버전 사용

RVM
gem
이 빌드 머신에 설치되어 빌드 프로세스 동안 다른 Ruby 버전을 사용할 수 있습니다. 다음 예제 스크립트는 UBA 툴에서 사용하는 시스템 Ruby 설치에 영향을 주지 않도록 Ruby 3.3.0을 설치하고
DO
를 사용하여 커맨드를 실행합니다.
#!/usr/bin/env bash## Source profilervm install ruby-3.3.0rvm ruby-3.3.0 do gem install fastlanervm ruby-3.3.0 do fastlane --helpexit 0
rvm install ruby-3.3.0 --with-openssl-dir=$(brew --prefix openssl@1.1)

환경 변수 설정

echo "{environment_variable_name}={value}" >> "$DEVOPS_ENV"
Unity 빌드와 포스트 빌드 스크립트에서 환경 변수를 사용할 수 있도록 하려면 환경 변수를 정의하거나 업데이트하고 이 값을
DEVOPS_ENV
환경 파일에 작성합니다. 환경 변수를 생성하거나 업데이트하는 스크립트에서는 새 값에 액세스할 수 없지만, 모든 후속 프로세스에는 액세스 권한이 부여됩니다. 환경 변수 이름은 주어진 이름의 대문자로 저장됩니다(예:
testenv
>
TESTENV
). 단일 라인 환경 변수만 지원됩니다.

DEVOPS_ENV에 환경 변수를 작성하는 예제

사전 빌드 스크립트에서 환경 변수를 설정합니다.
echo "TEST_ENV=Sample environment variable" >> $DEVOPS_ENV
그런 다음 포스트 빌드 스크립트에서 환경 변수를 에코합니다.
echo $TEST_ENV

포스트 빌드 스크립트에서 빌드 아티팩트에 액세스

스토어프론트에 자동으로 업로드하거나 포스트 빌드 스크립트를 사용하여 빌드 프로세스의 일부를 자동화하기 위해 빌드 아티팩트에 액세스할 수 있습니다. 포스트 빌드 스크립트 중에 환경 변수를 사용하여 경로를 Windows 실행 파일로 전달하는 경우, cygwin 경로를 사용해야 합니다.

플레이어에게 경로를 가져오는 샘플 스크립트

#!/bin/bash#This is a sample that will simply output the path to the build artifactecho "START"PLAYER_PATH=$UNITY_PLAYER_PATH#If we are using a Windows Builder and using the path to pass it to a native Windows application, we need to properly convert the cygwin player path to windows formatif [[ "$BUILDER_OS" == "WINDOWS" ]]; thenPLAYER_PATH=$(cygpath -wa "$UNITY_PLAYER_PATH")fiecho "$PLAYER_PATH"

로그의 마스크 값

값을 마스킹하면 로그에 문자열이나 변수가 출력되지 않습니다. 각 마스킹된 값은 값 콘텐츠에 관계없이
*****
기호로 대체됩니다. 환경 변수나 원시 값을 마스크 커맨드에 전달할 수 있습니다.
문자열이나 환경 변수를 마스킹하려면
::mask-value::
커맨드를 사용합니다.
echo "::mask-value::{value}"

예제: 값 마스킹

"SuperS3cretPassword!"
값을 마스킹하려면 값에 대한
::mask-value::
커맨드를 설정합니다.
echo "::mask-value::SuperS3cretPassword!"
로그에 이 결과를 출력하면 출력에는
"*****"
기호로 표시됩니다.

예제: 변수 마스킹

DB_PASSWORD
변수나
"SuperS3cretPassword!"
변수 값을 마스킹하려면 변수의
::mask-value::
커맨드를 설정합니다.
DB_PASSWORD=SuperS3cretPassword!echo "::mask-value::$DB_PASSWORD"
이 중 하나가 로그에 출력되면 출력은
"*****"
기호로 표시됩니다.

예제: 환경 변수 마스킹

$DEVOPS_ENV
로 설정된 환경 변수는 마스킹할 수 있습니다. 환경 변수의 값을 설정하고 마스킹한 다음, 다른 스크립트에서 사용할
$DEVOPS_ENV
파일로 값을 출력합니다.
DB_PASSWORD=SuperS3cretPassword!echo "::mask-value::$DB_PASSWORD"echo "DB_PASSWORD=$DB_PASSWORD" >> $DEVOPS_ENV