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

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

imageview upload 分支合並 build 不能 開始 ref 開發人員 orien

>原創文章,歡迎轉載。轉載請註明:轉載自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

技術分享圖片

技術分享圖片

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

技術分享圖片

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

技術分享圖片

技術分享圖片

技術分享圖片

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

    Repository -- Branches -- new Branches

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

  • 代碼 pull 然後切換到dev分支

    已經在dev分支了。

技術分享圖片

  • 修改代碼 提交代碼 push到dev分支

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

技術分享圖片

技術分享圖片

技術分享圖片

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

技術分享圖片

  • 發送merge請求

技術分享圖片

技術分享圖片

技術分享圖片

先進行pipline然後才merge 。

技術分享圖片

  • 發現代碼錯誤了。

技術分享圖片

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

技術分享圖片

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

技術分享圖片

commit-push代碼

重新merge request

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

  • 之前的代碼還有個問題

    現在任何的分支發生變化,它都進行了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

技術分享圖片

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

技術分享圖片

技術分享圖片

技術分享圖片

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

技術分享圖片

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