DevOps持續(xù)交付
隨著DevOps?規(guī)?;穆涞睾蛻?yīng)?,持續(xù)集成以及持續(xù)交付已經(jīng)是?種常態(tài)的。CI指的是持續(xù)集成,使?的開源?具是Jenkins,CD指的是持續(xù)交付和持續(xù)部署,?個完整的軟件開發(fā)?命周期為:
主要流程可以具體為:
構(gòu)建階段->單元測試階段->部署階段->?動化測試階段->部署到?產(chǎn)環(huán)境階段->度量和驗證階段。
DevOps體系
持續(xù)集成
持續(xù)集成(Continuous Integration)的?的就是讓產(chǎn)品可以快速交付,同時還能保 持?質(zhì)量的業(yè)務(wù)交付。它的核?代碼集成到主?分?后,必須通過 ?動化測試,只要有?個測試?例失敗,那么就不能集成。這樣互聯(lián)?的產(chǎn)品研發(fā),就形成了?套標(biāo)準(zhǔn)化的流程。
如上是互聯(lián)?產(chǎn)品交付的基本形態(tài)。持續(xù)集成指的是頻繁地(?天多次)將代碼集成到主?分?。它的好處具體有兩點:
1、快速發(fā)現(xiàn)錯誤,每完成?點更新,就集成到主?分?,可以快速發(fā)現(xiàn)錯誤, 定位錯誤也是很容易
2、防?分??幅度偏離主?。如果不是經(jīng)常集成,主??在不斷更新,會導(dǎo)致以后集成的難度變?,也有可能導(dǎo)致難以集成。
持續(xù)交付
持續(xù)交付(Continuous delivery)指的是頻繁地將軟件的新版本,交付給測 試團隊或者是客戶,以供評審。如果評審?fù)ㄟ^,代碼就進?到?產(chǎn)階段 。持續(xù)交付可以把它理解為持續(xù)集成的下?步,它強調(diào)的是不管怎么更新,軟件 是隨時隨地都可以進?交付
持續(xù)部署
持續(xù)部署(Continuous deployment)是持續(xù)交付的下?步,指的是代碼通過 評審以后,?動部署到?產(chǎn)環(huán)境。持續(xù)部署的?標(biāo)是,代碼在任何時刻都是 可以部署的,可以進?到?產(chǎn)階段。持續(xù)部署的前提是?動化測試完成,構(gòu)建, 部署等步驟。持續(xù)部署與持續(xù)交付的區(qū)別如下所示:
Jenkins
Jenkins環(huán)境搭建?
在https://get.jenkins.io/war-stable/2.277.4/的地址下載最新穩(wěn)定版的Jenkins,下載成功后,把它放在tomcat下的webapps下的?錄下,然后啟動tomcat,啟動成功后,在鏈接地址http://localhost:8080/jenkins/login?from=%2Fjenkins%2F就會顯示出登錄的信息,密碼顯示在/Users//.jenkins/secrets/initialAdminPassword的?錄下,在該?錄下獲取密碼,然后輸?到輸?框??,點擊繼續(xù)。如下圖所示:
我們選擇推薦安裝的插件,就會?動安裝插件,如下所示:?備注:如果是離線的情況,需要解決的思路使? skip-certificate-check.hpi 插件來解決Jenkins離線的問題。
參數(shù)話構(gòu)建
?先需要安裝插件Persistent Parameter,Git Parameter,Build With Parameters,Active Choices(動態(tài)選擇參數(shù),可以根據(jù)不同需求選擇不同執(zhí)?的的動態(tài)參數(shù))。
Git
認(rèn)識Git?
Git是Linus Torvalds為了幫助管理Linux內(nèi)核開發(fā)?開發(fā)的?個開放源碼的版本控制軟件,它采?了分布式版本庫的?式,
不必服務(wù)器端軟件?持??梢哉f它是?個開源的分布式版本控制系統(tǒng),?于敏捷?效地處理任何?或者?的項?。
集中式&分布式?
集中式?
從中央代碼服務(wù)器獲取具體的代碼,把代碼下載到??的本地,然后把代碼,必須在有?絡(luò)的情況下提交到中央服務(wù)器。典型的產(chǎn)品是SVN,所謂集中式的版本控制系統(tǒng),只有?個中央數(shù)據(jù)倉庫,如果中央數(shù)據(jù)倉庫癱瘓或者是不可訪問的情況下,所有的使?者?法使?SVN,?法進?提交或者備份?件。
分布式?
分布式版本控制系統(tǒng),在每個使?者電腦上就有?個完整的數(shù)據(jù)倉庫,沒有?絡(luò)依然可以使?Git。當(dāng)然為了團隊協(xié)作,會把本地數(shù)據(jù)同步到GitLab服務(wù)器或者是GitHub等代碼倉庫。
Git安裝?
需要到https://git-scm.com/downloads進?下載,根據(jù)具體的操作系統(tǒng)來下載具體的安裝包。
Git配置?
system
針對任意登錄到Linux系統(tǒng)的?戶?效
global
全局,只針對當(dāng)前登錄的?戶?效,git配置寫?~/.config/config
local
本地,只針對某?個?件夾?效。
?般配置的時候,使?的是全局配置,建議使?全局配置的?式。具體配置name和email如下:
在mac的系統(tǒng)中,配置信息就會寫在該?錄下cat ~/.gitconfig 查看顯示全局的配置信息,使?到的命令為:
Git核?原理?
操作的?般都是?作?錄,如果執(zhí)?了git add的命令后,那么就會從?作區(qū)進?到暫存區(qū),如果再執(zhí)?了git commit的命令后,等于是從暫存區(qū)進?到本地倉庫,如果再執(zhí)?git push,就是從本地倉庫進?到原地倉庫。本地倉庫主要記錄的是所有?件的修改,刪除,這些Git都會記錄下來,?的是可以進?歷史回退,追蹤信息。?
Git使?
- 本地已有代碼,需要使?git來進?管理
- 本地沒有代碼,需要創(chuàng)建?個新的git版本倉庫
- 本地沒有代碼,也沒有倉庫,去GitLab平臺下載?個git版本代碼倉庫.使?到的命令為git clone
創(chuàng)建倉庫的命令為:git init
Git命令
git本地倉庫,就是?個git的版本庫,也就是說在代碼?錄下的?個.git的?件夾,這就是管理?件信息的?錄,也是git核?的本地倉庫。github是共有代碼托管平臺,?Gitlab是私有代碼托管平臺。
A、本地有代碼進?管理
直接到這個?錄,執(zhí)?git init就可以創(chuàng)建本地倉庫了,那么后?的所有代碼修改,都會記錄相關(guān)的信息。
B、需要新創(chuàng)建本地倉庫
git init來創(chuàng)建新的倉庫信息。具體創(chuàng)建的過程如下:
C、托管平臺下載
git clone來創(chuàng)建代碼倉庫,在公司??很多時候使?的是這種?式。?
Git?命周期
它的?命周期可以完整的描述為:
git init #?成git?作區(qū)
git status #掌握git?作區(qū)的信息
git add #確認(rèn)需要添加以及跟蹤的?件
git commit -m "注釋信息"#提交到本地倉庫
Git?件命名?
在git中對?件進?重命名,因為修改都會進?監(jiān)測到,那么操作的步驟為:如果使?常規(guī)的命令mv,那么就?需要進?add和commit的過程,這個過程可以說是有了刪除的操作,也進?創(chuàng)建的過程,我們可以使?git mv的命令來輕松的解決,命令為:
修改?件名稱后,也是需要進?提交到本地倉庫的,也就是使?git commit -m的命令
Git的log?
查看Git的?志信息,主要使?到的命令具體匯總?cè)缦拢?br> ????????git log --oneline #查看簡陋的信息
????????git log
????????git log -1 #顯示最新的?條提交記錄信息
????????git log --all --graph #查看提交的版本演變
????????git reflog #記錄git所有的操作,包含了提交以及回退
Git回退
git的版本管理是通過指針來進?管理的,這個指針就是HEAD,那么也就是說HEAD表示當(dāng)前版本,HEAD^表示的是上?個版本,HEAD^^表的是上上個版本。
????????git reset --hard 版本ID
????????git reset --hard HEAD管理
備注:結(jié)合git reflog,可以回到過去,也是可以到未來的版本信息,也就是回退了,也是可以還原回去的
Git Stash
git stash可以稱為臨時空間。它的使?場景主要可以總結(jié)為:git stash就是把暫存區(qū)未提交的內(nèi)容,臨時存放到?個區(qū)域,?便?后取回來再次使?。場景可以描述為:修改?個?件后,進?了git add fileName?件,但是不進?具體的commit,這個時候可能需要?其他的事,?如需要修復(fù)線上的緊急bug,那么就需要把這個臨時的存放到?個區(qū)域。具體命令如下:
localhost:learnGit liwangping$ git add index.py
localhost:learnGit liwangping$ git status
位于分? master
要提交的變更:
(使? "git restore --staged <?件>..." 以取消暫存)
修改: index.py
localhost:learnGit liwangping$ git stash save "保存新增的?件信息"
保存?作?錄和索引狀態(tài) On master: 保存新增的?件信息
localhost:learnGit liwangping$ git status
位于分? master
??件要提交,?凈的?作區(qū)
?完其他事后,可以再把stash區(qū)域的?件恢復(fù)回來,使?到的命令具體為:
git stash list #查看stash區(qū)域的?件信息
git stash pop #恢復(fù)最新的stash進度到?作區(qū)
?
git stash pop stash_id#恢復(fù)指定的stash的進度?
git stash clear #清空所有存儲的stash進度
Git分?管理
master是主?分?,?般我們的分?可以分為test dev stage的分?。分?涉及的命令具體如下
????????git branch #查看當(dāng)前的分?
????????git branch test #創(chuàng)建?個測試分?
????????git checkout test #切換分?
????????git checkout -b 分?名稱#創(chuàng)建新的分?并且?即切換到新的分?信息
????????git branch -D 分?名稱
????????git merge 分?名稱#分?的合并信息,如下就是顯示的是把test的分?代碼合并到master的分?
Git沖突解決?
git merge分?合并的時候,就需要解決各個沖突的問題,那么下?就具體的說明怎么樣來解決沖突的問題。
git merge dev
?動合并 index.py
沖突(內(nèi)容):合并沖突于 index.py
?動合并失敗,修正沖突然后提交修正的結(jié)果。
localhost:learnGit liwangping$
如下是顯示出圖的?件內(nèi)容信息,具體如下:
<<<<<<< HEAD
def func():
print("this is a test branch")
針對合并出現(xiàn)如上的問題,解決的思路是:
出現(xiàn)沖突
查看沖突?件的內(nèi)容
怎么修改?件,就需要?為處于進去
修改完成后,再針對?件進?add和commit的操作
Git標(biāo)簽
git tag可以理解為:這對每個版本加上?個標(biāo)簽。標(biāo)簽涉及到的命令具體可以總結(jié)為:
git tag -a tagName -m 標(biāo)簽注釋:創(chuàng)建?個標(biāo)簽,并且加上注釋
git tag #查看標(biāo)簽信息
git log --decorate #查看標(biāo)簽的詳細信息
git log --oneline --decorate #命令如上是?樣的
git tag -a標(biāo)簽名稱 commitID -m 標(biāo)簽注釋
git show tagName #查看標(biāo)簽的具體詳細的信息
Gitlab
Gitlab環(huán)境搭建
代碼版本的管理是持續(xù)集成??很重要的?個環(huán)節(jié),在現(xiàn)代企業(yè)??,對代碼的管理都是通過Gitlab來進?管理
的。Gitlab是基于Ruby的代碼來進?開發(fā)的。下?具體演示下Gitlab的安裝。在Linux中安裝Gitlab的依賴項,具體
為:
針對防?墻的處理,具體如下:
下來進?下載安裝:
=======
def func():
print("this is a dev branch")
>>>>>>> dev
針對合并出現(xiàn)如上的問題,解決的思路是:
????????出現(xiàn)沖突
????????查看沖突?件的內(nèi)容
????????怎么修改?件,就需要?為處于進去
????????修改完成后,再針對?件進?add和commit的操作
Git標(biāo)簽
git tag可以理解為:這對每個版本加上?個標(biāo)簽。標(biāo)簽涉及到的命令具體可以總結(jié)為:
????????git tag -a tagName -m 標(biāo)簽注釋:創(chuàng)建?個標(biāo)簽,并且加上注釋
????????git tag #查看標(biāo)簽信息
????????git log --decorate #查看標(biāo)簽的詳細信息
????????git log --oneline --decorate #命令如上是?樣的
????????git tag -a標(biāo)簽名稱 commitID -m 標(biāo)簽注釋
????????git show tagName #查看標(biāo)簽的具體詳細的信息
Gitlab
Gitlab環(huán)境搭建
代碼版本的管理是持續(xù)集成??很重要的?個環(huán)節(jié),在現(xiàn)代企業(yè)??,對代碼的管理都是通過Gitlab來進?管理的。Gitlab是基于Ruby的代碼來進?開發(fā)的。下?具體演示下Gitlab的安裝。在Linux中安裝Gitlab的依賴項,具體為:
yum install curl policycoreutils openssh-server openssh-clients
systemctl enable sshd
systemctl start sshd
yum install postfix
systemctl enable postfix
systemctl start postfix
yum install -y policycoreutils-python
針對防?墻的處理,具體如下:?
firewall-cmd --permanent --add-service=http?
systemctl reload firewalld
下來進?下載安裝:
wget --content-disposition https://packages.gitlab.com/gitlab/gitlab-
ce/packages/el/7/gitlab-ce-12.0.2-ce.0.el 7.x86_64.rpm/download.rpm
rpm -i gitlab-ce-12.0.2-ce.0.el7.x86_64.rpm?
啟動gitlab:
gitlab-ctl reconfigure
#就會啟動gitlab,?次啟動時間?較??
啟動后,在瀏覽器訪問,默認(rèn)端?是80,?次顯示的??:
在后?的啟動中,就沒有?次啟動那么?的時間了,啟動的命令為:
gitlab-ctl start?
ssh-key配置
下來是配置ssh,以及本地提交代碼到Gitlab,具體配置如下:
下來配置user和email,具體如下:
然后會在當(dāng)前的?錄下?成.ssh的?錄,進?后,可以看到對應(yīng)的?件。把id_rsa.pub的內(nèi)容復(fù)制,然后加到Gitlab的密鑰中,具體如下:?
點擊AddKey進?添加,然后就會出現(xiàn)如下的界?信息:
?下來在Gitlab上創(chuàng)建項?,然后把本地的代碼提交上去。
localhost:saas $ git log
commit 42ed46bce3d68c03b9c52f47742e17c6a9a9a11a (HEAD -> master)
Author: wuya <759178811@qq.com>
Date: Wed Jun 16 15:41:35 2021 +0800
this is a test code
commit 87c9cc43f0f5dfd80baeb9db8669622f81475db8 (origin/master, origin/HEAD)
Author: wuya <759178811@qq.com>
Date: Wed Jun 16 15:36:03 2021 +0800
Initial commit
localhost:saas $ git push
Username for 'http://47.95.142.233': 759178811@qq.com
Password for 'http://759178811@qq.com@47.95.142.233':
然后就會在Gitlab的系統(tǒng)??看到提交的代碼,具體如下:
Gitlab之CI&CD
基于Gitlba-ci的需要安裝gitlab-ci的插件,安裝的命令為:
執(zhí)?如上命令后顯示如下的信息:
枚舉對象: 4, 完成.
對象計數(shù)中: 100% (4/4), 完成.
使? 8 個線程進?壓縮
壓縮對象中: 100% (3/3), 完成.
寫?對象中: 100% (3/3), 327 字節(jié) | 327.00 KiB/s, 完成. 總共 3 (差異 0),復(fù)? 0 (差異 0)
To http://47.95.142.233/wuya/saas.git 87c9cc4..42ed46b master -> master
然后就會在Gitlab的系統(tǒng)??看到提交的代碼,具體如下:
Gitlab之CI&CD?
基于Gitlba-ci的需要安裝gitlab-ci的插件,安裝的命令為:
curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-ci-multi-
runner/script.rpm.sh | bash
安裝成功后下來進?插件的安裝,安裝的命令為:
yum install gitlab-ci-multi-runner -y
#執(zhí)?后輸出的信息為:
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
runner_gitlab-ci-multi-runner/x86_64/signature
| 862 B 00:00:00
runner_gitlab-ci-multi-runner/x86_64/signature
| 1.0 kB 00:00:00 !!!
runner_gitlab-ci-multi-runner-source/signature
| 862 B 00:00:00
runner_gitlab-ci-multi-runner-source/signature
| 951 B 00:00:00 !!!
Package gitlab-ci-multi-runner-9.5.1-1.x86_64 already installed and latest version
?下來查看gitlab-ci-multi-runner是否可以正常的啟動以及它的狀態(tài),具體如下:
下來進?gitlab-ci的注冊,注冊需要獲取到具體的URL和TOKEN的信息,步驟為:
- 打開項?
- 在項???選擇settings??的CICD
然后選擇Runners,如下所示:
下來進?CICD的注冊的信息,具體命令為:
[root@iz2ze4dcz1c36xtn6io522z ~]# gitlab-ci-multi-runner register
Running in system-mode.
Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com/):
http://47.95.142.233/
Please enter the gitlab-ci token for this runner:
9pzo1oicss-T6f7nVz_Q
Please enter the gitlab-ci description for this runner:
[iz2ze4dcz1c36xtn6io522z]:
Please enter the gitlab-ci tags for this runner (comma separated):
test
Whether to run untagged builds [true/false]:
[false]:
Whether to lock Runner to current project [true/false]:
[false]:
Registering runner... succeeded runner=9pzo1oic
Please enter the executor: docker, parallels, shell, ssh, docker+machine, docker-ssh,
virtualbox, docker-ssh+machine, kubernetes:
shell
Runner registered successfully. Feel free to start it, but if it's running already the
config should be automatically reloaded!
?注冊成功后,就可以在Gitlab??進?基于shell的?式來進?CICD的交互了。下?來看是否注冊成功,具體如下:
在Gitlab的CICD中也就能看到剛才注冊成功的CI的信息了,如下所示:
下來在具體的項???增加?個.gitlab-ci.yml的?件來進?,具體如下:
?下來在具體的項???增加?個.gitlab-ci.yml的?件來進?,具體如下:?
實際案例知行命令行如下
保存提交后再次到項?的CICD??,就可以看到我們新增的CICD,具體如下:?
我們再次查看執(zhí)?的結(jié)果信息,如下所示:
?基于GitLab的框架執(zhí)?
下來我們在Gitlab??執(zhí)?測試框架的代碼,整體代碼的結(jié)構(gòu)圖具體如下:
我們需要在執(zhí)?的服務(wù)器安裝需要的第三?的庫,安裝好后,在.gitlab-ci.yml?件??編寫如下內(nèi)容:
下來我們就可以看到它會在gitlab??被執(zhí)?,具體執(zhí)?結(jié)果的信息如下所示:
?Running with gitlab-ci-multi-runner 9.5.1 (96b34cc)
on iz2ze4dcz1c36xtn6io522z (Td6rjStK)
Using Shell executor...
Running on iz2ze4dcz1c36xtn6io522z...
Fetching changes...
Removing tests/.pytest_cache/
Removing tests/__pycache__/test_login_token_book.cpython-37-pytest-5.4.3.pyc
Skipping Git submodules setup
$ cd tests/
$ python3 -m pytest -v test_login_token_book.py?
Jenkins整合Gitlab?
Jenkins&Gitlab通信?
在Jenkins的系統(tǒng)管理中,找到Gitlab,然后配置Connection name,以及填寫Gitlab服務(wù)的地址信息,具體如下:
下來需要配置認(rèn)證授權(quán)的信息,也就是說從Jenkins獲取Gitlab的代碼,在Gitlab的Settings中,找到Access
Tokens,具體如下:
============================= test session starts ==============================
platform linux -- Python 3.7.1, pytest-5.4.3, py-1.10.0, pluggy-0.13.1 --
/usr/bin/python3
collecting ... collected 6 items
test_login_token_book.py::test_login_book[datas0] PASSED ? ?[ 16%]
test_login_token_book.py::test_login_book[datas1] PASSED ? ?[ 33%]
test_login_token_book.py::test_login_book[datas2] PASSED ? ?[ 50%]
test_login_token_book.py::test_login_book[datas3] PASSED ? ?[ 66%]
test_login_token_book.py::test_login_book[datas4] PASSED ? ?[ 83%]
test_login_token_book.py::test_login_book[datas5] PASSED ? ?[100%]
============================== 6 passed in 1.12s ===============================
Job succeeded
Jenkins整合Gitlab?
Jenkins&Gitlab通信
在Jenkins的系統(tǒng)管理中,找到Gitlab,然后配置Connection name,以及填寫Gitlab服務(wù)的地址信息,具體如下:
下來需要配置認(rèn)證授權(quán)的信息,也就是說從Jenkins獲取Gitlab的代碼,在Gitlab的Settings中,找到AccessTokens,具體如下:
?
然后選擇不同的權(quán)限,來?成?個token的授權(quán)信息,拿到該信息后,在Jenkins的系統(tǒng)管理的GitLab的填寫token的信息,然后點擊添加,具體如下:
添加后的信息如下所示:?
下來點擊右邊的Test Connection來進?測試,具體測試結(jié)果如下所示:
?動觸發(fā)構(gòu)建
我們期望的?的是?動push后,進?智能化的構(gòu)建,?不需要設(shè)置什么定時任務(wù)或者是?動觸發(fā)構(gòu)建,下?具體詳細的來說這部分的應(yīng)?。
Jenkins插件安裝
在CI中安裝插件Gitlab hooks,具體的插件名稱為:GitLab,Gitlab Hook Plugin,Git,Git client。
Jenkins配置
在項?的代碼管理中,把分?部分取消,也就是任意分?提交都是能夠進??動觸發(fā)的,如下所示:
在Jenkins中選擇要觸發(fā)的項?,如saas的項?,然后點擊配置,在構(gòu)建觸發(fā)器中選擇Build when a change is pushed to GitLab,如下所示:?
然后點擊?級,到Secret token中點擊Generate,就會?動?成Secret token的信息,如下所示:
備注:需要記住的是GitLab Web Hook的URL地址信息和Secure token的信息,切記。?
WebHook配置
在Gitlab的saas?程中,點擊Settings中的Itergrations,如下所示:
然后填寫Web Hook的URL地址和Secure token的信息,如下所示:
主要填寫正確的Web Hook地址和Secure token信息后,其他的都是默認(rèn)的,最后點擊
Add webhook添加按鈕,添加成功就會顯示這些信息:?
點擊Push events后,就會?動觸發(fā)遠程的Jenkins項?執(zhí)?
?動觸發(fā)實戰(zhàn)
下?我們到saas下編輯代碼后,進?push,就會?動觸發(fā)執(zhí)?,如下所示:
持續(xù)流?線
配置?式
在?個產(chǎn)品經(jīng)過技術(shù)內(nèi)部評審和?案評審后,以及到后?的?案評審和轉(zhuǎn)測階段,交付給測試后,測試這邊會進?多個不同階段的驗證,這個階段具體為:
unitTest-->smoke測試-->外部API測試階段-->API?動化測試-->UI?動化測試,設(shè)計到的?程具體可以展示為:
安裝插件Parameterized Trigger plugin,Delivery Pipeline Plugin,Build Pipeline Plugin后,依次來設(shè)置它的順序,設(shè)置步驟為增加構(gòu)建后操作步驟??選擇“構(gòu)建 其他?程”,選擇下?個需要執(zhí)?的?程,具體如下:
下來增加新的試圖信息,也就是測試流?線,具體為:
然后出發(fā)執(zhí)?初始化的項?,也就是UnitTest,執(zhí)?后,它的結(jié)果信息為:
開始管道式流?式的執(zhí)?,當(dāng)然試圖模式也可以使?另外?種?格,具體如下:
腳本?式
上?的?式都是通過配置的?式,我們創(chuàng)建流?線式的?程,然后編寫Pipeline的腳本,具體如下:
pipeline{
agent any
stages{
stage('unitTest')
{
steps{
script{
'cd /Applications/devOps/CICD/saas'
'python3 -m pytest -v test_login.py'
}
}
}
stage('smokeApi'){
steps{
script{
'cd /Applications/devOps/CICD/saas'
'python3 -m pytest -v test_login.py'
}
}
}
stage('thridApi'){
steps{
script{
'cd /Applications/devOps/CICD/saas'
'python3 -m pytest -v test_login.py'
}
}
}
stage('apiTest'){
steps{
script{
'cd /Applications/devOps/CICD/saas'
'python3 -m pytest -v test_login.py'
}
}
}
stage('uiTest'){
steps{
script{
'cd /Applications/devOps/CICD/saas'
'python3 -m pytest -v test_login.py'
}
}
}
}
}
然后執(zhí)?,?執(zhí)?的過程信息:
報告&通知整合?
在測試代碼執(zhí)?后,我們需要得到測試執(zhí)?的結(jié)果信息以及執(zhí)?過程中,如果出現(xiàn)其他的問題希望能夠得到回應(yīng)。測試報告我們可以把Pytest與Allure整合起來,?通知可以和釘釘整合起來。下?具體說明這部分的配置以及案例應(yīng)?實戰(zhàn)。
Allure報告
配置應(yīng)?
?先需要在Jenkins中安裝Allure Jenkins Plugin的插件,安裝插件成功后。在“全局?具配置”的Allure中,選擇?動 安裝Allure,具體如下所示:
下來在“系統(tǒng)配置”的Allure Report中配置它的全局變量,信息具體如下:
案例實戰(zhàn)
下來在CI的?程中,在構(gòu)建中需要帶上配置的Allure的信息,具體執(zhí)?的命令為:
?cd tests
python3 -m pytest -v -s ?test_login_token_book.py --alluredir ${WORKSPACE}/report
在構(gòu)建后操作??選擇Allure Report,在Path??填寫report的關(guān)鍵字,切記,項?的?程?錄?定得要有report的?件夾信息,配置信息具體如下所示:
點擊構(gòu)建后,就會在?程的詳細??顯示Allure Report的報告信息,具體如下所示:
點擊Allure Report,就會顯示具體的測試報告信息。
企業(yè)級的CICD
基于Docker的CICD?
?動化部署&驗證
下?我們可以把?動構(gòu)建鏡像,以及?動啟動服務(wù),和?動化驗證測試服務(wù)的過程,完全結(jié)合Jenkins持續(xù)集成的流?線,完全實現(xiàn)?動化的部署和過程。
pipeline
在Jenkins持續(xù)集成的?具??創(chuàng)建Pipeline的項?,設(shè)計到的腳本具體如下:
pipeline{
agent any
stages{
stage('Code Pull') {
steps {
git 'http://47.95.142.233/wuya/app.git'
}
}
stage('Code Check') {
steps {
withSonarQubeEnv('SonarScanner') {
sh '''
mvn package
mvn clean install -Dmaven.test.skip=true
org.sonarsource.scanner.maven:sonar-maven-plugin:3.6.1.1688:sonar
'''}
}
}
stage('container init'){
steps{
sh '''cd src/main/docker
docker-compose down
sleep 6s
docker rmi app:0.0.1-SNAPSHOT
sleep 10s
'''
}
}
stage('build the image'){
steps{
sh '''
mvn clean package -Dmaven.test.skip=true docker:build'''
}
}
stage('run the container'){
steps{
sh '''cd src/main/docker
docker-compose up -d '''
}
}
stage('smoke test'){
steps{
sh '''cd src/main/docker
sleep 10s
python3 -m pytest -v test_springboot.py'''
}
}
}
}
下來我們開始構(gòu)建鏡像,其實我們構(gòu)建的過程,第?步主要就是打包鏡像,第?步就是?動化測試的啟動鏡像,第三個步驟就是驗證部署的服務(wù)這部分,這部分也是可以理解為?個冒煙測試的過程。具體構(gòu)建后輸出的結(jié)果信息如下:文章來源:http://www.zghlxwxcb.cn/news/detail-770496.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-770496.html
到了這里,關(guān)于DevOps持續(xù)交付之容器化CICD流水線的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!