CICD,DevOps,Jenkins 的介紹

搞過 運維開發得童鞋知道,總會聽到 CICD,devops,Jenkins這些東東。那這些 東西到底是什麼鬼呢。

此文主要介紹 Jenkins,CICD 和 DevOps簡單的瞭解下。

什麼是 CICD?

CI(Continuous integration,中文意思是持續集成)是一種軟件開發時間。

持續集成強調開發人員提交了新代碼之後,立刻進行構建、(單元)測試。根據測試結果,我們可以確定新代碼和原有代碼能否正確地集成在一起。借用網絡圖片對CI加以理解。

在這裏插入圖片描述

  • CD(Continuous Delivery, 中文意思持續交付)是在持續集成的基礎上,將集成後的代碼部署到更貼近真實運行環境(類生產環境)中。

比如,我們完成單元測試後,可以把代碼部署到連接數據庫的Staging環境中更多的測試。如果代碼沒有問題,可以繼續手動部署到生產環境。下圖反應的是CI/CD 的大概工作模式。

  • CD(Continuous Deployment,中文持續部署)

對於一個成熟的CI/CD管道(Pipeline)來說,最後的階段是持續部署。作爲持續交付——自動將生產就緒型構建版本發佈到代碼存儲庫——的延伸,持續部署可以自動將應用發佈到生產環境。

在這裏插入圖片描述

持續部署意味着所有的變更都會被自動部署到生產環境中。持續交付意味着所有的變更都可以被部署到生產環境中,但是出於業務考慮,可以選擇不部署。如果要實施持續部署,必須先實施持續交付。

持續交付並不是指軟件每一個改動都要儘快部署到產品環境中,它指的是任何的代碼修改都可以在任何時候實施部署。

持續交付表示的是一種能力,而持續部署表示的則一種方式。持續部署是持續交付的最高階段

什麼是DevOps?

  1. DevOps是“開發”和“運維”的縮寫。

  2. DevOps是一組最佳實踐強調(IT研發、運維、測試)在應用和服務生命週期中的協作和溝通

  3. 強調整個組織的合作以及交付和基礎設施變更自動化,從而實現持續集成、持續部署和持續交付

DevOps持續交付環
  1. 我們把開發交付劃分爲: 計劃 --> 編碼 --> 構建 --> 測試 --> 版本 --> 部署 --> 運維 --> 監控 的一個閉環。

  2. DevOps的目標是通過建立並不斷完善持續交付的流水線。

在這裏插入圖片描述

DevOps四大模塊

在這裏插入圖片描述

全鏈路自動化運維體系

在這裏插入圖片描述

  1. 監控工具

Zabbix、openfalcon、nagios、Prometheus

  1. 自動化運維管理工具

saltstack/ansible/puppet

  1. 平臺開發

CMDB、監控系統、工單系統、ELK日誌分析監控、DevOps CI/CD自動化交付平臺

  1. 常用工具

Jenkins/Git/Maven、Nginx/apache、Git、Lvs/keepalive、Hadoop、Docker、kafka、Kubernetes

  1. 運維基礎

Shell、linux、awk


什麼是 Jenkins

Jenkins是一個開源的、提供友好操作界面的持續集成(CI)工具,主要用於持續、自動的構建/測試軟件項目、監控外部任務的運行(這個比較抽象,暫且寫上,不做解釋)。Jenkins用Java語言編寫,可在Tomcat等流行的servlet容器中運行,也可獨立運行。通常與版本管理工具(SCM)、構建工具結合使用。常用的版本控制工具有SVN、GIT,構建工具有Maven、Ant、Gradle。

值得注意的點:

  1. Jenkins是基於Java開發的一種持續集成工具,可用於自動化各種任務,如構建,測試和部署軟件。

  2. Jenkins可以通過本機系統包Docker安裝,甚至可以通過安裝Java Runtime Environment的任何機器獨立運行。

  3. 作爲CI/CD的調度中心,Jenkins具有十八般武藝,目前已有1700多個插件,功能強大到似乎有點過分了

大家可以瞭解到 Jenkins在整個 CICD的 devops 中起到的是一個 調度中心 的作用,因爲 Jenkins的插件特別的多,所以 他在持續交付中也起到了主導的作用,是一個必不可少的 工具。

Jenkins常用插件

插件的作用就是用來連接,其他的 工具(容器 監控工具 腳本 等)。就好比,python 連接mysql 還有 pymysql呢

  • Git Parameter
  1. 這是一個參數構建擴展,可以在構建的時候選擇git的某一個分支來構建服務。
  • Docker
  1. 利用Docker容器動態創建Jenkins Slave。如果有了Kubernetes/Openshift集羣,就不需要這個插件了。直接使用下面的Kubernetes插件。

  2. jenkins非root啓動的話,爲了運行docker需要執行sudo chmod 777 /var/run/docker.sock

  • Kubernetes
  1. 這個插件可以將Jenkins Slave Node動態配置爲Kubernetes集羣上的pod。
  • GitLab
  1. 配置Gitlab的相關認證,同時也支持GitLab的Webhook觸發。
  • GitLab Hook
  1. 支持GitLab更好的觸發。

  2. Gogs WebHook

  3. 支持Gogs代碼倉庫的觸發。

  • Maven
  1. 這個插件爲Maven 2 / 3項目提供了高級集成功能。
  • Pyenv Pipeline
  1. 方便對python進行項目級別的環境隔離。

  2. jenkins機器上需要安裝python、pip、virtualenv

  • Python
  1. 這個插件支持在Jenkins的構建過程中執行Python腳本。
  • SonarQube Scanner
  1. 支持SonarQube的代碼掃描。
  • Ansible
  1. 在構建任務中可以執行Ansible任務。
  • Publish Over SSH
  1. 通過SSH拷貝文件到目標機器,同時可以在目標機器上執行腳本

  2. 事先要在設置中添加目標機器的訪問方式。

在這裏插入圖片描述

  • Job Generator

定義一個參數化的模板,通過這個模板快速的在 Jenkins 上創建出任務。

在這裏插入圖片描述

  • Multijob

把多個Job組織起來。

  • Parameterized Trigger

這是一個擴展型的插件,使各個job連接的時候可以傳遞一些job相關的信息。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章