在遊戲開發和其他使用Unity引擎的項目中,持續集成和持續交付(CI/CD)是一個非常重要的流程。以下是一些常見的Unity CI/CD做法和工具:
一個典型的Unity CI/CD工作流可能包括以下步驟:
這樣的工作流可以確保每次代碼變更都經過構建和測試,減少手動操作,提升開發效率和質量。
當然,以下是一個使用GitLab CI/CD來自動化Unity項目構建和測試的示例。
首先,在你的Unity項目根目錄下創建一個名為.gitlab-ci.yml
的文件,內容如下:
stages:
- build
- test
variables:
UNITY_VERSION: "2021.3.0f1"
before_script:
- apt-get update
- apt-get install -y wget
- wget https://beta.unity3d.com/download/$(wget -qO- https://unity3d.com/get-unity/download/archive | grep -oP 'href="https://beta.unity3d.com/download/[a-z0-9]+/UnitySetup-[0-9a-z.]+.sh"' | grep $UNITY_VERSION | head -n 1 | cut -d'"' -f2) -O UnitySetup.sh
- chmod +x UnitySetup.sh
- ./UnitySetup.sh --unattended --install-location=/opt/unity
build:
stage: build
script:
- /opt/unity/Editor/Unity -quit -batchmode -nographics -projectPath . -buildTarget StandaloneWindows64 -buildPath Build/Windows
artifacts:
paths:
- Build/Windows
test:
stage: test
script:
- /opt/unity/Editor/Unity -quit -batchmode -nographics -projectPath . -runTests -testResults Results.xml -testPlatform PlayMode
artifacts:
when: always
paths:
- Results.xml
在GitLab倉庫中,前往Settings -> CI / CD -> Variables
,添加以下變量:
UNITY_SERIAL
:你的Unity序列號UNITY_EMAIL
:你的Unity帳號郵箱UNITY_PASSWORD
:你的Unity帳號密碼build
和test
。build
階段。Build/Windows
目錄。test
階段。Results.xml
文件中。Results.xml
文件中,即使測試失敗也會保存。當你向GitLab倉庫推送代碼或提交合併請求時,這個工作流會自動運行,進行以下操作:
這是一個基本的GitLab CI/CD工作流示例,你可以根據需要進一步擴展和自定義。
當然,以下是如何使用GitLab CI/CD將Unity項目自動部署到目標平台(如iOS和Android)的示例。這個流程包括構建和部署的步驟。
在你的Unity項目根目錄下創建或更新.gitlab-ci.yml
文件,內容如下:
stages:
- build
- deploy
variables:
UNITY_VERSION: "2021.3.0f1"
ANDROID_SDK_ROOT: "/opt/android-sdk"
ANDROID_HOME: "/opt/android-sdk"
ANDROID_NDK_HOME: "/opt/android-ndk"
before_script:
- apt-get update
- apt-get install -y wget unzip
# Install Unity
- wget https://beta.unity3d.com/download/$(wget -qO- https://unity3d.com/get-unity/download/archive | grep -oP 'href="https://beta.unity3d.com/download/[a-z0-9]+/UnitySetup-[0-9a-z.]+.sh"' | grep $UNITY_VERSION | head -n 1 | cut -d'"' -f2) -O UnitySetup.sh
- chmod +x UnitySetup.sh
- ./UnitySetup.sh --unattended --install-location=/opt/unity
# Install Android SDK and NDK
- wget https://dl.google.com/android/repository/commandlinetools-linux-7302050_latest.zip -O commandlinetools.zip
- unzip commandlinetools.zip -d /opt/android-sdk
- yes | /opt/android-sdk/cmdline-tools/bin/sdkmanager --sdk_root=$ANDROID_SDK_ROOT --licenses
- /opt/android-sdk/cmdline-tools/bin/sdkmanager --sdk_root=$ANDROID_SDK_ROOT "platform-tools" "platforms;android-30" "build-tools;30.0.3" "ndk-bundle"
build_android:
stage: build
script:
- /opt/unity/Editor/Unity -quit -batchmode -nographics -projectPath . -buildTarget Android -customBuildTarget Android -customBuildPath Build/Android/app.apk
artifacts:
paths:
- Build/Android/app.apk
deploy_android:
stage: deploy
script:
- echo "Deploying Android APK..."
# 在這裡添加部署步驟,例如上傳到Firebase App Distribution或Google Play Console
build_ios:
stage: build
script:
- /opt/unity/Editor/Unity -quit -batchmode -nographics -projectPath . -buildTarget iOS -customBuildTarget iOS -customBuildPath Build/iOS
artifacts:
paths:
- Build/iOS
deploy_ios:
stage: deploy
script:
- echo "Deploying iOS build..."
# 在這裡添加部署步驟,例如上傳到TestFlight或App Store Connect
在GitLab倉庫中,前往Settings -> CI / CD -> Variables
,添加以下變量:
UNITY_SERIAL
:你的Unity序列號UNITY_EMAIL
:你的Unity帳號郵箱UNITY_PASSWORD
:你的Unity帳號密碼build
和deploy
,分別針對Android和iOS。build
階段。Build/Android
目錄。deploy
階段。build
階段。Build/iOS
目錄。deploy
階段。當你向GitLab倉庫推送代碼或提交合併請求時,這個工作流會自動運行,進行以下操作:
這是一個基本的GitLab CI/CD工作流示例,你可以根據需要進一步擴展和自定義,包括添加實際的部署步驟。