iT邦幫忙

2024 iThome 鐵人賽

DAY 28
0
DevOps

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

Day 28: 如何在 GitLab CI/CD 中實現持續部署 (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作為雲端平台來操作。

Excutor的差異

GitLab Runner 提供兩種執行器:Shell Executor 和 Docker Executor。Shell Executor 在 GitLab Runner 主機上直接運行命令,適合需要直接操作主機環境的情況,配置簡單但可能與主機環境緊耦合。Docker Executor 則在 Docker 容器中運行 CI 任務,提供隔離的執行環境,可以使用不同的映像和工具,支持多種配置,但需要設置 Docker-in-Docker 或與 Docker Daemon 的連接。

因此最簡單粗暴就是採用Shell Executor
直接在ci腳本裡新增「deploy」的stage並撰寫需要執行的指令

stages:
  - deploy

variables:
  NGINX_IMAGE: nginx:latest

deploy:
  stage: deploy
  script:
    - docker pull $NGINX_IMAGE
    - docker run -d --name nginx-container -p 80:80 $NGINX_IMAGE
    - echo "Nginx container is running"
  only:
    - merge_requests

當符合「merge_requests」時觸發
進入deploy的階段,拉取nginx的映像檔並執行

壓上版本號

https://ithelp.ithome.com.tw/upload/images/20240827/20168384HudESZGw1K.jpg

https://ithelp.ithome.com.tw/upload/images/20240827/20168384aiIh6N23UC.jpg

版本號配合image tags上傳

修改build階段

build:
  stage: build
  tags:
    - test
  rules:
    - if: $CI_COMMIT_TAG_ENV == 'dev'
  script:
    - echo "CI_COMMIT_TAG=" && echo $CI_COMMIT_TAG
    - echo "CI_COMMIT_TAG_ENV=" && echo $CI_COMMIT_TAG_ENV
    - docker build -t $DOCKER_IMAGE:$CI_COMMIT_TAG .
    - docker push $DOCKER_IMAGE:$CI_COMMIT_TAG
    - echo "$ build CI_PROJECT_NAME $CI_COMMIT_TAG_ENV $CI_COMMIT_TAG Succeed"

這裡有一堆密密麻麻的參數
具體觸發pipeline也可通過gitlab介面執行
與腳本相符,正確傳參就可觸發ci

https://ithelp.ithome.com.tw/upload/images/20240827/20168384CKkfrhKSL2.jpg


上一篇
Day 27: 使用 GitLab CI/CD 進行自動化測試
下一篇
Day 29: GitLab CI/CD 與 Kubernetes 的集成實踐
系列文
DevOps需要的技能樹...(應該)都點得到!30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言