Unity Game CI

更新於 發佈於 閱讀時間約 4 分鐘

前情提要

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

湯姆就是瑪莉

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

甚麼是CI / CD

工程師們通常都有一個共通點,就是講求效率,希望一些重複性的操作能夠自動化進行,於是便有了CI/CD 的誕生。
舉個例子,在我大學畢製遊戲時,並不是所有專案成員都熟悉Unity 的操作,但又需要確認目前進度或是錄製提報需要的影片,這時候就會來拜託身為主程式的我建置一版出來。
但非常可惜,那時候的我並沒有掌握這個技術
把繁瑣的建置流程託管給Game CI

設定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 來試試看:
靜待一段時間後,My workflow 完成了,我們來看一下結果:
run: echo Hello 執行成功
這樣你已經完成第一個 Workflow 了,我們可以進入 Game-CI 實戰了!

授權Unity

我們需要授權 Game-CI 容器上的 Unity。
打開 Activation.yaml 並寫入:
這個 Workflow 可以讓我們取得手動授權的 .alf 檔案。同樣到 Github 執行我們的 Acquire activation file
執行成功後,Summary 滑到底,將 Artifacts 裡的授權檔下載:
Unity手動授權 網站上將我們的 .alf 檔上傳,選擇免費方案後下載授權成功的 .ulf 檔。
注意:如果是專業版的用戶,走的是另一個流程!
回到 Github ,因為授權碼不能隨便洩漏,我們需要設定 Github Secrets:
需要新增三組 Secret ,分別是 UNITY_EMAIL UNITY_PASSWORD UNITY_LICENSE
UNITY_EMAIL - 註冊Unity ID 使用的信箱
UNITY_PASSWORD - Unity ID 帳戶密碼
UNITY_LICENSE - .ulf 檔裡的所有內容
新增完畢後就剩最後一步了,設定 Builder!

Game-CI Builder

打開 Build.yaml 並寫入以下內容:
Push 完後同樣回到 Github Actions ,選擇執行 Build 🥖😭🌭 ,靜待建置完成:
建置完成了
注意: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
6會員
10內容數
只要10分鐘!
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
#Jaku的沙龍 的其他內容
UnityEvent 簡單介紹。
UnityEvent 簡單介紹。
你可能也想看
Google News 追蹤
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
在這篇文章中,我們將介紹工作與以前念書時期在開發流程上的差異,並深入瞭解CI/CD、Travis CI以及加解密的應用。 CI/CD是自動化的軟體開發實踐,而加解密則是保護機密資料安全的重要技術。
Thumbnail
獨立遊戲開發,很多時是一個想法和熱情冒出來後,就叫人衝到電腦前想快點把成品弄完……就算做不了完整版,至少也想有個Demo。 既然想「快點」,那還要不要「花額外時間」去寫企劃書呢? 在處理這個問題之前,要先理解的是,這句話裡面至少有兩種情況。   其一:團隊裡只有一個企劃,所有事情都由一人主導
今天學習Git 的第一步: 取得與建立項目 Getting and Creating Projects [1]。 之前提到「儲存庫 Repository」就是儲存所有「檔案 File」的地方。 在Git 的邏輯裡,儲存庫是要儲存所有的「快照 Snapshots」。 什麼是快照
Thumbnail
這篇文章描述了作者從兼職開發轉為全職開發的過程,並分享了從混進學界指日可待的積極態度。作者也提及自己在專案製作與個人生活上的矛盾與感想,最後分享了專案管理和敏捷開發相關的文章與影片。
CI 持續整合 CI目的是建立自動化專案打包。 CD 持續發表 將打包完成的專案,自動發布。
Thumbnail
本文將介紹如何在Gitlab上部署和註冊runner,以進行CI/CD測試。透過Docker-compose方式進行部署,同時注意安裝時的一些注意事項。建議學習者至少掌握一種以上的Pipeline工具,以滿足實務上的需求。
Thumbnail
本文將介紹Gitlab與GitHub的差異,以及在本地環境部署Gitlab的流程與實作。文章內容包括版本管理系統的選擇,Gitlab的基本功能,以及使用Docker進行部署的詳細步驟。
Thumbnail
這篇文章將會延續(上)、(中)的內容,談談遊戲開發測試原型的製作與驗證。
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
在這篇文章中,我們將介紹工作與以前念書時期在開發流程上的差異,並深入瞭解CI/CD、Travis CI以及加解密的應用。 CI/CD是自動化的軟體開發實踐,而加解密則是保護機密資料安全的重要技術。
Thumbnail
獨立遊戲開發,很多時是一個想法和熱情冒出來後,就叫人衝到電腦前想快點把成品弄完……就算做不了完整版,至少也想有個Demo。 既然想「快點」,那還要不要「花額外時間」去寫企劃書呢? 在處理這個問題之前,要先理解的是,這句話裡面至少有兩種情況。   其一:團隊裡只有一個企劃,所有事情都由一人主導
今天學習Git 的第一步: 取得與建立項目 Getting and Creating Projects [1]。 之前提到「儲存庫 Repository」就是儲存所有「檔案 File」的地方。 在Git 的邏輯裡,儲存庫是要儲存所有的「快照 Snapshots」。 什麼是快照
Thumbnail
這篇文章描述了作者從兼職開發轉為全職開發的過程,並分享了從混進學界指日可待的積極態度。作者也提及自己在專案製作與個人生活上的矛盾與感想,最後分享了專案管理和敏捷開發相關的文章與影片。
CI 持續整合 CI目的是建立自動化專案打包。 CD 持續發表 將打包完成的專案,自動發布。
Thumbnail
本文將介紹如何在Gitlab上部署和註冊runner,以進行CI/CD測試。透過Docker-compose方式進行部署,同時注意安裝時的一些注意事項。建議學習者至少掌握一種以上的Pipeline工具,以滿足實務上的需求。
Thumbnail
本文將介紹Gitlab與GitHub的差異,以及在本地環境部署Gitlab的流程與實作。文章內容包括版本管理系統的選擇,Gitlab的基本功能,以及使用Docker進行部署的詳細步驟。
Thumbnail
這篇文章將會延續(上)、(中)的內容,談談遊戲開發測試原型的製作與驗證。