Linux 服务器 Java环境部署系列(四):搭建jenkins环境、部署项目
引言
本文主要介绍Linux服务器中常用跳板机jenkins,进行远程编译部署的环境搭建。
系列文档目录
Linux 服务器 Java环境部署系列(二):安装nginx、mysql、tomcat、redis
Linux 服务器 Java环境部署系列(三):安装git、maven
Linux 服务器 Java环境部署系列(四):搭建jenkins环境、部署项目
Linux 服务器 Java环境部署系列(五):搭建RabbitMQ
搭建jenkins
安装jenkins,采用从远程在线下载安装的形式,完成后还需要对相应配置进行修改。
安装步骤
- 下载:wget https://pkg.jenkins.io/redhat-stable/jenkins-2.176.3-1.1.noarch.rpm
- 安装:rpm -ivh jenkins-2.176.3-1.1.noarch.rpm
- 修改配置文件:vim /etc/sysconfig/jenkins
- jenkins 默认端口为 8080 (建议修改,以免对tomcat等端口产生冲突)
- user改为root
- 修改Jenkins的jdk目录:
- 查看jdk安装位置:whereis jdk
- 编辑初始化配置文件(添加jdk目录):vim /etc/init.d/jenkins
- 保存修改:systemctl daemon-reload
- 启动 jenkins:systemctl start jenkins
- 查看密码(初次启动时需要):cat /var/lib/jenkins/secrets/initialAdminPassword
jenkins与码云
jenkins可以和GitHub、Gogs、码云等常用git项目管理网站进行远程部署,本文以码云为例,其他也大同小异。
- git config --global user.name "[你的用户名]"
- git config --global user.email "[你的邮箱]"
- ssh-keygen -t rsa -C "[你的邮箱]" (默认Enter就行)
- 查看生成的公钥:tail /root/.ssh/id_rsa.pub
- 查看是否连接成功:ssh git@gitee.com
- 复制/root/.ssh/id_rsa.pub里的内容,到码云进行配置ssh公钥
在gitee中依次点击:设置 -> 安全设置 -> ssh公钥,将公钥中的内容复制到公钥文本框中,随便写一个标题即可
系统配置
访问Jenkins控制台地址,外网服务器使用公有ip:http://服务器ip:8888/,初始密码在:/var/lib/jenkins/secrets/initialAdminPassword
选择“Install suggested plugins”安装默认的插件,下面Jenkins就会自己去下载相关的插件进行安装。
创建超级管理员账号,可以直接跳过,如果遇到403的情况,返回重新尝试下
系统管理-->配置全局工具配置(如果服务器安装了maven、jdk,去掉自动安装,选择自己服务器安装目录)-->点击保存,我这儿是已经在服务器安装好了的。
系统管理-->插件管理(安装好需要的插件)
因为前面推荐安装了部分,再安装几个比较好用的Jenkins插件:Rebuilder、Safe Restart、Publish Over SSH、Maven Integration、Git Parameter 依次点击:系统管理 -> 插件管理 -> 可选插件,输入插件名搜索插件,安装完重新登录下才能生效。
项目部署
在Jenkins主页点击<创建一个新任务>,然后输入任务名,选择构建一个maven项目,注意:只有安装了Maven Integration插件才有这个选项
使用shell自动编译项目成jar方式,根据实际项目情况写
#!/bin/sh echo [tags] ------------ echo [tags] 开始执行脚本 echo [tags] ------------ export BUILD_ID=dontKillMe export PROJECT_NAME=springboot-demo export NAME=demo export JAR_NAME=demo-$branch echo [INFO] "----------------------< DIR >----------------------" echo [INFO] "项目Jar包存放路径 --> /data/module/$NAME/$branch" JAR_PATH=/data/module/$NAME/$branch [ ! -e $JAR_PATH ] && mkdir -p $JAR_PATH echo [INFO] "本地项目存放路径 --> /var/lib/jenkins/workspace/$PROJECT_NAME/target" JENKINS_JAR_PATH=/var/lib/jenkins/workspace/$PROJECT_NAME/target [ ! -e $JENKINS_JAR_PATH ] && mkdir -p $JENKINS_JAR_PATH echo [INFO] "备份Jar包存放路径 --> /data/module/$NAME/$branch/lib" LIB_JAR_PATH=/data/module/$NAME/$branch/lib [ ! -e $LIB_JAR_PATH ] && mkdir -p $LIB_JAR_PATH echo [INFO] "日志文件路径 --> /data/module/$NAME/$branch/execute.log" LOG_PATH=execute.log echo [INFO] "清空临时目录" rm -rf /var/lib/jenkins/tmp/$PROJECT_NAME/ TMP_PATH=/var/lib/jenkins/tmp/$PROJECT_NAME/ [ ! -e $TMP_PATH ] && mkdir -p $TMP_PATH echo [INFO] "将jar包存入临时目录" scp /var/lib/jenkins/workspace/$PROJECT_NAME/target/*.jar $TMP_PATH process_id=$(ps -ef | grep demo-$branch | awk '{print $2}') echo [INFO] "当前进程号 $process_id" echo [INFO] "如果该项目正在运行,就杀死项目进程" if [[ ! -z "$process_id" ]] then kill -9 $process_id else echo [INFO] "该项目未运行" fi cd ${JAR_PATH} echo [INFO] "备份原有jar包到备份目录" NOW_TIME=$(date "+%Y%m%d%H%M%S") echo [INFO] "mv $JAR_NAME.jar $LIB_JAR_PATH/$JAR_NAME-$NOW_TIME.jar" mv $JAR_NAME.jar $LIB_JAR_PATH/$JAR_NAME-$NOW_TIME.jar echo [INFO] "本地项目拷贝到路径 scp $JENKINS_JAR_PATH/$JAR_NAME.jar $JAR_PATH" scp $JENKINS_JAR_PATH/$JAR_NAME.jar $JAR_PATH nohup java -jar ${JAR_NAME}.jar >$LOG_PATH & echo [tags] ------------ echo [tags] 脚本执行完毕 echo [tags] ------------ echo [INFO] "代码部署版本" echo [INFO] "version : $branch"
保存后,进到该maven项目下,点击立即构建,构建失败的话可以先清理下工作空间
查看控制定输出日志
然后到阿里云服务器使用netstat -nltp查看是否有已经成功运行的项目,这儿的端口是springboot的application.properties一样的端口。