前置条件:
- 需要已经安装好Java的SDK,可以参考Centos安装JDK
- 需要已经安装好Maven,可以参考Centos安装Maven
- 需要已经安装好Jenkins,可以参考Centos安装Jenkins
一、查看Centos版本
本文使用的机器为Centos8,查看centos版本的命令如下:
cat /etc/redhat-release
二、配置Jenkins
以下步骤有自动安装的注意取消自动安装,我们使用自己安装的方式方便以后使用和配置。
- 配置maven:在
系统管理-->全局工具配置-->Maven配置中配置本机maven的settings.xml路径: - 配置JDK:在
系统管理-->全局工具配置-->JDK中配置本机JDK的JAVA_HOME路径: - 配置GIT:在
系统管理-->全局工具配置-->Git中配置本机Git可执行文件的路径(本文的Git是通过yum install -y git命令进行安装的,可执行文件路径可以用whereis -b git命令进行查看): - 配置MAVEN_HOME:在
系统管理-->全局工具配置-->Maven中配置本机MAVEN_HOME的路径: - 配置Publish over SSH:在
系统管理-->系统配置-->Publish over SSH中配置,如果没有则在系统管理-->插件管理中进行下载:- 图中没有的不填写
Path to key:写上生成的ssh路径:/root/.ssh/id_rsaName:填写一个名字Hostname:填写服务器的IP地址Username:填写SSH登录的账号名Remote Directory:填写远程路径用于存放SSH Server存放一些文件Passphrase / Password:填写SSH登录的密码- 点击
Test Configuration测试是否能够SSH连接成功,出现success表示连接成功,然后保存退出。
三、项目部署
- 创建任务:点击
新建任务进行创建 - 源码管理:配置构建代码的下载地址,我用的是腾讯的Coding所以选择Git,输入代码路径、选择证书,不存在的话点击
添加,选择Username with password,输入Coding的用户名密码进行设置,然后选择设置完的证书。在Branches to build中设置构建的分支路径,其他设置默认即可。 - 构建触发器:这里可以设置触发构建的策略,设置在什么情况下触发构建。由于我们当前构建为手动,所以这里不设置触发选项。
- 构建环境:
Delete workspace before build starts:设置构建之前删除当前任务的工作空间,即先删除所有之前的代码再进行构建Use secret text(s) or file(s):设置构建过程中要使用的凭证,选中后需要设置对应的凭证Send files or execute commands over SSH before the build starts:在构建启动之前,通过SSH发送文件或执行命令Send files or execute commands over SSH after the build runs:在构建运行之后,通过SSH发送文件或执行命令Add timestamps to the Console Output:向控制台输出添加时间戳Inspect build log for published Gradle build scans:检查已发布的Gradle构建扫描的构建日志Terminate a build if it's stuck:如果构建阻塞了,就终止它With Ant:为Jenkins准备一个使用Apache Ant运行构建的环境。注释特定于ant的输出,以显示执行的目标。可选地设置Ant和/或JDK安装。
- 构建:设置构建的方式和执行的命令,当前设置为使用maven构建,构建的命令参数为
clean install。如果maven版本不存在则需要在系统管理-->全局工具配置中设置。 - 构建后操作:代码下载并编译打包完成后执行的操作,用来执行重启项目的操作。当前设置的操作是构建完成后把打好的jar包放到目标路径下并执行远程shell脚本
bash /opt/horizon/bin/restart.sh。Name:在Jenkins的全局配置中配置的SSH服务器,对应的是要构建项目的服务器。Source files:设置要上传的jenkins服务器任务的根路径下那个文件,例如:
1. jenkins项目存放路径为/root/.jenkins/workspace/ 2. 新建的任务名称为horizon,所以新建的任务工作空间路径为/root/.jenkins/workspace/horizon/ 3. 打好包的项目存放在/root/.jenkins/workspace/horizon/target/horizon-1.0.0.jar 4. 所以Source files指的是/root/.jenkins/workspace/horizon/路径下的文件Remove prefix:指的是保存的文件去除掉Source files中的前缀信息,例如保存为horizon-1.0.0.jar,所以需要去除前缀target/Remote directory:上传到Name中选择的服务器中的哪个路径下Exec command:上传完成后需要执行的脚本或者命令,该脚本放于/opt/horizon/bin路径下,/opt/horizon为自己创建的项目路径,脚本命令如下:
#!/bin/bash # 脚本的意思为构建的时候先kill掉老项目,然后再重启新项目 # 必须要加这一行,因为jenkins与服务器上的环境变量不一致,不刷新环境变量会导致无法启动java进程 source /etc/profile echo "stop service..." old_pid=`ps -ef | grep "horizon-1.0.0.jar" | grep -v grep | awk '{print $2}'` echo "kill old pid: $old_pid" kill -9 $old_pid old_pid=`ps -ef | grep "horizon-1.0.0.jar" | grep -v grep | awk '{print $2}'` if [ -n "$old_pid" ]; then echo "stop service fail!" else echo "stop service success!" fi source_file=/root/.jenkins/workspace/horizon/target/horizon-1.0.0.jar target_dir=/opt/horizon/ echo "cp $source_file $target_dir" cp $source_file $target_dir chmod 774 /opt/horizon/horizon-1.0.0.jar echo "start service..." nohup java -jar /opt/horizon/horizon-1.0.0.jar >/dev/null 2>&1 & new_pid=`ps -ef | grep "horizon-1.0.0.jar" | grep -v grep | awk '{print $2}'` echo "new pid: ${new_pid}" if [ -n "$new_pid" ]; then echo "start service success!" else echo "start service fail!" fi - 测试:进入主页可以看到刚才新增的任务
horizon,点击名称进入任务,再点击立即构建: