spring cloud + jenkins + gitee +docker maven多模块项目自动打包部署

 

原文地址 http://teemor.xyz/article?id=80

 

 

 

1. 配置jenkins环境

 

安装插件

  • gitee
  • publish over ssh 构建后将包发送到应用部署服务器,如果应用服务器和jenkins在是一台服务器则无需该插件

 

 

系统管理 =》系统设置

 

Publish over SSH

 

spring cloud + jenkins + gitee +docker maven多模块项目自动打包部署_第1张图片

 

注意:Remote Directory是复制过去后存放文件路径的起始地址,后面在项目里配置时的路径为基于该路径的相对地址

 

配置gitee

spring cloud + jenkins + gitee +docker maven多模块项目自动打包部署_第2张图片

点击添加按钮添加gitee令牌

spring cloud + jenkins + gitee +docker maven多模块项目自动打包部署_第3张图片

根据提示网址获取gitee令牌

spring cloud + jenkins + gitee +docker maven多模块项目自动打包部署_第4张图片

设置完之后点击页面下方的保存按钮

 

 

系统管理 =》全局工具设置

 

1.1. 配置maven setting路径

spring cloud + jenkins + gitee +docker maven多模块项目自动打包部署_第5张图片

 

spring cloud + jenkins + gitee +docker maven多模块项目自动打包部署_第6张图片

 

 

1.2. 配置jdk路径

 

 

spring cloud + jenkins + gitee +docker maven多模块项目自动打包部署_第7张图片

 

 

1.3. 配置git路径

spring cloud + jenkins + gitee +docker maven多模块项目自动打包部署_第8张图片

 

1.4. 配置maven安装路径

spring cloud + jenkins + gitee +docker maven多模块项目自动打包部署_第9张图片

1.5. 

 

2. 新建项目

 

这里选择构建一个自由风格的项目,然后点击确定

spring cloud + jenkins + gitee +docker maven多模块项目自动打包部署_第10张图片

 

选择gitee链接

之前配置的

spring cloud + jenkins + gitee +docker maven多模块项目自动打包部署_第11张图片

配置源码仓库

1、git:

设置仓库地址,并且点击添加,添加gitee帐号,设置一次之后,后面就可以直接从下拉框选择已设置的帐号,同时设置项目所选分支如master分支

spring cloud + jenkins + gitee +docker maven多模块项目自动打包部署_第12张图片

添加凭据时选择用户名后密码类型的凭据就可以

spring cloud + jenkins + gitee +docker maven多模块项目自动打包部署_第13张图片

2、svn方式:当一个git仓库下同时存在多个项目时,使用git方式每次都会把整个仓库拉下来,这时就可以通过svn插件拉取需要拉取的项目。(gitee可以使用svn拉取仓库)

spring cloud + jenkins + gitee +docker maven多模块项目自动打包部署_第14张图片

 

spring cloud + jenkins + gitee +docker maven多模块项目自动打包部署_第15张图片

配置项目路径时,使用仓库地址加上项目的相对路径

spring cloud + jenkins + gitee +docker maven多模块项目自动打包部署_第16张图片

设置构建命令

maven版本为之前配置的

spring cloud + jenkins + gitee +docker maven多模块项目自动打包部署_第17张图片

设置构建脚本 

点击增加构建步骤,选择执行shell

spring cloud + jenkins + gitee +docker maven多模块项目自动打包部署_第18张图片

 

编辑shell脚本

spring cloud + jenkins + gitee +docker maven多模块项目自动打包部署_第19张图片

附上自用shell脚本

#!/bin/sh
WORKSPACE='/var/lib/jenkins/workspace/test' #当前项目的工作空间路径,即jenkins构建后的项目根路径
PROJECT='/target' #编译文件所在路径
TARGET='/home/teemor/docker_home/test' #项目部署路径,也就是Dockerfile所在路径
NAME='test' #项目名
PORT='8770' #项目暴露的端口
CONTAINER_ID=`sudo docker ps -a | grep $REPOSITORIES | awk '{print $1}'`

echo 容器ID $CONTAINER_ID

cd $WORKSPACE$PROJECT
echo 当前路径
pwd

echo 复制文件开始

