當前位置:首頁 » 編程軟體 » jenkins部署腳本

jenkins部署腳本

發布時間: 2024-08-29 09:30:06

A. Jenkins自動發布-openssh7.1配置

      在jenkins部署腳本自動發布的時候,在系統設置中,會用到jenkins插件ssh-plugin所帶的「ssh sites」模塊,但是如果目標伺服器的openssh是7.0版本的話,jenkins會不識別openssh7.0的演算法,導致jenkins一直會報「can not connect!」的錯誤。(如下圖)

我也是煞費苦心,研究了好多天才,查了無數的文檔,才得以解決。

首先,連接不上的原因,是因為openssh7.0更新了新的演算法,老版本不識別新版本的演算法。

其次,也有部分原因是jenkins插件的升級,相關插件及版本,如下圖。

最後,保證以上插件版本都沒問題的情況下,修改目標伺服器上面的/etc/ssh/sshd_config文件:

1.將 PasswordAuthentication 參數的值修改為yes,如果是注釋掉的,把注釋去掉。

2.在文件最下方添加:

Ciphers aes128-cbc,aes192-cbc,aes256-cbc,aes128-ctr,aes192-ctr,aes256-ctr,3des-cbc,arcfour128,arcfour256,arcfour,blowfish-cbc,cast128-cbc

MACs hmac-md5,hmac-sha1,[email protected],hmac-ripemd160,hmac-sha1-96,hmac-md5-96

KexAlgorithms diffie-hellman-group1-sha1,diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha1,diffie-hellman-group-exchange-sha256,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group1-sha1,[email protected]

Ps:Ciphers 指定SSH-2允許使用的加密演算法。

    MACs 指定允許在SSH-2中使用哪些消息摘要演算法來進行數據校驗。

    Kexalgorithms 指定可用的密鑰(密鑰交換)演算法。

以上就是所有的步驟了。現在,再去jenkins里看下是不是好了。呵呵噠。

為此,樓主可是高興了半天。

B. 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);

C. 如何使用jenkins設置每一天整點運行腳本

您可以按照以下步驟來:

  1. 登錄 jenkins

  2. 創建 job

    在創建 job 過程中的Build Triggers 分類中勾選Poll SCM

  3. 填入以下代碼

TZ=Asia/Chongqing

0 * * * *

這樣做的好處:

  1. 每天整點都會自動觸發 job

  2. 中國時間來觸發

如果對答案滿意,請點個贊唄

By Xiak

D. 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文本域中,並點擊"保存" -> "立即構建"即可部署。

E. Jenkins打包後續:Shell腳本自動修改build號,並提交TestFlight

1、自動修改Build號,並生成提交,push到遠程分支上;
2、開始打Release包,並導出IPA文件;
3、利用Application Loader插件實現自動上傳。

前提:Jenkins相關配置已經完成,發布證書、本地Git用戶、push到Git上的許可權賬戶等都已配置完成,如果配置未完成,部分錯誤在後面會出現,再補上也OK。

(1)先取到當前Build號,Shell中讀取plist文件的方法比較簡單,利用的是Mac中操作plist文件的PlistBuddy,路徑在/usr/libexec/PlistBuddy下,這點在之前的文章中寫過: Jenkins 自動打包後打一個tag並同步到origin 。

(2)將版本號(示例:1.0.8.3)先分割字元串,取到最後一個元素(可能會是2位數字或者3位數字),然後把最後一個元素轉數字,再 +1 ,再轉回字元串。

(3)進行字元串拼接,最終效果:1.0.8.4

(4)將新的Build號寫入info.plist文件

(1)生成提交描述:

(2)到對應的Git目錄下進行Git操作

寫成兩個Shell步驟即可:

這點在之前的Jenkins文章中寫過了,主要是利用xcbuild命令去做的,這里要注意的就是打包的類型要又debug改為release即可。

F. jenkins執行python腳本問題

一般有三種方法:
1.安裝執行python的插件:Python Plugin,安裝後在配置那裡就可以看到以下的選項,可以在Script部分直接寫python代碼

G. jenkins上使用shell腳本nohup部署jar服務到remote伺服器

先貼一下,我的jenkins里最後核心配置

remove_jar.sh腳本:

start_jar.sh腳本內容:

remove_jar.sh 和 start_jar.sh 在jenkins伺服器上,需要將這兩個shell在0.0.0.0(不能暴露)的遠端去執行
沒錯,客官您一眼就看出來了派行,覺得簡單的不值一提吧,先別著急,對搜這個問題的滑歲小菜雞來說這裡面也是大有文章,聽我一一道來。

