發表文章

Azure DevOps in Action - 透過Trigger實現CI

圖片
在 上一篇 ,我們介紹過如何建立Build Pipeline,完成自動化的建置之後,我們接著要來看如何透過Build Process中的Trigger實現CI(Continuous Integration)。 也就是說,我們要讓雲端上的CI Build Pipeline在有任何程式碼被簽入(異動)的時候,自動運行雲端的Build 我們來修改一下上面這段程式,讓CI Build可以正確地完成Pipeline中的每一個tasks。 但在開啟Visual Studio 2019進行程式碼修改之前,我們先在Pipeline上做一件事情,請點選下圖的Edit切換到Pipeline設計畫面: 進入到設計畫面之後,請在Triggers分頁,勾選『enable continuous integration』: 請留意上圖中的A選項,這意味著, 若source code所在的repo中,master分支上的code有所異動時(不管是直接修改或是透過PR修改),就會自動觸發這個Pipeline進行自動建置 ,這就是所謂的CI(continuous integration)。 設計完成之後,這次我們只需要選擇Save,暫時先不queue一個執行個體(instance): 因為我們要讓你體驗看看CI Build的威力,待會讓CI機制幫我們自動觸發Build Process。 請依照上圖儲存完之後,回到你用戶端剛才Visual Studio 2019開啟的專案(如果你不想使用Visual Studio 2019,其實也可以用Azure DevOps內建的Web UI,這部分我們日後介紹),我們把關鍵程式碼(\WebBMI\HealthMgr\BmiCalculator.cs)從int改成float: 完成後,我們透過Git工具將程式碼同步到伺服器端: 當同步完成後,我們可以切換到Azure DevOps管理站台,你會發現由於我們修改了master分支上的程式碼,雲端的Pipeline CI Build被自動觸發了: 同時,由於我們把程式碼改成正確的了,因此Unit Test順利過關: 整個CI Build自動完成了。 到這邊,我們可以看到幾個結論: Pipeline可以在雲端對專案作自動化的建置。 如果將Pipeline的Trigger設定...

Azure DevOps in Action - 建立.net core專案的Build Pipeline

圖片
好,接著我們來看 .net core 應用程式的CI Build。 .net core應用程式的建置環境和傳統 .net framework 有所不同,主要是因為 .net core是跨平台開發技術,你根本可以在 Linux環境上對程式碼進行Build的動作,從頭到尾都無須採用Windows環境。 如果是開發網站,也不需要IIS,直接佈署到Linux伺服器上即可(這個我們後面講CD的時候提)。 我們先來看底下這個Github上的範例: https://github.com/isdaviddong/dotNetCoreBMISample.git 這個範例跟前面 .net framework的範例幾乎一樣,只是以 .net core的Razor Page形式開發。 我們運行起來: 整體功能和先前 .net framework版本完全相同,程式碼結構也相同,唯一的差異就是這個版本是 .net core 3.1開發的。 你可以建立一個新的Azure DevOps Project,並且依照先前介紹過的方法將Github上的程式碼匯入,完成後,應當會看到類似底下這樣: 接著,我們來嘗試建立這個repo的CI Build: 前面的動作都一樣,請留意選擇的Repository別選錯了,按下Continue之後,重點來了,在選擇專案範本的時候,你可以在下圖1的地方,輸入『.net core』作為過濾的關鍵字: 然後在出現的範本中, 選擇上圖A的ASP.NET Core。 你可能會納悶有兩個選項(另一個是上圖B),原則上兩個都可以, 因為.net core是跨平台開發技術,你可以選擇用Windows或非Windows環境進行Builld,我們選擇上圖A的Ubuntu環境。 接著,會看到該範本中的Tasks大致如下: 你先不用做額外的設定,請直接點選上圖1的Save & queue,系統將會用此範本跑一個Build的執行個體: 請留意上圖中的Agent是ubuntu 16.04。 建置的動作你會發現明顯比Windows環境來的快速很多,很快的整個Build就運行完畢了: 這個.net core版本的程式一樣有運行Unit Test,但我們並沒有故意留下bug,因此建置的過程應該會十分順利。筆者寫稿時雲端的Ubuntu環境上的 ...

Azure DevOps in Action - 建立你的第一個Build Pipeline