sudo cp ./$NAME.jar $TARGET

echo 复制文件结束

cd $TARGET

echo 当前路径
pwd

if [ -n "$CONTAINER_ID" ]; then


echo 停止docker容器

sudo docker stop $NAME


echo 删除docker容器
sudo docker rm $NAME
fi

echo 构建docker镜像
sudo docker build -t $NAME:0.0.1 ./

echo 启动docker容器
sudo docker run -d --name $NAME-p $PORT:$PORT $NAME:0.0.1

 

提示:脚本执行可能会失败,因为jenkins是使用jenkins用户执行脚本的,没有sudo权限,需要配置

 

先以root用户的身份登录,然后执行vi sudo   , 或者其他具有sudo 权限的用户执行 sudo visudo也是一样的

 

在打开的文件中找到

## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL

 

在这一行下面添加用户名,然后保存退出,之后用户就具有使用sudo命令的权限了。

修改后如下所示

## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL
jenkins    ALL=(ALL)    ALL

 

如果要让用户在使用sudo的时候不再需要输入密码,还需要修改刚才的文件visduo

jenkins    ALL=(ALL)    NOPASSWD:ALL

 

 

如果是需要打包后部署到其它服务器则按以下方式

 

部署到远程主机则构建过程只需要配置maven打包,无需设置shell命令。

 

构建后操作:点击增加构建后操作步骤,选择 send build artifacts over ssh。前面安装插件时提到过需要安装publish over ssh插件

spring cloud + jenkins + gitee +docker maven多模块项目自动打包部署_第20张图片

 

spring cloud + jenkins + gitee +docker maven多模块项目自动打包部署_第21张图片

 

spring cloud + jenkins + gitee +docker maven多模块项目自动打包部署_第22张图片

Remote Directory 为相对地址,基于之前设置中配置的路径

 

bash /home/teemor/docker_home/deploy.sh  -p 7020 -n test
-j /home/teemor/docker_home/test

 

部署脚本,和之前直接编辑在构建脚本的类似,构建脚本也可以改为直接调用shell脚本,这样配置jenkins时更方便

#!/bin/sh
while getopts :p:n:j: opt; do
     case $opt in
     p) PORT=${OPTARG}
           ;;
     n) CONTAINER_NAME=${OPTARG}
           ;;
     j) JAR_PATH=${OPTARG}
           ;;
     esac
done

echo config:
echo    PORT: $PORT
echo    CONTAINER_NAME: $CONTAINER_NAME 
echo    JAR_PATH: $JAR_PATH

CONTAINER_ID=`sudo docker ps -a | grep $CONTAINER_NAME | awk '{print $1}'`

echo 容器ID $CONTAINER_ID

if [ -n "$CONTAINER_ID" ]; then


echo 停止docker容器...

sudo docker stop $CONTAINER_NAME


echo 删除docker容器...
sudo docker rm $CONTAINER_NAME
fi

echo 构建docker镜像
sudo docker build -t $CONTAINER_NAME:0.0.1 $JAR_PATH

echo 启动docker容器...
sudo docker run -d --name $CONTAINER_NAME -p $PORT:$PORT $CONTAINER_NAME:0.0.1

 

 

最后附上Dockerfile

 

在部署ar包的目录(/home/teemor/docker_home/test)下创建Dockerfile文件,名字就是Dockerfile,Dockerfile内脚本如下

From java:8

ADD test.jar /app.jar

EXPOSE 8090

ENTRYPOINT ["java","-jar","/app.jar"]

 

docker安装和使用方式请百度

 

一切设置完成之后,点击保存,会自动跳转到项目页面,点击立即构建

spring cloud + jenkins + gitee +docker maven多模块项目自动打包部署_第23张图片

 

构建过程中,点击此处可以查看本次构建信息

spring cloud + jenkins + gitee +docker maven多模块项目自动打包部署_第24张图片

点击控制台输出可以查看构建过程中打印的日志信息,便于跟踪排查错误信息



著作权归作者所有。
商业转载请联系作者获得授权,非商业转载请注明出处。
作者:zhoulk
来源:https://blog.teemor.xyz
 

 

你可能感兴趣的:(jenkins)