第一次接触 jenkins 自动部署 maven 项目, 从度娘谷哥搜刮 N 多资料, 经过一个多星期的(部署 + 删除)N 过程, 终于成功部署完成, 现将整合过的部署过程傻瓜式列出(真的挺傻瓜的了[捂脸]), 分享给大家参考(嗯, 也是备份怕忘了 - -||).
1. 准备系统 centos7
a. 建议使用 mini 系统
b. 查询本机 ssh 远程连接是否开启
执行命令: service sshd status
结果显示 Active: active (running), 说明已启动, 请跳到下一步
结果显示 Active: inactive (dead), 说明未启动, 执行命令: service sshd start
如果提示 command not found, 说明尚未安装 netstat, 执行命令: yum install net-tools, 安装 netstat 工具, 安装完成后, 再次执行命令: service sshd status, 根据返回结果进行处理
c. 查看本机 ip 地址, 记录 ip 地址
执行命令: ip addr
d. ssh 远程连接 centos 服务器(mac 为例, windows 请百度 Linux Bash 使用教程, 或者找个客户端也行)
打开终端, 执行命令: ssh 用户名 @ip 地址(例: ssh root@47.221.90.11) , 输入密码回车;
因为最终的生产环境是要部署服务器的, 即使当前是本机的虚拟机 centos7 系统, 也建议使用本机的远程工具连接虚拟机 centos7 来进行操作, 提前熟悉 ssh 远程操作服务器
e. 更换 yum 的源, 系统默认的 yum 源 服务器在国外, 速度慢, 建议修改 yum 源为国内源.
i. 备份镜像源
- cd /etc/yum.repos.d
- mv CentOS-Base.repo CentOS-Base.repo.backup
ii. 替换镜像源(网易 163 源, 也可以自行百度用阿里等其他的源, 看个人喜好)
- wget http://mirrors.163.com/.help/CentOS7-Base-163.repo
- mv CentOS7-Base-163.repo CentOS-Base.repo
iii. 清理, 更新 yum 缓存
- yum clean all
- yum makecache
- yum -y update
f. 安装 tab 键 shell 补全增强:
执行命令: yum -y install bash-completion bash-completion-extras
g. 安装 vim
执行命令: yum -y install vim
h. 安装 zip 工具:
执行命令: yum -y install zip
执行命令: yum -y install unzip
2. 安装 java:
首先, 到 jdk 官网上下载你想要的 jdk 版本, 下载完成之后将需要安装的 jdk 安装包放到 Linux 系统指定的文件夹下, 并且命令进入该文件夹下:
- [root@localhost software]# ll
- total 252664
- -rw-r--r--. 1 root root 11830603 Jun 9 06:43 alibaba-rocketmq-3.2.6.tar.gz
- -rw-r--r--. 1 root root 43399561 Jun 9 06:42 apache-activemq-5.11.1-bin.tar.gz
- -rwxrw-rw-. 1 root root 185540433 Apr 21 09:06 jdk-8u131-linux-x64.tar.gz
- -rw-r--r--. 1 root root 1547695 Jun 9 06:44 redis-3.2.9.tar.gz
- -rw-r--r--. 1 root root 16402010 Jun 9 06:40 zookeeper-3.4.5.tar.gz
解压 jdk-8u131-linux-x64.tar.gz 安装包
- [root@localhost software]# mkdir -p /usr/lib/jvm
- [root@localhost software]# tar -zxvf jdk-8u131-linux-x64.tar.gz -C /usr/lib/jvm
这里不建议用 wget 在 linux 中直接下载, Oracle 官网 jdk 下载之前需要同意 Oracle 的安装协议, 不然不能下载, 但是用 wget 的方式, 默认是不同意 oracle 安装协议, 下载下来的文件会有问题, 在 Linux 上解压会提示失败, 虽然可以通过修改文件后缀名的方式强制解压, 但还是推荐走正常路线, 先下载到自己本地电脑, 然后用 scp 命令上传到服务器, 再解压.
例如: scp /Users/00_centos/jdk-8u181-linux-x64.tar.gz root@服务器 ip:/usr/lib/jvm/jdk-8u181-linux-x64.tar.gz
其次, 设置环境变量
[root@localhost software]# vim /etc/profile
在最后面添加(这个不强制要求位置, 放到最前面也可以):
- export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_131
- export JRE_HOME=${JAVA_HOME}/jre
- export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
- export PATH=${JAVA_HOME}/bin:$PATH
再次, 执行 profile 文件
[root@localhost software]# source /etc/profile
这样可以使配置不用重启即可立即生效
3. 安装 jenkins
a. 打开 http://www.jenkins.io, 点击 Download 按钮, 进入下载资源列表
b. 找到Red Hat/Fedora/CentOS, 点击进入, 最开始就是安装命令(3 条)
- sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
- sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
- yum install jenkins (命令执行过程中有 [y/d/N] 提醒, 输入 y 回车即可)
如果是 linux 系统是 root 用户登录, 命令开始位置可以不用写 sudo
c. 依次执行三条命令, jenkins 安装第一步完成, yum 安装默认路径在 /usr/lib/jenkins 目录
执行命令: cd /usr/lib/jenkins 跳转到该目录;
执行命令: java -jar jenkins.war --httpPort=10010 启动 jenkins
启动命令参数说明: java -jar 是执行 war 文件,--httpPort 是修改启动端口, jenkins 的默认端口是 8080, 如果不修改端口, 只执行 java -jar jenkins.war 也是可以的;
最后结果显示 Jenkins is fully up and running 表示 jenkins 启动成功, 另外, 结果中有被两串 ****** 间隔起来的的密码, 及密码所在的文件路径, 这个是 jenkins 的初始化验证密码
d. 在自己电脑打开浏览器, 输入 http://ip:10010 打开 jenkins 的初始化界面
i. 如果提示无法连接到服务器, 终端输入命令: firewall-cmd --list-ports 查看 10010 端口是否开放, 如果没有, 则执行命令: firewall-cmd --zone=public --add-port=10010/tcp --permanent 添加 10010 端口开放, 然后执行命令: firewall-cmd --reload 重启防火墙使端口设置生效
ii. 如果不是正式服务器, 也可以直接关闭防火墙, 执行命令: systemctl stop firewalld.service 停止防火墙, 执行命令: systemctl disable firewalld.service 禁止防火墙开机启动
iii. 如果是云服务器部署, 除了系统防火墙之外, 需要检查 ecs 的安全组设置, 配置 10010 端口
e. 在浏览器的 jenkins 初始化界面输入验证密码(密码位置界面有提醒, 到 centos 服务器中找);
下一步选择左边, 安装推荐的插件(基本都是需要装的), 如果有安装失败的插件, 就在右下角点重新安装, 直到所有插件安装成功, 自动跳转到下一步用户注册;
填写系统信息, 用户名, 密码, 全名, 邮箱(eg:admin), 点击保存并完成, 点击开始使用 jenkins;OK jenkins 安装完成.
f. 安装额外的 jenkins 插件
系统管理>插件管理, 点击 "可选插件" 选项卡, 在右上角过滤中输入 Rebuilder 找到 Rebuilder 并勾选, 再输入 Safe 找到 Safe Restart 并勾选, 然后点击左下角立即安装, 等待安装完成.
g. 配置 jenkins 用户
i. 系统管理>管理用户>新建用户, 创建一个普通用户(eg:buyer)
ii. 系统管理>全局安全配置, 找到 "授权策略", 将默认的 "登录用户可以做任何事" 改选为 "安全矩阵"
iii. 在添加用户 / 组位置, 输入 系统用户 (admin), 点击添加, 勾选所有权限; 输入 新建的普通用户 (buyer), 勾选除了管理员权限(AdministerRead) 之外的其他权限;
iv. 配置完成后, 点击左下角保存按钮, 保存配置
h. 配置凭据(git 用)
凭据>系统, 点击右侧 "全局凭据", 点击左侧 "添加凭据", 输入 git 的账号密码
i. 配置 jdk
系统管理>全局工具配置, 右侧点击[JDK 安装] 按钮, 输入别名(jdk8u181), 输入 JAVA_HOME 值(/usr/lib/jvm/jdk1.8.0_181), 点击 [Save] 按钮保存更改
4. 安装 tomcat
a. 执行命令: cd /usr/local 进入用户目录;
b. 执行命令: mkdir tomcat 创建 tomcat 文件夹;
c. 执行命令: cd tomcat 进入文件夹
d. 执行命令: wget http://mirrors.shu.edu.cn/apache/tomcat/tomcat-9/v9.0.10/bin/apache-tomcat-9.0.10.zip 下载 tomcat(这里是 tomcat9 的下载地址, 其他版本可以到 tomcat 官网, 找到对应版本, 找 Core 下的 zip 下载地址并复制)
e. 执行命令: unzip apache-tomcat-9.0.10.zip (unzip 是解压命令, 将下载的 tomcat 压缩包解压到当前目录)
f. 执行命令: cd /usr/local/tomcat/apache-tomcat-9.0.10 进入 tomcat 目录
g. 执行命令: chmod 755 -R bin 更改 tomcat 的 bin 目录内文件权限
h. 执行命令: cd /usr/local/tomcat/apache-tomcat-9.0.10/bin 进入 tomcat 的 bin 目录
i. 执行命令:./startup.sh 启动 tomcat
5. 安装 maven
a. 执行命令: cd /usr/local 进入用户目录;
b. 执行命令: mkdir maven 创建 maven 文件夹;
c. 执行命令: cd maven 进入文件夹
d. 执行命令: wget http://mirrors.shu.edu.cn/apache/maven/maven-3/3.5.4/binaries/apache-maven-3.5.4-bin.zip 下载 maven(下载地址请到官网复制: http://maven.apache.org/download.cgi)
e. 执行命令: unzip apache-maven-3.5.4-bin.zip (unzip 是解压命令, 解压到当前目录)
f. 执行命令: vim /etc/profile 打开系统环境配置文件, 在文件末尾, 增加环境变量:
- MAVEN_HOME=/usr/local/maven/apache-maven-3.5.4
- export MAVEN_HOME
- export PATH=${PATH}:${MAVEN_HOME}/bin
g. 执行命令: source /etc/profile 使修改的系统环境配置文件生效
6. 安装 git
a. 执行命令: yum -y install git
b. 配置 git 的昵称和邮箱账户
- git config --global user.name "feng"
- git config --global user.email "feng@abc.com"
github 还需要配置 ssh, 这里我用的是 bitbucket, 用的 https , 没有用 ssh, 就不做 ssh 配置了, 如有需要请自行百度
7. jenkins 新建任务, 配置 git
a. 进入 jenkins 首页, 点击创建新任务
b. 输入任务名称 buyer(建议用项目名字), 选择 "构建一个自由风格的软件项目", 点击 "确定"
c. 源码管理选择 git
i. Repository URL 输入 https://root@bitbucket.org/team/buyer_java.git(bitbucket 项目的 HTTPS 地址);
ii. Credentials 选择之前已经配置好的 bitbucket 凭据(github 也是类似的操作);
iii. Additional Behaviours, 点击 Add, 选择 "Check out to a sub-directory", 填写从 bitbucket 拉取的项目文件要存放的子目录地址 buyer
d. 增加构建步骤, 选择执行 shell, 在输入框中输入要执行的 shell 命令, 如下:
- # 任务执行完成后, 不关闭 jenkins 服务
- BUILD_ID=DONTKILLME
- source /etc/profile
- # 配置运行参数
- export PROJ_PATH=`pwd`
- export TOMCAT_APP_PATH=/usr/local/tomcat/apache-tomcat-9.0.10
- # 运行部署脚本(这个是存放在项目中的脚本文件)
- sh $PROJ_PATH / 项目根目录名称 / deploy.sh
8. 编写自动化任务(shell 语句), 即 项目根目录 / deploy.sh,shell 命令不强制, 仅做参考, 可以根据自己需要编写, 文件样例内容如下:
- #!/usr/bin/env bash
- #编译 + 部署 springboot 站点
- #需要配置如下参数
- # 项目路径, 再 Execute Shell 中配置项目路径, pwd 可以获得该项目路径
- # export PROJ_PATH = 这个 jenkins 任务在部署机器上的路径
- # 输入你的环境上 tomcat 的全路径
- # export TOMCAT_APP_PATH=tomcat 在部署机器上的路径
- ### base 函数
- killTomcat()
- {
- pid=`ps -ef|grep tomcat|grep java|awk '{print $2}'`
- echo "tomcat Id list :$pid"
- if [ "$pid"="" ]
- then
- echo "no tomcat pid alive"
- else
- kill -9 $pid
- fi
- }
- cd $PROJ_PATH/buyer
- mvn clean install
- # 停止 tomcat
- killTomcat
- # 备份原有工程
- TS=`date +%Y%m%d%H%M%S`
- BAKDIR=/usr/local/buyer_bak/$TS/
- mkdir -p $BAKDIR
- cp $TOMCAT_APP_PATH/webapps/ROOT $BAKDIR
- cp $TOMCAT_APP_PATH/webapps/ROOT.war $BAKDIR
- # 删除原有工程
- rm -rf $TOMCAT_APP_PATH/webapps/ROOT
- rm -f $TOMCAT_APP_PATH/webapps/ROOT.war
- # 复制新工程
- cp $PROJ_PATH/buyer/target/buyer-0.0.1-SNAPSHOT.war $TOMCAT_APP_PATH/webapps/
- # 重命名执行文件
- cd $TOMCAT_APP_PATH/webapps/
- mv buyer-0.0.1-SNAPSHOT.war ROOT.war
- # 启动 tomcat
- cd $TOMCAT_APP_PATH/
- sh bin/startup.sh
9. 安装已全部完成, 接下来可以执行自动化任务进行测试了.
来源: https://www.cnblogs.com/feng-blog/p/9556013.html