圖片
當開始邁向CI(continuous integration),我們第一個要實現的任務是,以雲端(伺服器端)的環境為準,來進行系統的開發、建置、佈署、與測試。 在過去(仿佛是上個世紀以前了),開發人員可能是以某一台個人開發環境的電腦為準,在多人開發協作之後,把程式碼集中在這台電腦上,進行最終的建置與測試。 但當我們導入了版控系統(像是Git)之後,即便多人同時開發、修改、增添新功能,甚至嘗試一些特殊調整。但在伺服器端,應該總是保持著一套最穩定的版本,可能是Master分支、或是Release分支(選擇分支的策略由團隊決定),這是之前我們討論版控時候的最終目標與CI的基礎。 當有了這個基礎之後,我們可以建立一個自動化建置的流程,一般稱之為CI Pipeline。由於使用不同的開發語言(或框架),可能會有著不同的建置流程,因此我們接著會逐步來看,在不同的開發技術下,CI Pepiline的設計方式。 建立 .net framework 專案的Build Pipeline 我們先來看基本的 .net framework專案,如果要練習,你可以建立一個新的Azure DevOps專案,並且在Repos處Clone/Import我們底下這個在GitHub上的程式碼。 https://github.com/isdaviddong/dotNetFxBMISample.git 這是筆者在github上的範例,是一個傳統的 .net framework MVC Web專案(後面我們會在介紹 .net core的做法),功能是實現一個計算BMI的Web應用程式。 你可以使用Azure DevOps Repos起始畫面的import功能,匯入這個GitHub上的Repo: 一陣忙碌: 完成後,你會看到類似底下這樣的程式碼: 有了source code在Repos中,接著,我們就可以來試試看建立Build Pipeline了。 請點選Azure DevOps左方主選單的Pipelines a New Pipeline: 在緊接著出現的畫面中(下圖),選擇最下方的『Classic Editor』。 下圖中上面的幾個選項是透過撰寫YAML Code的方式來設計Pipeline,而我們先選用GUI(Classic Editor): 由於我們的sourc...

使用 .net core 開發 LINE Bot(04) - 透過C#程式碼推播LINE Bot訊息

圖片
經過了前面三篇準備,我們是時候要來用 .net core 的 C# 來開發 LINE Bot了。 首先,我們來看如何撰寫程式碼發送(Push) LINE 訊息給用戶。 前面你已經看過我們怎麼用CLI工具在Command Line透過line指令(有點繞口)發送訊息,現在我們來看你怎麼建立一個 .net core 的C#應用程式來發訊息。 建立console application 為了讓範例盡可能簡單,我們先採用 console application。你可以用底下這樣的指令來建立Console App: dotnet new console 不過,我會先建議你找一個空的資料夾,或建立一個。所以,我們下這樣的指令: md TestLineBot cd TestLineBot dotnet new console 你會看到底下結果: PS D:\TestLineBot > dotnet new console Getting ready .. . The template "Console Application" was created successfully. Processing post-creation actions .. . Running 'dotnet restore' on D:\TestLineBot\TestLineBot.csproj .. . 正在判斷要還原的專案 .. . 已還原 D:\TestLineBot\TestLineBot.csproj ( 286 ms 內 ) 。 Restore succeeded. PS D:\TestLineBot > 這表示你的專案已經建立好了,如果你這表示你的專案已經建立好了,如果你透過ls或dir來顯示資料夾中的內容,應該會發現: 其中主程式是 Program.cs,而TestLineBot.csproj則是 .net core的專案檔,預設與資料夾同名(如果你沒有指定的話)。 接著,我們耀來撰寫程式,我們使用 VS Code作為開發工具。 我們透過 『code .』來開啟VS Code… 請注意 code和 . 中間有個空白。 這個指令的意思是,開啟VS Code,並且預設以當前目...

使用 .net core 開發 LINE Bot(03) - 透過簡單的命令列控制LINE Bot發送訊息

圖片
前面我們介紹過了如何建立LINE Bot,並且取得Channel Access Token和你個人的UserID,接著,我們要介紹如何來控制LINE Bot發送(Push推播)訊息給特定人。 控制LINE Bot的主要要件是Channel Access Token,而透過命令列控制LINE Bot,則是完全不用寫程式的,堪稱是最簡單的方式。 但前提是: 你要安裝好 .net core SDK 3.1.300+(先前有提過,沒裝趕快裝,後面也會用到) 你要下載 line.cli 工具。請在命令列執行底下指令,即可下載 dotnet tool install --global line.cli 在一台尚未安裝過的電腦上,執行上述指令,會看到底下畫面: 確認安裝成功之後,你可以直接在命令列(MAC環境請用bash),下line指令: 當你下了line指令,會看到上面這樣的說明畫面,介紹如何使用。例如,你可以透過底下這樣簡單的指令,命令LINE Bot發訊息給特定用戶(當然前提是,該用戶已經加你的LINE Bot為好友。) line push -u [userId] -m Hello 但下達上面這個指令之前,別忘了先進行config設定,請用底下這樣的指令,設定你的LINE Bot Channel Access Token(記得嗎?你剛建立好LINE Bot時候取得的那個…) line config -t [channel access token] 例如: 正確的設定完成之後,接著你就可以發送訊息了! 你還不知道任何人的 UserID,是的。但你知道你自己的啊,還記得嗎?LINE Bot後台可以看到 Your user ID: 找到後,你就可以嘗試透過命令列發送訊息給自己囉(請記得把UserID換成你自己的),例如: line push -u Uxxxxxxxxxxxxxxxxxxxxxxxxxxxxa -m “Hello, 發大財” 就這樣,你不用撰寫任何一行程式碼,就可以控制你的LINE Bot囉…即便對初學者來說,都應該算是很簡單吧。 如果完成了,請試著發送貼圖和圖片訊息給自己,在上面的LINE CLI工具說明中可以找到線索。 交給你了。就當成練習,試試看囉~

