jenkins持续集成与持续交付
目錄
- 一、jenkins簡介
- 1、jenkins
- 2、CI/CD是什么?
- 二、jenkins的部署
- 1、環境準備
- 2、安裝jenkins
- 3、更新插件源
- 三、jenkins項目管理配置
- 1、項目創建
- 2、配置周期性檢查gitlab變更
- 3、配置實時監控gitlab變更
- 4、自動構建docker鏡像并上傳到本地倉庫
- 5、添加docker交付任務
一、jenkins簡介
1、jenkins
JenkinsJenkins是一個用Java編寫的開源持續集成工具。它跟蹤版本控制系統, 并在發生更改時啟動和監視構建系統。可在Tomcat等流行的servlet容器中運行,也可獨立運行。通常與版本管理工具(SCM)、構建工具結合使用。常用的版本控制工具有SVN、GIT,構建工具有Maven、Ant、Gradle。
- jenkins的優勢
(1)在開發環境的早期階段能夠很容易的進行錯誤跟蹤
(2)提供了大量的插件支持
(3)能夠對代碼進行迭代改進
(4)若是迭代失敗會在集成階段進行緩存
(5)對每個代碼進行更改,會生成一個自動生成報告通知
(6)通過簡單的步驟即可自動完成maven發布項目
2、CI/CD是什么?
- CI
CI(Continuous integration,持續集成)持續集成指的是頻繁的將代碼集成到主干上(一天多次),持續集成的目的是讓產品可以快速迭代同時還能讓產品保持較高質量。持續集成強調開發人員提交了新代碼之后,立刻進行構建、(單元)測試。根據測試結果,我們可以確定新代碼和原有代碼能否正確地集成在一起。在代碼集成到主干之前必須進行自動化測試,只要有一個測試用例失敗就不能夠集成。 - 優點
(1)提高開發效率
(2)能快速發現并定位bugs
(3)能夠更快速的發布更新
- CD
- 持續交付
CD(Continuous Delivery, 持續交付)是在持續集成的基礎上,將集成后的代碼部署到更貼近真實運行環境(類生產環境)中,也就是頻繁的將新版本交給質量團隊或者用戶以供評審,如果通過代碼就進入生產階段。持續交付可以看做是持續集成的下一步,它強調的是不管怎么更新,軟件都是隨時可以交付的。持續交付在持續集成的基礎上將集成后的代碼部署到更加貼近真實運行的環境中。
- 持續部署
持續部署(continuous deployment)是持續交付的下一步,指代碼通過評審后自動部署到生產環境中。 持續部署的目標是代碼在任何時間都是可部署的可以進入生產環境的。持續部署的前提是能自動化完成測試、構建、部署等步驟。
下圖是持續部署與持續交付的區別,也就是持續部署在代碼檢測完成后是自動部署到生產環境階段的。
二、jenkins的部署
1、環境準備
關閉火墻和selinux的擁有rhel7軟件倉庫的虛擬機
server1 gitlab倉庫(在我的博客git工具的使用中查看如何部署) server6 jenkins2、安裝jenkins
jenkins下載地址:
#清華鏡像源,選擇自己所需要的jenkins版本,這里我下載的是jenkins-2.319-1.1.noarch.rpm https://mirrors.tuna.tsinghua.edu.cn/jenkins/redhat/jdk官網下載地址(需要注冊賬號并登陸):
https://www.oracle.com/cn/java/technologies/javase/jdk11-archive-downloads.html依賴包daemonize下載地址:
http://rpmfind.net/linux/RPM/epel/7/x86_64/Packages/d/daemonize-1.7.7-1.el7.x86_64.html [root@server6 ~]# wget https://mirrors.tuna.tsinghua.edu.cn/jenkins/redhat/jenkins-2.319-1.1.noarch.rpm --no-check-certificate [root@server6 ~]# ls anaconda-ks.cfg jdk11-archive-downloads.html daemonize-1.7.7-1.el7.x86_64.rpm jenkins-2.319-1.1.noarch.rpm jdk-11.0.11_linux-x64_bin.rpm original-ks.cfg #先安裝jdk再安裝deamon依賴最后安裝jenkins [root@server6 ~]# rpm -ivh jdk-11.0.11_linux-x64_bin.rpm [root@server6 ~]# rpm -ivh daemonize-1.7.7-1.el7.x86_64.rpm [root@server6 ~]# yum install -y jenkins-2.319-1.1.noarch.rpm. #開啟jenkins服務 [root@server6 ~]# systemctl start jenkins [root@server6 ~]# systemctl status jenkins.service #查看端口,jenkins所使用的8080端口處于開放狀態 [root@server6 ~]# netstat -antlp tcp6 0 0 :::8080 :::* LISTEN 17940/java 瀏覽器訪問ip:端口號 #查看jenkins密碼將其復制并粘貼到瀏覽器中的密碼框點擊繼續按鈕 [root@server6 ~]# cat /var/lib/jenkins/secrets/initialAdminPassword 2916f9b1fb7b430f8b149239c8b080a8瀏覽器訪問ip:端口號:http://192.168.230.137:8080等待一段時間后進入如下頁面
粘貼密碼并點擊繼續按鈕
登陸成功點擊安裝推薦的插件,等待安裝完成
安裝完成后進入如下登陸頁面,先使用右下角的admin登陸
點擊保存完成,開始使用jenkins
* 修改登陸密碼
點擊右上角的admin用戶–》設置–》password—》修改并保存
重新登陸jenkins
jenkins安裝完成
3、更新插件源
在jenkins管理中找到插件管理
查找測試那個源的虛度更快,我這里是華為的源更快,所以將華為的url填入升級站點并提交(插件管理的的高級選項)
[root@server6 ~]# curl -sSL https://cdn.jsdelivr.net/gh/lework/jenkins-update-center/speed-test.sh | bash Jenkins mirror update center speed test[Mirror Site] ustc : https://mirrors.ustc.edu.cn/jenkins/ bit : https://mirrors.bit.edu.cn/jenkins/ tsinghua : https://mirrors.tuna.tsinghua.edu.cn/jenkins/ tencent : https://mirrors.cloud.tencent.com/jenkins/ aliyun : https://mirrors.aliyun.com/jenkins/ huawei : https://mirrors.huaweicloud.com/jenkins/[Test] Test File : updates/current/plugin-versions.jsonSite Name IPv4 address File Size Download Time Download Speed ustc 202.141.160.110 12M 0.3s 37.9MB/s bit 114.247.56.117 12M 2.8s 4.32MB/s tsinghua 101.6.15.130 tencent 1.82.234.185 12M 8.5s 1.41MB/s aliyun 219.144.101.239 12M 26s 471KB/s huawei 124.70.125.167 12M 0.3s 39.0MB/s
查看jenkins的鏡像源文件,顯示已經更改為華為云
三、jenkins項目管理配置
1、項目創建
點擊新建item,項目名稱為project_01,freestyle project,確定
安裝gitlab插件,等待安裝完成
將公鑰上傳到gitlab
私鑰上傳到jenkins
配置demo項目,在源碼管理里選擇git,輸入gitlab的ssh克隆地址,點擊添加
選擇jenkins,在添加評劇類型里選擇SSH Username with private key,描述gitlab ssh key,用戶root
選擇enter directly,將私有密鑰寫入key點擊添加
Credentials選擇root,指定分支與gitlab中分支保持一致
2、配置周期性檢查gitlab變更
構建觸發器:輪詢,指定多長時間執行一次
構建中選擇執行shell,寫入要執行的命令,點擊保存
查看控制臺輸出,輸出成功
設置完成
3、配置實時監控gitlab變更
在menu–》admin–》設置—》網絡–》外發請求–》勾選允許webhook和服務對本地的網絡請求并保存
在jenkins的demo項目配置—構建觸發器—build when…—高級—generate—獲得token將其復制
gitlab的demo1項目的設置—webhook
點擊addwebhook
在控制臺輸出中可以查看到改動操作
4、自動構建docker鏡像并上傳到本地倉庫
#編寫Dockerfile文件并上傳到gitlab [root@server1 demo1]# vim Dockerfile [root@server1 demo1]# git add Dockerfile [root@server1 demo1]# git commit -m "add Dockerfile" [root@server1 demo1]# git push -u origin main查看jenkins同樣輸出成功
jenkins實時同步也能查看到Dockerfile文件
給jenkins所在的主機上安裝docker
在harbor倉庫中上傳nginx鏡像
jenkins安裝docker bulid and publish插件
在demo1項目的配置構建中選擇docker build and publish
倉庫名稱為library/demo1,標簽動態獲取,使用docker套接字,設定倉庫地址,添加jenkins平局提供者
填入如圖所示內容
立即構建項目
成功構建,可以查看到控制臺輸出
在harbor倉庫中可以看到library/demo1
5、添加docker交付任務
新建一個名為docker的任務,選擇構建自由風格
遇到的問題:
構建時報錯顯示docker: Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post “http://%2Fvar%2Frun%2Fdocker.sock/v1.24/containers/create?name=busybox”: dial unix /var/run/docker.sock: connect: permission denied.
原因是jenkins用戶所在組不是docker,查看docker組的id修改jenkins用戶的組,重啟jenkins服務再次構建成功
總結
以上是生活随笔為你收集整理的jenkins持续集成与持续交付的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 定时提醒软件有哪些 定时提醒便签推荐
- 下一篇: 微软活动目录基础漫谈