기술 자료

​
​

Development

User Acquisition

Monetization

산업 분야

Unity Cloud

Get Started

Asset Manager SDKs and services

Open Unity Dashboard

Unity Cloud

이 페이지는 선택한 언어로 제공되지 않습니다.
​
​
Unity Dashboard
  • Accounts
  • Organizations
  • Projects
  • Products
  • Billing
Developer Data
  • Introduction to the Developer Data Framework
  • Get started
  • View Diagnostics for your project
    • Access Diagnostics
    • View events leading to a crash
    • Manage reports
      • Set up custom reports
      • Test reports
      • Debugging symbols
        • Introduction to debugging symbols
        • Upload symbol files through the Unity Dashboard
        • Upload debugging symbols from CI/CD pipelines
        • Runner examples for uploading debugging symbols through CI/CD pipelines
        • Troubleshooting symbol file uploads from CI/CD pipelines
        • Symbol file uploads API reference
    • Diagnostics page reference
  • Privacy and consent
Unity Asset Manager
  • What's new
  • Asset Manager web
  • Asset Store
  • Manage Assets in the Editor
  • Unity Version Control
  • Developer documentation
Unity Pipeline Automation
  • About
  • Get started
  • Pipelines
  • Automations
  • Monitor jobs
  1. Unity Cloud Documentation
  2. Developer Data framework

Runner examples for uploading debugging symbols through CI/CD pipelines

Find runner code samples for uploading debugging symbol files for various host and target platforms.
읽는 시간 5분
최근 업데이트: 3달 전

You can configure example runner configurations to automate the upload of debugging symbol files through CI/CD pipelines. By integrating symbol uploads into your pipeline, you can automatically process and upload symbols whenever you build your project, eliminating manual steps and ensuring symbols stay synchronized with your builds.
The following example runners cover various host and target platform combinations. Each runner demonstrates how to configure environment variables, inject CI values at runtime, and execute the appropriate symbol upload script.
Each example runner does the following:
  • It automatically sets
    UNITY_PROJECT_PATH
    to the CI workspace directory.
  • It assumes that the scripts are located in a
    scripts/
    directory in your repository, such as
    ./scripts/usymtool.sh
    .
중요
If you commit the scripts to a directory other than
/scripts
, then adjust the path to match. For example, if the scripts are located in the repository root, then the corresponding path for
usymtool.sh
is
./usymtool.sh
.

GitHub Actions example macOS runner for Android

The following example provides a sample configuration for a macOS runner for the Android target platform.
팁
To target a different platform, change the
PLATFORM
environment variable. You can add any platform-specific variables, such as
IOS_BUILD_PRODUCTS_PATH
for iOS.
name: Build and Upload Symbolson: push: branches: [main]env: PLATFORM: "android" UNITY_EDITOR_PATH: "/Applications/Unity/Hub/Editor/6000.3.10f1" BUILD_NAME: "MyGame"jobs: upload-symbols: runs-on: macos-latest steps: - name: Checkout uses: actions/checkout@v4 # ... your Unity build steps here ... - name: Upload debug symbols env: UNITY_PROJECT_ID: ${{ secrets.UNITY_PROJECT_ID }} UNITY_SA_AUTH: ${{ secrets.UNITY_SA_AUTH_HEADER }} UNITY_PROJECT_PATH: ${{ github.workspace }} BUILD_OUTPUT_PATH: ${{ github.workspace }}/Build run: | sed -i '' "s|PLATFORM=\"macos\"|PLATFORM=\"${PLATFORM}\"|" ./scripts/usymtool.sh sed -i '' "s|UNITY_PROJECT_ID=\"<your-unity-project-id>\"|UNITY_PROJECT_ID=\"${UNITY_PROJECT_ID}\"|" ./scripts/usymtool.sh sed -i '' "s|UNITY_SERVICE_ACCOUNT_AUTH_HEADER=\"<your-service-account-auth-header>\"|UNITY_SERVICE_ACCOUNT_AUTH_HEADER=\"${UNITY_SA_AUTH}\"|" ./scripts/usymtool.sh sed -i '' "s|UNITY_EDITOR_PATH=\"/Applications/Unity/Hub/Editor/6000.3.10f1\"|UNITY_EDITOR_PATH=\"${UNITY_EDITOR_PATH}\"|" ./scripts/usymtool.sh sed -i '' "s|UNITY_PROJECT_PATH=\"<your-unity-project-path>\"|UNITY_PROJECT_PATH=\"${UNITY_PROJECT_PATH}\"|" ./scripts/usymtool.sh sed -i '' "s|BUILD_OUTPUT_PATH=\"<your-build-output-path>\"|BUILD_OUTPUT_PATH=\"${BUILD_OUTPUT_PATH}\"|" ./scripts/usymtool.sh sed -i '' "s|BUILD_NAME=\"<your-build-name>\"|BUILD_NAME=\"${BUILD_NAME}\"|" ./scripts/usymtool.sh chmod +x ./scripts/usymtool.sh ./scripts/usymtool.sh
중요
If you use
game-ci/unity-builder
, then ensure that Debug Symbols is enabled in your Unity project's Build Profiles or Player Settings before the build step runs. If Debug Symbols isn't enabled, the
.so
files produced by the build are stripped and won't contain any debug data for
usymtool
to upload.

