跳到主要內容

[DevOps] 實作軟體CI/CD運行架構 - CI part

DevOps觀念中一項很重要的環節就是要有自動化的CI/CD流程,而最常被用來實作CI/CD的tool就是Jenkins,以下說明如何一步步透過Jenkins建立CI/CD流程。

我們將實作分成CI和CD兩個階段,在CI的部分中我們先實作目標為"當有新的source code就觸發自動build code,並紀錄回傳結果"。

實作步驟如下:

1. 將source code上傳至Github
2. 安裝Jenkins
3. 新增工作,設定Jenkins (Github, Nuget, MSBuild)
4. Message inform
5. 設定"當有新的source code就觸發自動build code"

1. 將source code上傳至Github
    先申請一個Github帳號,開一個新的project,上傳你的source code (此處以ASP.NET Core MVC開發)

2. 安裝Jenkins
    請參考連結:
    https://dotblogs.com.tw/stanley14/2018/05/27/Jenkins_install

    Jenkins的套件很容易安裝失敗,有時要重安裝幾次才會成功,也可以之後要用到再安裝。所以如果真的安裝不上去就先跳過安裝即可。

3. 新增工作,設定Jenkins (Github, Nuget, MSBuild)
    請參考連結:
 
    a. 設定Nuget, MSBuild
    https://ithelp.ithome.com.tw/articles/10211030

    - 安裝Visual Studio 2017 Enterprise (DevOps)
    - MSBuild的設定如下:(設定MSBuild15即可)

路徑:C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\MSBuild.exe

    - Nuget的執行檔下載後放至"C:\nuget\"下,並加入至環境變數中。設定完成後請瀏覽器執行URL:"(jenkins_url)/restart ",讓Jenkins重新啟動

    b. 設定Git source code control (Github)
    https://bryanyu.github.io/2018/01/07/Jenkins04/

    c. 新增工作,設定Jenkins (Github, Nuget, MSBuild)
    https://bryanyu.github.io/2018/01/07/Jenkins06/



4. Message inform

    a. Gmail
  https://medium.com/@kuanweilin/%E8%87%AA%E5%8B%95%E5%8C%96%E5%B7%A5%E7%A8%8B%E5%B8%AB%E4%B9%8B%E8%B7%AF-jenkins%E7%9A%84%E8%A8%AD%E5%AE%9A%E8%88%87%E5%AF%A6%E4%BD%9C-9708fe664d08

    實測google的gmail會阻擋,需調整gmail安全層級設定。

    b. Microsoft Teams
    設定訊息通知傳送到Teams頻道上:
    https://dotblogs.com.tw/stanley14/2018/08/04/Jenkins_O365_MSTeams

5. 設定"當有新的source code就觸發自動build code"

    設定github的webhook:
    https://medium.com/faun/triggering-jenkins-build-on-push-using-github-webhooks-52d4361542d4

設定webhook時要提供Jenkins的連線網址,可用ngrok產生一個public網址,如下:

由於我們現在是將 Jenkins 運行在本機端,所以 Jenkins URL 是 http://localhost:8080。然而,GitHub 並不知道誰是 localhost,為了練習,我們可以透過 ngrok 這套簡單的小工具來暫時將 localhost:8080 推送到網路上。ngrok 的使用方式非常簡單,只要將檔案下載下來後,透過 command line 切換到下載目錄,並執行:
$ ./ngrok http 8080
應該就可以看到類似以下畫面: 
其中 http://c84557ae.ngrok.io 就是我們這次將 localhost:8080 推送網路上的網址。



到此就完成設定,可以上傳source code至github project看看Jenkins是否有執行編譯。



留言

這個網誌中的熱門文章

[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上執行你的程式了。