日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Jenkins教程(自动化部署)

發布時間:2023/12/10 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Jenkins教程(自动化部署) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

PS:本教程主要講解Jenkins在Linux環境下實現自動化部署項目。

1. Jenkins是什么?

?????????Jenkins是一個開源的、提供友好操作界面的持續集成(CI)工具,廣泛用于項目開發,具有自動化構建、測試和部署等功能。Jenkins用Java語言編寫,可在Tomcat等流行的servlet容器中運行,也可獨立運行。通常與版本管理工具(SCM)、構建工具結合使用。

2. 什么是持續集成(CI)?

????????因為開發部門同時維護多個版本,多個版本的發布,測試需要大量人力,所以要有一個專業的持續集成工具來管理持續重復的工作。

????????個人理解,說白了就是把代碼測試、打包、發布等工作交給一些工具來自動完成。這樣可以提高效率,減少失誤,開發人員只需要關心開發和提交代碼到Git就可以了。

3. Jenkins的安裝

(1)準備條件

安裝JDK

下載JDK壓縮包,并上傳至Linux某個目錄下解壓。

jdk-Linux-x64【提取碼:3a5n】

?. 配置jdk的環境變量

#進入/etc/profile配置文件 vi /etc/profile

?.?將以下代碼填入到profile文件內底部

export JAVA_HOME=/usr/local/jdk1.8.0_161 export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export PATH=$JAVA_HOME/bin:$PATH

?. 使配置生效

source /etc/profile

.?檢測java環境信息

javac

?輸入javac后出現以下信息則安裝jdk成功!

(2)安裝Jenkins

1. 下載jenkins

wget http://mirrors.jenkins.io/war-stable/latest/jenkins.war?


2. 啟動jenkins

# 使用nohup命令啟動 nohup 當虛擬機黑屏時 也會運行 ? 日志--->輸出到jenkins.log ? & 后臺運行

nohup java -jar /usr/local/soft/jenkins.war ?--httpPort=8777 --httpsPort=8778 > /usr/local/soft/jenkins.log 2>&1 &

3. 使用tail命令查看啟動日志,日志中會輸出jenkins密碼

?4. 通過瀏覽器訪問jenkins(端口號必須為8777)

http://你的ip:8777

?

點擊安裝推薦的插件

?

?

?(3)Jenkins中配置JDK路徑

jenkins-》全局工具配置-》JDK-》新增JDK

(4)Jenkins忘記密碼的解決方案

  • 進入到Jenkins的工作目錄,找到config.xml,我這里是/root/.jenkins/config.xml

  • 修改該配置文件useSecurity的節點值為false

    <useSecurity>true</useSecurity>
  • 重啟Jenkins項目后,再次訪問Jenkins站點

  • 點擊左邊菜單欄的系統管理

  • 進入后找到全局安全配置

  • 進入到用戶列表,找到admin用戶

  • 使用新密碼登錄即可

4. 集成Git

為了Jenkins能夠拉取代碼,需要安裝Git環境和jenkins對應的Git插件

(1) CentOS 7 上安裝Git環境

# 安裝 $ yum install git -y # 查看版本 $ git --version

(2) Jenkins安裝Git插件

(3) Jenkins配置Git環境

此處無需在jenkins中配置Git環境,采用默認生成的即可

?(4) Gitee上任意建一個倉庫

?

?(5) 測試憑據是否能夠使用

jenkins-》新建任務-》自由風格項目

?

?

進入jenkins的工作空間查看文件是否拉取下來,所有拉取的文件都會存放在jenkins工作空間中

?

?到這一步用戶名和密碼方式的憑證已經打通Git

5.?憑證配置

憑據就是用來存儲需要密文保護的數據庫密碼、Gitee密碼信息、Docker私有倉庫密碼等,以便 Jenkins可以和這些第三方的應用進行交互。

1. 憑證插件安裝Credentials Binding

?該插件默認在一開始就會被安裝,安裝后在jenkins-》系統管理-》安全欄目會出現Manage Credentials選項,若沒有需要安裝插件并重啟。

?

?

?

?

?

?

?

?

?

6. Maven集成

?在jenkins上發布Java項目時需要使用Maven來進行構建打包(Gradle項目則需要安裝配置Gradle)

