[討論] 公司內部版控

作者: TurtleGods (我是頭長長的蛇龜)   2024-12-29 00:03:08
剛剛打得不見馬的

第一次在板上發文,看板規應該是可以發

如果有問題請告知刪文謝謝


本身有相當多的鬼故事,不過我想先解決問題


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

我是轉行過來的,本來也不懂,所以我花了點時間學

程式寫得好不好再說,這種基本功....

然後進來大公司後.....

是我的問題,還是我該逃命,我很努力跟主管提需求跟修改計畫...

實在力不從心



感謝你各位看這麼多
作者: f26724309 (番薯)   2024-12-29 00:15:00
找下間 你領多少幫公司操心這個
作者: nh60211as   2024-12-29 00:25:00
同意樓上,然後第二點看起來你們實際上只有一個測試環境,所以你不應該使用自動化部署蓋掉別人的改動。
作者: ntpuisbest (阿龍)   2024-12-29 00:26:00
你也在金融業嗎?
作者: BlacksPig (Black Handsome s Pig)   2024-12-29 00:30:00
dimension版控系統?你要在既有設計的系統與版控下去透過其他方式解決,有可能增加其他人不能接受的複雜度。根解就是系統跟版控重構解耦或是快逃(認真)
作者: nh60211as   2024-12-29 00:37:00
真的想解決這個問題的話就要思考怎麼把你希望的解決方法帶進開發流程,都是老實講你有這個想要改善的想法把他帶去更好的公司應該對你更有幫助
作者: asdfghjklasd (好累的大一生活)   2024-12-29 00:38:00
不能合併?
作者: viper9709 (阿達)   2024-12-29 00:40:00
滿有意思的~不過真的推不動也只能找下間+1
作者: neo5277 (I am an agent of chaos)   2024-12-29 00:55:00
也太亂了吧.....要解決1就是重新拆分程式組件化可以輕鬆很多妳所有難題都是從1來的git 有sub module 整理完程式之後好好規劃這部分起碼可以解決過度相依的問題...DLL要變更就是他自己的板控,這樣就不會有版本問題前面這塊確定,這樣後面佈署也不會是問題CICD可以指定檔案複製去任一資料夾就只是看要選哪套自動化的組合而已
作者: yoyo890121   2024-12-29 01:12:00
沒有主管支持就是快逃
作者: zys (水肥大隊)   2024-12-29 01:18:00
傻眼耶 原來真的有公司的CI/CD是這樣搞的 難以想像 你們是用Jenkins嗎
作者: andrew5106 (撿到一百塊雷~)   2024-12-29 01:57:00
有想朝devops發展可以試試,沒有的話別碰,到時候有問題都算你的,沒問題還是你的這種永遠都不是技術問題,每次都是人的問題,一些垃圾方法提解決方案還被說幹嘛那麼麻煩就很想給他巴下去==
作者: neo5277 (I am an agent of chaos)   2024-12-29 02:09:00
有逃命的選項也是可以直接逃啦
作者: saladim (殺拉頂)   2024-12-29 02:37:00
其實這不一定是用哪種tool的問題 是release flow的問題flow沒先大家談好 科技幫不了你們 就是你們是每分每秒都想上patch/code change, 也只能談好update pipeline的時間點跟各個lib的版本 沒有那麼簡單也不是用某某tool就OK
作者: legnaleurc (CA)   2024-12-29 02:48:00
主管都沒差你幫他們操什麼心,省點力找下一間比較實際
作者: ssccg (23)   2024-12-29 03:49:00
版控不是只有程式碼版控,建置產出的程式也要版控啊A依賴B沒問題啊,A建置時去拉指定版本的B產出的程式exe和dll也一樣,全部進到同一個產出程式的版控裡啊你們問題看起來就是程式碼到執行環境間少了一個repository
作者: nacy204327 (♥~超可愛✡小南C~♥)   2024-12-29 04:38:00
找下家 改了你也不會加分 改差了黑鍋就是你 說得動主管才是重點 沒人挺你妄想改變公司什麼太難了 我懂 台灣一堆毒瘤技術前輩只是因為老不是因為技術好 又在公司時間跟三葉蟲一樣久 久了就越來越沒動力幫公司優化什麼上版流程 優化自己履歷還差不多「這只有你會用」你要嗆回去啊 你們不會嗎?不會要學啊 這有很難嗎?現在99%工程師都在用的東西不學?公司讓你來工作是來說「我不會」的嗎?然後隔天跟主管說要離職XD
作者: mozume (米蟲)   2024-12-29 06:42:00
我開始懷疑你跟我同公司,你家系統應該歷史很古老,超過三十年,中間接手過很多人,現在負責人已經是n手也改不動,你家cicd不會是azure吧XD
作者: airtsubasa (偽學姊)   2024-12-29 08:02:00
這是政治問題 你是新人嗎?是的話 嗯 不是的話,等你有權有勢再做
作者: B0988698088 (廢文少女小円♥)   2024-12-29 09:08:00
這是政治問題 不是你問到什麼比較好的做法去講講課他們就會聽你的 大家出來都混口飯吃而已 憂國憂民不如管好你自己
作者: schemer (珍惜每分每秒)   2024-12-29 09:24:00
聽起來很像應該要有套件管理,但是變成手動在做?不是很確定貴公司用的框架,以Java來說,各自的程式庫jar會有獨立repo,也有自己獨立的release cycle。反正就各自build ,放到nexus server就好,主程式或是有相依的程式庫,需要就更新自己的pom檔,類似的邏輯應該很多框架都會有吧?
作者: wulouise (在線上!=在電腦前)   2024-12-29 09:46:00
mono repo然後全部cicd重新compile 不然就快逃
作者: flylover (Where's my time)   2024-12-29 10:12:00
軟體只要能動就不要去改它,舊架構再爛也不要去亂動它,公司要的是軟體繼續改版賣錢,不會在意技術上改的多好或多爛
作者: stepnight (桃卡武康)   2024-12-29 10:12:00
這是人的問題,沒救,等你位置比他高才有可能改變,我上一間也87%像手動部署、版控亂七八糟,所以我逃了
作者: flylover (Where's my time)   2024-12-29 10:13:00
全力改好也沒人懂,改後出的所有 bug 全算在你頭上,誰扛的起?
作者: Sayter   2024-12-29 10:14:00
maybe monorepo + bazel,common libs 可以寫一個 buildrule,只是大家版本要先一致
作者: stepnight (桃卡武康)   2024-12-29 10:17:00
另外這種職場有毒,新人進去陣痛期很長受不了的、看不下去、有能力的都會早早走了留下來的多半是走不動、或變成這形狀的人有點劣幣驅逐良幣了,勸你快逃
作者: Bencrie   2024-12-29 10:19:00
這麼不爽還不跳一定是給的錢太多了 XD
作者: Ekmund (是一隻小叔)   2024-12-29 10:27:00
不知道是你家量體太大還怎樣 我怎麼覺得聽起來正常...那些相依的proj 其實跟你用開源套件 甚至語言及平台本身支援的版本是一個概念 只是不是你在控 所以你不覺得有異因為通常只要保證向下相容就好 大部分情況皆會啦也沒必要每次build就從相依根源開始 所以拆成主體+dll各有各的repo的形式也可以理解 全看上層proj的owner決定有沒有必要隨時跟進 所以說起來這還真不是單一RD能解的畢竟要做mono repo 還得看什麼角度下去切分layer/domain/BU...what ever感覺只能找人一起向上提 讓各leader關一間後 2也會解決XD通常這種問題要說服不能用開發角度 要用管理成本才講得通但你有多硬 以及領的錢值不值得花這個effort 就看你啦我是覺得你家東西看來明顯需要decouple跟加一些中間規則就算用了你的做法還是會整天進進退退 跑這就飽了所以你跑比較快 嗯
作者: lylu (理路)   2024-12-29 11:10:00
真的要推就自己搞一套獨立環境跟其他人分開跟上頭說是備援用的 等到哪天原本的爆炸就可以拿出來邀功了 但等於是要多花心力做這事
作者: shockrabbit (baDraBbit)   2024-12-29 11:13:00
這個制度已經運行多年,很難以一己之力去撼動。
作者: sniper2824 (月夜)   2024-12-29 11:14:00
趕快去找下一間比較實在==
作者: a740125 (哈哈)   2024-12-29 11:15:00
整個看下來 就是快逃阿
作者: simon1203 (o4)   2024-12-29 11:19:00
主管不支持==沒戲唱,我也懂你整天被逼著吃屎的心情,只能說快逃,不要讓自己習慣吃屎除非他錢給得夠多
作者: Arbin (路人_Lv菜逼八)   2024-12-29 11:20:00
我自己現在就是在搞獨立環境 從Git-SVN開始 甚至想搞本地CI/CD 因為我也知道開發習慣這件事真的很難改==但是我公司都還沒到你公司那麼大便就是了 頂多甲方有改東西不跟我們講 自己長出東西部署又有問題 公司還要想辦法甩鍋
作者: miloisgood (milo)   2024-12-29 11:34:00
金融業+1
作者: superpandal   2024-12-29 11:39:00
你就管好你自己負責的就可以了 自己負責的東西有要上線再丟清單就好順帶調低自己開發的步調半養老
作者: Dommgifer (Dommgifer)   2024-12-29 11:50:00
你不用操心 你操心就會是你處理 然後不會有人感謝你
作者: superpandal   2024-12-29 11:52:00
只要沒有其它痛點是可遇不可求的職位可以有多的時間去沉澱去思考其它的東西以逸待勞 以靜制動什麼都要你主動的那才叫恐怖 累死你有多主管很不盡責的 講少少要你自己去釐清一堆東西那有沒有主管有差嗎
作者: abc0922001 (中士abc)   2024-12-29 12:25:00
真恐怖XD
作者: superpandal   2024-12-29 12:26:00
有些還會緊急時含糊其詞拖你進度 當然慢下來可以 但
作者: abc0922001 (中士abc)   2024-12-29 12:26:00
資深的不會想學新東西啦,不會用也不想會用
作者: acgotaku (otaku)   2024-12-29 13:45:00
沒出事就不要多事,感覺你們也算維護現有服務為主的單位只是為了看不順眼版控去更動結果服務爆掉 上面怎麼看這單位? pip人頭可能給你們多塞幾個版控最主要目的還是眾人協作的共識,不是非業界普遍操作或是你看不順眼的操作就是需要推翻的,主要是部門內共識我自己去支援別部門開發產品也是尊重他們原有開發共識就算看不順眼也不會去做什麼更改
作者: cancelpc (阿吉)   2024-12-29 14:37:00
以前我在軟體公司當RD,SD,SE,..每次要推這些都很難後來在營業單位當IT,全都沒權限下,還是有辦法弄離線省下自己的時間,反正系統全外包,有事沒事都當我的事反正待業務單位,完全失去資訊/情報/執行/等等能力一個銷售單位只能玩玩簡單的excel,完全搞不懂為何賣得好為何賣的差,也難搞行銷專案,光法遵就無力應付
作者: aass5576843 (anass449)   2024-12-29 15:20:00
看起來你很心在公司持續發展,但要聽一個新人的老一輩不會服的,這是人性
作者: holmes2136 (holmes)   2024-12-29 15:37:00
八成是金融業
作者: ghost90331 (Yang)   2024-12-29 18:15:00
其他的點還好說,第一點…..
作者: tsaigi (菜雞)   2024-12-29 18:55:00
啥啦 你很閒是不是…
作者: AxelGod (Axel)   2024-12-29 19:00:00
你該跳槽了
作者: holmes2136 (holmes)   2024-12-29 19:21:00
在這種比較政治的委由顧問第三方來做也是可以考慮的
作者: w107 (么洞拐)   2024-12-29 23:58:00
這種東西感覺也在敝司裡發生…
作者: viper9709 (阿達)   2024-12-30 00:17:00
請你去煮一盤大便,然後問你大便怎麼煮的這麼難吃+1明明是上面說要做的,然後再來問你怎麼做這麼爛...
作者: lk2986706we   2024-12-30 07:11:00
如果你的職等比別人低 不要想太多 如果一樣 可以力求表現 不是技術導向的文化 很難改變
作者: DrTech (竹科管理處網軍研發人員)   2024-12-30 08:08:00
git很好。但不是所有環境都"必須"要用git。而且這篇的問題看起來不在版本控制工具,而是在溝通或流程本來就不順。流程順了用不用git沒差。流程不順,你用git也沒意義。
作者: idok (idok)   2024-12-30 08:56:00
我也覺得不必為了用而用 如果現在開發流程 大家都覺得很棒你說服不了別人 只有你覺得不棒那這種情況 是你不適合這個團隊 你應該找個適合你的地方如果你很在意技術 很在意軟體工程 你應該去重視這些的團隊繼續在這裡 只是消耗自己 遲早憂鬱症 我過來人 供你參考
作者: ericthree (如果 她這樣動人)   2024-12-30 09:14:00
作者: kyoe (緣份‧不再)   2024-12-30 10:12:00
都還是新人,甚麼公司的流程架構簡單到還是新人就能熟悉透然後自以為可以去修改整個架構?每個新人進來都說XXX好用,多的是導一半離職或直接失敗的,在還沒真正深入了解之前,先跟隨團隊既有的模式去熟悉了解,再來談改善架構吧當你覺得老人都頑固不想改變的時候,也要想一下老人是不是也
作者: cdy815 (扉)   2024-12-30 10:23:00
聽起來有些人連基礎的commit都有問題,所以不用太操心,該跑就跑
作者: luluking (luluking)   2024-12-30 11:40:00
認真回 感覺很簡單就可以完成
作者: jack0204 (Jarbar王朝)   2024-12-30 12:19:00
這就是為什麼很多公司想做DevOps做不起來或很不順的原因
作者: APTON (瑋瑋)   2024-12-30 12:21:00
關於dll的部分,可以考慮始自建nuget server
作者: fatb (胖逼=口=)   2024-12-30 16:10:00
流程本來就是公司有power話語權的人在推 這沒什麼 你去別家有話語權後人家也是聽你的蓋別人code是職場大忌 所以上傳完我都會再檢查一次工作不是自己做好就好 團隊也是一部份 不舒服就離開這樣而已
作者: labbat (labbat)   2024-12-30 21:11:00
我不知道你怎檢蓋查code的,但只要善用git --git-dir和git --work-tree,連沒有git的專案我都能生版本管理出來然後比沒有git更慘烈的狀況是兩個用git的各自堅持merge看到新的就fetch,沒衝突就merge有衝突就rebase爽爽
作者: twolight (兩兩兩兩光)   2024-12-30 21:51:00
這是flow的問題flow的問題就是政治問題
作者: DrTech (竹科管理處網軍研發人員)   2024-12-31 08:11:00
我還是看不太懂這跟有沒有用git有什麼關係。大家code不同版本可以搞到不兼容,蓋掉就不能用,首先我會想到的是:沒人訂整合的規格與流程嗎? 沒人訂,你用了git,也是到處衝突,還要不斷的改衝突,不斷的看別人改什麼,真的並沒有比較好。有人訂了軟體規格與流程,用不用got沒差,反正模組間的介面規定訂好都兼容就好。git認同版本要控制與管理,但真的不一定用git就能解決問題。流程比git重要太多了。程式碼內容大家有版本差異也是,流程不改,持續用git到處比對,根本不能解決問題。訂個流程與規格才能解決。用不用git跟本不是問題。git工具很好,沒否認。但流程與規格更重要
作者: GoalBased (Artificail Intelligence)   2024-12-31 11:03:00
提出問題,拿出解決方案,推銷你的方案,落地。你寫的太亂了,所以沒有細看,但我猜你應該是有發現問題,但沒辦法拿出一個適合你們公司的解決方案
作者: gino0717 (gino0717)   2024-12-31 14:09:00
我以前遇過每次上版把所有人的code覆蓋掉的臭老頭後來他先不爽我們自己跑掉了 南無阿彌陀佛
作者: viper9709 (阿達)   2023-01-01 00:38:00
推流程比較重要+1~雖然新人可能不太能改這個...
作者: MonyemLi (life)   2023-01-01 15:40:00
年青都會覺得能抗,掌權很孬,都這樣過來的,但其實能扛什麼,能扛就不會不能做主。準備好完整方案,持續溝通,連這種信心度爆棚的都難溝通,之後信心度不高的怎麼溝通。離職或跟隨也選項。
作者: GoalBased (Artificail Intelligence)   2023-01-01 21:30:00
你可以有情緒推動不了就換公司呀,也可以排除所有障礙去達成,沒有哪一個比較好,但陷在情緒裡面對你自己沒有幫助
作者: GiPaPa (揪濘)   2023-01-02 16:02:00
拜託不要再花時間腦力去把這坨大便改善了 準備履歷優先照前輩的流程走 不要有意見 但做好不久留的心理準備
作者: Litfal (Litfal)   2023-01-02 16:15:00
建議你,找到好方法去檢查或處理你自己認為大便的事情,節省自己花在維護上的時間,其他人就別管了

Links booklink

Contact Us: admin [ a t ] ucptt.com