Unity Game CI

更新 發佈閱讀 6 分鐘

前情提要

這次要講的是如何在Unity 專案裡 ,使用 Game CI 提供的 Github Action 將建置專案自動化,細節微操很多,一不小心篇幅就拉得有點長。

但我還是把它放在 10 minutes Unity 專欄裡......

湯姆就是瑪莉

記得做大學專題時,每次輸出一版時間就耗在那裡,專案小還好說,大專案每次Build 半小時就過去了。
我們並不需要非常高效能的電腦去處理輸出,並且希望它能定期完成輸出動作給美術或企劃確認,這個時候 CI(Continuous Integration) 技術就相當重要。

因為是在 Github 上操作,請務必先學會版控技巧!

甚麼是CI / CD

工程師們通常都有一個共通點,就是講求效率,希望一些重複性的操作能夠自動化進行,於是便有了CI/CD 的誕生。

舉個例子,在我大學畢製遊戲時,並不是所有專案成員都熟悉Unity 的操作,但又需要確認目前進度或是錄製提報需要的影片,這時候就會來拜託身為主程式的我建置一版出來。

但非常可惜,那時候的我並沒有掌握這個技術
raw-image

設定Github Workflows

在專案根目錄裡新增路徑 .github\workflows ,並新增三個檔案:
HelloWorld.yaml Activation.yamlBuild.yaml

這時候你的資料夾結構會長這樣:

Project 
├─ .github
│ └─ workflows
│   ├─ Activation.yaml
│   ├─ Build.yaml
│   └─ HelloWorld.yaml
├─ Assets
│ ├─ Scenes
.
.
.
YAML 是一種可讀性高的資料序列化格式

我們先用 HelloWorld.yaml 來簡單練習 Github Workflow 的格式。用腳本編輯器打開它並輸入以下內容:

完成之後將變更 Push 上去。
回到 Github 上點選 Actions ,應該會看到我們的My workflow ,點選 Run workflow 來試試看:

raw-image

靜待一段時間後,My workflow 完成了,我們來看一下結果:

raw-image

這樣你已經完成第一個 Workflow 了,我們可以進入 Game-CI 實戰了!

授權Unity

我們需要授權 Game-CI 容器上的 Unity。

打開 Activation.yaml 並寫入:

這個 Workflow 可以讓我們取得手動授權的 .alf 檔案。同樣到 Github 執行我們的 Acquire activation file

raw-image

執行成功後,Summary 滑到底,將 Artifacts 裡的授權檔下載:

raw-image

Unity手動授權 網站上將我們的 .alf 檔上傳,選擇免費方案後下載授權成功的 .ulf 檔。

raw-image
注意:如果是專業版的用戶,走的是另一個流程!

回到 Github ,因為授權碼不能隨便洩漏,我們需要設定 Github Secrets:

raw-image

需要新增三組 Secret ,分別是 UNITY_EMAIL UNITY_PASSWORD UNITY_LICENSE

raw-image
UNITY_EMAIL - 註冊Unity ID 使用的信箱
UNITY_PASSWORD - Unity ID 帳戶密碼
UNITY_LICENSE - .ulf 檔裡的所有內容

新增完畢後就剩最後一步了,設定 Builder!

Game-CI Builder

打開 Build.yaml 並寫入以下內容:

Push 完後同樣回到 Github Actions ,選擇執行 Build 🥖😭🌭 ,靜待建置完成:

raw-image
注意:Github Artifacts 是有容量上限的,免費版是 500MB
   這個範例裡有設定 retention-days:2 讓 artifact 兩天清理一次

完全自動化

雖然已經不用在自己的電腦上 Build ,但總不可能每次需要才到 Github Action 上操作,違反了我們 CI 的初衷,所以我們可以這樣改寫 Build.yaml

這邊使用到了 POSIX Cron 表達式,上面的範例指的是 每周一三五 (UTC)4:00
台灣是 UTC+8 ,所以是 中午 12 點

如此一來,真正的自動化建置就完成了~

總結

這次介紹了用 Game-CI 來建置,還有很多可以延伸細講的東西,包括如何將自己閒置的電腦當成 Runner 來跑建置、如何將結果輸出到 Discord 上等。最近也有在看同樣是 CI/CD 工具的 Jenkins ,等到學成歸來再看看能不能寫一篇。


