Jenkins 自动化部署, 踩坑指南

1.JENKINS 是什么

Jenkins是一个自包含的、开源的自动化服务器,可以用于自动化与构建、测试、交付或部署软件相关的各种任务。

Jenkins可以通过本机系统包、Docker安装,甚至可以由任何安装了Java运行时环境(JRE)的机器独立运行

2.在centos 系统上安装jenkins

三种方式

  • 通过 docker 安装
  • 通过jenkins.war 在tomcat中运行
  • 通过yum 的方式安装

2.1 通过docker 安装

  • 创建jenkins 文件,并修改文件权限
mkdir -p /usr/local/atom.hu/jenkins
chown -R 1000:1000 /usr/loca/atom.hu/jenkins
  • 拉取镜像
docker pull jenkins
  • 启动镜像
docker run -p 8080:8080 -p 50000:50000 --name jenkins --privileged=true -v /usr/local/atom.hu/jenkins/:/var/jenkins_home -d jenkins
  • 稍作等待


    image
  • 进入目录查看密码

[root@localhost secrets]# cat initialAdminPassword 
9ca7368042fe45be8b693ab43e7797d1

2.2 通过jenkins.war 的方式安装

jenkins官网中下载war包

image

可以直接右键复制软件地址, 使用 wget 命令进行下载

wget http://mirrors.jenkins.io/war-stable/latest/jenkins.war

下载完成后 将项目放入tomcatwebapps 文件夹下

2.3 通过yum的方式安装jenkins

获取软件安装源

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

安装jenkins

yum -y install jenkins

安装完成后 启动jenkins

systemctl start jenkins

通过对三种方式的实验 每种方式都进行了探索, 最后选择通过yum的方式进行安装, 也是最麻烦的安装方式, 但是相对可靠, docker 的安装方式虽然简便, 但是会遇到比较多软件环境问题. 使用jenkins.war的方式, 也相对比较简便, 但是也是遇到比较多的问题, 最后还是放弃了, 采用了最原始也是最麻烦的方式

3.0 使用jenkins自动化部署的前提条件

为了保证后面的配置能够顺利进行, 需要一些前期的准备工作

修改jenkins的配置文件

# 打开jenkins的配置文件
vim /etc/sysconfig/jenkins
# 修改 $JENKINS_USER 的值为root
$JENKINS_USER="root"
image

修改Jenkins相关文件夹用户权限

chown -R root:root /var/lib/jenkins
chown -R root:root /var/cache/jenkins
chown -R root:root /var/log/jenkins

重启Jenkins服务并检查运行Jenkins的用户是否已经切换为root

# 重启Jenkins(若是其他方式安装的jenkins则重启方式略不同)
systemctl restart jenkins
# 查看Jenkins进程所属用户
ps -ef | grep jenkins
# 若显示为root用户,则表示修改完成

到此为止, 前期准备工作就算完按成了, 可以开始进行jenkins自动化部署了

4.0 在jenkins中安装插件

在jenkins中, 新手推荐直接安装推荐插件, 后设置管理员密码后, 进入主界面, 切记不要忘记密码, 虽然也有解决办法, 但是还是记住密码的好

image

安装必要的jenkins插件

Git Parameter Plug-In

image

在后续的自动化部署中, 我们需要通过参数, 设置不同的分支, 对不同的分支进行打包, 需要这个插件的支持

Maven Integration plugin

image

在部署spring boot 项目的时候, 我们需要创建maven项目, 在安装了这个插件之后, 在创建项目的时候, 如果没有这个插件, 在创建项目的时候就没有 构建一个maven项目的选项

Publish Over SSH

image

有的时候我们在A机器上搭建的jenkins 但是却可能是在B机器上部署项目, 需要Publish Over SSH的支持

这里注意, 在填主机Ip的时候, 如果两台机器同属一个运行商的话, 尽量填写内网IP比较好, 这个很重要

5.0 在服务器中添加相关支持环境

  1. 安装 openjdk 1.8
    jenkins 的运行需要openjdk依赖

官方说法

You will need to explicitly install a Java runtime environment, because Oracle's Java RPMs are incorrect and fail to register as providing a java dependency. Thus, adding an explicit dependency requirement on Java would force installation of the OpenJDK JVM.

yum install java-1.8.0-openjdk
  1. 安装 git
yum install git
  1. 安装 node, 后续会部署前端项目需要
# 下载安装包
wget https://nodejs.org/dist/v10.15.3/node-v10.15.3-linux-x64.tar.xz

# 解压
tar -xvf node-v10.15.3-linux-x64.tar.xz -C ./

# 将node命令和npm设置软连接到 /usr/bin 中
ln -s ./node /usr/bin/node
ln -s ./npm /usr/bin/npm

# 然后在其他的地方都可以使用这两个命令了
  1. 安装maven, 并在/etc/profile 中配置

6.0 系统配置

image

在全局配置工具中, 配置 jdk, maven, git, node 的安装路径

image

7.0 自动化部署 前端vue项目

部署场景, 在A机器进行webpack打包, 将打包后的文件,发送到B机器上指定的文件夹, 通过nginx代理实现访问

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

2.填写项目描述

image
  1. 选择参数化构建过程, 后续可以选择不同分支进行打包
image
  1. 选择不同的版本控制工具 svn 和 git都可以, 这里我们使用git
image

需要添加 自己的用户和密码, 不然会出现下面的情况


image
  1. 在构建环境中选择 Send files or execute commands over SSH after the build runs
    image

这里的配置为, 在本地构建完成之后, 我们需要将哪些文件发送到目标主机上, 发送到目标主机上, 并执行什么命令

cd /home/project/web/test  
tar -zxvf dist.tar.gz
rm -rf dist.tar.gz

/home/project/web/test 为目标主机nginx 配置过的目录

  1. 在构建中选中 Execute Shell
    image

    并配置构建时执行的命令
cnpm i &&
rm -rf dist && 
npm run build && 
cd dist&& 
tar -zcvf dist.tar.gz *

点击保存, 这样就完成了 前端项目的搭建了

8.0 自动化部署 spring boot 项目

  1. 新建任务, 创建maven 项目
image
  1. 填写项目描述, 配置参数构建
image
  1. 配置源码管理
image
  1. 配置构建环境 ssh server
image
BUILD_ID=DONTKILLME
source /etc/profile;
cd /home/project/java/test&&

pid=`ps -ef | grep 'jar 名称' | grep -v grep | awk '{print $2}'`
if [ -n "$pid" ]
then
   kill -9 $pid
fi

 java -jar lk-truck-mendery-webfront-1.0.0-SNAPSHOT.jar > nohup.log &

注意点

  1. shell 前需要添加 BUILD_ID=DONTKILLME, 不然在jenkins创建了java 进程之后,退出的时候, 会杀死之前创建过的工程
  2. 需要在前面添加 source /etc/profile, 不然可能会出现 java 命令找不到的情况

到此 springboot的项目便搭建完成了

9.0 如果设置了密码之后, 又忘记了密码应该怎么办

  1. 进入到jenkins的配置文件中
cd /var/lib/jenkins/users
vim config.xml
image

替换途中的值, 替换为

#jbcrypt:$2a$10$DdaWzN64JgUtLdvxWIflcuQu2fgrrMSAMabF5TSrGK5nXitqK9ZMS

替换后,重启jenkins

systemctl restart jenkins

登录密码就变为 1111111 了

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

推荐阅读更多精彩内容