Jenkins:安装并实现前后端的自动化部署
一、安装
1.下载并安装启动
1
2 3 4 |
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 sudo service jenkins start |
2.过程中如果出现以下错误,则修改实际java安装位置。
1
|
Starting jenkins (via systemctl): Job for jenkins.service failed. See 'systemctl status jenkins.service' and 'journalctl -xn' for details. [FAILED]
|
1)打开jenkin启动配置文件
1
|
vim /etc/init.d/jenkins
|
2)修改java路径如下
1
2 3 4 5 6 7 8 9 10 11 |
candidates="
/etc/alternatives/java /usr/lib/jvm/java-1.8.0/bin/java /usr/lib/jvm/jre-1.8.0/bin/java /usr/lib/jvm/java-1.7.0/bin/java /usr/lib/jvm/jre-1.7.0/bin/java /usr/lib/jvm/java-11.0/bin/java /usr/lib/jvm/jre-11.0/bin/java /usr/lib/jvm/java-11-openjdk-amd64 /usr/bin/java /usr/java/jdk1.8.0_171/bin/java |
3)重新加载
1
|
systemctl daemon-reload
|
二、结合Git+Maven实现java项目的持续集成
1.安装插件
1)自动
1
|
Manage Jenkins ->Manage Plugins ->可选插件
|
2)手动
1
|
Manage Jenkins ->Manage Plugins ->高级
|
3)插件下载地址
1
2 |
搜索:https://plugins.jenkins.io/
列表:https://updates.jenkins-ci.org/download/plugins/ |
2.Jenkins系统设置
进入Manage Jenkins -> Global Tool Configuration 目录下进行配置。
一下所需环境均与jenkins安装于同一服务器,直接指定实际安装位置即可。
1)新增jdk
1
2 |
别名 | jdk1.8
JAVA_HOME | /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.171-8.b10.el7_5.x86_64 |
2)新增Git
1
2 |
Name | git
Path to Git executable | /usr/bin/git |
3)新增maven
1
2 |
name | maven
MAVEN_HOME | /opt/apache-maven-3.6.1 |
3.配置publish over ssh:
1)安装Publish Over SSH插件
2)Manage Jenkins -> Configure System ->Publish over SSH 下配置
首先,在安装jenkins的服务器中运行 ssh-keygen 一路回车yes (注意是否覆盖原私钥)
然后,cat ~/.ssh/id_rsa 查看私钥 并复制秘钥内容 -> key
3) SSH Servers配置
1
2 3 4 5 |
SSH Server
Name | 192.168.25.98 Hostname | 192.168.25.98 Username | root Remote Directory | /usr/local/tomcat |
-
ssh-copy-id -i 192.168.25.98 将私钥传给目标服务器 构建免密连接
-
Test Configuration -> Success 测试成功
4.配置gitlib
1)jenkins中安装Gitlib插件,步骤如上。
2)Gitlib中生成API令牌
1
2 3 4 5 6 |
setting -> Access Tokens
Name | jenkins Expires at | YYYY-MM-DD 勾选 api |
3)Manage Jenkins -> Configure System -> 配置 -> Gitlab
首先
1
2 3 |
Connection name | 192.168.20.105
Gitlab host URL | http://192.168.20.105:8888 点击 添加 -> jenkins |
其次
1
2 3 4 5 6 7 |
Domain | 全局
类型 | GitLab API token 范围 | 全局 API token | 6yQH6YTBEGhpRFtTLvb2 ID | 描述 | 192.168.20.105 的 GitLab 点击 添加 |
测试
1
|
Test Configuration -> Success 测试成功
|
5.安装git
1
2 3 4 5 6 7 |
yum install git #安装
cat ~/.ssh/id_rsa.pub #查看公钥 SSH Keys Add SSH Keys #gitlib中添加公钥 ssh-rsa AAA******************************abYbpG9LGv/EfAV4Uulc4YreEcTfVfVgqFpQn+rCUiKZlYj1xEEjjsgm0ksnbn02sRkL4************************************************************avGXSE+3EM******************************a50n4Iqk7G5D1qkfaoIRYw******************************aZtznmmii8xQyIWDri******************************ai4yD28XUYLPbW3jAlaK5+vjvq******************************aD2jIpUDmCNChLvNyPonb0+L/Mxe******************************a root@localhost.localdomain |
6.配置maven项目
1)General
1
2 3 4 5 |
描述 | scats-import 测试
GitHub项目 项目 URL | git@192.168.20.105:productbusiness/scats-import.git/ GitLab Connection | 192.168.20.105 |
2)源码管理
1
2 3 4 |
Git
Repository URL | git@192.168.20.105:productbusiness/scats-import.git Credentials | 私钥认证(重点!!! 即使git公钥认证,gitlabtoken令牌认证,此处仍需私钥认证) |
3)Build
1
2 |
Root POM | pom.xml
Goals and options | clean package -Dmaven.test.skip=true |
4)构建后操作(打好包后推到服务器)
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
安装deploy插件
Send build artifacts over SSH web层配置 Source files | target/*.war Remote prefix | target Remote directory | /recommandWeb/tomcat/webapps Exec command | /home/jenkins/sh/deploy.sh svc层配置(dubbo项目需要,mvc只需要web层) Source files | enjoyor-superpower-traffic-svc/target/*.war Remote prefix | enjoyor-superpower-traffic-svc/target/ Remote directory | /trafficSvc/tomcat/webapps Exec command | /home/jenkins/sh/trafficsvc.sh |
注意事项!!
1、Remote prefix:是Source files需要删除的前缀(war包所属相对路径的前缀)。Source files 减 Remote prefix 能拿到纯粹的war包
2、Remote directory为Publish over SSH步骤后的相对路径;Exec command为绝对路径。 均为目标服务器路径
5)deploy.sh是自己写shell脚本的文件
举例如下:
1
2 3 4 5 6 7 |
#!/bin/bash
echo "************* 删除 旧包 *************" cd /usr/local/services/services/service/interSvc/tomcat/webapps; rm -rf intersvc echo "************* tomcat shutdown *************" cd /usr/local/services/services/service/interSvc/tomcat/bin; ./shutdown.sh echo "************* tomcat startup *************" cd /usr/local/services/services/service/interSvc/tomcat/bin; ./startup.sh |
7.修改工作空间和日志的路径
1
2 3 4 5 6 7 8 9 10 11 |
service jenkins stop
cd /etc/sysconfig vim jenkins JENKINS_HOME="/home/jenkins/workspace" JENKINS_USER="root" service jenkins start |
三、结合Git+NodeJs 实现前端项目的持续集成
1.Manage Plugins
安装nodejs插件操作 同上
2.下载nodejs和npm
1
2 3 4 5 6 7 8 9 10 11 12 13 |
wget https://npm.taobao.org/mirrors/node/v10.15.0/node-v10.15.0-linux-x64.tar.xz
tar xf node-v10.15.0-linux-x64.tar.xz cd node-v10.15.0-linux-x64/ ./bin/node -v ln -s /home/nodejs/node-v10.15.0-linux-x64/bin/node /usr/bin/ ln -s /home/nodejs/node-v10.15.0-linux-x64/bin/npm /usr/bin/ chown -R root:root ./ #进入node安装目录,执行 |
3.jenkins全局配置
1
2 3 4 5 6 7 8 |
Global Tool Configuration
NodeJS 别名 | NodeJs v10.15.0 安装目录 | /home/nodejs/node-v10.15.0-linux-x64/bin #安装目录到 实际目录的bin层为止! |
4.创建前端项目
- 创建一个自由风格的项目
2)General
1
2 3 |
描述 | signalExpert 信号专家前端
GitLab Connection | 192.168.20.105 |
3)源码管理
1
2 3 4 5 |
Git
Repository URL | git@192.168.20.105:productbusinessfront/hangzhousingalexpertv2.git Credentials | root |
4)构建环境
1
2 3 4 5 |
Provide Node & npm bin/ folder to PATH
NodeJS Installation | NodeJs v10.15.0 npmrc file | - use system default - Cache location | Default |
5)构建
1
2 3 4 5 6 7 |
Execute shell
npm install npm run build cd dist rm -rf signalExpert.tar.gz #删除上次打包生成的压缩文件 tar -zcvf signalExpert.tar.gz * #把生成的项目打包成test方便传输到远程服务器 |
6)构建后操作
1
2 3 4 5 6 7 8 |
Send build artifacts over SSH
Name 192.168.25.98_web Source files | dist/signalExpert.tar.gz Remote prefix | dist Remote directory | trafficWeb/tomcat/webapps Exec command | /home/jenkins/sh/trafficweb_signalExpert.sh |
启动脚本
举例如下
1
2 3 4 5 6 7 8 9 10 |
#!/bin/bash
echo "************* 删除 旧包 *************" cd /usr/local/tomcat/trafficWeb/tomcat/webapps; rm -rf signalExpert; echo "************* 解 压 *************" mkdir dist; tar -zxvf signalExpert.tar.gz -C dist; echo "************* 删除 压缩包 *************" rm -rf signalExpert.tar.gz; echo "************* 重命名 *************" mv dist/ signalExpert; |