留言
avatar-img
留言分享你的想法!
avatar-img
#Jaku的沙龍
6會員
10內容數
只要10分鐘!
#Jaku的沙龍的其他內容
2023/09/05
UPM 插件管理、匯入、打包
Thumbnail
2023/09/05
UPM 插件管理、匯入、打包
Thumbnail
2023/08/15
在其他語言會時常使用正規表達式來幫字串進行 Filter,在遊戲製作裡面比較遇不到處理使用者的字串輸入、資料庫查詢結果的情況,但在編輯程式碼,有搜尋(Ctrl+F)、取代(Ctrl+H)需求時使用 Regex 也能提升工作效率。
Thumbnail
2023/08/15
在其他語言會時常使用正規表達式來幫字串進行 Filter,在遊戲製作裡面比較遇不到處理使用者的字串輸入、資料庫查詢結果的情況,但在編輯程式碼,有搜尋(Ctrl+F)、取代(Ctrl+H)需求時使用 Regex 也能提升工作效率。
Thumbnail
2023/08/06
微軟想把 VS 的一些編輯功能在 VS Code 上實作, Unity 也在幾天前推出了基於 C# Dev Kit 的插件,因為新舊版本並不相容,這邊說明兩種(OmniSharp、Roslyn Analyzers)開發環境設置。
Thumbnail
2023/08/06
微軟想把 VS 的一些編輯功能在 VS Code 上實作, Unity 也在幾天前推出了基於 C# Dev Kit 的插件,因為新舊版本並不相容,這邊說明兩種(OmniSharp、Roslyn Analyzers)開發環境設置。
Thumbnail
看更多
你可能也想看
Thumbnail
還在煩惱平凡日常該如何增添一點小驚喜嗎?全家便利商店這次聯手超萌的馬來貘,推出黑白配色的馬來貘雪糕,不僅外觀吸睛,層次豐富的雙層口味更是讓人一口接一口!本文將帶你探索馬來貘雪糕的多種創意吃法,從簡單的豆漿燕麥碗、藍莓果昔,到大人系的奇亞籽布丁下午茶,讓可愛的馬來貘陪你度過每一餐,增添生活中的小確幸!
Thumbnail
還在煩惱平凡日常該如何增添一點小驚喜嗎?全家便利商店這次聯手超萌的馬來貘,推出黑白配色的馬來貘雪糕,不僅外觀吸睛,層次豐富的雙層口味更是讓人一口接一口!本文將帶你探索馬來貘雪糕的多種創意吃法,從簡單的豆漿燕麥碗、藍莓果昔,到大人系的奇亞籽布丁下午茶,讓可愛的馬來貘陪你度過每一餐,增添生活中的小確幸!
Thumbnail
在這篇文章中,我們將介紹工作與以前念書時期在開發流程上的差異,並深入瞭解CI/CD、Travis CI以及加解密的應用。 CI/CD是自動化的軟體開發實踐,而加解密則是保護機密資料安全的重要技術。
Thumbnail
在這篇文章中,我們將介紹工作與以前念書時期在開發流程上的差異,並深入瞭解CI/CD、Travis CI以及加解密的應用。 CI/CD是自動化的軟體開發實踐,而加解密則是保護機密資料安全的重要技術。
Thumbnail
前言 上次教到如何使用 environment 去自動設置我們環境那些,今天我們要教 CI/CD 中的 when,通常在自動化佈署上線流程,並不會一路像前幾次一樣,先佈署到測試機,再佈署 demo 機,最後佈署到正式機,我們在佈署正式機的時候,通常會做一個防呆,比如說做成一個指令集,或者是按鈕等等
Thumbnail
前言 上次教到如何使用 environment 去自動設置我們環境那些,今天我們要教 CI/CD 中的 when,通常在自動化佈署上線流程,並不會一路像前幾次一樣,先佈署到測試機,再佈署 demo 機,最後佈署到正式機,我們在佈署正式機的時候,通常會做一個防呆,比如說做成一個指令集,或者是按鈕等等
Thumbnail
前言 大家好上次講到在使用 Gitlab CI/CD 自動化佈署前,使用 Docker Compose 撰寫佈署計畫書,今天我們要將目標轉移到 Gitlab 我們要撰寫自動化上線佈署計畫書,我們之後還會講一套更完整的佈署流程,今天只是讓各位體驗,自動化佈署上線的快感 調整 CI/CD 變數 首
Thumbnail
前言 大家好上次講到在使用 Gitlab CI/CD 自動化佈署前,使用 Docker Compose 撰寫佈署計畫書,今天我們要將目標轉移到 Gitlab 我們要撰寫自動化上線佈署計畫書,我們之後還會講一套更完整的佈署流程,今天只是讓各位體驗,自動化佈署上線的快感 調整 CI/CD 變數 首
Thumbnail
上次我們講完了 only 操作方式,接下來我們要來講解 needs 操作方式,讓我們的 CI/CD 更加仔細,更加完整。 needs 作用 needs 可以在我們整個 CI/CD 流程,去定義在哪個工作之前做完,才會去做下一個工作,假設今天有三個工作,分別叫 "test-build"、"buil
Thumbnail
上次我們講完了 only 操作方式,接下來我們要來講解 needs 操作方式,讓我們的 CI/CD 更加仔細,更加完整。 needs 作用 needs 可以在我們整個 CI/CD 流程,去定義在哪個工作之前做完,才會去做下一個工作,假設今天有三個工作,分別叫 "test-build"、"buil
Thumbnail
本篇使用最簡單的GitLab-ci.yml內容,進而實現了CI的功能,操作方式文章所示。
Thumbnail
本篇使用最簡單的GitLab-ci.yml內容,進而實現了CI的功能,操作方式文章所示。
Thumbnail
還在苦惱怎麼樣把你的檔案上傳到Github嗎?這裡教大家簡單上傳你的檔案可以沿用到如何上傳整體專案到Github並展示你的作品集
Thumbnail
還在苦惱怎麼樣把你的檔案上傳到Github嗎?這裡教大家簡單上傳你的檔案可以沿用到如何上傳整體專案到Github並展示你的作品集
Thumbnail
如何使用Game CI 提供的Github Action 將建置專案自動化
Thumbnail
如何使用Game CI 提供的Github Action 將建置專案自動化
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News