iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 14
0
DevOps

從 0 到 1 的 DevOps 執行日記 - 全方位平台實踐手冊系列 第 14

【Day-14】我們是怎麼開始的?:一間傳統軟體公司從 0 開始建置的 DevOps 文化(實作篇)-iOS 平台(3)

進階-不同分支的App Release
我們會使用分支來打包與部署不同環境的 App
接下來示範
develop 分支 -> 推送 Staging 環境
master 分支 -> 推送 Release 環境

可以看到我們的 CI 檔案中已經設置好應有的分支,再來只要推送就好了!

哇!我們成功地讓不同分支可以讀到不同的環境配置了!接下來讓我們再更近一步,將不同環境的App 部署到不同的 App Store 項目中,使得我們可以在正式與測試環境中很自由的使用與測試。
進階-把環境分到不同的 App 中
我們將不同環境配置的項目,打包到不同的 App Store 項目中吧!
讓我們在建立一個AppStore App

然後再 Config 檔案中加入變數

這邊有一個要更注意的點,也是常常會出現的坑!
記得project.pbxproj內也要改

最後修改一下 Appfile

測試一下,可以發現替換成功

回到 AppStore 查看,確定Deploy成功

確認 Develop 分支下的包ID

確認 Master 分支下的包ID

快樂的 Testflight

哇,我們現在環境配置與建置已經非常完整了,App 中常常會加入 Firebase 來使用,是很棒的工具庫,那我要如何將Firebase也換環境呢?接下來就讓我們來達成他!

進階-Firebase 配置也可以分環境?

我們將進行 Firebase 配置檔案也可以分環境!
我們知道 firebase 都有一個設定檔案GoogleService-Info.plist
如果我想依照環境設置不同的設定檔案,該如何做?
設置 Firebase

##加入 iOS 應用程式

輸入基本資訊 Release 用

安裝 Pod

初始化 SDK

在建立一個 Staging 用

然後將下載下來的檔案,分別命名成
GoogleService-Info-Debug.plist
GoogleService-Info-Staging.plist
GoogleService-Info-Release.plist

最後來加一個腳本

腳本內容如下

如此一來,就會在編譯期間抓取需要的設定檔案,實現分離環境讀取 firebase 設定!
太棒了,連 firebase 都可以分環境了!太棒了,我們幾乎將所有實戰中遇到的問題都配置完成了!接下來讓我們看如何更完整,把 Slack 通知也一併的配置進來。
進階-Slack 通知
我們要目標是讓 ChatOps 活起來,如此一來團隊中每個成員都可以很好的知道目前 App 的動向。
最後讓我們加碼一下,把 slack 加入吧!
效果如下:

很簡單,我們需要修改 Fastfile,加入 slack插件,將slack url 替換成自己設置好的 webhook!就可以了

最後再加入我們的 Deploy中

最後我們來看一下訊息!

##總結
大功告成!到目前為止我們就完成了真正一個產品開發的環境管理,因為有變數的關係,理論上是所有服務都可以分環境的,FB SDK、Line SDK 等等,授權與認證完全可以用變數的方式取代,CI/CD也大大簡化了人工分環境的困擾與繁瑣的流程。也成功地引入 DevOps、 Code as Infrastructure 的精神


上一篇
【Day-13】我們是怎麼開始的?:一間傳統軟體公司從 0 開始建置的 DevOps 文化(實作篇)-iOS 平台(2)
下一篇
【Day-15】我們是怎麼開始的?:一間傳統軟體公司從 0 開始建置的 DevOps 文化(實作篇)- 後端(1)
系列文
從 0 到 1 的 DevOps 執行日記 - 全方位平台實踐手冊30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言