百家互聯網QA面試題--develop/CICD/容器化

1、簡述一下對Jenkins的認識

Jenkins可以構建一個自動化的持續集成環境可以使用它來“自動化”編譯、打包、分發部署應用,它兼容ant、maven、gradle等多種第三方構建工具,同時與svn、git能無縫集成,也支持直接與知名源代碼託管網站,如github、bitbucket直接集成。

2、Jenkins的功能有哪些?
  • 1.定時拉取代碼並編譯
    2.靜態代碼分析
    3.定時打包發佈測試版
    4.自定義額外的操作,如跑單元測試等
    5.出錯提醒
3、什麼是持續集成?

持續集成是一種軟件開發實踐,即團隊開發成員經常集成他們的工作,通常每個成員每天至少集成一次,也就意味着每天可能會發生多次集成。每次集成都通過自動化的構建(包括編譯,發佈,自動化測試)來驗證,從而儘快地發現集成錯誤。許多團隊發現這個過程可以大大減少集成的問題,讓團隊能夠更快的開發內聚的軟件。

4、持續集成的好處?
  1. 對重複的編譯發佈等操作進行抽象,減少重複過程
  2. 及早發現各種衝突和錯誤,減少風險
  3. 任何時間、任何地點生成可部署的軟件
5、如何理解docker容器?

在這裏插入圖片描述
Dockerfile面向開發,Docker 鏡像成爲交付標準,Docker 容器則涉及部署與運維
Docker類似於一個虛擬機,實現資源和系統環境的隔離
Docker鏡像類似於Ghost系統,爲了方便快速使用,已經完成了服務的所有配置。
DockerFile是一個腳本,用於生成Docker鏡像的腳本
Docker鏡像不僅可以從DockerFile生成,也可以從Docker容器生成,但最好是通過DockerFile來生成,方便後期維護。
我們創建新的鏡像都是從系統鏡像開始創建的,如centos:7,centos:6

6、maven和Jenkins區別?

Maven是一個構建工具,簡而言之是ant的繼承者。它有助於構建和版本控制。 但是,Jenkins是持續集成系統,其中maven用於構建。 Jenkins可用於自動化部署過程。

7、docker比虛擬機的優勢:

docker有着比虛擬機更少的抽象層
docker利用的是宿主機的內核,而不需要Guest OS
docker計算效率與主機一樣,沒有損耗,但虛擬機的計算能力損耗在50%左右docker與虛擬機內存訪問效率要高

8、Jenkins Pipeline是什麼?

Jenkins Pipeline插件是Jenkins用戶的遊戲規則改變者。 Pipeline插件基於Groovy中的領域特定語言(DSL),使管道可編寫腳本,並且是開發複雜的多步DevOps管道的強大方法。

9、簡單介紹什麼是持續集成和持續部署

持續集成
持續集成指在和向遠程倉庫 push 代碼後,在這次提交合併入主分支前進行一系列測試,構建等流程。假設現在有個應用的代碼存儲在 gitlab 上,每天開發者都 push 很多次提交,針對每次 push,你可以創建一系列腳本進行自動測試,降低往應用裏引入錯誤的概率。這就是持續集成,它可應用在包括開發分支在內的多個分支上。
持續部署
持續部署在持續集成的基礎上更進一步,指將推送指倉庫默認分支的部署至產品環境。如果這部分需要手動觸發,這就是一個持續交付(Continuous Delivery)環節。

10、Jenkins支持哪些SCM工具?

Jenkins支持版本控制工具,包括AccuRev,CVS,Subversion,Git,Mercurial,Perforce,ClearCase和RTC,並且可以執行基於Apache Ant,Apache Maven和sbt的項目以及任意的shell腳本和Windows批處理命令。

11、docker中鏡像的作用?

docker鏡像可以看作是一個特殊的文件系統,除了提供容器運行時所需的程序、庫、資源、配置等文件外,還包含了一些爲運行時準備的一些配置參數(如匿名卷、環境變量、用戶等)。鏡像不包含任何動態數據,其內容在構建之後也不會被改變。我們可將 docker鏡像看成只讀模板,通過它可以創建 docker容器。

12、如何在Jenkins創建job?

轉到Jenkins主頁,選擇“新建作業”,然後選擇“構建自由樣式的軟件項目”。 此作業類型包含以下元素: 可選的SCM,例如源代碼所在的CVS或Subversion。

13、docker常用命令

拉取docker:
docker pull image_name
查看下主機下存在多少鏡像:
docker images
對一個容器進行啓動,重啓和停止:
docker start container_name/container_id
docker restart container_name/container_id
docker stop container_name/container_id

14、如何在Jenkins中配置自動構建?

在Jenkins中的構建可以定期觸發(按計劃,在配置中指定),或者在檢測到項目中的源更改時觸發,或者可以通過請求URL自動觸發: http://YOURHOST/jenkins/job/PROJECTNAME/build

15、本地提交代碼的步驟?

1.checkout代碼到本地
2.做本地修改
3.本地構建
4.再次update代碼到本地
5.再次本地構建
6.提交代碼
7、持續集成構建

16、docker架構

C/S架構
-> Docker使用客戶端-服務器(client-server)架構模式。
-> Docker 客戶端會與Docker守護進程進行通信。Docker 守護進程會處理複雜繁重的任務,例如建立、運行、發佈你的 Docker 容器。
-> Docker 客戶端和守護進程可以運行在同一個系統上,當然也可以使用Docker客戶端去連接一個遠程的 Docker 守護進程。
-> Docker 客戶端和守護進程之間通過socket或者RESTful API進行通信。

17、docker原理

建立–>傳送–>運行
通過Docker Hub或者自己的Docker倉庫分享Docker鏡像, 從Docker鏡像創建Docker容器, 在容器裏運行應用程序
在這裏插入圖片描述

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