GitHub Actions example Windows runner for Windows

The following example provides a sample configuration for a Windows runner for the Windows target platform.
name: Build and Upload Symbols (Windows)on: push: branches: [main]env: PLATFORM: "windows" UNITY_EDITOR_PATH: "C:\\Program Files\\Unity\\Hub\\Editor\\6000.3.10f1" BUILD_NAME: "MyGame"jobs: upload-symbols: runs-on: windows-latest steps: - name: Checkout uses: actions/checkout@v4 # ... your Unity build steps here ... - name: Upload debug symbols shell: pwsh env: UNITY_PROJECT_ID: ${{ secrets.UNITY_PROJECT_ID }} UNITY_SA_AUTH: ${{ secrets.UNITY_SA_AUTH_HEADER }} run: | $content = Get-Content ./scripts/usymtool.ps1 -Raw $content = $content.Replace('$PLATFORM = "android"', '$PLATFORM = "${{ env.PLATFORM }}"') $content = $content.Replace('$UNITY_PROJECT_ID = "<your-unity-project-id>"', ('$UNITY_PROJECT_ID = "' + $env:UNITY_PROJECT_ID + '"')) $content = $content.Replace('$UNITY_SERVICE_ACCOUNT_AUTH_HEADER = "<your-service-account-auth-header>"', ('$UNITY_SERVICE_ACCOUNT_AUTH_HEADER = "' + $env:UNITY_SA_AUTH + '"')) $content = $content.Replace('$UNITY_EDITOR_PATH = "C:\Program Files\Unity\Hub\Editor\6000.3.10f1"', ('$UNITY_EDITOR_PATH = "${{ env.UNITY_EDITOR_PATH }}"')) $content = $content.Replace('$UNITY_PROJECT_PATH = "<your-unity-project-path>"', ('$UNITY_PROJECT_PATH = "' + $env:GITHUB_WORKSPACE + '"')) $content = $content.Replace('$BUILD_OUTPUT_PATH = "<your-build-output-path>"', ('$BUILD_OUTPUT_PATH = "' + $env:GITHUB_WORKSPACE + '\Build"')) $content = $content.Replace('$BUILD_NAME = "<your-build-name>"', '$BUILD_NAME = "${{ env.BUILD_NAME }}"') $content | Set-Content ./scripts/usymtool.ps1 .\scripts\usymtool.ps1

GitLab CI example macOS runner for macOS

The following example provides a sample GitLab CI configuration for a macOS runner for the macOS target platform.
When you use this configuration, you need to set the following GitLab CI variables in Settings > CI/CD > Variables:
  • UNITY_PROJECT_ID
  • UNITY_SA_AUTH_HEADER
    (masked)
upload-symbols: stage: deploy tags: - macos variables: PLATFORM: "macos" UNITY_EDITOR_PATH: "/Applications/Unity/Hub/Editor/6000.3.10f1" BUILD_NAME: "MyGame" script: - sed -i '' "s|UNITY_PROJECT_ID=\"<your-unity-project-id>\"|UNITY_PROJECT_ID=\"${UNITY_PROJECT_ID}\"|" ./scripts/usymtool.sh - sed -i '' "s|UNITY_SERVICE_ACCOUNT_AUTH_HEADER=\"<your-service-account-auth-header>\"|UNITY_SERVICE_ACCOUNT_AUTH_HEADER=\"${UNITY_SA_AUTH_HEADER}\"|" ./scripts/usymtool.sh - sed -i '' "s|UNITY_EDITOR_PATH=\"/Applications/Unity/Hub/Editor/6000.3.10f1\"|UNITY_EDITOR_PATH=\"${UNITY_EDITOR_PATH}\"|" ./scripts/usymtool.sh - sed -i '' "s|UNITY_PROJECT_PATH=\"<your-unity-project-path>\"|UNITY_PROJECT_PATH=\"${CI_PROJECT_DIR}\"|" ./scripts/usymtool.sh - sed -i '' "s|BUILD_OUTPUT_PATH=\"<your-build-output-path>\"|BUILD_OUTPUT_PATH=\"${CI_PROJECT_DIR}/Build\"|" ./scripts/usymtool.sh - sed -i '' "s|BUILD_NAME=\"<your-build-name>\"|BUILD_NAME=\"${BUILD_NAME}\"|" ./scripts/usymtool.sh - chmod +x ./scripts/usymtool.sh - ./scripts/usymtool.sh

Copyright © 2026 Unity Technologies
법률 정보개인정보 처리방침쿠키Documentation Terms of Use개인 정보 판매 또는 공유 금지개인정보 보호 선택(쿠키 설정)

'Unity', Unity 로고 및 기타 Unity 상표는 미국 및 기타 지역 내 Unity Technologies 또는 그 계열사의 상표 또는 등록상표입니다(자세한 내용은 여기에서 확인하세요). 기타 명칭 또는 브랜드는 해당 소유자의 상표입니다.

일부 페이지는 편의를 위해 기계 번역되었으며 부정확한 내용이 있을 수 있습니다. 정보가 상충되는 경우, 영어 버전을 우선으로 참조하세요.

  • 보고 있는 페이지
    • GitHub Actions example macOS runner for Android

    • GitHub Actions example Windows runner for Windows

    • GitLab CI example macOS runner for macOS


이 페이지의 문제 보고