Fork me on GitHub

Jenkins安装部署使用图文详解(非常详细)

前言

最近公司需要弄一套自动化运维部署,于是抽空学习了一下,用了两天左右完成Jenkins的安装部署和各种项目的配置化,于是整理一下进行分享。

介绍

Jenkins是一个独立的开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。前身是Hudson是一个可扩展的持续集成引擎。可用于自动化各种任务,如构建,测试和部署软件。Jenkins可以通过本机系统包Docker安装,甚至可以通过安装Java Runtime Environment的任何机器独立运行。

Jenkins特点:

  • 开源免费;
  • 跨平台,支持所有的平台;
  • master/slave支持分布式的build;
  • web形式的可视化的管理页面;
  • 安装配置超级简单;
  • tips及时快速的帮助;
  • 已有的200多个插件

官网:
https://www.jenkins.io/

安装教程

这里我们使用的是离线包方式安装。

官网镜像地址: https://mirrors.jenkins.io/
下载地址: https://jenkins.io/download/
华为镜像地址: https://mirrors.huaweicloud.com/home

百度网盘地址:链接:https://pan.baidu.com/s/10FNG5p-upLgNlCUUrdUIMA
提取码:r9x6

直接下载war包,并安装好jdk之后,输入:nohup java -jar jenkins.war --httpPort=8888 &
进行启动,然后网页浏览器输入 ip:8888打开设置好账号密码之后登录即可,插件安装推荐使用官方推荐。

