python 持续集成方案_Jenkins+Python+GitLab持续集成
創(chuàng)建任務(wù)
登錄Jenkins,點(diǎn)擊左側(cè)列表的新建選項(xiàng)。輸入任務(wù)名稱,選擇構(gòu)建一個(gè)自由風(fēng)格的軟件項(xiàng)目,點(diǎn)擊確定。
配置
在任務(wù)配置界面,可以設(shè)置General標(biāo)簽中的丟棄舊的構(gòu)建選項(xiàng),設(shè)置保持構(gòu)建的天數(shù)和保持構(gòu)建的最大個(gè)數(shù)。
點(diǎn)擊源碼管理標(biāo)簽,選擇git,在Repository URL中輸入Git倉(cāng)庫(kù)的鏈接。
如果是HTTP鏈接,選擇Credentials一行的Add > Jenkins,在Kind一行下拉選擇Username with password,在下方Username和Password框中輸入用戶名和密碼。
使用docker jenkins容器里面的ssh-key。
直接使用服務(wù)器的ssh key就可以了。如果指定Path to key需要使用docker中的ssh key。如果使用Source files那么需要使用docker容器中的key, 因?yàn)镾ource files的相對(duì)路徑不是固化到本地的路徑, 而是docker中的路徑.
如果是SSH鏈接,選擇SSH Username with private key,在Username框中輸入用戶名,Private Key選擇為Enter directly,在顯示的key框中輸入私鑰。(生成秘鑰ssh-keygen -t rsa -C "email.com",生成的文件在home目錄下的.ssh目錄下,使用命令cat id_rsa查看私鑰,復(fù)制到key框中)。點(diǎn)擊最下方的Add按鈕,保存設(shè)置。
在Credentials的下拉選項(xiàng)中選擇剛剛創(chuàng)建Username。
使用定時(shí)任務(wù)
在構(gòu)建觸發(fā)器標(biāo)簽里選擇Poll SCM,輸入H/2 * * * *, 最后點(diǎn)擊保存。
這是一個(gè)定時(shí)任務(wù),每隔2分鐘查詢一次代碼,如果有更新,就執(zhí)行任務(wù)。
使用webhook
使用webhook比定時(shí)任務(wù)更好,webhook只有在push或指定操作時(shí),jenkins會(huì)拉取代碼,不用定時(shí)訪問(wèn),耗費(fèi)資源。
需要安裝的插件Gitlab Hook、GitLab、Gitlab Authentication、Build Authorization Token Root
配置job,在構(gòu)建觸發(fā)器中勾選Build when a change is pushed to GitLab. GitLab CI Service URL: http://服務(wù)器IP:8080/project/demo ,URL后面是回調(diào)地址,再點(diǎn)擊高級(jí),再Secret token行,點(diǎn)擊Generate生成token。
在GitLab服務(wù)器上的相對(duì)應(yīng)的項(xiàng)目的Settings里面的Integrations中,配置webhook,輸入在jenkins中獲取的URL,和token,可以根據(jù)需要勾選事件,開(kāi)啟SSL,點(diǎn)擊Add webhook。會(huì)在Add webhook按鈕下生成一個(gè)webhook,點(diǎn)擊test,會(huì)彈出勾選的事件,選擇相應(yīng)的事件,會(huì)在頁(yè)頂彈出Hook executed successfully: HTTP 200,到此,webhook配置完成。
注意:在腳本中使用docker exec執(zhí)行容器中的命令是, 不要指定-it, -t是指定tty, 而jenkins中沒(méi)有tty, 只需要指定-i即可.
1 將代碼部署到遠(yuǎn)程服務(wù)器
不需要使用容器中的ssh-key。
在jenkins服務(wù)器上生成keyssh-keygen -t rsa -C "email.com",
使用ssh-copy-id -i ~/.ssh/id_rsa.pub user@ip(如果端口不是22,可以添加參數(shù)-p port進(jìn)行修改,port為端口數(shù)值), 將生成的公鑰保存在目標(biāo)服務(wù)器。這樣可以免密碼登錄。
安裝Publish over SSH插件,在系統(tǒng)管理-->系統(tǒng)設(shè)置里面找到Publish over SSH。
配置Jenkins SSH Key,如果key在生成時(shí)設(shè)置了密碼,就在Passphrase里輸入密碼,沒(méi)有則忽略。
復(fù)制私鑰,粘貼進(jìn)Key里面。
配置SSH Servers,點(diǎn)擊增加。Name為SSH的名稱,Hostname是遠(yuǎn)程服務(wù)器的IP地址,Username是登錄的用戶名,Remote Directory是遠(yuǎn)程服務(wù)器的目錄,必須是真實(shí)存在的,插件不會(huì)自動(dòng)創(chuàng)建。
點(diǎn)擊Test Configuration測(cè)試配置是否成功。成功會(huì)顯示Success。
1.1遠(yuǎn)程部署任務(wù)
再創(chuàng)建一個(gè)構(gòu)建任務(wù),當(dāng)有觸發(fā)任務(wù)時(shí),構(gòu)建任務(wù)運(yùn)行。
還是點(diǎn)擊新建,輸入一個(gè)任務(wù)名稱,不點(diǎn)擊構(gòu)建一個(gè)自由風(fēng)格的軟件項(xiàng)目,在最下面的復(fù)制框中,輸入剛剛創(chuàng)建的觸發(fā)任務(wù)名稱。
點(diǎn)擊確定。如果輸入的任務(wù)名不存在,會(huì)報(bào)錯(cuò),并讓你重新輸入一次。
在構(gòu)建觸發(fā)器中選擇Build after other projects are built,在其他項(xiàng)目建成后進(jìn)行構(gòu)建,Projects to watch選擇第一個(gè)任務(wù),可能會(huì)報(bào)錯(cuò)No such project ‘gol’. Did you mean ‘golismero’?,不用理會(huì),如果是單個(gè)任務(wù),可以把最后面的,逗號(hào)和空格刪除,就不會(huì)報(bào)錯(cuò)了,不刪也沒(méi)有影響。
勾選下面的Trigger only if build is stable,只有在構(gòu)建穩(wěn)定時(shí)才觸發(fā)。
其他設(shè)置不變,構(gòu)建后操作中增加構(gòu)建后操作步驟,在彈出的選項(xiàng)中選擇Send build artifacts SSH,輸入SSH Server Name(是遠(yuǎn)程主機(jī)IP),然后在Transfers中的Exec command中輸入腳本命令,其他選項(xiàng)暫時(shí)不用填寫。
Source files是相對(duì)于workspace下項(xiàng)目目錄的目錄, 是一個(gè)相對(duì)目錄, 如果在workspace目錄, 即jenkins的工作目錄, 那么需要填寫**/, 后面可以跟工作目錄下的文件或文件夾.
Remove prefix文件復(fù)制時(shí)要過(guò)濾的目錄.
Remote directory文件得到到遠(yuǎn)程機(jī)上的目錄,此目錄是相對(duì)于SSH Server中的Remote directory的,如果不存在將會(huì)自動(dòng)創(chuàng)建。
保存,即可看到觸發(fā)任務(wù)和構(gòu)建任務(wù)。
還有另一種方式可以部署
2 SSH插件部署
這種方式需要安裝SSH插件。
點(diǎn)擊Credentials-->System-->Add domain,在Domain Name中輸入名稱,Description描述,可寫可不寫,Specification保持默認(rèn)為Add,點(diǎn)擊ok。在新頁(yè)面點(diǎn)擊左上的Add Credentials,輸入遠(yuǎn)程登錄的Username和Password,點(diǎn)擊OK。
點(diǎn)擊系統(tǒng)管理-->系統(tǒng)設(shè)置,找到SSH remote hosts,配置SSH site,點(diǎn)擊增加,輸入Hostname主機(jī)IP,Port遠(yuǎn)程連接端口(一般為22),Credentials選擇剛剛創(chuàng)建Domain,和Username相同,點(diǎn)擊Check connection,顯示Successfull connection,成功,點(diǎn)擊保存。
2.1 遠(yuǎn)程部署任務(wù)
基本和1.1相同,但是這個(gè)是在構(gòu)建中增加構(gòu)建步驟,在彈出的選項(xiàng)中選擇Execute shell script on remote host using ssh,默認(rèn)會(huì)自動(dòng)填寫SSH site(如果沒(méi)有填寫,點(diǎn)擊輸入框看看有沒(méi)有,如果沒(méi)有可能是前面出現(xiàn)錯(cuò)誤),可能會(huì)有紅字報(bào)錯(cuò)SSH Site not specified,不用理。在Command輸入框中輸入shell腳本。保存即可。
這種方式?jīng)]有第一種構(gòu)建的快。
配置郵件
可以安裝Email Extension Plugin插件,擴(kuò)展郵箱功能。
點(diǎn)擊左側(cè)的系統(tǒng)管理,在管理Jenkins列點(diǎn)擊系統(tǒng)設(shè)置,在新頁(yè)面找到Jenkins Location,在系統(tǒng)管理員郵件地址欄中輸入發(fā)件人,格式為標(biāo)題,再找到郵件通知,點(diǎn)擊高級(jí)按鈕,添加SMTP服務(wù)器,以及郵件后綴(@xxx.com),使用SMTP驗(yàn)證的用戶名為完整的郵箱賬號(hào),密碼是授權(quán)碼。(騰訊企業(yè)郵箱如果綁定了微信,在設(shè)置-微信綁定-客戶端專用密碼,生成授權(quán)碼,保存設(shè)置。)勾選使用SSL協(xié)議,SMTP端口是465, Reply-To Address填寫收件人地址。
高級(jí)版郵件通知
需要安裝Email Extension插件,安裝好后,點(diǎn)擊系統(tǒng)管理-->系統(tǒng)設(shè)置找到Extended E-mail Notification,配置SMTP server服務(wù)器地,格式為smtp.exmail.qq.com(這里用騰訊企業(yè)郵箱作為例子).
Default user E-mail suffix設(shè)置郵箱后綴,就是@及后面的字符@xxx.com.
Default Content Type默認(rèn)發(fā)送的內(nèi)容類型選擇HTML/(text/html).
Default Recipients默認(rèn)收件人,可以設(shè)置多個(gè)收件人,中間用,隔開(kāi),英文狀態(tài)下的符號(hào).
Default Subject默認(rèn)主題不用改,也可以在最前面加一些文字,比如構(gòu)建通知.
Default Content這里面是默認(rèn)模板,可以在網(wǎng)上找模板更改,也可以自己寫,html類型。
點(diǎn)擊上面的高級(jí)按鈕,勾選Use SMTP Authentication,輸入U(xiǎn)sername和Password,Password是客戶端授權(quán)密碼要和配置郵件中的授權(quán)碼一樣,勾選SSL,點(diǎn)擊保存。
為單個(gè)的Job增加構(gòu)建后步驟,
選擇Editable Email Notification, 在Project Recipient List收件人列表中輸入收件人郵箱, 多個(gè)可以用,分割, 想使用全局默認(rèn)配置的話, 可以使用$DEFAULT_RECIPIENTS.
Project Reply-To List允許回復(fù)人列表, 默認(rèn)值$DEFAULT_REPLYTO。
Content Type文檔類型, 可以設(shè)置HTML。
Attach Build Log發(fā)送的郵件是否包含日志。
點(diǎn)擊Advanced Settings, 在Triggers中, 刪除Sent To默認(rèn)的Developer List, 點(diǎn)擊Add添加Recipient List, 保存完成。
總結(jié)
以上是生活随笔為你收集整理的python 持续集成方案_Jenkins+Python+GitLab持续集成的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: seo全攻略_SaaS 企业推广获客全攻
- 下一篇: P1618 三连击(升级版)-- pyt