CI(Continuous integration)持續(xù)集成?
參考:https://www.jianshu.com/p/2132949ff84a?
持續(xù)集成是指多名開發(fā)者在開發(fā)不同功能代碼的過程當(dāng)中,可以頻繁的將代碼行合并到一起并切相互不影響工作。
持續(xù)集成的目的,是讓產(chǎn)品可以快速迭代,同時(shí)還能保持高質(zhì)量。它的核心措施是,代碼集成到主干之前,必須通過自動(dòng)化測試。只要有一個(gè)測試用例失敗,就不能集成。注:持續(xù)集成簡單來說,就是頻繁的將代碼集成到主干。將軟件個(gè)人研發(fā)的部分向軟件整體部分交付,頻繁進(jìn)行集成以便更快地發(fā)現(xiàn)其中的錯(cuò)誤。
? ? 1.開發(fā)新功能
? ? 2.修復(fù)bug
CD (Continuous delivery)? ? 持續(xù)交付
持續(xù)交付意味著每次更改代碼,集成并構(gòu)建代碼時(shí),他們還將在與生產(chǎn)非常相似的環(huán)境中自動(dòng)測試該代碼。我們將此部署到不同環(huán)境并在不同環(huán)境上進(jìn)行測試的過程稱為部署管道。部署管道通常具有開發(fā)環(huán)境,測試環(huán)境和過渡環(huán)境,但是這些階段因團(tuán)隊(duì),產(chǎn)品和組織而異。
是基于某種工具或平臺(tái)實(shí)現(xiàn)代碼自動(dòng)化的構(gòu)建、測試和部署到線上環(huán)境以實(shí)現(xiàn)交付高質(zhì)量的產(chǎn)品,持續(xù)部署在某種程度上代表了一個(gè)開發(fā)團(tuán)隊(duì)的更新迭代速率。
持續(xù)部署的目標(biāo)是,代碼在任何時(shí)刻都是可部署的,可以進(jìn)入生產(chǎn)階段。
Jenkins -?CI/CD杰出的軟件
jenkins是一款開源的CI&CD軟件,用于自動(dòng)化各種任務(wù),包括構(gòu)建、測試和部署軟件?
作為領(lǐng)先的開源自動(dòng)化服務(wù)器,Jenkins 提供了數(shù)百個(gè)插件來支持構(gòu)建、部署和自動(dòng)化任何項(xiàng)目。
使用java開發(fā)的
??
1. 流程
?
2.pipline(流水線)和blueocean
pipline:操作過程和步驟,拉取代碼、編譯、測試、部署、鏡像制作等操作blueocean是可以用來圖形化管理(編寫、查看、修改等)我們的流水線。是pipline的可視化UI。
?
3. 安裝部署
使用docker安裝部署
1.拉取鏡像
[root@k8snode-1 ~]# docker pull jenkinsci/blueocean
2.啟動(dòng)容器
docker run \
--name sc-jenkins-1 \
-u root \
-d \
-p 8080:8080 \
-p 50000:50000 \
-v jenkins-data:/var/jenkins_home \
-v /var/run/docker.sock:/var/run/docker.sock \
jenkinsci/blueocean
[root@k8snode-1 ~]# docker ps
CONTAINER ID ? IMAGE ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? COMMAND ? ? ? ? ? ? ? ? ? CREATED ? ? ? ? STATUS ? ? ? ? PORTS ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?NAMES
d824ac703b38 ? jenkinsci/blueocean ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? "/sbin/tini -- /usr/…" ? 5 seconds ago ? Up 4 seconds ? 0.0.0.0:8080->8080/tcp, :::8080->8080/tcp, 0.0.0.0:50000->50000/tcp, :::50000->50000/tcp ? sc-jenkins-1
3.訪問驗(yàn)證
?
4.解鎖Jenkins
[root@k8snode-1 ~]# docker ps |grep -i jenkins
d824ac703b38 ? jenkinsci/blueocean ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? "/sbin/tini -- /usr/…" ? 13 minutes ago ? Up 13 minutes ? 0.0.0.0:8080->8080/tcp, :::8080->8080/tcp, 0.0.0.0:50000->50000/tcp, :::50000->50000/tcp ? sc-jenkins-1
?
[root@k8snode-1 ~]# docker exec -it ?sc-jenkins-1 bash
?
#查看登陸密碼
bash-5.1# ?cat /var/jenkins_home/secrets/initialAdminPassword
97ae6e914ab24130a8d9dfa12c07b952
5.安裝相關(guān)插件
?
使用k8s安裝部署
1.準(zhǔn)備工作
官網(wǎng):https://www.jenkins.io/doc/book/installing/kubernetes/
1.1.下載git
[root@k8smaster ~]# yum install git -y
1.2.從代碼倉庫拉取相關(guān)文件
[root@k8smaster ~]# git clone https://github.com/scriptcamp/kubernetes-jenkins
[root@k8smaster kubernetes-jenkins]# ls
deployment.yaml ?namespace.yaml ?serviceAccount.yaml ?service.yaml ?volume.yaml
2.創(chuàng)建相關(guān)命名空間
[root@k8smaster kubernetes-jenkins]# kubectl apply -f namespace.yaml
namespace/devops-tools created
[root@k8smaster kubernetes-jenkins]# kubectl get ns
NAME ? ? ? ? ? ? ?STATUS ? AGE
default ? ? ? ? ? Active ? 105d
devops-tools ? ? ?Active ? 7s
3.創(chuàng)建服務(wù)賬號(hào)綁定集群角色
[root@k8smaster kubernetes-jenkins]# kubectl ?apply -f serviceAccount.yaml?
clusterrole.rbac.authorization.k8s.io/jenkins-admin created
serviceaccount/jenkins-admin created
clusterrolebinding.rbac.authorization.k8s.io/jenkins-admin created
4.創(chuàng)建卷(存儲(chǔ)數(shù)據(jù))
4.1.查看節(jié)點(diǎn)信息
[root@k8smaster kubernetes-jenkins]# kubectl get node
NAME ? ? ? ?STATUS ? ROLES ? ? ? ? ? ? ? ? ?AGE ? ?VERSION
k8smaster ? Ready ? ?control-plane,master ? 105d ? v1.20.6
k8snode-1 ? Ready ? ?worker ? ? ? ? ? ? ? ? 105d ? v1.20.6
k8snode-2 ? Ready ? ?worker ? ? ? ? ? ? ? ? 104d ? v1.20.6
4.2.修改volume.yaml 文件,改成自己的主機(jī)名
?
4.3.創(chuàng)建卷
[root@k8smaster kubernetes-jenkins]# kubectl apply -f volume.yaml?
storageclass.storage.k8s.io/local-storage created
persistentvolume/jenkins-pv-volume created
persistentvolumeclaim/jenkins-pv-claim created
5.部署Jenkins
建議先刪除之前使用docker容器安裝的jenkins
[root@k8snode-1 ~]# docker stop sc-jenkins-1
sc-jenkins-1
[root@k8smaster kubernetes-jenkins]# kubectl apply ?-f deployment.yaml?
deployment.apps/jenkins created
6.啟動(dòng)服務(wù)發(fā)布Jenkins的pod
[root@k8smaster kubernetes-jenkins]# kubectl apply -f service.yaml?
service/jenkins-service created
?
[root@k8smaster kubernetes-jenkins]# kubectl get svc -n devops-tools
NAME ? ? ? ? ? ? ?TYPE ? ? ? CLUSTER-IP ? ? ?EXTERNAL-IP ? PORT(S) ? ? ? ? ?AGE
jenkins-service ? NodePort ? 10.108.82.214 ? <none> ? ? ? ?8080:32000/TCP ? 25s
7.訪問驗(yàn)證
可以訪問k8s集群中的任何一臺(tái)機(jī)器文章來源:http://www.zghlxwxcb.cn/news/detail-682580.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-682580.html
到了這里,關(guān)于CI/CD 持續(xù)集成 持續(xù)交付的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!