1、簡述一下對Jenkins的認識
Jenkins可以構建一個自動化的持續集成環境可以使用它來“自動化”編譯、打包、分發部署應用,它兼容ant、maven、gradle等多種第三方構建工具,同時與svn、git能無縫集成,也支持直接與知名源代碼託管網站,如github、bitbucket直接集成。
2、Jenkins的功能有哪些?
- 1.定時拉取代碼並編譯
2.靜態代碼分析
3.定時打包發佈測試版
4.自定義額外的操作,如跑單元測試等
5.出錯提醒
3、什麼是持續集成?
持續集成是一種軟件開發實踐,即團隊開發成員經常集成他們的工作,通常每個成員每天至少集成一次,也就意味着每天可能會發生多次集成。每次集成都通過自動化的構建(包括編譯,發佈,自動化測試)來驗證,從而儘快地發現集成錯誤。許多團隊發現這個過程可以大大減少集成的問題,讓團隊能夠更快的開發內聚的軟件。
4、持續集成的好處?
- 對重複的編譯發佈等操作進行抽象,減少重複過程
- 及早發現各種衝突和錯誤,減少風險
- 任何時間、任何地點生成可部署的軟件
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容器, 在容器裏運行應用程序