![在这里插入图片描述]( https://img-blog.csdnimg.cn/1fbf61d51b2b4795911d382763bea949.png?x-oss-process=image/watermark ,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6Jma5peg5aKD,size_20,color_FFFFFF,t_70,g_se,x_16)

依赖环境安装

因为需要对一些项目进行打包,因此需要安装这些环境的依赖,这里我们就安装dk、git、maven(java项目),nodejs(前端项目)即可。

jdk安装

说明: 一般CentOS自带了openjdk,但是我们这里使用的是oracle的JDK。所以要写卸载openjdk,然后再安装在oracle下载好的JDK。如果已经卸载,可以跳过此步骤。
首先输入 java -version
查看是否安装了JDK,如果安装了,但版本不适合的话,就卸载
这里写图片描述

输入
rpm -qa | grep java
查看信息
这里写图片描述
然后输入:
rpm -e --nodeps “你要卸载JDK的信息”
如: rpm -e --nodeps java-1.7.0-openjdk-1.7.0.99-2.6.5.1.el6.x86_64
这里写图片描述

确认没有了之后,解压下载下来的JDK

tar  -xvf   jdk-8u144-linux-x64.tar.gz

移动到opt/java文件夹中,没有就新建,然后将文件夹重命名为jdk1.8。

mv  jdk1.8.0_144 /opt/java
mv  jdk1.8.0_144  jdk1.8

然后编辑 profile 文件,添加如下配置
输入:

vim /etc/profile

添加:

export JAVA_HOME=/opt/java/jdk1.8
export JRE_HOME=/opt/java/jdk1.8/jre
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
export PATH=.:${JAVA_HOME}/bin:$PATH

添加成功之后,输入

source /etc/profile
java  -version 

查看是否配置成功

maven安装

将maven进行解压,上传到服务器的/opt目录下,然后在conf目录下修改setting配置,

setting配置如下

<?xml version="1.0" encoding="UTF-8"?>


<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">

  <pluginGroups>

  </pluginGroups>


  <proxies>

  </proxies>


  <servers>

  </servers>

  <mirrors>
     <mirror>
        <id>alimaven</id>
        <name>aliyun maven</name>
        <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
        <mirrorOf>central</mirrorOf>        
    </mirror>
  </mirrors>


  <profiles>
 
     <!--  设置maven默认jdk -->
    <id>jdk-1.8</id>  
    <activation>  
        <activeByDefault>true</activeByDefault>  
        <jdk>1.8</jdk>  
    </activation>  
    <properties>  
        <maven.compiler.source>1.8</maven.compiler.source>  
        <maven.compiler.target>1.8</maven.compiler.target>  
        <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>  
    </properties>  
  </profiles>

</settings>

添加maven的环境,编辑/etc/profile文件,添加如下配置:

export MAVEN_HOME=/opt/apache-maven-3.5.0
export PATH=.:${JAVA_HOME}/bin:$MAVEN_HOME/bin:$PATH

在这里插入图片描述

添加成功之后,输入

source /etc/profile
mvn -v 

查看是否配置成功

git

下载地址:
https://git-scm.com/downloads
centos7默认安装了git服务,如果gitlab(项目源码)服务地址和Jenkins不在统一服务器上,则需要配置ssh key。
命令如下:

git config --global user.name "xx"
git config --global user.email "x@x.com"
ssh-keygen -t rsa  -C "x@x.com"
clip < ~/.ssh/id_rsa.pub

然后在gitlab的账号中添加即可。

nodejs

node下载地址:
http://nodejs.cn/download/current/
https://nodejs.org/dist/

下载离线包,进行解压,然后重命名为nodejs,进行移到到/usr/local中,最后创建软链

创建软链:

tar -zxvf node-v11.15.0-linux-x64.tar.gz
mv node-v11.15.0-linux-arm64/ nodejs
mv nodejs/* /usr/local/nodejs
ln -s /usr/local/nodejs/bin/node /usr/local/bin
ln -s /usr/local/nodejs/bin/npm /usr/local/bin
npm install -g yarn
ln -s /usr/local/nodejs/bin/yarn /usr/local/bin

在这里插入图片描述

Jenkins使用

简易流程图
![在这里插入图片描述]( https://img-blog.csdnimg.cn/412b218c2bb34d75a9474b5d82ba4d6e.png?x-oss-process=image/watermark ,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6Jma5peg5aKD,size_20,color_FFFFFF,t_70,g_se,x_16)

插件安装

Jenkins管理->插件管理,进行下载添加。
注:插件安装之后需要Jenkins重启,勾选插件下载之后可以手工勾选

![在这里插入图片描述]( https://img-blog.csdnimg.cn/71f36e77369e4acbb003c2838cf214cc.png?x-oss-process=image/watermark ,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6Jma5peg5aKD,size_20,color_FFFFFF,t_70,g_se,x_16)

![在这里插入图片描述]( https://img-blog.csdnimg.cn/58dd0ab922294342ab91bdb5330e1d01.png?x-oss-process=image/watermark ,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6Jma5peg5aKD,size_20,color_FFFFFF,t_70,g_se,x_16)

Maven Integration

![在这里插入图片描述]( https://img-blog.csdnimg.cn/d9e58a935227463fa151411b76f87671.png?x-oss-process=image/watermark ,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6Jma5peg5aKD,size_20,color_FFFFFF,t_70,g_se,x_16)

Git Parameter Plug-In
可以在构建时进行分支选择

![在这里插入图片描述]( https://img-blog.csdnimg.cn/f2a33f26dc174ce2ac1fbbcaeb04ba1e.png?x-oss-process=image/watermark ,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6Jma5peg5aKD,size_20,color_FFFFFF,t_70,g_se,x_16)
Publish over SSH
ssh远程服务插件,必装。

![在这里插入图片描述]( https://img-blog.csdnimg.cn/7bd00a93857a4f90923f96fab2eee4ef.png?x-oss-process=image/watermark ,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6Jma5peg5aKD,size_20,color_FFFFFF,t_70,g_se,x_16)

ThinBackup
Jenkins备份配置服务的插件

在这里插入图片描述

![在这里插入图片描述]( https://img-blog.csdnimg.cn/735778938ea648868f04f5b0c908fc96.png?x-oss-process=image/watermark ,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6Jma5peg5aKD,size_20,color_FFFFFF,t_70,g_se,x_16)

服务配置

环境配置

关于依赖环境的服务配置,必做,最好先安装上面的插件。

![在这里插入图片描述]( https://img-blog.csdnimg.cn/9c3182fdfb68414095c078475467a4e4.png?x-oss-process=image/watermark ,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6Jma5peg5aKD,size_20,color_FFFFFF,t_70,g_se,x_16)

依赖环境
主要是上面安装的环境的路径填写。
![在这里插入图片描述]( https://img-blog.csdnimg.cn/2188785767ad460fab3395bb1492b2e7.png?x-oss-process=image/watermark ,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6Jma5peg5aKD,size_20,color_FFFFFF,t_70,g_se,x_16)
![在这里插入图片描述]( https://img-blog.csdnimg.cn/1ba5a0eb79324550be273f12e3fd61f3.png?x-oss-process=image/watermark ,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6Jma5peg5aKD,size_20,color_FFFFFF,t_70,g_se,x_16)

![在这里插入图片描述]( https://img-blog.csdnimg.cn/2bdbdd204a30434aa3aa9bebf34d007b.png?x-oss-process=image/watermark ,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6Jma5peg5aKD,size_20,color_FFFFFF,t_70,g_se,x_16)

![在这里插入图片描述]( https://img-blog.csdnimg.cn/af88b4ffe5bc47a48c238e8fb7ad941b.png?x-oss-process=image/watermark ,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6Jma5peg5aKD,size_20,color_FFFFFF,t_70,g_se,x_16)

发布服务配置

ssh远程服务配置
Jenkins管理->系统配置

![在这里插入图片描述]( https://img-blog.csdnimg.cn/f67c938d5bca4ab38dc8bad30c7660a8.png?x-oss-process=image/watermark ,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6Jma5peg5aKD,size_20,color_FFFFFF,t_70,g_se,x_16)

![在这里插入图片描述]( https://img-blog.csdnimg.cn/8d9b83dc37694034b037e89396dc559c.png?x-oss-process=image/watermark ,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6Jma5peg5aKD,size_20,color_FFFFFF,t_70,g_se,x_16)

构建项目

项目构建有很多种选择,这里我们就用java项目(依赖maven)和前端项目(依赖nodejs)来做示例。

首先回到主界面,点击新建项目。

![在这里插入图片描述]( https://img-blog.csdnimg.cn/07e7771d27804c428bd3b5c9a5bdfb6b.png?x-oss-process=image/watermark ,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6Jma5peg5aKD,size_13,color_FFFFFF,t_70,g_se,x_16)
![在这里插入图片描述]( https://img-blog.csdnimg.cn/57ce46e9c4374ede84b1743b5739a6dd.png?x-oss-process=image/watermark ,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6Jma5peg5aKD,size_20,color_FFFFFF,t_70,g_se,x_16)

java项目构建

这里我们是创建java项目,因此我们选择maven方式构建。
这里构建的项目可以使用我之前写的springboot项目,https://github.com/xuwujing/springBoot-study/tree/master/springboot-package

创建完成之后,我们根据图片来进行填写,下面是设置了在编译时进行参数配置,可以手动选择分支,可以不进行配置。
![在这里插入图片描述]( https://img-blog.csdnimg.cn/c7dcc72401824055ba288c2a84b21456.png?x-oss-process=image/watermark ,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6Jma5peg5aKD,size_20,color_FFFFFF,t_70,g_se,x_16)

这里需要配置git项目地址和制定分支
![在这里插入图片描述]( https://img-blog.csdnimg.cn/475da69d1d0a4009b0e3e5ea25b9576d.png?x-oss-process=image/watermark ,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6Jma5peg5aKD,size_20,color_FFFFFF,t_70,g_se,x_16)

编译前的操作,无特殊要求,可以不操作
![在这里插入图片描述]( https://img-blog.csdnimg.cn/5655cdcdda29435884d7f29873cecb8e.png?x-oss-process=image/watermark ,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6Jma5peg5aKD,size_20,color_FFFFFF,t_70,g_se,x_16)
打包操作,可以使用默认值
![在这里插入图片描述]( https://img-blog.csdnimg.cn/cf9667d55550455093642bd2805de924.png?x-oss-process=image/watermark ,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6Jma5peg5aKD,size_20,color_FFFFFF,t_70,g_se,x_16)
配置的远程服务地址
![在这里插入图片描述]( https://img-blog.csdnimg.cn/e194c60e4d6e4392a73dfd920a78a718.png?x-oss-process=image/watermark ,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6Jma5peg5aKD,size_20,color_FFFFFF,t_70,g_se,x_16)
配置完毕之后,点击保存即可。

进行构建
![在这里插入图片描述]( https://img-blog.csdnimg.cn/f415169df4844ae08b596c159f087d17.png?x-oss-process=image/watermark ,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6Jma5peg5aKD,size_20,color_FFFFFF,t_70,g_se,x_16)
构建成功之后,在远程服务的设置好的路径可以查看服务已更新并且已经启动成功!

前端项目构建

这里我们是创建前端项目,我们可以选择freestyle方式进行构建。

这里的配置基本同上
![在这里插入图片描述]( https://img-blog.csdnimg.cn/523b9937ee60403a9cea061ff0cace7a.png?x-oss-process=image/watermark ,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6Jma5peg5aKD,size_20,color_FFFFFF,t_70,g_se,x_16)
这里的构建选择执行shell命令:

![在这里插入图片描述]( https://img-blog.csdnimg.cn/5886ddd59e604172b8ad08fc5171449e.png?x-oss-process=image/watermark ,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6Jma5peg5aKD,size_20,color_FFFFFF,t_70,g_se,x_16)
进行远程传输
![在这里插入图片描述]( https://img-blog.csdnimg.cn/574a9e003fb94277a33b0bb79b23c1b9.png?x-oss-process=image/watermark ,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6Jma5peg5aKD,size_20,color_FFFFFF,t_70,g_se,x_16)

进行构建

![在这里插入图片描述]( https://img-blog.csdnimg.cn/5684d63a44c24337967ed67bfd89e63c.png?x-oss-process=image/watermark ,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6Jma5peg5aKD,size_20,color_FFFFFF,t_70,g_se,x_16)

额外操作

自定义工作空间

将git的项目下载到指定目录,并进行操作
在general中点击高级->勾选自定义空间
![在这里插入图片描述]( https://img-blog.csdnimg.cn/e930f7fedd4b4051b231e13713c25b8c.png?x-oss-process=image/watermark ,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6Jma5peg5aKD,size_20,color_FFFFFF,t_70,g_se,x_16)

依赖关系

在打包的时候,会遇到依赖关系,比如打包A项目,需要B项目先进行打包,但是又不想每次点击两次,因此就可以用Jenkins的上下级关系打包,A项目依赖B项目,那么打包B项目之后自动打包A项目即可。

![在这里插入图片描述]( https://img-blog.csdnimg.cn/702925c7a8544aaf99d70aa1321afe87.png?x-oss-process=image/watermark ,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6Jma5peg5aKD,size_20,color_FFFFFF,t_70,g_se,x_16)
![在这里插入图片描述]( https://img-blog.csdnimg.cn/26bf0e26130040259dce4997f2bc41a1.png?x-oss-process=image/watermark ,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6Jma5peg5aKD,size_20,color_FFFFFF,t_70,g_se,x_16)

运行分支选择

在项目的配置中勾选如下参数
![在这里插入图片描述]( https://img-blog.csdnimg.cn/c08fed98b655481cbde099874ea9b7de.png?x-oss-process=image/watermark ,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6Jma5peg5aKD,size_20,color_FFFFFF,t_70,g_se,x_16)

![在这里插入图片描述]( https://img-blog.csdnimg.cn/c75609ee4b53413bb22c54a1f85ed0e2.png?x-oss-process=image/watermark ,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6Jma5peg5aKD,size_20,color_FFFFFF,t_70,g_se,x_16)

![在这里插入图片描述]( https://img-blog.csdnimg.cn/a5621f12891c4b60b6e44999ad78f08b.png?x-oss-process=image/watermark ,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6Jma5peg5aKD,size_20,color_FFFFFF,t_70,g_se,x_16)

配置文件备份

需要全局配置的插件 ThinBackup
点击backup now 即可进行备份

![在这里插入图片描述]( https://img-blog.csdnimg.cn/db72561456d54b4c916d69e3292ffaef.png?x-oss-process=image/watermark ,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6Jma5peg5aKD,size_20,color_FFFFFF,t_70,g_se,x_16)
![在这里插入图片描述]( https://img-blog.csdnimg.cn/7be38e30197149c2a032bf55fcbf85f3.png?x-oss-process=image/watermark ,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6Jma5peg5aKD,size_20,color_FFFFFF,t_70,g_se,x_16)

异常处理

这里是我在进行配置的时候遇到的一些错误,整理如下

1. returned status code 128

原因:鉴权问题,ssh key的鉴权;
解决办法:ssh key的配置,若是配置好了,可在Jenkins服务器手动 git clone一下在进行设置。

2. 配置密钥时报错的解决:Failed to add SSH key. Message invalid privatekey(Jenkins 2.257)

原因: 秘钥过长,Jenkins不支持
解决办法: 重新生成短秘钥,
ssh-keygen -m PEM -t rsa -b 4096

-m 参数指定密钥的格式,PEM是rsa之前使用的旧格式
-b 指定密钥长度。对于RSA密钥,最小要求768位,默认是2048位。

3. Npm install 报错

Failed at the node-sass@4.14.1 postinstall script. npm ERR! This is probably not a problem with npm.

参考:
https://blog.csdn.net/weixin_41940690/article/details/106977906
https://zhuanlan.zhihu.com/p/250812475

解决办法:

npm i --unsafe-perm=true

4. Npm 执行权限问题

参考:
https://blog.csdn.net/qq_40202111/article/details/105972546
https://www.jianshu.com/p/ab1c92a61809
https://segmentfault.com/q/1010000019989912
https://blog.csdn.net/wangooo/article/details/108443291
实际并未解决问题,
最终办法:
npm install &&
chmod -R 777 node_modules/ &&
npm run build

5. @vitejs/plugin-vue requires vue (>=3.2.13) or @vue/compiler-sfc to be present in the dependency tree

参考:
https://blog.csdn.net/bey_bey_bey/article/details/120744400

原因: package.json缺失配置, "vue-loader": "^14.2.4",
解决办法: 添加成功即可.
![在这里插入图片描述]( https://img-blog.csdnimg.cn/90553e09ebfd447ab5ba78a861c848a2.png?x-oss-process=image/watermark ,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6Jma5peg5aKD,size_20,color_FFFFFF,t_70,g_se,x_16)

如果还是不行,使用

npm install @vue/compiler-sfc  

6. error icss-utils@5.1.0: The engine “node“ is incompatible with this module

参考:
https://blog.csdn.net/weixin_40013817/article/details/115194426
执行如下命令

yarn config set ignore-engines true

其他

音乐推荐

原创不易,如果感觉不错,希望给个推荐!您的支持是我写作的最大动力!
版权声明:
作者:虚无境
博客园出处:http://www.cnblogs.com/xuwujing
CSDN出处:http://blog.csdn.net/qazwsxpcm    
个人博客出处:http://www.panchengming.com

posted @ 2021-12-23 22:56  虚无境  阅读(20197)  评论(5)    收藏  举报