剛剛打得不見馬的
第一次在板上發文,看板規應該是可以發
如果有問題請告知刪文謝謝
本身有相當多的鬼故事,不過我想先解決問題
1.多程式版控
我們有一個版本庫,裡面包含了很多程式
而且是互相關聯的,也就是A程式要B程式先Build過,A程式才能compile
C程式也有可能跟B關聯,然後又多關聯一個D and so on
變成說,CI CD沒辦法去compile,因為沒有意義,也不會過
版本庫內又塞了一火車的exe跟dll
有趣的是,這些dll要手動放到主程式內才有功能,主程式又另外有一個版本庫
所以....這個版本庫的版控,跟主程式有可能不一樣...
而且主程式做的版控,根本看不出來dll有甚麼差異
你根本不知道誰更新了甚麼東西
我現在在想,是否可以用pipeline,去放到指定的路徑做更新
這樣就變成我不用去手動放,尤其主程式dll又沒辦法分辨差異
只是編譯就是由地端去做
鬼故事是,這個主程式其實有三個
然後根據前輩所言,這三個的dll其實都有差異....
2.自動化部屬
我們目前主程式的部屬方法,是使用一個部屬清單.txt
要上線前,工程師們會更新此上線清單,並且寫入相對應位置
pipeline會去抓取該清單,然後將相對應的程式放進去更新
問題來了,如果沒寫進清單的程式,就不會部屬
也就是說,版本庫跟在線上跑的程式,有可能是不同東西
有可能下次上線,你會把別人更新的未知程式丟上去....
我嘗試使用git diff跟當前上線origin/master做差異比對
分支使用該pipeline,可以把有做變更的程式給部屬上去
會這樣做的原因,是因為咱版控老大,說我不能全部程式更新
鬼故事來了,因為上線程式跟我們的版控可能有差異
所以我做了這樣的嘗試,這樣操作會有甚麼額外問題要注意的?
額外的鬼故事,我們平常的測試環境
我用了這種方式去部屬,然後被人靠腰後才發現我把別人程式蓋掉
因為他們會去server端把程式拿出來做比對,再把程式手動放進去
所以我用測試分支搭配此pipeline去部屬我的程式,會抓不到別人更新的內容而蓋掉....
前輩說我不能這樣破壞別人的程式,每一次要放進測試環境都要比對
我哪來那鬼功夫每次做這種事情
然後我真的覺得寫部屬清單實在有夠白癡,真的白癡到個無極限
因為工程師有可能忘記放進去自己的更新
但是我前輩卻堅持一定要用這個,不然會部屬錯程式zzzz
我說你這樣不是會讓沒有上線的程式,進入上線程式的版控嗎?
他說部屬清單沒有,沒事
所以我甚至還寫一隻Powershell程式,來把該次上線變更內容條列出來
我實在無法接受使用部屬清單上線..
3.平行上線分支的開發方式
我們只有一個準備上線環境,搭配QA測試會有時間差
這周QA測試上線一版,下周上線另一版,可是第三周才會把第一周的把程式上線
也就是說,這個環境同時會有兩個上線分支
但是,因為測試會搭配BUG修正
兩個分支會互相干涉,尤其同支程式
搭配上我們同仁們,還會用複製資料夾的方式來備份
併來併去併成鬼樣,可以怎麼改善?
以上
來聊一點鬼故事
我們的dll版本庫,總共有3個主程式,然後據說3個版本皆不相同
程式部屬一定要使用部屬清單,不然會怕部錯程式,可是沒部屬到的可以手動丟進去
無法退版,尤其多人同時開發一支程式更困難,所以我們會有上線失敗問題
(目前發生會採裝死趕快bug fix的方式)
我的想法是,開發給QA的測試分支DEV,跟實質上線分支應該要分開
確認開發完成,工程師再分別併入上線分支
任何一人的有問題,則revert該次合併commit即可
但是我前輩一直保證會有人開發不該上線的程式,所以不能自動部屬
即使我說了,工程師怎麼會放進不該上線的程式,PR的人怎麼會讓他併進去
還是被要求一定要去寫一支永遠都會有衝突的部屬清單
而且每一次上線負責人都要去一個一個人問,因為部屬清單無法辨別負責人
某些層面上,我真的覺得我們的程式還能動是奇蹟
我們單位上,100%的前輩不懂git
我是轉行過來的,本來也不懂,所以我花了點時間學
程式寫得好不好再說,這種基本功....
然後進來大公司後.....
是我的問題,還是我該逃命,我很努力跟主管提需求跟修改計畫...
實在力不從心
感謝你各位看這麼多