iT邦幫忙

2024 iThome 鐵人賽

DAY 24
0
DevOps

DevOps需要的技能樹...(應該)都點得到!系列 第 24

Day 24: GitLab CI/CD 基本概念與工作流程

  • 分享至 

  • xImage
  •  

本章節「GitLab CI/CD」概要

Day 24: GitLab CI/CD 基本概念與工作流程
Day 25: GitLab Runners 配置與使用
Day 26: 使用 GitLab CI/CD 進行原始碼掃描及套件掃描
Day 27: 使用 GitLab CI/CD 進行自動化測試
Day 28: 如何在 GitLab CI/CD 中實現持續部署 (CD)
Day 29: GitLab CI/CD 與 Kubernetes 的集成實踐

因為免費方案之硬體需求關係,此章節會以GCP作為雲端平台來操作。

認識Gitlab CI/CD

GitLab CI/CD 是一套自動化工具,用於管理軟體開發的持續整合(CI)和持續部署(CD)流程。開發者將代碼提交到 GitLab 存儲庫後,CI/CD 會自動觸發流水線(Pipeline),執行編譯、測試、部署等任務。透過 YAML 文件定義工作流程,GitLab CI/CD 可確保軟體品質,縮短交付周期,提高開發效率。

工作流程

GitLab CI/CD 的工作流程始於代碼提交,觸發定義好的流水線(Pipeline)。流水線由多個階段(Stages)組成,如編譯、測試和部署,每個階段包含一系列任務(Jobs),按照順序或並行執行。這些任務在 GitLab Runner 上運行,完成後自動生成反饋。成功的流水線最終會自動將應用程序部署到目標環境,實現高效、可靠的持續整合與持續部署流程。

小觀念

GitLab 是一個完整的 DevOps 平台,提供版本控制、持續整合/持續部署(CI/CD)、問題跟踪等功能,讓團隊可以協作開發和管理軟體項目。GitLab Runner 則是一個專門用來執行 CI/CD 任務的應用程序,它負責在不同環境中執行 GitLab 定義的流水線任務。簡單來說,GitLab 管理整個開發流程,而 GitLab Runner 則實際執行其中的自動化任務。

事前準備:GCP開機器

  • 隨意取名,選擇地區

https://ithelp.ithome.com.tw/upload/images/20240817/20168384TXhtDyjDjy.jpg

  • 選擇實例類型e2-standard-4(至少需要2CPU)

https://ithelp.ithome.com.tw/upload/images/20240817/20168384mGNUK2fmHz.jpg

  • 選擇OS為ubuntu及配置硬碟100G

https://ithelp.ithome.com.tw/upload/images/20240817/20168384OgM6GpP1JP.jpg

  • 勾選開放HTTP及HTTPS流量進入

https://ithelp.ithome.com.tw/upload/images/20240817/20168384fR57jiLvpS.jpg

  • 此時會發現公有ip是臨時(隨機)配發的(重開機就會重配)

https://ithelp.ithome.com.tw/upload/images/20240817/20168384d6UmjS76Wq.jpg

  • 申請固定公有ip
    點擊實例名稱,點擊編輯,找到網路介面區塊,選擇保留靜態位址

https://ithelp.ithome.com.tw/upload/images/20240817/20168384rrpyyGgkqU.jpg

至此建立機器的部分就結束。

事前準備:架設Gitlab

再來才能開始跑部署腳本

https://ithelp.ithome.com.tw/upload/images/20240817/20168384eTYBLDxCyT.jpg

  • 如果沒有自備域名(本次範例使用這個)
version: '3.8'

services:
  gitlab:
    image: gitlab/gitlab-ee:latest
    restart: always
    hostname: gitlab.example.com    # 假設的主機名,可不變更
    environment:
      GITLAB_OMNIBUS_CONFIG: |
        external_url 'http://<主機ip>'  # 將外部URL設置為公有IP
        gitlab_rails['gitlab_shell_ssh_port'] = 2222  # 配置SSH端口
    ports:
      - '80:80'    # HTTP 訪問
      - '2222:22'  # SSH 訪問
    volumes:
      - ./config:/etc/gitlab      # 配置文件存儲路徑
      - ./logs:/var/log/gitlab    # 日誌存儲路徑
      - ./data:/var/opt/gitlab    # GitLab 數據存儲路徑
  • 如果已經自備域名
version: '3.6'
services:
  web:
    image: 'gitlab/gitlab-ee:16.2.1-ee.0'
    restart: always
    hostname: '<域名>'
    environment:
      GITLAB_OMNIBUS_CONFIG: |
        letsencrypt['enable'] = true
        letsencrypt['auto_renew'] = true
        external_url 'https://域名'
        gitlab_rails['gitlab_ssh_host'] = '<域名>'
        gitlab_rails['lfs_enabled'] = true
        gitlab_rails['manage_backup_path'] = true
        gitlab_rails['backup_path'] = "/var/opt/gitlab/backups"
        gitlab_rails['backup_keep_time'] = 604800
    ports:
      - '80:80'
      - '443:443'
      - '2224:22'
    volumes:
      - './config:/etc/gitlab'
      - './logs:/var/log/gitlab'
      - './data:/var/opt/gitlab'
    shm_size: '2048m'

瀏覽器打開剛才申請的公有ip(靜態位址)
如果出現以下畫面,代表gitlab還在初始化,請耐心等候
放著等它就會自動跳轉至登入頁面

https://ithelp.ithome.com.tw/upload/images/20240817/201683840IPugptS4K.jpg

此時我們還不知道帳號密碼?因此需要先進容器配置

#記下容器ID
docker ps
#進入容器
docker exec -it <容器ID> bash

此時位於容器內部
再進入gitlab交互介面

#進入gitlab
gitlab-rails console           
#尋找用戶為root
User.find_by(username: 'root')
#配置密碼為test
user.password = 'test'
#再次確認密碼為test
user.password_confirmation = 'test'
#儲存配置
user.save

離開方式

#退出gitlab交互介面
exit
#退出容器需要再下一次
exit

https://ithelp.ithome.com.tw/upload/images/20240817/20168384aTtDnwvwiS.jpg

等待片刻之後終於看到登入頁面

https://ithelp.ithome.com.tw/upload/images/20240817/201683842bIIifINEV.jpg

建立一個專案

https://ithelp.ithome.com.tw/upload/images/20240817/20168384I9mzBH65td.jpg

至此gitlab的架設完成
明天會直接進入gitlab runner
因此gitlab的介面及使用就留給大家自行探索囉~


上一篇
Day 23: 使用 AWS Inspector 進行安全性掃描與合規性檢查
下一篇
Day 25: GitLab Runners 配置與使用
系列文
DevOps需要的技能樹...(應該)都點得到!25
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言