您好,小弟是負責硬體與網路的MIS,最近公司導入了Github 作為程式版本控管,最後寫程式的部門(簡稱為RD)要求我們要在線上(正式)環境,直接下達 git 指令來更新程式碼。
小弟想請教各位大大的是,你們有人(公司)是這樣運作的嗎?
小弟先情境說明一下,1.小弟的程式環境OS都是Linux 2.程式都是晚間10點才進行佈署
所以小弟我都是用 Linux Script 來協助我佈署程式,不是人在晚間10才在電腦前下指令佈署。
因為RD再教我們操作的時候,都會碰到要更新的程序遇到衝突,所以要進行一連串的指令與檔案調整。衝突的原因是程式裡的其中一個設定檔,會有資料庫的帳號密碼,而這個帳號密碼不是正式環境的,正式的資料庫帳號密碼也不會給開發人員知道,因此這個設定檔,就一定會衝突。當然也不保證會不會有其他的檔案衝突。
如果有大大是直接在線上環境直接下達git 指令,能否提供一些說明,針對剛剛說的衝突,可以有一個指令可以處理,也許小弟就可以透過Script來自動化佈署,或,這一定要人為介入,可能無法自動化達成?
其實你們應該要把個別設定檔另外處理而不是放置於repositories(以下用repo簡稱)中
會用到git做最新版本發布,實做上都是RD寫好一組(個)功能,經過測試以後,才會發布至正式環境
也就是:
應該更新的是僅有功能的repo,而包含在repo中的預設組態檔是為了在建置新環境的第一步所放置的。
每個公司的處裡流程不同,但盡量標準化會比較好
這裡標準化的可以分為,常態變動與固定設置
p.s. 千萬千萬不要把任何的帳號密碼金鑰放到repo中,因為你不知道會在什麼請況下讓這些資訊外流,尤其是放到公開的repo
先說之前開發的模式
基本上我們會開兩個站台
一個測試站台(內部)跟正式站台
然後每個工程師都可以push,但是重點是push完成之後必須發通知給gitlab管理者進行合併到測試站台
如在合併的時候有衝突就必須通知push開發者解衝突(就看是誰發布的)
然後正是站台固定時間在pull gitlab 更新
大致上做法就是這樣
畢竟應該沒有一個笨蛋單位為了開發方便直接把東西上去到正式站台吧