CI

背景(有借鑒大佬的教程)


  1. 部門推薦使用自動化CI流程。
  2. 有個大佬搭建了整套CI流程。
  3. 大概思路:git 提交到relrase 分支自動
    sonar 掃描、build 成docker鏡像、docker push、
    deploy 到k8s集群


    15324011844639.jpg

涉及技術(shù)


  1. kubernetes 的charts 編寫
  2. gitlab ci 編寫
  3. jenkins 用法

多git工程項(xiàng)目

0 描述 優(yōu)點(diǎn) 缺點(diǎn)
方案一 每個微服務(wù)都按小型項(xiàng)目微服務(wù)發(fā)布(也就是每一個微服務(wù)都獨(dú)立走CI發(fā)布) 每個charts互不相關(guān)可以獨(dú)立管理發(fā)布 需要維護(hù)多個發(fā)布CI配置,需要增加相互訪問配置
方案二 設(shè)置一個總項(xiàng)目, 在總項(xiàng)目的charts里通過requirement.yaml引用子charts, 統(tǒng)一部署所有服務(wù) 不需要寫相互訪問配置 所有配置都往總項(xiàng)目寫,總項(xiàng)目要維護(hù)各模塊版本

charts

  • charts是什么
    • charts是kubernetes的一個資源模版包,可以通過helm命令把這個配置模板包安裝到kubernetes集群。
    • charts包含下面幾個部分
├── Chart.yaml              # 配置這個chart包的名字和版本
├── templates               # 這個文件夾就是模版包,下面的所有yaml文件都會被安裝到kubernetes里
│   ├── NOTES.txt           # 部署成功會打出這個文件里的內(nèi)容
│   ├── _helpers.tpl        # 模版宏定義放在這,宏定義的意思是模版函數(shù),可以優(yōu)雅的配置復(fù)雜的模版規(guī)則
│   ├── deployment.yaml     # 名字不重要,這是yaml資源,模版填充后的形成資源會被安裝到kubernetes里
│   ├── ingress.yaml        # 同上
│   └── service.yaml        # 同上
└── values.yaml             # 安裝這個chart模版包的默認(rèn)配置

.gitlab-ci.yml

  • .gitlab-ci.yml是什么
    • 簡單來說,是個腳本,可以配置您提交代碼/提交tag/提交merge后,ci會幫你做些什么。
  • .gitlab-ci.yml怎么寫
    • 就拿目前要求的模版來說明一下
.tst_tmpl: &tst_def
  only:
    - /^release/
  tags:
    - tst
.prd_tmpl: &prd_def
  only:
    - tags
  tags:
    - prd

####                                            ####
### Start modify your CI configuration from here ###
###                                             ####

.scan_tmpl: &scan_def
  script:
    - sonar-scanner
      -Dsonar.projectKey=$CI_PROJECT_NAME
      -Dsonar.sources=.
      -Dsonar.host.url=http://ip
      -Dsonar.login=***********************          

.build_tmpl: &build_def
  script:
    - make image                                     #這里寫您的編譯打鏡像shell命令

.test_tmpl: &test_def
  script:
    - echo run your unittest here.                  #這里寫您的單元測試shell

.push_tmpl: &push_def
  script:
    - make push                                     #這里寫您的鏡像push命令
    - helm-update-chart charts/backoffice           #這里寫您charts push命令, 如果有多個charts記得寫多行

deploy_prd:
  stage: deploy
  <<: *prd_def
  script:
    - jenkins-trigger your-folder/deploy-prd        #這里填jenkins的【生產(chǎn)】發(fā)布任務(wù)名
      token=***************************             #這里填jenkins對應(yīng)的觸發(fā)token, 隨機(jī)生成一個無特殊字符的串, 長度<=32
      CHARTNAME=backoffice                          #這里填您的chart名字
      CHARTVERSION=0.2.0                            #這里填您要部署的版本
deploy_tst:
  stage: deploy
  <<: *tst_def
  script:
    - jenkins-trigger your-folder/deploy-tst        #這里填jenkins的【測試】發(fā)布任務(wù)名
      token=***************************             #這里填jenkins對應(yīng)的觸發(fā)token, 隨機(jī)生成一個無特殊字符的串, 長度<=32
      CHARTNAME=backoffice                          #這里填您的chart名字
      CHARTVERSION=0.2.0                            #這里填您要部署的版本

####                                            ####
### End modify your CI configuration from here   ###
###                                             ####

stages:
  - scan
  - build
  - test
  - push
  - deploy
scan:
  stage: scan
  tags:
    - sonar-check
  <<: *scan_def
build_prd:
  stage: build
  <<:
    - *build_def
    - *prd_def
build_tst:
  stage: build
  <<:
    - *build_def
    - *tst_def
test:
  stage: test
  <<:
    - *test_def
    - *tst_def
push_prd:
  stage: push
  <<:
    - *push_def
    - *prd_def
push_tst:
  stage: push
  <<:
    - *push_def
    - *tst_def
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容