系统配置

Jenkins详细安装步骤:

  • 点击Manage Jenkins->Configure System(系统配置)
    Publish Over SSH配置
    Passphrase:私钥密码,如果没有可以不填
    Path to key:私钥的位置
    Key:私钥的内容。如果填写了该值,会覆盖Path to key的内容
    SSH Servers:服务器的配置
  • Name:名称(自定义)
  • Hostname:服务器地址
  • Username:用户名
  • Remote Directory:默认远程服务器的地址
  • 全局工具配置
  • Maven配置
  • Jdk配置
  • Maven安装路径

    点击"应用" and "保存"按钮。

项目部署

  • 新建一个任务:名称为:springboot_design_pattern
  • jenkins如何远程编写dockerfile jenkins部署远程服务器_docker

  • 我的视图-配置
    源码管理

    Repository URL:仓库地址
    Credentials:登录凭据,从凭据管理中配置
    Branches to build:所在分支
    构建

    执行shell

    shell脚本
#!/bin/bash
# #!/bin/bash是指此脚本使用/bin/bash来解释执行。其中,#!是一个特殊的表示符,其后,跟着解释此脚本的shell路径。bash只是shell的一种,还有很多其它shell,如:sh,csh,ksh,tcsh,...
# #!/bin/bash只能放在第一行,如果后面还有#!,那么只能看成是注释。

#服务名称

SERVER_NAME=springboot_design_pattern

#源jar路径,mm打包完成之后,target目录下的jar包名称,也可选择成为war包,war包 可移动到Tomcat的。
JAR_NAME=springboot_design_pattern-${version}


#target打包生成jar包的目录

JAR_PATH=/var/lib/jenkins/workspace/springboot_design_pattern/default/target    # 以具体的打包位置为准,可以先构建一次项目,通过日志查看打包的目录

#打包完成之后,把iar包移动到运行jar包的目录
JAR_WORK_PATH=/var/lib/jenkins/workspace/springboot_design_pattern/default/target/classes

# 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
cd $JAR_WORK_PATH
chmod 755 $JAR_NAME.jar

增加构建后操作

jenkins如何远程编写dockerfile jenkins部署远程服务器_docker_02


Name:远程服务名称,在配置管理-系统配置中Publish Over SSH中

Source files:打包后的路径

Remove prefix:移除前缀

Remote directory远程目录,在系统配置中配置后,不需要再配置

Exec command 执行的shell命令,在远程机器上

shell.sh

o "当前所在位置"
pwd
SERVER_NAME=springboot_design_pattern
#容器id
CID=$(docker ps | grep "$SERVER_NAME" | awk '{print $1}')
#镜像id
IID=$(docker images | grep "$SERVER_NAME" | awk '{print $3}')
#当前日期
DATE=`date +%Y%m%d`

#清除旧容器
if [ -n "$CID" ]; then
echo "存在$SERVER_NAME容器,CID=$CID"
echo "停止旧容器"
docker stop $SERVER_NAME
echo "删除旧容器"
docker rm $SERVER_NAME
fi

# 清楚旧镜像
if [ -n "$IID" ]; then
echo "存在$SERVER_NAME镜像,IID=$IID"
echo "删除镜像"
docker rmi $IID
fi

mv ./classes/Dockerfile ./
rm -rf classes/

#构建镜像
echo "开始构建镜像"
docker build -f Dockerfile -t $SERVER_NAME:v${DATE} .
echo "构建镜像成功!"

# 运行docker容器
echo "创建并启动$SERVER_NAME容器..."
docker run --name $SERVER_NAME -d -p 8090:8088 $SERVER_NAME:v${DATE}
echo "$SERVER_NAME容器启动完成"
echo "删除其他配置信息"
rm -rf ./Dockerfile ./*.jar

Dockerfile

FROM java:8
MAINTAINER zfl zfl_aliases@163.com 2020-12-09
COPY springboot_design_pattern-1.0-SNAPSHOT.jar app.jar
EXPOSE 8088
ENTRYPOINT ["java", "-Djava.security.egd=file:/dev/./urandom", "-Duser.timezone=GMT+08", "-jar", "/app.jar"]

点击"应用"和"保存"按钮

项目构建

点击构建

jenkins如何远程编写dockerfile jenkins部署远程服务器_spring_03


查看控制台输出

jenkins如何远程编写dockerfile jenkins部署远程服务器_spring_04


远程服务器

jenkins如何远程编写dockerfile jenkins部署远程服务器_docker_05