跳到主要內容

[DevOps] 持續集成、持續交付、持續部屬(CI/CD)的開發流程實作

DevOps可以稱為一種工作文化,主要在實現一種將專案從開發、到測試、再到發佈產品的整個流程自動化、透明化的概念。讓開發人員和品管、測試人員之間無隔閡的一種開發理念。

要實現這樣的理念,就要有許多的工具進行整合,將整個專案的每個步驟串接起來。以下說明目前透過ASP.NET的專案進行的DevOps實作:

上圖為已經實作的DevOps架構,透過Jenkins為主的自動化佈建工具,將專案從開發、到測試、再到發佈產品的整個流程。

由上圖可看到開發人員(Developer)將各自開發更新的程式碼上傳git server (ex. GitHub)後,由於Jenkins已在GitHub帳號嵌入webhook,因此每當GitHub發生更新事件,就會通知Jenkins進行第一步:Download source code from github

Jenkins從GitHub下載最新的程式碼後進行第二步:Build source code 。此處依據專案的程式碼語言需在Jenkins中設定相對應的編譯環境。以ASP.NET Core為例,需要在Jenkins中安裝設定nuget,使Jenkins在編譯程式碼時下載相關的第三方程式庫。
而依據不同的程式碼語言,開發人員須自行開發單元測試(Unit test),在Jenkins中可設定執行Unit test程式碼以進行第三步:Unit test function

第四步:Source code detection ,主要是對程式碼進行bug檢測、安全性掃描、程式邏輯檢查。主要透過SonarQube進行,完成檢測後產生網頁報表、Log紀錄。

第五步:Deliver and deploy to target place。在前四步都通過後,將最後的binary file和相關的產出檔案搬移至目標機台上,甚至是直接更新部屬並運行。

PS. 
- 有問題或錯誤即停止動作並透過通訊媒介(ex. Teams, e-Mail)通知相關人員。
- 1~4步屬於CI,第5步屬於CD。
- 一般來說進行完CI步驟後通知主要把關人員,確認無誤後再進行CD。

建構的步驟依序如下:

[DevOps] 實作軟體CI/CD運行架構 - CI part
https://programmingyourlife.blogspot.com/2020/05/devops-cicd-ci-part.html

[DevOps] 實作軟體CI/CD運行架構 - ASP.NET Core test unit 單元測試
https://programmingyourlife.blogspot.com/2020/05/devops-cicd-aspnet-core-test-unit.html

[DevOps] Sonarqube程式碼檢測,環境建置
https://programmingyourlife.blogspot.com/2020/06/devops-sonarqube.html

[DevOps] Sonarqube程式碼檢測在Jenkins介面中自動執行
https://programmingyourlife.blogspot.com/2020/06/devops-sonarqubejenkins.html

[DevOps] 實作軟體CI/CD運行架構 - CD part
https://programmingyourlife.blogspot.com/2020/05/devops-cicd-cd-part.html

留言

這個網誌中的熱門文章

[Python] 管理多個執行緒(thread)的運作與結束

在開發應用程式中,幾乎所有的專案都會用到thread,不同的程式語言有不同˙的叫用方法,但都大同小異。Thread的使用上最重要的不是在產生一個thread,而是如何結束一個thread,或是如何結束好幾個threads,以下介紹在Python中如何叫用並管理一或多個thread: 一般來說,create thread如下: def job(): while 1: print("Child thread:", i) time.sleep(1) #In main code thread = threading.Thread.__init__(job) thread.start() 這樣可以開始一個thread執行job()中的動作,但若job中的迴圈是如上範例的無限迴圈,必須要加上能讓其退出的機制: stopped = 0 def job(): global stopped while stopped == 0: print("Child thread:", i) time.sleep(1) #In main code thread = threading.Thread.__init__(job) thread.start() 這樣在主程序先將stopped設成1,再調用 thread.join() 就可以將thread完整關閉並釋放記憶體空間。 多執行續的處理: 基於這樣的方式,下面是進化版本,創建一個thread專用的class,並同時處理多個thread的執行與結束: class EventHandleThread (threading.Thread): def __init__(self, fun, name): threading.Thread.__init__(self) self.name = name self.fun = fun self.stopped = [0] def run(self): self.fun(self.name, self.stopped) print ("Exiting "

[Python] 將程式設定為全螢幕顯示(full screen)和永遠在最前景、最上層(topmost)

這裡以創建一個tkinter 的 Application物件為例 EX: app = Application() app.master.title("WaferCheckApp") app.master.geometry("1100x720") 將UI顯示在最上層: app.master.attributes('-topmost', True) 將UI以全螢幕顯示: app.master.attributes('-fullscreen', True)

[Python] 以.py檔案產生Windows EXE 執行檔

如何開發能在Windows下執行的Python程式?你當然可以在Windows下安裝Python之後用command line運行你的 .py source code來直接執行程式,但是這方法基本上只適合開發中的程式,或是自己寫好玩只在自己的PC上執行的程式,也許適用。 但若你的需求是要在每個Windows的OS下都可以執行、且是不公開程式碼的,那就必須要將你的 .py source code包裝成EXE執行檔了,下面就介紹如何進行: –下載 auto-py-to-exe-master https://github.com/brentvollebregt/auto-py-to-exe 1. 解壓縮auto-py-to-exe-master.zip到想要的路徑下(路徑不能有空格或".") 2. 開啟Cmd console 到auto-py-to-exe-master路徑下 3. 在console下執行"pip install -r requirements.txt" 4. 在console下執行"python run.py" 運行完畢後就可以選取你要轉成執行檔的 .py 檔案,進行製作。 可參考下面的影片: 產生出來的檔案包含執行檔與其程式中會用到的相關Lib檔案,所以要將整個output資料夾中的檔案一併提取出來 (不要只拿執行檔出來)。 如此你就可以在任意的Windows上執行你的程式了。