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