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 root@localhost.localdomain

6.配置maven项目

1)General

描述                | scats-import 测试

GitHub项目 
项目 URL            | git@192.168.20.105:productbusiness/scats-import.git/
GitLab Connection   | 192.168.20.105

2)源码管理

Git

Repository URL       |   git@192.168.20.105: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    | git@192.168.20.105: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;
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
禁止转载,如需转载请通过简信或评论联系作者。
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,001评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,210评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,874评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,001评论 1 291
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,022评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,005评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,929评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,742评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,193评论 1 309
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,427评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,583评论 1 346
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,305评论 5 342
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,911评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,564评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,731评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,581评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,478评论 2 352