1. 程式人生 > >實踐技巧:簡單4步完成自動化構建釋出

實踐技巧:簡單4步完成自動化構建釋出

各位看官,這不是一個揭發單身有為青年因同事們天天秀恩愛而受到一萬點暴擊傷害的故事。這裡指的狗糧,不是真正的“狗糧”——當然,也不是你們認為的狗糧。

事實上,現在很多涉足產品開發的網際網路公司,都會提到“吃狗糧”這一概念(出自“Eating yourown dog food -- 吃你自家的狗糧”),它的意思是公司內部員工使用自己生產的產品進行日常工作。這麼做有什麼好處呢,比方說一家公司做美顏APP的,結果他們自己員工卻用某圖秀秀P圖,這產品對外怎麼可能具備說服力?如果堅持使用自家開發的APP,不僅能提升員工開發時的使命感、大眾使用此產品的信心,特別地,對於一些Bug的處理也會變得及時——員工發現Bug後會第一時間反饋,而使用者很可能就放棄使用了。

關於這點筆者是深有體會,早些年從事軟體服務外包時,發現交付給客戶的產品鮮有好用的,究其原因,是實現軟體的程式設計師們,未曾站到使用者的角度去思考。技術人員不作為使用者,不會明白他們所開發產品的價值。如果不明白其價值,又如何會將其打造得盡善盡美呢?

筆者參與優雲Automation產品開發之初,就竭力促成這款產品在優雲軟體日常工作使用中的落地,正所謂“狗糧吃得多,才能長得肥”!過去我們使用Jenkins等軟體進行Automation產品的構建釋出,優雲Automation的設計目標就是自動化運維的一切,那麼能不能將Jenkins所完成的工作用Automation來代替呢?想想應該是非常Easy的事情!

下面分享一下自己在公司吃狗糧的經歷,讓大家體會下這是一件多麼幸福的事情!要成功吃到狗糧,只需要以下幾步:

步驟一:定目標

首先設定吃狗糧的目標:使用Automation實現產品自身的自動化構建和釋出。然後規劃構建釋出過程,以便實現自動化。經過分析,整個構建和釋出過程大致分為更新程式碼、程式構建、端到端測試、打包釋出四個階段。

1)更新程式碼

這個很容易理解,就是將最新的程式碼從Git遠端倉庫Pull到本地。

2)程式構建

這個階段要實現Automation程式碼的前後端構建,我們使用Webpack和Maven來進行構建管理,所以這個階段只需執行幾行命令便可完成。

3)端到端測試

完成構建後,我們需要進行端到端的測試,驗證本次版本的正確性。這裡是吃狗糧的重點:使用最新構建出的系統來完成自動化測試,實現真正意義上的“自舉”!這樣充分保證新版本在一次真實的場景中執行的正確性和穩定性。

整個構建釋出過程的前部分使用老版本執行,當構建出新版本後自動更新自身系統,並用新版本執行後續任務,同時通過“端到端測試”對新版本系統進行介面和介面的自動化測試。整個過程只要有任務執行失敗,需要生成報告並通知相應人員進行處理。


4)打包釋出

優雲產品有統一的釋出倉庫,所以測試通過後需要按公司的要求生成釋出包上傳到釋出倉庫,比如某個釋出包類似uyun-automation-v2.1.5.tar.gz(此處版本號根據規則自動生成)。

步驟二:寫操作

在Automation產品設計中,操作是自動化的原力,支援輸入、輸出引數設計,所以操作是很容易被複用的。產品本身內建了很多面向各種DevOps場景常用的操作,也可以通過Python、Shell或批處理指令碼按需擴充套件操作能力。

經過第一步的分析得到整個過程可劃分為Git Pull、前端構建、後端構建、部署系統、重啟系統、端到端測試、生成釋出包和上傳發布包等操作。其中“端到端測試”操作實際上是呼叫了另外一個自動化測試的流程編排(概念後面會介紹)來實現。

自定義操作是非常容易的,下面以Git Pull為例說明,其他操作就不細表了,相信難不倒各位看官。


步驟三:編流程

有了自動化的原力之後,就要按我們的目標規劃將各個原力串接起來,做出我們的“狗糧”—自動化構建釋出流程編排。Automation提供了視覺化的編排設計器,支援編排引數設計,任務間支援輸入輸出引數引用,可設定任務執行完成後是否需要確認才繼續執行,所以能很容易編排出實現我們目標的自動化流程。

因整個系統包括前後端,所以複用Git Pull操作實現前後端程式碼的更新。我們來看看實現上述完整過程的編排長什麼樣:


“端到端測試”呼叫的是另外一個編排,該編排主要呼叫Selenium和Automation自身的API實現介面、介面的自動化測試,這裡就不詳表了。

步驟四:天天“吃狗糧”

點選儲存並測試,“狗糧”做好了,開吃!經過不到10分鐘,我們的作業便執行完畢:


構建併發布成功!如果構建失敗怎麼辦?不急,Automation可以生成錯誤報告並通過郵件或簡訊通知開發工程師解決後進行下一次自動化構建。根據優雲產品管理規定,設定編排每天定時執行,從此便每天過上快樂“吃狗糧”的生活。

自從吃上“狗糧”後,不再失眠了,因為每次構建都會進行自動化場景測試,有問題可以立即發現並修正,產品質量顯著提升,單身汪們可以有更多時間解決單身問題,拒絕別人喂的“狗糧”!

其實上面介紹的自動化構建場景,只是Automation強大功能的一小部分,這個產品特別適合各位DevOps達人,不知各位看到這裡,有沒有聯想到更多更棒的使用場景呢?先定他一個小目標,將您的應用構建和釋出自動化起來!歡迎試用優雲產品Automation。

作者簡介:竺夏棟

優雲軟體產品架構師

4年系統分析師,3年網際網路金融相關創業經歷

目前負責優雲運維自動化產品的架構設計