這篇文章給大家介紹k8s+docker如何部署jenkins+gitlab實(shí)現(xiàn)CICD,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對(duì)大家能有所幫助。
10年積累的成都網(wǎng)站制作、網(wǎng)站建設(shè)經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶對(duì)網(wǎng)站的新想法和需求。提供各種問題對(duì)應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先網(wǎng)站制作后付款的網(wǎng)站建設(shè)流程,更有武進(jìn)免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。CICD是持續(xù)集成(continuous integration,CI),持續(xù)交付(continuous delivery,CD),持續(xù)部署(continuous Deployment,CD)的簡(jiǎn)稱。
指在開發(fā)過程中自動(dòng)執(zhí)行一系列腳本來減低開發(fā)引入bug的概率,在新代碼從開發(fā)到部署的過程中,盡量減少人工的介入。
1,持續(xù)集成
持續(xù)集成指的是,頻繁地(一天多次)將代碼集成到主干。
它的好處有兩個(gè):
1)快速發(fā)現(xiàn)錯(cuò)誤:每完成一點(diǎn)更新,就集成到主干,可以快速發(fā)現(xiàn)錯(cuò)誤,定位錯(cuò)誤也比較容易。
2)防止分支大幅偏離主干:如果不是經(jīng)常集成,主干又在不斷更新,會(huì)導(dǎo)致以后集成的難度變大,甚至難以集成。
持續(xù)集成的目的:
讓產(chǎn)品可以快速迭代同時(shí)還能保持高質(zhì)量,它的核心措施是:代碼集成到主干之前,必須通過自動(dòng)化測(cè)試,只要有一個(gè)測(cè)試用例失敗,就不能集成。
Martin Fowler說過,"持續(xù)集成并不能消除Bug,而是讓它們非常容易發(fā)現(xiàn)和改正。"
2, 持續(xù)交付
持續(xù)交付指的是頻繁的將軟件的新版本交付給質(zhì)量團(tuán)隊(duì)或用戶,以供評(píng)審,如果評(píng)審?fù)ㄟ^,代碼就進(jìn)入生產(chǎn)階段。
持續(xù)交付可以看作是持續(xù)集成的下一步,強(qiáng)調(diào)的是,不管怎樣更新,軟件是隨時(shí)隨地可以交付的。
3,持續(xù)部署
持續(xù)部署是持續(xù)交付的下一步,指的是代碼通過評(píng)審之后,自動(dòng)部署到生產(chǎn)環(huán)境。
持續(xù)部署的目標(biāo)是:代碼在任何時(shí)候都是可以部署的,可以進(jìn)入生產(chǎn)階段。
持續(xù)部署的前提是能自動(dòng)化完成測(cè)試,構(gòu)建,部署等步驟。
持續(xù)部署與持續(xù)交付的區(qū)別,可以參考下圖:
jenkins是一個(gè)比較流行的持續(xù)集成工具。
GitLab是存儲(chǔ)鏡像的鏡像倉庫。
流程詳解:
由客戶端將代碼push推送到git倉庫,gitlab上配置了一個(gè)webHook的東西可以觸發(fā)Jenkins的構(gòu)建。進(jìn)入到Jenkins虛線范圍內(nèi),它所做的事情非常多,從mvn構(gòu)建代碼,對(duì)代碼進(jìn)行靜態(tài)分析,做單元測(cè)試,測(cè)試通過之后就可以build鏡像,鏡像構(gòu)建成功后就把鏡像push推送到Harbor鏡像倉庫中,鏡像push推送到鏡像倉庫后,我們就可以調(diào)用kubernetes集群的restAPI更新服務(wù),而后kubernetes接收到了更新的指令,從Harbor鏡像倉庫pull拉取鏡像,從而完成服務(wù)的更新與重啟,最后我們從客戶端來訪問kubernetes集群的服務(wù)。
項(xiàng)目環(huán)境:
主機(jī) | 操作系統(tǒng) | ip地址 |
---|---|---|
k8s01(master) | Centos 7.3 | 172.16.1.30 |
k8s02(node01) | Centos 7.3 | 172.16.1.31 |
k8s03 (node02) | Centos 7.3 | 172.16.1.32 |
jenkins+gitlab+docker | Centos 7.3 | 172.16.1.33 |
本文所用到的安裝包和插件我已上傳至百度網(wǎng)盤:鏈接:https://pan.baidu.com/s/17mDLgSZ218a-zYhjYddhiA
提取碼:nyxh
部署kubernetes集群可參考博文kubeadm部署kubernetes集群
#確保k8s集群正常運(yùn)行: [root@master ~]# kubectl get nodes NAME STATUS ROLES AGE VERSION master Ready master 112d v1.15.0 node01 Ready <none> 112d v1.15.0 node02 Ready <none> 112d v1.15.0
可以選擇任意一臺(tái)服務(wù)器,這里選擇master作為harboar私有倉庫。詳細(xì)配置可參考博文kubernetes部署Harbor私有倉庫
[root@master ~]# yum -y install yum-utils device-mapper-persistent-data lvm2 [root@master ~]# curl -L https://github.com/docker/compose/releases/download/1.25.0-rc4/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose [root@master ~]# chmod +x /usr/local/bin/docker-compose [root@master harbor]# wget https://storage.googleapis.com/harbor-releases/release-1.7.0/harbor-offline-installer-v1.7.4.tgz [root@master harbor]# tar xf harbor-offline-installer-v1.7.4.tgz [root@master harbor]# cd harbor/ [root@master harbor]# vim harbor.cfg
[root@master harbor]# ./install.sh #執(zhí)行安裝腳本 [Step 4]: starting Harbor ... Creating network "harbor_harbor" with the default driver Creating harbor-log ... done Creating redis ... done Creating registryctl ... done Creating harbor-adminserver ... done Creating harbor-db ... done Creating registry ... done Creating harbor-core ... done Creating harbor-portal ... done Creating harbor-jobservice ... done Creating nginx ... done ? ----Harbor has been installed and started successfully.---- Now you should be able to visit the admin portal at http://172.16.1.30. For more details, please visit https://github.com/goharbor/harbor .
#登錄web 界面新建倉庫,URL:http://172.16.1.30
默認(rèn)用戶名:admin 密碼:Harbor12345
#修改docker配置文件(且重啟docker)并登錄harbor:(集群中的三個(gè)節(jié)點(diǎn)做相同操作)[root@master harbor]# vim /usr/lib/systemd/system/docker.service
[root@master harbor]# systemctl daemon-reload [root@master harbor]# systemctl restart docker [root@master harbor]# docker login -uadmin -pHarbor12345 172.16.1.30:80 WARNING! Using --password via the CLI is insecure. Use --password-stdin. WARNING! Your password will be stored unencrypted in /root/.docker/config.json. Configure a credential helper to remove this warning. See https://docs.docker.com/engine/reference/commandline/login/#credentials-store Login Succeeded #node01和node02操作同上(都需登錄harbor)
#在harbor服務(wù)器(master)上,將鏡像上傳到私有倉庫:
[root@master harbor]# docker pull nginx:latest [root@master harbor]# docker tag nginx:latest 172.16.1.30:80/cicd/nginx:v1.0 [root@master harbor]# docker push 172.16.1.30:80/cicd/nginx:v1.0 The push refers to repository [172.16.1.30:80/cicd/nginx] 12fdf55172df: Pushed 002a63507c1c: Pushed 1c95c77433e8: Pushed v1.0: digest: sha256:099019968725f0fc12c4b69b289a347ae74cc56da0f0ef56e8eb8e0134fc7911 size: 948
#創(chuàng)建認(rèn)證登錄密鑰,以保證kubernetes能夠拉取harbor倉庫中的私有鏡像:
[root@master harbor]# kubectl create secret docker-registry login --docker-server=172.16.1.30:80 --docker-username=admin --docker-password=Harbor12345 secret/login created [root@master harbor]# kubectl get secrets NAME TYPE DATA AGE default-token-wswg2 kubernetes.io/service-account-token 3 113d login kubernetes.io/dockerconfigjson 1 33s
#選擇集群中的某個(gè)節(jié)點(diǎn)測(cè)試是否能夠從Harbor私有倉庫中拉取鏡像:
[root@node01 ~]# docker pull 172.16.1.30:80/cicd/nginx:v1.0 v1.0: Pulling from cicd/nginx 1ab2bdfe9778: Pull complete a17e64cfe253: Pull complete e1288088c7a8: Pull complete 7ee7d3fe92e1: Pull complete Digest: sha256:763562fbc544806c1305304da23d36d0532f082325a1c427996474e304313801 Status: Downloaded newer image for 172.16.1.30:80/cicd/nginx:v1.0 [root@node01 ~]# docker images | grep "172.16.1.30" 172.16.1.30:80/cicd/nginx v1.0 c6ad7233ab97 10 minutes ago 126MB
ok,證明kubernetes和Harbor私有倉庫部署完畢。接下來部署jenkins+gitlab,并配置聯(lián)動(dòng)。
#在最后一臺(tái)主機(jī)172.16.1.33上進(jìn)行操作。
1),基本環(huán)境準(zhǔn)備
#關(guān)閉防火墻:
[root@docker-cicd ~]# systemctl stop firewalld [root@docker-cicd ~]# systemctl status firewalld ● firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled) Active: inactive (dead) Docs: man:firewalld(1)
#禁用selinux:
[root@docker-cicd ~]# vim /etc/sysconfig/selinux
2)部署jenkins服務(wù)
[root@docker-cicd ~]# mkdir CICD [root@docker-cicd ~]# cd CICD/ [root@docker-cicd CICD]# tar zxf jdk-8u131-linux-x64.tar.gz [root@docker-cicd CICD]# mv jdk1.8.0_131/ /usr/java #設(shè)置全局變量: [root@docker-cicd CICD]# vim /etc/profile 在最后添加以下配置項(xiàng): export JAVA_HOME=/usr/java export JRE_HOME=/usr/java/jre export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH export CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
[root@docker-cicd CICD]# source /etc/profile #使其環(huán)境變量生效 [root@docker-cicd CICD]# java -version #驗(yàn)證java環(huán)境 java version "1.8.0_131" Java(TM) SE Runtime Environment (build 1.8.0_131-b11) Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)
#安裝tomcat [root@docker-cicd CICD]# tar zxf apache-tomcat-7.0.54.ta [root@docker-cicd CICD]# mv apache-tomcat-7.0.54 /usr/tomcat7 [root@docker-cicd CICD]# cd /usr/tomcat7/webapps/ [root@docker-cicd webapps]# ls docs examples host-manager manager ROOT [root@docker-cicd webapps]# rm -rf * #刪除tomcat網(wǎng)頁目錄原有文件 #將jenkins war包上傳至tomcat的網(wǎng)頁根目錄下 [root@docker-cicd webapps]# ls jenkins.war
#修改tomcat的字符集: [root@docker-cicd webapps]# vim /usr/tomcat7/conf/server.xml
#在tomcat中定義jenkins的家目錄(/data/jenkins) [root@docker-cicd webapps]# vim /usr/tomcat7/bin/catalina.sh export CATALINA_OPTS="-DJENKINS_HOME=/data/jenkins" export JENKINS_JAVA_OPTIONS="-Djava.awt.headless=true -Dhudson.ClassicPluginStrategy.noBytecodeTransformer=true"
#啟動(dòng)tomcat(即啟動(dòng)jenkins)
[root@docker-cicd webapps]# /usr/tomcat7/bin/catalina.sh start Using CATALINA_BASE: /usr/tomcat7 Using CATALINA_HOME: /usr/tomcat7 Using CATALINA_TMPDIR: /usr/tomcat7/temp Using JRE_HOME: /usr/java/jre Using CLASSPATH: /usr/tomcat7/bin/bootstrap.jar:/usr/tomcat7/bin/tomcat-juli.jar Tomcat started.
[root@docker-cicd webapps]# ss -anput | grep 8080 tcp LISTEN 0 100 :::8080 :::* users:(("java",pid=41682,fd=46))
#瀏覽器登錄jenkins web界面,在web界面中配置安裝jenkins
URL:http://172.16.1.33:8080/jenkins
[root@docker-cicd webapps]# cat /data/jenkins/secrets/initialAdminPassword 36ceb6eeb1bc46af8ce20935b81d8fe8
將管理員密碼粘貼上后,點(diǎn)擊“繼續(xù)”。
#左邊是自動(dòng)安裝,右邊是自定義安裝,我們選擇安裝推薦的插件。
選擇離線安裝,斷掉網(wǎng)絡(luò)失敗后,點(diǎn)擊繼續(xù)。
登錄界面如下:
#安裝必要插件
1)首先安裝中文插件:系統(tǒng)管理----->插件管理----->avalilable(可選)然后搜索localization-zh-cn
安裝成功后,重新啟動(dòng)jenkins,可以發(fā)現(xiàn)界面已經(jīng)支持中文了:
#還需安裝3個(gè)插件,搜索gitlab安裝:Gitlab Authentication、GitLab、Gitlab Hook
安裝過程可能較慢,耐心等待,
插件下載成功后,勾選重啟jenkins選項(xiàng)即可:
如果網(wǎng)絡(luò)問題導(dǎo)致無法下載成功,還可以在服務(wù)器目錄下進(jìn)行上傳插件:/var/lib/jenkins/plugins這個(gè)目錄是存放所有安裝的插件。(插件已上傳至網(wǎng)盤)
3)部署gitlab服務(wù)
[root@docker-cicd CICD]# rpm -ivh gitlab-ce-11.9.8-ce.0.el6.x86_64.rpm warning: gitlab-ce-11.9.8-ce.0.el6.x86_64.rpm: Header V4 RSA/SHA1 Signature, key ID f27eab47: NOKEY Preparing... ################################# [100%] Updating / installing... 1:gitlab-ce-11.9.8-ce.0.el6 ################################# [100%]
#為了解決端口沖突,修改gitlab配置文件:
[root@docker-cicd CICD]# vim /etc/gitlab/gitlab.rb
因沒有部署dns,所以u(píng)rl修改為本機(jī)ip,80默認(rèn)是http服務(wù)的端口,unicorn[‘port’]默認(rèn)是8080,同樣與上邊的jenkins8080端口沖突,所以分別修改為81和8081。
#初始化并啟動(dòng)gitlab: [root@docker-cicd CICD]# gitlab-ctl reconfigure
#確定81端口正常監(jiān)聽: [root@docker-cicd CICD]# netstat -anput | grep -w 81 tcp 0 0 0.0.0.0:81 0.0.0.0:* LISTEN 47382/nginx: master
#瀏覽器登錄gitlab,并在web界面中進(jìn)行配置
URL:http://172.16.1.33:81/
登錄gitlab后需要先設(shè)置一個(gè)密碼再登錄,這里設(shè)置1234.com(需要符合密碼復(fù)雜性要求,最少8位),用戶默認(rèn)為root。
#配置ssh密鑰認(rèn)證:
部署jenkins和gitlab這兩個(gè)服務(wù)的聯(lián)動(dòng),需要經(jīng)過ssh驗(yàn)證。
首先在gitlab上綁定jenkins服務(wù)器的ssh公鑰(因?yàn)槭遣渴鹪谕慌_(tái)服務(wù)器上,所以綁定自己的公鑰)
[root@docker-cicd ~]# ssh-keygen -t rsa [root@docker-cicd ~]# cat /root/.ssh/id_rsa.pub ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDW7s9qm08DaiShtnjBbUUwOpFYmvYaqUuqrIrXHrvcGGQDlte6Ug0R7/K5Igz4HKsjZIFCCblzgH2VLIk6FM0L+eccKnW8/uSywQcKclgK3gqiTRBDiqSt4NqYQz1R8hEW3KbXkXXUIU8kJ3svehxzG0Y8lUrMy7zEhkJ6vod7z5wcJeayzVfkro6Xd4TMiRrasXilApRiIr1Sr9Z9dWgWQkCCM85pQeZZirsZ/w4fT6gwRpP1kTtRBggDnXGi7lfWkMbKYljKMuG4jp92K8mRBLyjsg6Lkq0hkKAOToftwmpCx8CA/05LhMexvDnJXyFg/o+8yG+o0qmrlSvojl+N root@docker-cicd
復(fù)制這個(gè)公鑰,然后登陸gitlab,點(diǎn)擊右上角的設(shè)置:
#在gitlab上創(chuàng)建一個(gè)代碼倉庫:
輸入一個(gè)倉庫的名字 權(quán)限選擇公共的(public)然后直接點(diǎn)擊創(chuàng)建:
點(diǎn)擊新建一個(gè)new.file:
創(chuàng)建完成后,在本地測(cè)試是否能夠拉取倉庫中的文件:
[root@docker-cicd ~]# git clone git@172.16.1.33:root/my-test-project.git
[root@docker-cicd ~]# cd my-test-project/ [root@docker-cicd my-test-project]# ls index.html [root@docker-cicd my-test-project]# cat index.html print: "hello world!!"
4)配置jenkins和gitlab聯(lián)動(dòng)
該URL鏈接:
#執(zhí)行構(gòu)建操作:
#!/bin/bash #定義變量(存放數(shù)據(jù)的目錄) backupcode="/data/backcode/$JOB_NAME/$BUILD_NUMBER" #創(chuàng)建該目錄 mkdir -p $backupcode #對(duì)jenkins家目錄(/data/jenkins)下的workspace/設(shè)置所需擁有的權(quán)限 chmod 644 "$JENKINS_HOME"/workspace/"$JOB_NAME"/* #使用rsync工具拷貝并同步數(shù)據(jù) rsync -acP "$JENKINS_HOME"/workspace/"$JOB_NAME"/* $backupcode #以下操作是編寫一個(gè)Dockerfile文件(將修改的內(nèi)容拷貝到新鏡像中) echo FROM 172.16.1.30:80/cicd/nginx:v1.0 > "$JENKINS_HOME"/workspace/Dockerfile #源鏡像就使用私有倉庫中鏡像 echo COPY ./"$JOB_NAME"/* /usr/share/nginx/html/ >> "$JENKINS_HOME"/workspace/Dockerfile #刪除舊版本的鏡像(因?yàn)榇嬖跁?huì)持續(xù)不斷的進(jìn)行構(gòu)建) docker rmi 172.16.1.30:80/cicd/nginx:v2.0 #使用docker build 通過該dockerfile構(gòu)建新版本鏡像 docker build -t 172.16.1.30:80/cicd/nginx:v2.0 /"$JENKINS_HOME"/workspace/. #將新生成的新鏡像push到私有倉庫上 docker push 172.16.1.30:80/cicd/nginx:v2.0 #刪除之前版本的deployment資源(nginx應(yīng)用) ssh root@172.16.1.30 kubectl delete deployment nginx #重新創(chuàng)建nginx應(yīng)用(這次從倉庫中拉取的鏡像是新生成的鏡像) ssh root@172.16.1.30 kubectl apply -f /root/yaml/nginx.yaml 注意:/root/yaml/nginx.yaml此路徑是自定義的,后邊需要在該目錄下創(chuàng)建nginx的YAML文件(路徑保持一致,否則會(huì)導(dǎo)致構(gòu)建失?。?/pre>這里面寫的是jenkins構(gòu)建時(shí)會(huì)執(zhí)行的shell腳本,這個(gè)腳本才是實(shí)現(xiàn)持續(xù)集成核心,它實(shí)現(xiàn)了下端kubernetes自動(dòng)更新容器的操作。
注意:腳本中所定義的內(nèi)容,得根據(jù)你們自己當(dāng)前的環(huán)境進(jìn)行定義(比如主機(jī)地址,私有倉庫鏡像和存放文件路徑都是不同的),腳本編寫較易,可根據(jù)自己的需求進(jìn)行修改。
#編寫完腳本后不要保存,下面的這個(gè)插件很重要,就是他實(shí)現(xiàn)自動(dòng)化更新的webhook插件,首先復(fù)制下圖的jenkins URL地址,然后去gitlab上綁定webhook:
復(fù)制url后點(diǎn)擊保存:##登錄github進(jìn)行操作
點(diǎn)擊添加后,可以看到有報(bào)錯(cuò)提示:gitlab默認(rèn)設(shè)置不允許向自己發(fā)送webhook(因?yàn)槲覀兪遣渴鹪谝慌_(tái)服務(wù)器上),如下圖所示:##修改全局配置,勾選允許發(fā)送本地請(qǐng)求:
#修改成功后,重新添加web hook:
#添加完成后,會(huì)出現(xiàn)一個(gè)版塊,測(cè)試連接:
證明jenkins與gitlab聯(lián)動(dòng)成功。
#如果添加webhook出現(xiàn)以下報(bào)錯(cuò)信息,則需要在jenkins上的“全局安全配置” 中開啟匿名訪問權(quán)限,然后重新添加。報(bào)錯(cuò)信息如下圖:
5)配置jenkins免密登錄kubernetes集群
配置免密登錄的目的是為了在構(gòu)建時(shí),能夠去執(zhí)行master中的YAML文件。#將jenkins主機(jī)上的密鑰對(duì)拷貝給master節(jié)點(diǎn),以實(shí)現(xiàn)能夠免密登錄集群中的master: [root@docker-cicd ~]# ssh-copy-id root@172.16.1.30到此,集成環(huán)境部署完畢,接下來進(jìn)行測(cè)試。
5,測(cè)試部署環(huán)境
在gitlab上新建代碼,刪除代碼,修改代碼,都會(huì)觸發(fā)webhook進(jìn)行自動(dòng)部署。最終會(huì)作用在所有的nginx容器中,也就是我們的web服務(wù)器。
#首先將jenkins和gitlab這臺(tái)主機(jī)登錄harbor私有倉庫:
1)安裝docker:[root@docker-cicd ~]# cd /etc/yum.repos.d/ [root@docker-cicd yum.repos.d]# wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo [root@docker-cicd yum.repos.d]# yum repolist #查看可用的repo源 [root@docker-cicd yum.repos.d]# yum -y install docker-ce [root@docker-cicd yum.repos.d]# systemctl start docker [root@docker-cicd yum.repos.d]# systemctl enable docker [root@docker-cicd yum.repos.d]# docker -v Docker version 19.03.6, build 369ce74a3c2)修改docker配置文件:
[root@docker-cicd yum.repos.d]# vim /usr/lib/systemd/system/docker.service#重新加載docker服務(wù): [root@docker-cicd yum.repos.d]# systemctl daemon-reload [root@docker-cicd yum.repos.d]# systemctl restart docker3)登錄harbor倉庫:
[root@docker-cicd ~]# docker login -uadmin -pHarbor12345 172.16.1.30:80 WARNING! Using --password via the CLI is insecure. Use --password-stdin. WARNING! Your password will be stored unencrypted in /root/.docker/config.json. Configure a credential helper to remove this warning. See https://docs.docker.com/engine/reference/commandline/login/#credentials-store Login Succeeded4)在master上創(chuàng)建在shell腳本中定義的nginx應(yīng)用的YAML文件(部署web服務(wù)):
[root@master ~]# mkdir yaml [root@master ~]# cd yaml/ [root@master yaml]# vim nginx.yaml apiVersion: extensions/v1beta1 kind: Deployment metadata: name: nginx spec: replicas: 2 #定義兩個(gè)副本 template: metadata: labels: web: nginx spec: containers: - name: nginx image: 172.16.1.30:80/cicd/nginx:v2.0 #鏡像指定私有倉庫中的鏡像(注意:版本為在jenkins上新構(gòu)建的版本) imagePullPolicy: Always #定義鏡像策略(每次創(chuàng)建pod時(shí),總是從倉庫中重新拉取鏡像) ports: - containerPort: 80 imagePullSecrets: #添加imagePullSecrets字段,指定剛才創(chuàng)建的登錄密鑰(login) - name: login --- apiVersion: v1 #創(chuàng)建service資源(映射web端口為31234) kind: Service metadata: name: nginx-svc spec: type: NodePort ports: - port: 80 targetPort: 80 nodePort: 31234 selector: web: nginx#在gitlab上修改或新建代碼(例如修改之前創(chuàng)建的index.html文件)
#點(diǎn)擊提交后,會(huì)觸發(fā)webhook,進(jìn)行構(gòu)建:控制臺(tái)輸出信息中會(huì)顯示構(gòu)建過程中的詳細(xì)信息,如果在構(gòu)建的過程中那個(gè)環(huán)節(jié)出現(xiàn)了問題,也能在信息中準(zhǔn)確的查看到,如下圖所示:
#瀏覽器訪問web服務(wù)(nginx),URL:http://172.16.1.30:31234#在gitlab上重新修改代碼:
//修改內(nèi)容:<h2>hello world, This is two build</h2>
再次觸發(fā)webhook,重新構(gòu)建:#重新通過瀏覽器訪問nginx服務(wù):
#第三次在gitlab上修改代碼:
//修改代碼為:<h2>hello world, This is three build</h2>#重新通過瀏覽器訪問nginx:
#在服務(wù)器本地查看上面構(gòu)建的項(xiàng)目和文件:[root@docker-cicd ~]# cd /data/ [root@docker-cicd data]# ls backcode jenkins #backcode為我們創(chuàng)建的存放構(gòu)建項(xiàng)目的目錄,一個(gè)為jenkins的家目錄 [root@docker-cicd data]# cd backcode/test/ [root@docker-cicd test]# ls #在當(dāng)前目錄下存放了所構(gòu)建的項(xiàng)目 10 11 12 3 4 5 6 7 8 9 [root@docker-cicd test]# cat 12/index.html #而目錄中的內(nèi)容正是我們所構(gòu)建的代碼 <h2>hello world, This is three build</h2> [root@docker-cicd test]# cd ../../jenkins/workspace/ [root@docker-cicd workspace]# ls Dockerfile test [root@docker-cicd workspace]# cat test/index.html <h2>hello world, This is three build</h2> #在jenkins家目錄下存放了Dcokerfile文件和最新構(gòu)建的代碼至此,CICD項(xiàng)目部署完畢,Kubernetes中的web應(yīng)用,會(huì)通過jenkins+gitlab的自動(dòng)構(gòu)建,無需人工的介入,自動(dòng)部署并更新web界面,減少了在生產(chǎn)中出現(xiàn)的bug的概率,等待時(shí)間及更高的產(chǎn)品質(zhì)量。
關(guān)于k8s+docker如何部署jenkins+gitlab實(shí)現(xiàn)CICD就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。
新聞標(biāo)題:k8s+docker如何部署jenkins+gitlab實(shí)現(xiàn)CICD-創(chuàng)新互聯(lián)
文章鏈接:http://muchs.cn/article26/dgcejg.html成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供電子商務(wù)、做網(wǎng)站、企業(yè)建站、軟件開發(fā)、自適應(yīng)網(wǎng)站、建站公司
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容