(1)?下載安裝

# 找一個目錄存放maven cd /data/software/# 從阿里云上下載maven安裝包 wget https://mirrors.aliyun.com/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz# 解壓 tar -zxvf apache-maven-3.6.3-bin.tar.gz# 當前maven的安裝目錄為:/usr/local/java/apache-maven-3.6.3

?(2)?環境配置

vi /etc/profile在最后面JDK配置上作出一些更改 export MAVEN_HOME=/usr/local/java/apache-maven-3.6.3 export PATH=$JAVA_HOME/bin:$MAVEN_HOME/bin:$PATH

(3) 使配置生效并查看安裝情況

source /etc/profile mvn -version

?(4) Jenkins配置Maven

?(5) 安裝Maven插件

?(6) 在/data/software目錄下新建一個repository文件夾,用來作為maven的倉庫

$ cd /data/software $ mkdir repository

(7) 使用root賬戶修改Maven的settings.xml文件(指定倉庫目錄和阿里云鏡像)

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd"><!--本地倉庫--> <localRepository>/data/software/repository</localRepository><mirrors><!--阿里云鏡像--><mirror><id>aliyun-maven</id><mirrorOf>central</mirrorOf><name>aliyun maven mirror</name><url>http://maven.aliyun.com/nexus/content/groups/public/</url></mirror></mirrors>...... </settings>

(8) Maven測試項目構建

接下來的步驟是將java項目傳到Gitee上供jenkins拉取打包,如果運維同學不懂Java代碼,可以直接將我的Git項目fork或采用gitlab 等其他方式進行拉取。

新建Maven項目

?在碼云上建一個同名的git項目

?

使用Git上傳到碼云

使用git bash命令將項目初始化,無論是傳到Gitee、GitHub、GitLab、Codeup步驟一樣,如果對Git的安裝部署不熟悉

# 進入到本地的項目文件夾 $ cd existing_folder # 初始化倉庫 $ git init# 添加文件至工作區并提交 $ git add . $ git commit -m "first commit"# 關聯Gitee遠程倉庫 $ git remote add origin https://gitee.com/nobug8/it235-jenkins-jar.git# 將本地倉庫推送到遠程倉庫的master分支,此處會彈出用戶名密碼交互 $ git push -u origin master## 如果push報錯可以先拉取一下,會有新的gitee生成的文件拉下來,然后重新添加提交并push $ git pull origin master --allow-unrelated-histories $ git add . $ git commit -m "拉取下來合并后再次提交" $ git push -u origin master

?(9) Jenkins添加Maven項目任務

①. 新建任務

?②.?編寫Maven編譯命令

?

③. 構建并查看控制臺日志

保存后,點擊立即構建,然后進入日志控制臺查看日志

?

從日志可以看到代碼已經在拉取了,而且走的事阿里云倉庫,第一次拉取過程會比較長。

通過查看/data/software/repository可以看到有存放拉取的jar包,通過這2個證據可以證明settings.xml文件配置成功且有效

?構建成功后查看jenkins的workspace目錄下的jar包

到此Maven集成完畢

?配置Post Steps,選中執行shell

?

?7. 配置SSH免密登錄

由于jenkins構建消耗內存極大,一般jenkins是一臺單獨的工具機器,Java項目一般在其他的機器上,這里我重新安裝一臺虛擬機

應用服務器信息

  • IP:192.168.223.129

  • JDK:1.8

  • user:root

  • 部署路徑:/data/app/my-boot

  • 端口:9010

免密登錄主要是方便jenkins服務器192.168.223.128的root用戶—》應用服務器192.168.223.129的root用戶上的jar包拷貝,部署本就是jar包拷貝的過程

在192.168.223.128機器上使用root用戶生成秘鑰注意此處是root用戶

$ ssh-keygen -t rsa # 3次回車

運行后會在當前用戶的根目錄生成一個.ssh文件夾

?ssh文件夾中的文件描述

  • id_rsa : 生成的私鑰文件

  • id_rsa.pub : 生成的公鑰文件

接下來需要將公鑰導入到認證文件中 ?

$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

如果希望ssh公鑰生效需滿足至少下面兩個條件:

  • .ssh目錄的權限必須是700

  • .ssh/authorized_keys文件權限必須是600

