1. 程式人生 > >Jenkins Pipeline 部署 SpringBoot 應用

Jenkins Pipeline 部署 SpringBoot 應用

##### 一. 安裝依賴包 ```sh yum install -y wget yum install -y gcc-c++ yum install -y zlib-devel perl-ExtUtils-MakeMaker yum -y install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker yum install -y openssh-clients yum install -y fontconfig ``` ##### 二. 環境準備 **1.安裝JAVA環境** ```sh yum -y install java-1.8.0-openjdk #檢測是否安裝成功 java -version ``` 修改/etc/profile檔案,新增JAVA_HOME ```sh vi /etc/profile 在檔案的最後面,加上以下程式碼 export JAVA_HOME=/java/jdk1.8.0_171 export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export PATH=$JAVA_HOME/bin:$PATH ``` 在執行完儲存過後,必須執行以下source /etc/profile,重置檔案,讓它生效。 **2.安裝Maven** ```sh #下載 wget http://mirrors.hust.edu.cn/apache/maven/maven-3/3.1.1/binaries/apache-maven-3.1.1-bin.tar.gz #解壓改名移動目錄 tar zxf apache-maven-3.1.1-bin.tar.gz mv apache-maven-3.1.1 /usr/local/maven3 ``` vi /etc/profile然後還需要 配置環境變數。 #在適當的位置新增 ```sh export M2_HOME=/usr/local/maven3 export PATH=$PATH:$JAVA_HOME/bin:$M2_HOME/bin ``` 儲存退出後執行下面的命令使配置生效,或者重啟伺服器生效。 ```sh source /etc/profile ``` 驗證版本 ```sh mvn -v ``` 出現maven版本即成功 阿里雲源 ```xml alimaven aliyun maven http://maven.aliyun.com/nexus/content/groups/public/ central ``` ##### 三. 安裝Jenkins部署SpringBoot應用 rpm方式安裝: ```sh sudo wget https://pkg.jenkins.io/redhat-stable/jenkins-2.164.1-1.1.noarch.rpm sudo rpm -ivh jenkins-2.164.1-1.1.noarch.rpm ``` ```sh #過載服務(由於前面修改了Jenkins啟動指令碼) sudo systemctl daemon-reload #啟動Jenkins服務 sudo systemctl start jenkins #將Jenkins服務設定為開機啟動 #由於Jenkins不是Native Service,所以需要用chkconfig命令而不是systemctl命令 sudo /sbin/chkconfig jenkins on ``` war包方式: 修改Jenkins預設使用者: ```sh vi /etc/sysconfig/jenkins #修改為Root使用者 JENKINS_USER="root" #給使用者授權 sudo chown -R root /var/log/jenkins sudo chgrp -R root /var/log/jenkins sudo chown -R root /var/lib/jenkins sudo chgrp -R root /var/lib/jenkins sudo chown -R root /var/cache/jenkins sudo chgrp -R root /var/cache/jenkins ``` 直接將War包上傳到伺服器執行即可。 ```sh nohup java -jar jenkins.war >
jenkins.log 2>&1 & ``` 執行後訪問`localhost:8080`即可。 進入介面後需要輸入一串密碼在伺服器檢視即可: ```sh sudo cat /var/lib/jenkins/secrets/initialAdminPassword ``` 進入之後建立好自己的使用者名稱與密碼,跳過所有下載。 登陸之後進入Manage Jenkins -> Global Tool Configuration 中進行配置Maven,Git,JDK ![](https://images.cnblogs.com/cnblogs_com/SimpleWu/1801398/o_2007071210231594123630(1).png) ![](https://images.cnblogs.com/cnblogs_com/SimpleWu/1801398/o_200707121017%E5%BE%AE%E4%BF%A1%E6%88%AA%E5%9B%BE_20200707200916.png) 四. 新建Pipeline 專案 配置Git倉庫: ![](https://images.cnblogs.com/cnblogs_com/SimpleWu/1801398/o_200707121424%E5%BE%AE%E4%BF%A1%E6%88%AA%E5%9B%BE_20200707201412.png) 指令碼路徑是指程式碼拉下的jenkins_files目錄裡面的01_eureka檔案。· ```javascript node { def mvnHome def workspace = pwd() def project_name = 'eureka-server-1.0.0.jar' def project_log = 'eureka-server-1.0.0.log' def project_home = 'app-centre/eureka-server' def vm_ip = 'xxx.xxx.xxx.xxx' def vm_port = '22' def vm_user = 'root' //程式碼獲取 stage('Preparation') { // for display purposes git branch: 'dev', url:'https://xxxxxxx.git' } //構建 stage('Build') { // Run the maven build if (isUnix()) { sh "mvn -Dmaven.test.skip=true clean package" } else { bat(/mvn -Dmaven.test.skip=true clean package/) } } //移動 stage('MV') { sh "mv ${project_home}/target/${project_name} /usr/local/src/" } //上傳到伺服器 stage('Upload VM') { sh "scp -P ${vm_port} /usr/local/src/${project_name} ${vm_user}@${vm_port}:/usr/local/src/bk" //sh "ssh -p ${vm_port} ${vm_user}@${vm_ip} 'nohup java -jar /usr/local/src/${project_name} >
> ${project_log} '" } //執行JAR包 stage('Run') { //sh "if (ps -ef| grep java|grep ${project_name})then (ps -ef| grep java|grep ${project_name}| awk '{print \$2}'|xargs kill -9) fi" sh "ssh -p ${vm_port} ${vm_user}@${vm_ip} 'nohup java -jar /usr/local/src/${project_name} >${project_log} 2>&1 &'" } } ``` 指令碼步驟為 1.Preparation 拉取程式碼 2.Build 編譯打包 3.MV 移動到指定目錄 4.Upload VM 上傳 jar包到虛擬機器 5.Run 執行遠端伺服器Jar包 注意事項: 需要在指令碼上直接將Jar上傳到伺服器必須配置ssh公鑰私鑰,配置步驟為: 進入伺服器Root目錄 1. 輸入命令:cd .ssh進入rsa公鑰私鑰目錄(清空舊祕鑰) 2. 在當前目錄下執行ssh-keygen -t rsa,三次回車後生成新的公鑰(id_rsa.pub)私鑰(id_rsa)檔案(每個節點都要重新生成) 3. 在主節點上執行命令:cat id_rsa.pub >
> authorized_keys把公鑰內容拷貝到該檔案中 4. 登入其它節點,把其它節點的公鑰都拷貝到主節點的authorized_keys檔案中(需要輸入