redhat环境使用jenkins部署项目(前后端)
redhat环境使用jenkins部署项目(前后端)
最近使用了jenkins部署项目,在此做一个小结
从安装到部署
-
安装jenkins
安装文章网上一大把,百度一下,提几个重要的点:- 在安装过程中,请把jenkins的使用用户设置为root用户,防止后面的权限不够,忘了更改也没事,后面为jenkins增加root权限即可(其实不是root权限的原因,是Jenkins不属于docker用户组的问题)
- 注意你的jenkins版本,笔者安装的是2.315,但是此版本有个小bug,在部署中的项目可能不会显示进度,需要刷新页面,可以尝试一下其他版本;除此之外,得注意一下jenkins的版本和java的版本,从某个版本开始最低的java版本为11
- 解锁jenkins时,请选择安装推荐的插件,免得后面手动安装;重新安装时,请把你的jenkins卸载干净,避免未知的错误
-
需要安装的插件
Maven Integration
Git Parameter
NodeJS
ps:前两个是后端,后一个是前端用,一般来说,安装之后,重启生效 -
jenkins配置
-
全局配置
ps:笔者记得我妹有配置过git,只是安装了git,这应该是jenkins自己读取到的
- 系统配置如下:
将你"echo $path"的环境变量放置到此处,否则npm命令jenkins将读取不到
-
-
编写shell脚本
- 后端
#!/bin/bash -il #maven打包 mvn clean package -Dmaven.test.skip=true echo 'package ok!' echo 'build start!' # cd ./ service_name="administrate" service_prot=8070 log_address="/administrate" mount_address="$log_address" echo "mount_address $mount_address" #查看镜像id IID=$(docker images | grep "$service_name" | awk '{print $3}') echo "IID $IID" if [ -n "$IID" ] then echo "exist $service_name image,IID=$IID" #删除镜像 docker rmi -f $service_name echo "delete $service_name image" #构建 cd administrate/ docker build -t $service_name . echo "build $service_name image" else echo "no exist $service_name image,build docker" #构建 cd administrate/ docker build -t $service_name . echo "build $service_name image" fi #查看容器id CID=$(docker ps | grep "$service_name" | awk '{print $1}') echo "CID $CID" if [ -n "$CID" ] then echo "exist $service_name container,CID=$CID" #停止 docker stop $service_name #删除容器 docker rm $service_name else echo "no exist $service_name container" fi #启动 cd / echo "启动语句 docker run -d --name $service_name --net=host -p $service_prot:$service_prot -v $mount_address:$log_address $service_name" docker run -d --name $service_name --net=host -p $service_prot:$service_prot $service_name #查看启动日志 # docker logs -f -t --tail 100 $service_name
#!/bin/bash -il #maven打包 mvn clean package -Dmaven.test.skip=true echo 'package ok!' echo 'build start!' # cd ./ service_name="business" service_prot=8060 log_address="/business" mount_address="$log_address" echo "mount_address $mount_address" #查看镜像id IID=$(docker images | grep "$service_name" | awk '{print $3}') echo "IID $IID" if [ -n "$IID" ] then echo "exist $service_name image,IID=$IID" #删除镜像 docker rmi -f $service_name echo "delete $service_name image" #构建 cd business/ docker build -t $service_name . echo "build $service_name image" else echo "no exist $service_name image,build docker" #构建 cd business/ docker build -t $service_name . echo "build $service_name image" fi #查看容器id CID=$(docker ps | grep "$service_name" | awk '{print $1}') echo "CID $CID" if [ -n "$CID" ] then echo "exist $service_name container,CID=$CID" #停止 docker stop $service_name #删除容器 docker rm $service_name else echo "no exist $service_name container" fi #启动 cd / echo "启动语句 docker run -d --name $service_name --net=host -p $service_prot:$service_prot -v $mount_address:$log_address $service_name" docker run -d --name $service_name --net=host -p $service_prot:$service_prot $service_name #查看启动日志 # docker logs -f -t --tail 100 $service_name
- 前端
rm -rf node_modules/ rm -rf yarn.lock rm -rf package-lock.json npm cache clean --force npm cache verify echo "运行 npm install" jenkins_shell_path=$(pwd) echo "jenkins_shell_path: $jenkins_shell_path" npm install npm i --unsafe-perm echo "运行 run build" npm run build echo "构建成功" rm -rf /www/workplat-front/ mkdir -p /www/workplat-front/ mv ./dist/* /www/workplat-front/
其中:
1)mkdir在第一次创建多级目录时,加上-p,否则会提示"no such directory",意思就是你没有创建上级目录,如果你手动去创建过,那么-p,可有可无,这大概是linux的缓存吧。
2)前端项目需要额外安装nginx去监听访问端口
-
启动步骤
1)选择项目
2)选择分支,开始构建