AspNetCore&Coding持續整合

微笑刺客D發表於2020-07-05

  對於現有很多持續整合工具來講,功能越來越高階,使用了 Coding 有大半年時間,越發覺好用,特別是沒錢續費伺服器時,找到了新的羊毛。

 

一、眾多持續整合工具

  現在可用的持續整合工具繁多,各大雲服務商都推出了持續整合,甚至是一定條件內都是免費使用。比如 Azure 提供每個月 1800 分鐘的免費時長,支援單專案並行構建,GitHub的GitHubActions,華為雲的 DevCloud,阿里雲的雲效,騰訊雲與 Coding 合作的Coding.DevOps 等等。在此推薦一波 Codinghttps://coding.net/

  對於個人開發者而言,能夠薅到羊毛,是最為實在的。最近,自己買的的兩臺羊毛機將到期,沒錢續費,並且看到各大雲服務商的提供的各種福利,乾脆放棄自己搭建持續整合服務。特別是半年前開始接觸到 Coding,看到其中許多 Azure 的影子,並且上手後發現很好用(關鍵是免費),當時只是想要提供的製品庫功能用來儲存 Docker 映象(源於 TencentHub 服務的關閉)。

  Coding提供5人以下免費,每週200次持續整合次數,每次限時30分鐘,並行任務數1個。  

 

二、Coding 的使用

1、註冊團隊賬號,填寫團隊域名,5 人以下團隊免費。

2、建立專案,選擇模板,提供了各種場景下需要的模板,都是在完整模板上依據功能精簡的,不管選擇哪個模板,都可以通過功能開關獲取到所有功能。 

  選擇第二個專案模板,等會更改功能開關獲取其他功能。填寫專案名稱,如 StarCity.Standard

3、配置功能開關,開放更多功能。

  左下角選擇並點選專案設定,跳轉到設定頁面中。

  選擇功能開關 Tab,開放更多功能,這些操作和 Azure 中的操作都是差不多的。本次只選擇持續整合和製品庫,其他關閉。

 

三、專案搭建及基礎配置

1、首先在程式碼倉庫中新建專案,對於程式碼倉庫的選擇隨意,我更傾向於使用 Gitee,當然也可直接使用 Coding 提供的程式碼倉庫。此處新建了一個倉庫方便對照: https://gitee.com/530521314/StarCity.Standard.git

2、新建 AspNetCore 並增加 Dockerfile,整理成常用的目錄形式。增加 gitignore、Dockerfile。

  注意:此處 Dockerfile 中我使用騰訊雲 Hub 中的一個源,方便構建映象。 

3、新建制品庫,用來儲存持續整合後我們需要的目標產物。依據具體用途選擇倉庫及許可權範圍。

4、開始配置持續整合,

  點選構建計劃,新建計劃配置,開始進行持續整合基礎配置工作。

  選擇持續整合模板,Coding 提供了十幾種模板型別,但是沒得 AspNetCore 的模板,選擇自定義模板,進行配置,當然,已有的這些模板可以點進去看看,學習其中的配置方式。

  配置自定義模板,選擇 Gitee 中的程式碼倉庫,注意需要按照提示配置 OAuth,此處主要是依賴 Jenkinsfile 的完成持續整合功能。通過在 Coding 中配置 Jenkinsfile 減少對專案內的傾入(我個人更喜歡這種方式)。

  點選設定按鈕,跳轉配置 Jenkinsfile 內容。

 

四、配置 Jenkinsfile

  對於配置 Jenkinsfile內容,Coding 提供了兩種方式,直接圖形化配置生成 Jenkinsfile 與文字化配置。兩種方式可切換使用,內容保持中立。(我更推薦方式二,方式一不太中意)。

方式一:提供了圖形化編輯器來構建流程配置。其中對於開始與檢出兩個步驟,直接忽視,從第三個自定義構建過程開始構建需要的流程。

  點選自定義構建過程,右側彈出具體配置彈框。本次使用指定 Dockerfile 來構建映象。其中 Dockerfile 檔名稱指定的是專案中 Dockerfile 的相對位置。Dockerfile 所在資料夾是針對於 Build Context 來講,我們所期望的是針對於整個專案,因此直接使用.(點)。

 方式二:使用文字編輯器方式手動構建。此時先忘記方式一的配置,重新開始配置。

1、構建:通過使用環境變數填充具體引數,對於 env 需要的引數在環境變數中進行配置。

  配置環境變數名稱及預設值,其中有些如 PROJECT_NAME 等環境變數在該構建計劃的系統引數中,無需配置。 

2、推送:通過將構建環節的產物推送到製品庫中。增加 Stage,其中需要的環境變數已在構建中配置完畢,並且部分新增加的環境變數為系統變數,無需配置,推送環節也就搞定了。

3、儲存並開始構建。

  可點選當前構建記錄,檢視具體構建過程。如構建過程某環節出問題,則整個構建結束。

  構建全部通過,構建環節順利完成,對於構建過程還可以增加更多,如單元測試步驟等,本次不新增。 

4、檢視構建產物,點選製品庫,檢視剛推送過來的映象。

5、在專案設定中,有些方便我們去呼叫外部服務的功能。如WebHook,在產物構建完畢,可以回撥CD伺服器,完成後續部署操作,很是方便,當然如果使用其他更高階的編排工具如K8S,則直接忽視吧。

Coding提供了更多豐富的功能可待挖掘,如郵件通知等,這些都可配置齊全。

 

2020-07-05,望技術有成後能回來看見自己的腳步

相關文章