天天看點

基于Docker+Jenkins實作自動化部署

使用碼雲搭建Git代碼存儲倉庫

 https://gitee.com/login 

  1. 使用碼雲建立私有私有git倉庫
  2. 将本地springboot項目上傳到git倉庫中

基于Docker安裝Jenkins環境

1.使用docker 安裝jenkins

docker run -p 8080:8080 -p 50000:50000 -v jenkins_data:/var/jenkins_home jenkinsci/blueocean

2.通路jenkins位址 8080

基于Docker+Jenkins實作自動化部署

注意:第一次啟動的時候正在加載jenkins大概會等待3-10分鐘。

3.解鎖jenkins

基于Docker+Jenkins實作自動化部署
基于Docker+Jenkins實作自動化部署

docker exec -it 7f485bd95c3b  /bin/bash 進入jenkins容器 

cat /var/jenkins_home/secrets/initialAdminPassword

基于Docker+Jenkins實作自動化部署

大概需要等待3-10分鐘

建立新的使用者

基于Docker+Jenkins實作自動化部署
基于Docker+Jenkins實作自動化部署

Jenkins全局工具配置

進入到jenkins容器中 echo $JAVA_HOME 擷取java環境安裝位址

JDK環境安裝

基于Docker+Jenkins實作自動化部署

Maven環境安裝

基于Docker+Jenkins實作自動化部署

安裝Jenkins對應Maven插件

找到 “系統管理“ - “安裝插件” ,點選 “可選插件”,找到如下maven插件的版本  

插件名稱 Maven Integration

基于Docker+Jenkins實作自動化部署
基于Docker+Jenkins實作自動化部署

Jenkins實作Springboot項目自動部署

  1. 建立一個釋出任務
基于Docker+Jenkins實作自動化部署
  1. 配置任務git賬号密碼
基于Docker+Jenkins實作自動化部署

   3.項目打包

基于Docker+Jenkins實作自動化部署

   clean install

  1. 點選立即建構
基于Docker+Jenkins實作自動化部署

 第一次建構可能耗時比較長,因為需要下載下傳一些相關依賴jar包

Jenkins啟動成功之後執行shll腳本

#!/bin/bash

#服務名稱

SERVER_NAME=springboot

# 源jar路徑,mvn打包完成之後,target目錄下的jar包名稱,也可選擇成為war包,war包可移動到Tomcat的webapps目錄下運作,這裡使用jar包,用java -jar 指令執行  

JAR_NAME=springboot-0.0.1-SNAPSHOT

# 源jar路徑  

#/usr/local/jenkins_home/workspace--->jenkins 工作目錄

#demo 項目目錄

#target 打包生成jar包的目錄

JAR_PATH=/var/jenkins_home/workspace/springboot/target

# 打包完成之後,把jar包移動到運作jar包的目錄--->work_daemon,work_daemon這個目錄需要自己提前建立

JAR_WORK_PATH=/var/jenkins_home/workspace/springboot/target

echo "查詢程序id-->$SERVER_NAME"

PID=`ps -ef | grep "$SERVER_NAME" | awk '{print $2}'`

echo "得到程序ID:$PID"

echo "結束程序"

for id in $PID

do

kill -9 $id  

echo "killed $id"  

done

echo "結束程序完成"

#複制jar包到執行目錄

echo "複制jar包到執行目錄:cp $JAR_PATH/$JAR_NAME.jar $JAR_WORK_PATH"

cp $JAR_PATH/$JAR_NAME.jar $JAR_WORK_PATH

echo "複制jar包完成"

cd $JAR_WORK_PATH

#修改檔案權限

chmod 755 $JAR_NAME.jar

Nohub  java -jar $JAR_NAME.jar

加nohub 指的是背景運作,或者使用nohub &

容器映射8081端口

1. 重新開機容器

systemctl restart  docker  

 2. 清空未運作的容器

docker rm $(sudo docker ps -a -q)

docker run -p 8080:8080   -p 8081:8081   -p 50000:50000 -v jenkins_data:/var/jenkins_home jenkinsci/blueocean