使用 .net core 開發 LINE Bot(01) - 好的開始

圖片
為何使用 .net core 開發 LINE Bot? 如果你原本就是 .net 開發人員,這個問題對你不是問題,反而你可能需要知道的是,我們後面的開發都會採用VS Code,而非Visual Studio。 而如果你原本不是 .net 開發人員,那選擇 .net core 作為 LINE Bot 的開發有底下幾個好處: .net core是跨平台開發工具,可以輕鬆的在MAC/Linux/Docker環境上運行 開發時只需要使用 VS Code(Visual Studio Code),如果你用MAC,也無須安裝Windows或Visual Studio(雖然它很強) 如果你使用Windows,也只需要安裝 VS Code,可以在極輕省的狀況下進行開發 在 .net core 環境上,有非常方便的 LineBotSDK可用,讓你幾乎不用花太多精力就可以做出一個LINE Bot 如果要測試,.net core 世界中還有 LINE 的 CLI 工具,可以讓你在命令列無須寫程式就可以控制 LINE Bot。 好處很多。總的來說,如果你曾經覺得寫 LINE Bot或LINE官方帳號很麻煩,那使用C#搭配 .net core 應該會讓你改觀。 關於開發工具與環境 VS Code(Visual Studio Code)是近代跨平台開發工具中的黑馬,不管是開發 Python, Node.js, 或是 .net core,它都是很好的選擇。由於支持跨平台且開源(open source),因此獲得了眾多開發人員的青睞與支持。內建 git 版控管理工具,也讓開發人員可以輕易的完成各項開發版本控管工作。同時,豐富的擴充套件(extensions),也使得開發人員可以得到許多額外擴充功能的支援(例如程式碼的自動格式化、單元測試、單步執行偵錯…等) 你可以透過底下這個位置下載安裝 VS Code(不過等等,我們建議先安裝 .net core SDK): https://code.visualstudio.com/download 除了安裝 VS Code之外,你另外唯一需要安裝的是 .net core SDK,同樣的,因為支援跨平台,所以你可以輕鬆地找到適合你作業系統的版本: https://dotnet.microsoft.com/download ...

使用 .net core 開發 LINE Bot(02) - 建立你的第一支LINE Bot(2020年版)

圖片
申請你的LINE Bot帳號 關於這個主題,我大概每年重寫一次,原因很簡單 – LINE的網站一直在變。 在敏捷成為主流的這個年代,網站改版已經是常態。有時候上課上到一半,突然間網站UI整個不同,也不是一件新奇的事情了。也因此,每年寫一版『申請帳號』流程,大概也是剛好而已。 來吧,如何申請你的LINE Bot帳號? 首先,請準備你的LINE帳號,我知道你有一個LINE ID,但我們用不上它,們待會需要的是你的email和密碼,也就是你用來登入desktop版本的LINE時,所用的那組email帳號和密碼,如果你真的沒有(不曾用PC/MAC登入LINE?) 那你待會用手機掃QR Code登入也行。 準備好帳密或手機之後,請進入底下網址: https://developers.line.biz/zh-hant/ 進入後,請點選下圖中的Log in,以你的帳號密碼登入: 如果出現底下畫面,請選擇 使用LINE帳號登入 接著,你可以輸入email和密碼,或是透過手機掃描QR Code登入: 第一次登入,可能會要求你建立Provider,這個Provider是你待會要建立的LINE Bot的所屬單位,一般用公司或機構名稱,如果你是自己玩玩,也可以用個人工作室名稱或你自己的代號: 建立完成之後,你可以在Provider的首頁,建立LINE Bot了。LINE Bot屬於 channel 的一種,所以你可以透過底下『Create a new channel』來建立: 接著在出現的畫面點選『Messaging API』,這就是LINE Bot帳號了: 接著在Create a channel的畫面中,選擇Bot的圖示(Channel Icon): 並填寫名稱(Channel name)、說明(Channel description)、分類和子分類(Category/Subcategory),並填寫你的mail和勾選同意條款後,按下Create即可: 取得重要資訊 建立好LINE Bot之後,我們要取得幾個重要的相關資訊,你可以在LINE Bot的首頁找到Messaging API,點選後,可以看到底下畫面: 即便你是該LINE Bot的建立者,你自己也要將其加入為好友才行測試。 透過上面的QR Code或Bot ID(@xxxxx...