环境安装
安装JDK
查看是否安装了OpenJDK
rpm -qa | grep openjdk
批量删除OpenJDK
rpm -qa | grep openjdk |xargs rpm -e --nodeps
再次查是否完全删除
安装JDK,自行下载安装包,解压到指定目录(/usr/bin/java),设置环境变量
vim /etc/profile
export JAVA_HOME=/usr/bin/java
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$PATH
source /etc/profile
测试一下安装是否正常
java -version
安装Git
安装依赖
yum install -y curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker
yum安装的git版本太低,下载最新版git
wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.9.5.tar.gz
解压及安装
tar -zxvf git-2.9.5.tar.gz
cd git-2.9.5
./configure --prefix=/usr/local
make && make install
安装Maven
yum install -y maven
安装Jenkins
本文使用的是rpm方式安装jenkins,Docker方式的安装请参照【Jenkins官方Docker镜像安装】
Jenkins官网下载地址
我这里使用的是CentOS环境安装,你可以根据你自己的环境选择对应的安装包下载
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
配置端口,默认为8080,如果未被占用可以不改
vim /etc/sysconfig/jenkins
编辑启动参数
vim /etc/init.d/jenkins
里面配置了默认的java路径,如果安装的jdk不在以下路径中,需要手动添加进去
启动Jenkins服务
service jenkins start/stop/restart
安装成功后Jenkins将作为一个守护进程随系统启动
系统会创建一个“jenkins”用户来允许这个服务,如果改变服务所有者,同时需要修改/var/log/jenkins, /var/lib/jenkins, 和/var/cache/jenkins的所有者
启动的时候将从/etc/sysconfig/jenkins获取配置参数
默认情况下,Jenkins运行在8080端口,在浏览器中直接访问该端进行服务配置
Jenkins的RPM仓库配置被加到/etc/yum.repos.d/jenkins.repo
配置jenkins
访问前请确保8080端口是通的或直接关闭防火墙
systemctl stop firewalld.service
systemctl disable firewalld.service
访问 http://ip:8080
提示需要输入初始密码,根据提示的路径获取密码
cat /var/lib/jenkins/secrets/initialAdminPassword
我的初始密码
110e191d190a48529a64de427de054b1
进入安装导航界面,选择安装推荐的插件,默认安装
插件安装中,安装时间略长
创建超级管理员用户
初始化成功
依次点击 系统管理->插件管理-> 可选插件-> 过滤搜索框中 查找如下插件:
locale plugin (中文汉化插件,可选)
Maven Integration
Deploy to container
Git plugin
GitHub Authentication
GitHub Organization Folder
GitHub Branch Source Plugin
Publish Over SSH
配置Maven、Git、JDK
jdk目录要配置到bin目录之前 /usr/bin/java
git目录要带上/git才能生效
maven配置好xml路径及maven_home路径
有时候JDK配置好会有路径异常的提示,但其实是可以正常构建的,所以只要确保自己的路径是正确的即可
配置ssh免密登录
Jenkins构建完,需要把生成的项目(*.jar or *.war)包发送到指定机器,这时就需要配置两家机器间的ssh免密登录,我本地的两台机器:
10.0.17.118 应用程序所在的服务器,接收来自jenkins服务器生成的项目包并在本机运行
10.0.17.119 Jenkins所在的服务器,生成项目包送发送给应用服务器
在jenkins所在的119机器上生成密钥
网上有人贴的是用ssh-keygen,这样生成的是openssh,jenkins并不识别,请用下面的格式生成
ssh-keygen -m PEM -t rsa -b 4096
用ssh-copy-id将公钥复制到远程应用服务器118中
ssh-copy-id -i 10.0.17.118
非root用户,可以使用完整参数发送公钥,ssh-copy-id -i .ssh/id_rsa.pub 用户名字@192.168.x.xxx
查看是否可以登录
ssh root@10.0.17.118
成功在119上登录到118应用服务器上
配置Publish over SSH
构建好的项目需要使用ssh免密登录发送到应用服务中,需要配置Publish over SSH
在jenkins服务器中查看并复制公钥
cat ~/.ssh/id_rsa
进入系统管理 -> 系统设置 ,鼠标滚到最下面,找到 Publish over SSH
填入刚才复制的私钥,name字段随意填写,应用服务器IP地址,登录用户名
保存前一定要先按 【Test Configuration】 按钮,显示success代表设置成功
项目构建
配置项目git路径及账号
账号推荐使用免密的方式登录,将jenkins的公钥添加到仓库中
clean package -Dmaven.test.skip=true
本文中的应用服务器目录结构如下:
- data
- project
- logs
- info.log
- error.log
- springboot.jar
- sh
- deploy.sh
- server.pid
- logs
- project
建立相关目录
mkdir -p /data/project/{sh,logs}
在sh目录下创建项目启动脚本
vim /data/project/sh/deploy.sh
插入以下内容,可根据自己的环境修改相应的参数
#!/bin/bash
source /etc/profile
JAR=springboot
SERVICE=/data/project
case "$1" in
start)
echo "start project..."
/usr/bin/cd $SERVICE
nohup java -Dspring.profiles.active=dev -Xms256m -Xmx512m -jar $SERVICE/$JAR.jar >/dev/null 2>&1 &
echo $! > $SERVICE/server.pid
echo "start project end..."
;;
stop)
PID=$(cat $SERVICE/server.pid 2>/dev/null)
if [ -n "$PID" ];then
kill -9 $PID
rm -f $SERVICE/server.pid
else
echo "service is not running"
fi
echo "stop project end..."
;;
restart)
sh $0 stop
sleep 3
sh $0 start
;;
*) echo 'You do not select a number between start stop restart'
;;
esac
exit 0
配置可执行权限
chmod +x deploy.sh
执行构建操作
看到出下输出内容,项目构建成功