Jenkins:安装并实现前后端的自动化部署

一、安装

1.下载并安装启动

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安装位置。

Starting jenkins (via systemctl):  Job for jenkins.service failed. See 'systemctl status jenkins.service' and 'journalctl -xn' for details.               [FAILED]

1)打开jenkin启动配置文件

vim   /etc/init.d/jenkins 

2)修改java路径如下

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)重新加载

systemctl daemon-reload

二、结合Git+Maven实现java项目的持续集成

1.安装插件

1)自动

Manage Jenkins ->Manage Plugins ->可选插件

2)手动

Manage Jenkins ->Manage Plugins ->高级

3)插件下载地址

搜索:https://plugins.jenkins.io/ 
列表:https://updates.jenkins-ci.org/download/plugins/

2.Jenkins系统设置

进入Manage Jenkins -> Global Tool Configuration 目录下进行配置。
一下所需环境均与jenkins安装于同一服务器,直接指定实际安装位置即可。
1)新增jdk

别名           | jdk1.8
JAVA_HOME      | /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.171-8.b10.el7_5.x86_64

2)新增Git

Name                          | git
Path to Git executable        | /usr/bin/git

3)新增maven

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配置

SSH Server
Name             | 192.168.25.98
Hostname         | 192.168.25.98
Username         | root
Remote Directory | /usr/local/tomcat
  1. ssh-copy-id -i 192.168.25.98 将私钥传给目标服务器 构建免密连接

  2. Test Configuration -> Success 测试成功

4.配置gitlib

1)jenkins中安装Gitlib插件,步骤如上。
2)Gitlib中生成API令牌

setting -> Access Tokens

Name         | jenkins
Expires at   | YYYY-MM-DD

勾选 api

3)Manage Jenkins -> Configure System -> 配置 -> Gitlab
首先

Connection name  | 192.168.20.105
Gitlab host URL  | http://192.168.20.105:8888
点击 添加 -> jenkins

其次

Domain     | 全局
类型       | GitLab API token
范围       | 全局
API token  | 6yQH6YTBEGhpRFtTLvb2
ID         | 
描述       |  192.168.20.105 的 GitLab
点击 添加 

测试

Test Configuration  ->  Success 测试成功

5.安装git

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 [email protected]

6.配置maven项目

1)General

描述                | scats-import 测试

GitHub项目 
项目 URL            | [email protected]:productbusiness/scats-import.git/
GitLab Connection   | 192.168.20.105

2)源码管理

Git

Repository URL       |   [email protected]:productbusiness/scats-import.git
Credentials          |   私钥认证(重点!!! 即使git公钥认证,gitlabtoken令牌认证,此处仍需私钥认证)

3)Build

Root POM            | pom.xml
Goals and options   | clean package -Dmaven.test.skip=true

4)构建后操作(打好包后推到服务器)

安装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脚本的文件
举例如下:

#!/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.修改工作空间和日志的路径

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

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全局配置

Global Tool Configuration

NodeJS

别名           | NodeJs v10.15.0
安装目录       | /home/nodejs/node-v10.15.0-linux-x64/bin

#安装目录到 实际目录的bin层为止!

4.创建前端项目

  1. 创建一个自由风格的项目

2)General

描述                | signalExpert  信号专家前端

GitLab Connection   |    192.168.20.105

3)源码管理

Git

Repository URL    | [email protected]:productbusinessfront/hangzhousingalexpertv2.git

Credentials       |    root 

4)构建环境

Provide Node & npm bin/ folder to PATH

NodeJS Installation   |    NodeJs v10.15.0
npmrc file            |  - use system default -
Cache location        |    Default

5)构建

Execute shell

npm install
npm run build
cd dist
rm -rf signalExpert.tar.gz #删除上次打包生成的压缩文件
tar -zcvf signalExpert.tar.gz * #把生成的项目打包成test方便传输到远程服务器

6)构建后操作

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

启动脚本
举例如下

#!/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;

你可能感兴趣的:(Jenkins:安装并实现前后端的自动化部署)