前言
1.如果使用的是阿里云的服务器的话,Jenkins容器运行起来可能访问不到,需要登录阿里云的控制台进行安全设置
2.如果使用的是搬瓦工的服务器的话,是直接能够访问的。
这两种服务器本人亲自验证过。
1.登录远程服务器
我买的是阿里云的服务器,新用户1核2G内存40G硬盘空间,一年七十多块,还是蛮划算的。我是借了别人账号注册的。
ssh -p 22 root@120.24.22.xx
参数说明:22为ssh服务端口,不过这个端口可以修改。
2.安装jenkins
- 2.1 下载tomcat、jdk、maven,同时配置jdk和maven的环境变量(环境变量配置省略)
- 2.2 将jenkins.war放到tomcat的webapps目录下
- 执行下面命令,将jenkins.war发布
apache-tomcat-8.5.51/bin/catalina.sh start
(https://blog.csdn.net/weixin_43317510/article/details/88932818)。
注意:如果使用的是阿里云的服务器的话,刚运行起来的jenkins容器通过ip和端口是访问不到的,需要设置一下
3.配置jenkins
- 3.2 获取jdk的安装目录
echo $JAVA_HOME
- 3.3 JDK环境安装
- 3.4 配置MAVEN
- 3.5 安装maven插件
4.使用Jenkins自动化部署Springboot项目
-
4.1 新建一个任务
-
4.2 配置github账号和项目仓库地址
项目仓库地址
github的账号和密码
-
4.3 项目打包
-
4.4 开始构建项目
以上的步骤已经实现了项目的集成和打包功能,但未实现自动化部署。下面将进行自动化部署演示
5.Jenkins自动化部署项目
- 5.1 新建一个目录,用来存放Dockerfile、shell脚本、Jenkins打包好的项目jar包
mkdir /usr/snowflake
上图中的jar包在Jenkins对项目打包完成以后,通过shell脚本就会迁移到上图目录中。
- 5.2 编写Dockerfile文件
FROM java:8
# 指定当前操作目录
WORKDIR /usr/snowflake
#指定对外端口号
EXPOSE 8081
#启动java程序
#--spring.profiles.active=dev 多环境下指定环境 。 -c为清除以前启动的数据
ENTRYPOINT ["java","-jar","snowflake-core.jar","-c"]
- 5.3 编写shell脚本(snowflake.sh)
#操作项目路径(Dockerfile存放的路径)
BASE_PATH=/usr/snowflake
# 源jar路径即jenkins构建后存放的路径
SOURCE_PATH=/root/.jenkins/workspace
#docker 镜像/容器名字或者jar名字 这里都命名为这个
SERVER_NAME=snowflake
#容器id
CID=$(docker ps | grep "$SERVER_NAME" | awk '{print $1}')
#镜像id
IID=$(docker images | grep "$SERVER_NAME" | awk '{print $3}')
echo ">>>最新构建代码 $SOURCE_PATH/$SERVER_NAME/target/snowflake-core-1.0.2.jar 迁移至 $BASE_PATH 目录下<<<"
#/root/.jenkins/workspace/snowflake/snowflake-core/target/snowflake-core-1.0.2.jar //jenkins构建完成后jar包的位置,这个位置在jenkins构建的控制台可以看到
#把项目从jenkins构建后的目录移动到我们的项目目录(存放Dockerfile的目录)下同时重命名
mv $SOURCE_PATH/$SERVER_NAME/snowflake-core/target/snowflake-core-1.0.2.jar $BASE_PATH/snowflake-core.jar
# 给文件赋权
chmod 777 /usr/snowflake/snowflake-core.jar
echo ">>迁移完成<<<"
# 构建docker镜像
if [ -n "$IID" ]; then
echo ">>>存在$SERVER_NAME镜像,IID=$IID<<<"
echo ">>>停止容器$SERVER_NAME<<<"
# 停止容器
docker stop $SERVER_NAME
echo ">>>删除容器$SERVER_NAME<<<"
# 删除容器
docker rm $SERVER_NAME
echo ">>>删除原始镜像<<<"
# 删除旧的镜像
docker rmi $IID
echo ">>>开始构建新的镜像<<<"
cd $BASE_PATH
docker build -t $SERVER_NAME .
else
echo ">>>不存在$SERVER_NAME镜像,开始构建镜像<<<"
cd $BASE_PATH
docker build -t $SERVER_NAME .
fi
# 运行docker容器
# --name docker-test 容器的名字为docker-test
# -d 容器后台运行
# -p 3636:3636 指定容器映射的端口和主机对应的端口都为3636
# -v /usr/ms_backend/:/usr/ms_backend/ 将主机的/usr/ms_backend/目录挂载到容器的/usr/ms_backend/ 目录中(不可少每次本地更新jar包重启容器即可,不用重新构建镜像
docker run --name $SERVER_NAME -v $BASE_PATH:$BASE_PATH -d -p 8081:8081 $SERVER_NAME
-
5.4 Jenkins后台配置编写好的shell脚本
-
5.5 构建项目
构建镜像、运行容器
查询镜像生成情况
查询容器运行情况
测试项目是否能够正常访问
本地代码修改后,推送到代码仓库,再次构建部署