# Unity Gaming Services CLI

> Use the Unity Gaming Services command-line interface to create, deploy, and manage Cloud Code modules.

[Unity Gaming Services CLI](https://services.docs.unity.com/guides/ugs-cli/latest/general/overview)를 사용하여 Cloud Code 모듈과 상호 작용할 수 있습니다. CLI를 사용하면 커맨드 라인에서 Cloud Code 모듈을 생성, 배포, 관리할 수 있습니다.

## 필수 조건##prerequisites

CLI에 대해 자세히 알아보려면 [Unity Gaming Services CLI 시작하기 가이드](https://services.docs.unity.com/guides/ugs-cli/latest/general/get-started/install-the-cli/)에 나와 있는 단계를 따르십시오.

이 가이드를 따르려면 먼저 다음 작업을 완료해야 합니다.

1. [UGS CLI를 설치합니다](https://services.docs.unity.com/guides/ugs-cli/latest/general/get-started/install-the-cli/).

2. 다음과 같이 프로젝트 ID와 환경을 구성합니다.
   `ugs config set project-id <your-project-id>`
   `ugs config set environment-name <your-environment-name>`

3. [Cloud Code](https://services.docs.unity.com/docs/service-account-auth/index.html#cloud-code-editor)와 [환경 관리](https://services.docs.unity.com/docs/service-account-auth/index.html#unity-environments-admin)에 필요한 역할을 사용하여 서비스 계정을 구성합니다. [인증 받기](https://services.docs.unity.com/guides/ugs-cli/latest/general/get-started/get-authenticated/)를 참고하십시오.

## CLI 사용##using-the-cli

커맨드와 옵션이 모두 나와 있는 레퍼런스가 필요한 경우, [Cloud Code 커맨드 라인 기술 자료](https://services.docs.unity.com/guides/ugs-cli/latest/cloud-code/Cloud%20Code%20Command%20Line/overview)를 참고하십시오.

> **Note:**
>
> **참고:** `ugs cloud-code modules` 커맨드는 `ugs cc m`으로도 사용할 수 있습니다.

> **Note:**
>
> **참고:** 현재 CLI에서는 모듈에 대한 커스텀 태그를 지원하지 않으므로 이러한 태그는 무시됩니다. 커스텀 키-값 페어를 모듈에 연결하려면 [Cloud Code API](./rest-api.md)를 사용합니다.

### 모듈 생성##create-modules

샘플 모듈이 포함된 솔루션을 로컬에서 생성하기 위해 다음과 같이 `new-file` 커맨드를 실행할 수 있습니다.

```bash
ugs cloud-code modules new-file <module-name> <module-directory>
```

이 커맨드는 샘플 모듈이 포함된 새로운 솔루션을 만듭니다.

솔루션을 그대로 사용하거나 필요에 맞게 수정할 수 있습니다.

> **Note:**
>
> **참고:** 스토리지 제한 사항이 적용됩니다. [Cloud Code 제한 사항](../../reference/limits#cloud-code-c-modules)을 확인하십시오.

### 모듈 배포##deploy-modules

`Deploy` 커맨드를 사용하여 Cloud Code 모듈을 원격 환경에 배포할 수 있습니다. 이 커맨드는 `.ccm` 포맷으로 사전 컴파일된 모듈과 배포 전에 자동으로 컴파일된 후 압축된 C# 솔루션을 모두 지원합니다.

기본적으로 배포는 솔루션의 `Release` 빌드 구성을 기반으로 합니다. 이 구성에는 크기를 축소하기 위한 테스트 프로젝트 등의 추가 콘텐츠를 포함하지 않아야 합니다. 빌드 구성에 관한 자세한 내용은 [Rider](https://www.jetbrains.com/help/rider/Build_Configurations.html)나 [Visual Studio](https://learn.microsoft.com/en-us/visualstudio/ide/understanding-build-configurations?view=vs-2022)의 기술 자료를 참고하십시오.

한 번에 여러 모듈을 배포하려면 다음과 같이 다수의 파일 경로를 제공하거나 여러 파일이 포함된 디렉토리를 제공합니다.

```bash
ugs deploy <path-to-ccm-file> <path-to-sln-file>
```

```bash
ugs deploy <path-to-directory>
```

#### C# 솔루션 배포##deploy-c-solutions

C# 솔루션을 배포하고 배포 전에 자동으로 컴파일하고 압축할 수 있습니다.

컴파일을 지원하려면 솔루션에 [메인 프로젝트](../module-structure#main-project)에 대한 퍼블리시 프로필이 포함되어야 합니다.

퍼블리시 프로필 생성 방법에 대해 알아보려면 관련 IDE 기술 자료를 참고하십시오.

* JetBrains Rider - [퍼블리시 프로필](https://www.jetbrains.com/help/rider/Publishing_Web_Apps.html#publish-profiles)
* Visual Studio - [Visual Studio ASP.NET Core 앱 배포용 퍼블리시 프로필(.pubxml)](https://learn.microsoft.com/en-us/aspnet/core/host-and-deploy/visual-studio-publish-profiles?view=aspnetcore-7.09)
* Visual Studio - [Visual Studio(Mac용)를 사용해 폴더에 퍼블리시](https://learn.microsoft.com/en-us/visualstudio/mac/publish-folder?view=vsmac-2022\&toc=%2Faspnet%2Fcore%2Ftoc.json\&bc=%2Faspnet%2Fcore%2Fbreadcrumb%2Ftoc.json#customize-publish-options)

솔루션을 배포하면 배포 전에 자동으로 컴파일과 압축이 이루어집니다. 결과는 로컬 임시 폴더에 저장됩니다(예: `<temp-folder>/<solution-name>`).

C# 솔루션을 배포하려면 커맨드의 인수로 `.sln` 파일의 경로를 제공합니다.

```bash
ugs deploy <path-to-sln-file>
```

> **Warning:**
>
> **중요**: 현재 솔루션 배포에서는 솔루션당 하나의 메인 프로젝트만 지원합니다. 메인 프로젝트는 퍼블리시 프로필이 포함된 프로젝트입니다. 여러 모듈이 포함된 솔루션은 배포할 수 없습니다. 또한 이 솔루션의 모든 프로젝트가 폴더 계층 구조의 솔루션 파일에 속해 있어야 합니다. 솔루션의 구조를 만드는 방법을 알아보려면 [모듈 구조](../module-structure)를 참고하십시오.

#### 사전 컴파일된 모듈 배포##deploy-pre-compiled-modules

사전 컴파일된 모듈을 배포하려면 커맨드의 인자로 `.ccm` 파일의 경로를 제공합니다.

```bash
ugs deploy <path-to-ccm-file>
```

> **Note:**
>
> **참고:** 대부분의 사용 사례에서 [솔루션 배포](#deploy-c-solutions) 워크플로를 사용할 수 있습니다. 보다 고급 워크플로로, 사전 컴파일된 모듈을 패키지하여 배포할 수 있습니다. 모듈을 `.ccm` 파일로 압축하는 방법을 알아보려면 [코드 패키징](../package-code)을 참고하십시오.

### 환경 동기화##environment-synchronization

한 환경의 모든 모듈을 다른 환경에 옮겨 배포할 수 있습니다.

다음과 같은 커맨드를 실행하여 현재 환경에 있는 모든 모듈의 아카이브를 생성합니다.

```bash
ugs cloud-code modules export <out-dir> <file-name>
```

그러면 다음과 같은 커맨드를 실행하여 모듈을 임포트하고 다른 환경에 배포할 수 있습니다.

```bash
ugs cloud-code modules import <in-dir> <file-name> --environment-name <environment-name>
```

> **Note:**
>
> **참고:** `Import`는 기본적으로 환경을 덮어쓰지 않습니다. 임포트 전에 기존 모듈을 삭제하려는 경우 `--reconcile` 플래그를 사용하십시오.

### 모듈 가져오기##retrieve-modules

배포한 단일 모듈에 대한 정보를 얻으려면 다음과 같은 커맨드를 실행합니다.

```bash
ugs cloud-code modules get <module-name>
```

모듈 이름은 .ccm 아카이브에 포함된 .NET 클래스 라이브러리의 이름입니다. 다음과 같은 커맨드를 실행하여 현재 Cloud Code에 배포된 모든 모듈을 나열할 수도 있습니다.

```bash
ugs cloud-code modules list
```

### 모듈 삭제##delete-module

모듈을 삭제하려면 다음과 같은 커맨드를 실행합니다.

```bash
ugs cloud-code modules delete <module-name>
```
