AspNetCore&Coding持續集成

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

 

一、眾多持續集成工具

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

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

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

 

二、Coding 的使用

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

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

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

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

  左下角選擇並點擊項目設置,跳轉到設置頁面中。

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

 

三、項目搭建及基礎配置

1、首先在程式碼倉庫中新建項目,對於程式碼倉庫的選擇隨意,我更傾向於使用 Gitee,當然也可直接使用 Coding 提供的程式碼倉庫。此處新建了一個倉庫方便對照: //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,望技術有成後能回來看見自己的腳步