1、第一個問題:ps -ef|grep xxx.jar查到多餘的pid
現象:在0.0.0.0上行 ps -ef | grep alk-wxapi-test.jar | grep -v grep | awk '{print $2}' 只能查到一個pid,但是把這句話放到shell腳本里,在本地使用命令上遠端執行,就會找到3個pid,而且kill 時提示失敗的錯誤。
現在已經知道原因了,但是當時確實是個問題。
已經解決不方便復現了,因此就描述一下就行了。
原因:shell里的這個命令也是通過bash在遠程執行的,所以找到的別的 無關緊要 的pid其實是bash,因此在grep是除了排除grep本身( grep -v grep )外還要排除bash( grep -v bash )
最後命令是:

2、遠程執行腳本,裡面有nohup java -jar,發生錯誤: nohup: failed to run command 『java』: No such file or directory
這是因為nohup時java環境變數沒有讀到,處理方式就是在nohup執行前加入

3、其他思路

4、第二條說jdk的路徑因為每個服務企業都不一樣,所以需要手動傳改,這一點已經在腳本上做了修改,啟動腳本上信羨睜攜帶的第一個參數就是jdk的安裝路徑

這兩個也都是比較好的思路,以後肯定有機會體驗的,本篇到此。

ps -ef |grep -v 在shell sh 腳本中貌似無效?
linux下搭建zookeeper集群遇到的坑
nohup: cannot run command異常解決
Zookeeper not starting, nohup error

H. jenkins執行shell腳本,使用scp免密傳輸失敗問題

問題:Jenkins默認使用jenkins用戶去啟動,jenkins用戶並沒有許可權去執行ssh免沒巧襪密登陸,所以導致執行失敗

註:配置linux雙機互信後,jenkins也需要將公鑰加入到目標機器,才能達到shell腳本中scp免密傳輸的條件

一、驗證登錄

1、切換jenkins用戶

# su jenkins

切換後還是root賬號

2、分析解決:

2.1 應該枯激是/etc/passwd文件中的/bin/bash被yum安裝的時候變成了/bin/false

# vim /etc/passwd

jenkins:x:990:988:Jenkins Automation Server:/var/lib/jenkins:/bin/false( bash)

將bin/false改為/bin/bash

再次執行切換

# su jenkins

bash-4.1$

2.2  結果命令提示符的用戶名不是jenkins而變成了 bash-4.1$,原因是在安裝jenkins時,jenkins只是創建了jenkins用戶,並沒有為其創建home目錄

# vim ~/.bash_profile

在文件的最後添加 export PS1='[\u@\h \W]\$',執行文件使修改項起作用

# source ~/.bash_profile

驗證是否成功   # su jenkins

二、為jenkins系統用戶開啟免密登錄

1、在Jenkins的使用過程中,如果在腳本中使用到sudo命令,有可能出現如下所示的錯誤:

sudo: no tty present and no askpass program specified

這是因為Jenkins伺服器在執行sudo命令時的上下文有誤,導致這個命令執行的異常。

2.1 解決方法:

# sudo visudo

在文件末尾加上jenkins ALL=(ALL) NOPASSWD: ALL

2.2 重啟jenkins,測試

# su jenkins

# sudo su -s /bin/bash jenkins

測試成功,jenkins免密登錄成功。

PS:如果誤操作修改了/etc/sudoers的許可權來修改上述文件,則會導致如下所示的錯誤:

sudo :/etc/sudoers is world writable

sudo : no valid sudoers source found, quitting

sudo : unable to initialize poling plugin

這是Linux的一種保護機制。因此,如果出現上述誤操作,則需要執行如下命令來解決:

$ pkexec chmod 0440 /etc/sudoers

三、jenkins用戶開通ssh免密登錄

1、安裝ssh

# yum install ssh

1.1 將ssh服務設置開機自啟寬猛

# sudo systemctl enable sshd

1.2 啟動ssh

# sudo systemctl start sshd

2、生成jenkins用戶秘鑰證書

# su jenkins

# ssh-keygen -t rsa

2.1 查看是否生成成功

# /var/lib/jenkins/.ssh/

# ls

3、將公鑰傳輸到目標linux系統

ssh--id -i /var/lib/jenkins/.ssh/id_rsa.pub root@目標ip:path

------------------------------------------------------------------------------------------

參考:https://blog.csdn.net/weixin_43840640/article/details/90371472

熱點內容
oracle存儲過程游標實例 發布:2024-11-25 05:40:32 瀏覽:803
xpsql2000 發布:2024-11-25 05:20:20 瀏覽:372
如何設置安卓上拉菜單 發布:2024-11-25 05:20:12 瀏覽:4
為什麼安卓手機做不出透明相框 發布:2024-11-25 05:13:52 瀏覽:491
間接結演算法 發布:2024-11-25 05:12:08 瀏覽:759
java咖啡機 發布:2024-11-25 05:12:05 瀏覽:490
小白主機怎麼配置 發布:2024-11-25 05:10:33 瀏覽:144
automator腳本 發布:2024-11-25 04:41:18 瀏覽:310
敲背面截圖怎麼弄安卓 發布:2024-11-25 04:39:18 瀏覽:809
安卓機關機如何設置快捷方式 發布:2024-11-25 04:16:02 瀏覽:636