給對應文件授權

$ chmod 700 ~/.ssh $ chmod 600 ~/.ssh/authorized_keys

將authorized_keys文件拷貝到另一臺應用服務器的root用戶.ssh目錄下

# 在應用服務器(192.168.223.129)上用root用戶創建/root/.ssh文件夾 mkdir -p /root/.ssh# 在jenkins服務器(192.168.223.128)上將pub公鑰文件拷貝到應用服務器的.ssh目錄下scp -p ~/.ssh/id_rsa.pub root@192.168.223.129:/root/.ssh/authorized_keys

在jenkins192.168.223.128服務器上進行免密連接測試

# 在jenkins服務器的/root/目錄下創建filetest文件,并拷貝到應用服務器 $ cd ~/ $ touch filetest $ scp -p filetest root@192.168.223.129:/root/filetest # 進入到應用服務器(192.168.223.129),檢查/root目錄下是否出現filetest# 在jenkins服務器上使用ssh進行免密連接測試,成功后會出現Last Login的提示 $ ssh root@192.168.223.129 Last login: Sun Sep 20 21:53:03 2020 $ exit

到此免密登錄和拷貝實現成功,為接下來jar包部署提供了快捷的幫助

8.?編寫Jenkins發布腳本

?注意下面代碼第6行代碼server_ips="需要部署到的機器ip"

#!/bin/bashecho "部署的目錄和項目名稱" DIR="/data/app" projectName="my-boot"echo "待部署的應用服務器,可多臺" server_ips="192.168.223.139" for server_ip in ${server_ips[@]} doecho "ssh連接進行備份操作" ssh -Tq -oStrictHostKeyChecking=no root@${server_ip} <<EOF mkdir -p $DIR/backup/${projectName} mkdir -p $DIR/${projectName} if [ -f "$DIR/${projectName}/${projectName}.jar" ];thenmv $DIR/${projectName}/${projectName}.jar $DIR/backup/${projectName}/${projectName}-`date "+%Y%m%d_%H%M%S"`.jar fi EOFecho "拷貝jar包到目標服務器的tmp目錄" scp -q -oStrictHostKeyChecking=no ${WORKSPACE}/target/*.jar root@${server_ip}:/tmp/${projectName}.jarecho "ssh遠程連接進行發布操作" ssh -q -oStrictHostKeyChecking=no root@${server_ip} <<EOF mv /tmp/${projectName}.jar $DIR/${projectName}/${projectName}.jarEOFdoneecho "success"

9.?編寫應用啟動腳本

在/data/app/my-boot目錄下創建啟動腳本start.sh

$ touch start.sh $ vi start.sh # 將下面代碼粘貼到start.sh中 #!/bin/bash set -e #任何命令出錯就退出 set -o pipefailAPP_ID=my-boot APP_DIR="/data/app"nohup java -jar ${APP_DIR}/${APP_ID}/${APP_ID}.jar > release_out.log & start_ok=false if [[ $? = 0 ]];thensleep 3tail -n 10 release_out.logsleep 5tail -n 50 release_out.log fi aaa=`grep "Started" release_out.log | awk '{print $1}'` if [[ -n "${aaa}" ]];thenecho "Application started ok"exit 0 elseecho "Application started error"exit 1 fi

在/data/app/my-boot目錄下創建停止腳本stop.sh

$ touch stop.sh $ vi stop.sh # 將下面代碼粘貼到stop.sh中 #!/bin/bashAPP_ID=my-boot ps aux | grep ${APP_ID} | grep -v "grep" | awk '{print "kill -9 "$2}' | sh

并進行啟動和停止測試,查看日志輸出是否正常

將下述啟動代碼配置jenkins中

sh $DIR/${projectName}/stop.sh sh $DIR/${projectName}/start.sh

訪問并測試代碼是否生效 ?

如果是虛擬機則需要給防火墻添加9010端口

$ su root # 開啟防火墻9010端口 $ firewall-cmd --zone=public --add-port=9010/tcp --permanent # 使配置生效 $ firewall-cmd --reload

?修改代碼返回值,提交至Gitee,并再次進行構建發布,訪問http://192.168.223.129:9010查看結果是否更新

總結

以上是生活随笔為你收集整理的Jenkins教程(自动化部署)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。