1. 程式人生 > >『中級篇』docker之CI/CD持續整合-整個流程串聯(75)

『中級篇』docker之CI/CD持續整合-整個流程串聯(75)

>原創文章,歡迎轉載。轉載請註明:轉載自IT人故事會,謝謝!
>原文連結地址:『中級篇』docker之CI/CD持續整合-整個流程串聯(75)

前面主要說了CI python,CI java,CDpython,這次主要說下從gitlab,gitlab-ci,gitlab CICD的整個從開發流程到釋出流程的,一個工作的流程。原始碼:https://github.com/limingios/docker/tree/master/No.11

流程很重要,建議都演示下。

  • 設定下

setting --Repositoryt ---Protected Branches

『中級篇』docker之CI/CD持續整合-整個流程串聯(75)

『中級篇』docker之CI/CD持續整合-整個流程串聯(75)

allowed to push 改成 No one 任何人都不能直接往master分支裡面push程式碼

『中級篇』docker之CI/CD持續整合-整個流程串聯(75)

setting -- general ---Merge request
剛才給master設定了任何都不能修改改變,那我們的流程應該如何改變呢,任何人只能在分支模式下工作,當發現沒有問題可以提交到自己的分支,提交到merge request,管理員收到merge請求後,可以將開發人員自己的分支合併到master主分支上。

『中級篇』docker之CI/CD持續整合-整個流程串聯(75)

『中級篇』docker之CI/CD持續整合-整個流程串聯(75)

『中級篇』docker之CI/CD持續整合-整個流程串聯(75)

  • 建立一個新的分支dev 這個名字可以以每個人名字命名,一個人一個分支

    Repository -- Branches -- new Branches

『中級篇』docker之CI/CD持續整合-整個流程串聯(75)

『中級篇』docker之CI/CD持續整合-整個流程串聯(75)

『中級篇』docker之CI/CD持續整合-整個流程串聯(75)

『中級篇』docker之CI/CD持續整合-整個流程串聯(75)

  • 程式碼 pull 然後切換到dev分支

    已經在dev分支了。

『中級篇』docker之CI/CD持續整合-整個流程串聯(75)

  • 修改程式碼 提交程式碼 push到dev分支

    隨便找個程式碼 修改下,看看這個流程

『中級篇』docker之CI/CD持續整合-整個流程串聯(75)

『中級篇』docker之CI/CD持續整合-整個流程串聯(75)

『中級篇』docker之CI/CD持續整合-整個流程串聯(75)

  • 提交後自動在dev分支pipline了

『中級篇』docker之CI/CD持續整合-整個流程串聯(75)

  • 傳送merge請求

『中級篇』docker之CI/CD持續整合-整個流程串聯(75)

『中級篇』docker之CI/CD持續整合-整個流程串聯(75)

『中級篇』docker之CI/CD持續整合-整個流程串聯(75)

先進行pipline然後才merge 。

『中級篇』docker之CI/CD持續整合-整個流程串聯(75)

  • 發現程式碼錯誤了。

『中級篇』docker之CI/CD持續整合-整個流程串聯(75)

pipline 有問題,就不允許mege了,merge request 列表

『中級篇』docker之CI/CD持續整合-整個流程串聯(75)

管理員這是告訴開發人員,你的程式碼有問題,開發人員開始修復程式碼重新提交。

『中級篇』docker之CI/CD持續整合-整個流程串聯(75)

commit-push程式碼

重新merge request

『中級篇』docker之CI/CD持續整合-整個流程串聯(75)

『中級篇』docker之CI/CD持續整合-整個流程串聯(75)

『中級篇』docker之CI/CD持續整合-整個流程串聯(75)

『中級篇』docker之CI/CD持續整合-整個流程串聯(75)

  • 之前的程式碼還有個問題

    現在任何的分支發生變化,它都進行了deploy,現在修改成只有master才進行deploy。

增加了 only master 只有master 才進行deploy

stages:
  - style
  - test
  - deploy

pep8:
  stage: style
  script:
    - pip install tox
    - tox -e pep8
  tags:
    - python2.7

unittest-py27:
   stage: test
   script:
     - pip install tox
     - tox -e py27
   tags:
     - python2.7

unittest-py34:
   stage: test
   script:
     - pip install tox
     - tox -e py34
   tags:
     - python3/4

docker-deploy:
   stage: deploy
   script:
     - docker build -t flask-demo .
     - if [ $( docker ps -aq --filter name=web) ]; then docker rm -f web;fi
     - docker run -d -p 5000:5000 --name web flask-demo
   tags:
     - test1
   only:
     - master

『中級篇』docker之CI/CD持續整合-整個流程串聯(75)

  • 可以正常的pipline後就可以merge了,master分支已經變化。master分支開始觸發pipline。dev分支裡面也沒有deploy了

『中級篇』docker之CI/CD持續整合-整個流程串聯(75)

『中級篇』docker之CI/CD持續整合-整個流程串聯(75)

『中級篇』docker之CI/CD持續整合-整個流程串聯(75)

PS:基本目前這種就是開發和測試,CICD的完整的流程。git的工作流,基於分支的工作流。部署到CI的伺服器上。CD其實分幾種情況,可能部署到生產的環境的機器,另外的一個單獨系統,我們生產的環境的部署,一般情況是根據釋出來部署的。今天這個基本是開發和測試,沒有包括生產環境的。下次專案釋出做部署,應該可以gitlab,gitlab-ci的什麼流程

『中級篇』docker之CI/CD持續整合-整個流程串聯(75)