iT邦幫忙

2023 iThome 鐵人賽

DAY 7
0

結束了.NET到ASP.NET Core的環節我們要開始進入CICD的部分了,那什麼是CICD呢?
CI是Continuous integration(持續整合),CD是Continuous Deployment(持續佈署),持續整合是什麼?持續部署又是什麼?我們為甚麼要這麼做?

首先我們可以知道一般開發流程依序如下:

  • 需求分析
  • 設計
  • 實現
  • 測試
  • 整合
  • 部署
  • 維護

如下圖
https://ithelp.ithome.com.tw/upload/images/20230907/20140874v5SCiCSYpY.png

今天假設一種情況,撇除最初的提出需求分析以及設計,如果有天要是我開發完應用程式,後面的測試、整合、部屬、維護,都能夠自動化,我只需要專注在開發,是不是聽起來就輕鬆很多,這就是為甚麼我們想要CICD。所以我們最終目的,是希望能夠做到,以後每次當我開發完程式push到repository的時候,能夠自動進行測試、構建,都沒問題之後,可以接著自動部屬,大致上的流程圖會長得像是下圖。
https://ithelp.ithome.com.tw/upload/images/20230907/20140874ame2RXRCyU.png
此圖取自微軟-CI/CD 工作流程

所以簡單來說CICD,Continuous integration(持續整合)就是將測試、整合這個階段事情自動化,Continuous Deployment(持續部屬)就是部屬自動化。
OK ! 簡單瞭解甚麼是CICD之後,我們來瞭解一下在進入CICD之前必須搞懂的名詞。

Jobs
是整個流程中最小的單位,我們可以將測試、構建、部署的程式寫在Job中。

Stages
Stage 表示流程運行的階段,每個Stage內可以有多個Job。

Pipeline
Pipeline 就是表示一整個流程,裡面可以包含多個Stage,例如編譯、測試、部署等。

GitLab Runner
實際上執行Pipeline的角色。,官方本身就有提供一些免費的Runner,也可以自建,我本身是採用自建的方式。

介紹完名詞之後我們就可以一步一步來開始實做了,首先我們要安裝Runner,這邊我會提供官方網站安裝的頁面,各位可以根據自己的需求去選擇。

我自己是使用Ubuntu系統的虛擬機,所以我採用的是Linux的安裝教學

這邊有重要一個重點,根據官方教學說明,若executor要使用docker,必須在機器上安裝docker,docker安裝這邊我就不多說明,請參閱Docker官方文件
https://ithelp.ithome.com.tw/upload/images/20230907/20140874kIZkgsxUXN.png

第一步,根據你的Linux系統是哪個分支的新增repository,像我自己是使用Ubuntu,我選擇第一個。記得要新增哦,否則後面在安裝套件時會找不到QQ。
https://ithelp.ithome.com.tw/upload/images/20230907/20140874LNS7tWGnTf.png
curl -L "https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh" | sudo bash

第二步,在新增完repository之後,我們就可以透過套件管理工具進行安裝,若需要指定版本可以參考官方網站第三點的說明。
https://ithelp.ithome.com.tw/upload/images/20230907/201408741Wasf8PxJe.png
sudo apt-get install gitlab-runner

安裝完之後,我們就可以開始在電腦上新建一個runner的角色了。首先你必須得先到你gitlab專案的repository,將側邊欄打開 > Settings > CICD

https://ithelp.ithome.com.tw/upload/images/20230907/20140874l98KBUf6Hn.png

接著我們展開Runner,左手邊我們可以【New project runner】,而右手邊是要不要使用共享Runner,方便許多,但是! 要先經過信用卡\金融卡的驗證,才能夠做使用。
https://ithelp.ithome.com.tw/upload/images/20230907/20140874ud2VkiI9fe.png

因為我選擇自建,所以點選【New project runner】,特別要注意幾點,首先就是要選擇runner要甚麼作業系統執行,再來就是要設定Tag標籤,未來在pipeline中會根據job分配到的runner去執行,下面這個選項是允許這個runner執行pipeline內沒有分配runner的job,最後會填寫一個timeout時間,這個時間是定義job運行多久時間認定為timeout。
https://ithelp.ithome.com.tw/upload/images/20230907/20140874VFe1TH3qnW.png
https://ithelp.ithome.com.tw/upload/images/20230907/20140874zNDecic6l3.png

創建之後,我們可以看到gitlab很貼心的,提供接下來的教學
https://ithelp.ithome.com.tw/upload/images/20230907/20140874R8UYYrrOIH.png
首先我們透過gitlab-runner register指令,接下來要輸入gitlab instance url,一般常見都是如範例【https://gitlab.com】,除非有自建gitlab server,再來輸入該runner的token,這個上面也有提供,再來我們要為一個runner取一個名字,這邊我取作【ithome】,接著要選擇【executor】,這個非常的重要,這個會影響到runner 用甚麼工具去執行你的job,我選擇【docker】,有docker就要有image,image輸入【docker:stable】,這樣還沒結束哦!!
https://ithelp.ithome.com.tw/upload/images/20230907/20140874wYftZf9AKc.png

我們還需要使用gitlab-runner run做驗證,若成功驗證,則你會發現頁面底下多出了一張這樣的圖片。
https://ithelp.ithome.com.tw/upload/images/20230907/20140874kHOv5FwtdQ.png
https://ithelp.ithome.com.tw/upload/images/20230907/20140874w1MEvszLKR.png

回到 Runner的頁面後,發現runner終於創建好啦/images/emoticon/emoticon02.gif

接著明天我們要開始來撰寫.gitlab-ci.yml

參考資料:
Install GitLab Runner
Install GitLab Runner using the official GitLab repositories
Manage runners
Registering runners
Docker executor


上一篇
Day 06 撰寫Dockerfile
下一篇
Day 08 撰寫.gitlab-ci.yml
系列文
你累了嗎,今天來點克勞內提夫!31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言