jenkins自動化腳本
A. STF結合Jenkins實現Monekey測試自動化
STF是一個可以通過網頁管理和使用移動設備的平台,支持遠程調試、遠程使用手機瀏覽器打開鏈接、遠程執行shell腳本、遠程拖拽安裝App、遠程查看日誌、遠程截屏等功能。
關於枯答搏STF的詳細搭建流程可以參考我的這篇文章舉遲:
《OpenStf的搭建以及分布式部署的沒祥實現》
當CI Monekey測試任務跑起來之後,STF就會自動刷新頁面顯示正在自動化標記
B. jenkins怎麼實現客戶端自動化腳本
首先搭建起jenkins環境,android官方提供了使用ant編譯打包的腳本,所以要在jenkins系統配置裡面將ant配置好;然後在jenkins裡面新建一個項目,這里列出比老知搜較重要猛猛的幾項配置: 1、項目源代碼侍歷位置,一般就是指定svn吧 2、構建過程添加shell
C. Jenkins自動化發布方法
jenkins自動化發布首先需要知道其原理,知道了理論後才可以更好的配置。同時也需要知道一些基本知識(如果不懂需要自己學習),比如webhook、docker、宿主主機、掛載目錄/文件(外掛倉庫)、shell腳本等。
一、前期准備
1、分支
確保自動化發布倉庫分支統一,正式環境需要是release,內網測試環境test_release。如果沒有的請先新建好。
註:release需要是保護分支,因為正式環境不允許隨意發布。設置後需要在保護分支設置裡面配置其【可合並 Pull Request 成員】為可以審核發布人。如下saas中台前端的配置:
D. 再見 Jenkins!幾行腳本搞定自動化部署,這款神器有點厲害
Drone是一款基於容器技術的持續集成工具,使用簡單的YAML配置文件即可完成復雜的自動化構建、測試、部署任務,在Github上已經有22K+Star。
對比Jenkins復雜的圖形化界面操作,Drone使用腳本來定義流水線任務無疑更簡單、更直觀。Drone更加輕量級,內存佔用少且響應速度快!自動化部署要啥Jenkins?直接給Git整個CI/DI功能難道不香么?
https://github.com/macrozheng/mall-learning/tree/master/mall-tiny-drone
E. 自動化部署工具jenkins,從此擺脫重復單調的工作
它是基於java開發的一種持續集成工具,用於監控持續重復的工作,旨在提供一個開放易用的軟體平台,使軟體的持續集成變成可能。
有了它你可以免除手工編譯,發布代碼,上線更容易。節省的時間你可以喝杯咖啡,放鬆一下 ^_^
道路千萬條,熟悉第一條,我這里使用 Red Hat 家族衍生的 centos 上安裝Jenkins。
這里可以下載rpm包: http://pkg.jenkins-ci.org/redhat/
也可以如下操作:
安裝
將Jenkins存儲庫添加到yum repos,並從此處安裝Jenkins。
安裝穩定版
還有一個LTS YUM資源庫的LTS版本線
安裝Java
Jenkins需要Java才能運行,但默認情況下某些發行版不包含此內容。要安裝Open Java Development Kit(OpenJDK),請運行以下命令:
安裝完成後Jenkins 啟動之前的注意事項
默認情況是Jenkins是使用Jenkins用戶啟動的,但這個用戶目前系統並沒有賦予許可權,這里我們將啟動用戶修改為root;另外Jenkins默認埠是8080,這個跟tomcat的默認埠沖突,我們也修改一下默認埠。
找到 JENKINS_USER 和JENKINS_PORT ,修改為root和你需要的埠
啟動/停止
注意:如果收到以下錯誤消息,請確保已安裝Java:
Starting jenkins (via systemctl): Job for jenkins.service failed. See 'systemctl status jenkins.service' and 'journalctl -xn' for details.[FAILED]
禁用防火牆
有關CentOS Java的重要說明
Jenkins需要Java才能運行,但yum install jenkins不強制已經安裝了java。檢查以確保您已通過運行安裝了hava java java -version。為了進一步使CentOS用戶感到困難,默認的CentOS版本的Java與Jenkins不兼容。Jenkins通常最適合使用Java的Sun實現,由於許可原因,它不包含在CentOS中。
如果您獲得類似於以下內容的輸出,則表示您使用的是Java的默認(GCJ)版本,該版本不適用於Jenkins:
要解決此問題,您可能需要刪除GC的GCJ版本並安裝Sun兼容版本。
如果收到上面的輸出,請卸載默認的java:
然後在卸載Java之後(或者如果你根本沒有安裝Java那麼開始)。您需要安裝與Sun兼容的Java版本。最簡單的方法是使用OpenJDK,它可以通過EPEL存儲庫獲得(或者您可以直接從Oracle安裝官方 RPM)。要安裝OpenJDK,請運行以下命令:
根據您的CentOS版本,OpenJDK的軟體包名稱可能有所不同。使用yum search openjdk來檢查包的名稱。如果通過yum找不到OpenJDK,則可能需要安裝EPEL yum存儲庫。安裝後,您應該能夠獲得以下java -version輸出:
Ok,到此jenkins安裝完成。
接下來你可以在瀏覽器地址中輸入Jenkins網址,如:IP:埠,將顯示如下內容:
拷貝指定文件密碼,進入用戶自定義插件界面,建議選擇安裝官方推薦插件:
接下來是進入插件安裝進度界面:
等待一段時間之後,插件安裝完成,配置用戶名密碼:
OK,你可以使用jenkins來編譯、發布你的代碼了。oh,它支持從代碼庫中直接拉取代碼,git、svn都支持。趕快使用你的Spring boot、go試試吧。
F. Jenkins自動化部署到多台伺服器配置
1:Jenkins秘鑰查看
需要查看秘鑰,
然後在 **.16.200.22和**.16.200.28伺服器的目錄下面將Jenkins秘鑰放到~/.ssh/authorized_keys文件里。
3:Jenkins自動化部署到多台伺服器腳本
library 'lib-base@master'
def map = [:]
//######傳參########
map.put('GIT_URL','http://172.16.0.1/FN-PM0091/cdd.git')
map.put('GIT_BRANCH','master')
map.put('GIT_CRED_ID','jenkins')
def archivelist=[]
archivelist.add('job-excutor/target/cdd1.jar')
map.put('ARCHIVE_FILE',archivelist)
// skywalking 服務目錄
def SKYWALKING_DIR = '/usr/local/apps/apache-skywalking-apm-bin-es7'
// skywalking oap 服務地址
def SKYWALKING_OAP_IP = '172.16.200.54'
def SKYWALKING_OAP_PORT = 11800
def deploylist=[]
deploylist.add("runjar -f 'cdd-service/target/cdd1.jar' -v '/data/cddm' -j '-Xms512m -Xmx512m' -h **.16.200.28")
deploylist.add("runjar -f 'report-executor/target/cdd1.jar' -v '/data/cddm' -j '-Dnacos.logging.default.config.enabled=false -Xms512m -Xmx512m' -h **.16.200.22")
map.put('DEPLOY_RUN',deploylist)
//################
DockerBuild("maven",map);
G. Jenkins pipeline demo - 獲取python script 輸出
在 Jenkins Job 中槐舉攜,添加一個 pre script 來提高自動化程度,將這個腳本的輸出作為其他主要流程build的參數,因此,build 參數的邏輯由 pre script 來控制,而不改變main job的邏輯。
下面的 sample 是通過獲取一個 python 腳本的 console output 到 pipeline,然後再傳遞鉛伏給其他 step 使用。
python script 中 print 或 sys.stdout.write 的輸出,Jenkins 都可以獲取到。只需要在pipeline script 中使用下面的方法,會獲取到 script 的所有 output.
func test_value 是為了說明 return value 但並不輸出到console,腳本執行結束後 Jenkins 並獲取不到。下面的腳本,Jenkins 獲取到的是 「Value: 2 3」。為了 pipeline 處理方便,可以在腳本中控制輸出。
sample pipeline 中設置了三個stage,Preparation中定義答滑一個變數,Get number 執行python 腳本,獲取輸出,Result 中使用該變數。
H. 16 Web 自動化測試 -- Jenkins執行腳本
想要通過Jenkins來執行腳本,我們得在Jenkins上先安裝一些必要的環境,並去新建一個Maven Job。
詳細見個人博客: http://www.jianshu.com/p/026c0fcaedf0
這里對日程表的五顆 * 做個說明:
注意也需要在Jenkins Location中設置管理員郵件地址:
接著在Job 的配置的「構建後操作」中添加發送郵箱操作,可選「Editable Email Notification」 插件,並做配置。
Project Recipient List 配置要收到郵件的郵箱列表
Content Type 配置郵件發送類型
Default Content 配置郵件發送內容,例如content type我選擇了HTML,那麼我可以編寫html於內容中,發郵件後會自動化解析成頁面形式。例如:
I. Jenkins+Rancher自動化部署
本文主要記錄Jenkins+Rancher+k8s自動化部署相關配置說明,不涉及rancher和jenkins安裝部署,包含java server項目、WAR項目、前端VUE項目部署配置介紹。
伺服器環境信息:
需要在安裝jenkins服務上部署下面相應的軟體,請注意軟體版本,如已經安裝相關軟體,可跳過此章節。
需要安裝rancher-cli,並且使用jenkins用戶預先登錄rancher平台:命令參考:
--token:這個用戶的token建議設置為永不過期,在rancher管理端 -> api&key > 添加。
建議安裝阿里鏡像,提高編譯速度:
jenkins啟動用戶需要添加到docker組中:
項目主要是java和vue開發的,所以需要安裝Maven Integration plugin插件。
spring boot或者spring cloud自帶容器,以及其它服務類型的java後端應用部署。
1、填寫項目名稱,選擇"構建一個maven項目"
點擊下面"OK"按鈕
2、填寫項目描述信息
3、輸入項目地址,並選擇用戶憑證
本文通過conding.net作為代碼管理平台,點擊"Add"添加自己賬號憑證(輸入coding.net平台登陸賬號密碼即可)。
4、配置maven編譯腳本
5、編寫rancher部署腳本
Dockerfile參數說明:FROM:選擇基礎鏡像包,該項目是用java語言開發需要jdk1.8所以選擇openjdk:8ADD:將bRule-deploy-1.0.0.tar.gz文件解壓並上傳到鏡像的brule目錄EXPOSE:容器內部啟動2002埠,根據自身項目填寫指定埠,多個埠填寫多行EXPOSE標簽ENTRYPOINT:容器啟動時執行的命令,執行多條命令使用&&拼接,命令行中帶&需要加上轉移符\&,使用tail -fn監聽應用日誌,以便容器日誌查看。
用於創建docker鏡像,就好比創建一個已經安裝並且配置好了應用程序的操作系統鏡像。
參數說明:192.168.100.21:5000:為本地docker鏡像伺服器地址brule:latest:應用名稱,根據自身項目名稱修改
利用上面創建好的操作系統鏡像啟動一個vmware虛擬機,創建k8s容器。
參數說明:brule:應用名稱,根據自身項目名稱修改,應用名稱規范?(.?)*image:剛才創建的docker鏡像containerPort:容器啟動埠,多個埠使用多行containerPort標簽聲明,埠限制在【30000-32000】
前面vmware虛擬機創建好後,怎麼能讓別人訪問?這個時候就需要創建一個網路服務,用於打通路由器與vmware本地虛擬機的網路。
參數說明:brule:應用名稱,根據自身項目名稱修改port:容器啟動埠nodePort:對外提供服務埠,外部機器訪問
將上面配置好的shell腳本復制到Post Steps -> 執行shell文本域中,並點擊"保存" -> "立即構建"即可部署。
1、進入剛才創建好的jenkins任務,點擊立即構建
2、點擊左下角構建任務,選擇"Console Output",查看構建日誌
3、登錄rancher管理平台,查看構建好的應用
基於J2EE項目的war包部署,前面操作都一致,只是shell部署腳本稍有不同,這里主要詳細說明rancher部署腳本。
Dockerfile參數說明:FROM:選擇基礎鏡像包,war統一使用tomcat容器部署,tomcat:8.5-jre8-slimADD:將operation.war文件解壓並上傳到鏡像的/usr/local/tomcat/webapps/目錄EXPOSE:容器內部啟動8080埠,根據自身項目填寫指定埠,多個埠填寫多行EXPOSE標簽
這里不需要配置ENTRYPOINT標簽,因為tomcat鏡像包中已經有了。
用於創建docker鏡像,就好比創建一個已經安裝並且配置好了應用程序的操作系統鏡像。
參數說明:192.168.100.21:5000:為本地docker鏡像伺服器地址operation:latest:應用名稱,根據自身項目名稱修改
利用上面創建好的操作系統鏡像啟動一個vmware虛擬機,創建k8s容器。
參數說明:operation:應用名稱,根據自身項目名稱修改image:剛才創建的docker鏡像containerPort:容器啟動埠,多個埠使用多行containerPort標簽聲明,埠限制在【30000-32000】
前面vmware虛擬機創建好後,怎麼能讓別人訪問?這個時候就需要創建一個網路服務,用於打通路由器與vmware本地虛擬機的網路。
參數說明:operation:應用名稱,根據自身項目名稱修改port:容器啟動埠nodePort:對外提供服務埠,外部機器訪問
將上面配置好的shell腳本復制到Post Steps -> 執行shell文本域中,並點擊"保存" -> "立即構建"即可部署。
基於webpack構建的VUE項目部署,前面操作都一致,只是shell部署腳本稍有不同,這里主要詳細說明rancher部署腳本。
Dockerfile參數說明:FROM:選擇基礎鏡像包,前端統一使用tomcat容器部署,tomcat:8.5-jre8-slimCOPY:將/dist目錄上傳到鏡像的/usr/local/tomcat/webapps/fastquery/目錄EXPOSE:容器內部啟動8080埠,根據自身項目填寫指定埠,多個埠填寫多行EXPOSE標簽
這里不需要配置ENTRYPOINT標簽,因為tomcat鏡像包中已經有了。
用於創建docker鏡像,就好比創建一個已經安裝並且配置好了應用程序的操作系統鏡像。
參數說明:192.168.100.21:5000:為本地docker鏡像伺服器地址operation:latest:應用名稱,根據自身項目名稱修改
利用上面創建好的操作系統鏡像啟動一個vmware虛擬機,創建k8s容器。
前面vmware虛擬機創建好後,怎麼能讓別人訪問?這個時候就需要創建一個網路服務,用於打通路由器與vmware本地虛擬機的網路。
參數說明:shutcm-fastquery-web:應用名稱,根據自身項目名稱修改port:容器啟動埠nodePort:對外提供服務埠,外部機器訪問
將上面配置好的shell腳本復制到Post Steps -> 執行shell文本域中,並點擊"保存" -> "立即構建"即可部署。