Jenkins安装部署使用图文详解(非常详细)
前言
最近公司需要弄一套自动化运维部署,于是抽空学习了一下,用了两天左右完成Jenkins的安装部署和各种项目的配置化,于是整理一下进行分享。
介绍
Jenkins是一个独立的开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。前身是Hudson是一个可扩展的持续集成引擎。可用于自动化各种任务,如构建,测试和部署软件。Jenkins可以通过本机系统包Docker安装,甚至可以通过安装Java Runtime Environment的任何机器独立运行。
Jenkins特点:
- 开源免费;
- 跨平台,支持所有的平台;
- master/slave支持分布式的build;
- web形式的可视化的管理页面;
- 安装配置超级简单;
- tips及时快速的帮助;
- 已有的200多个插件
安装教程
这里我们使用的是离线包方式安装。
官网镜像地址: 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打开设置好账号密码之后登录即可,插件安装推荐使用官方推荐。

依赖环境安装
因为需要对一些项目进行打包,因此需要安装这些环境的依赖,这里我们就安装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使用
简易流程图

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


Maven Integration

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

Publish over SSH
ssh远程服务插件,必装。

ThinBackup
Jenkins备份配置服务的插件


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

依赖环境
主要是上面安装的环境的路径填写。




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


构建项目
项目构建有很多种选择,这里我们就用java项目(依赖maven)和前端项目(依赖nodejs)来做示例。
首先回到主界面,点击新建项目。


java项目构建
这里我们是创建java项目,因此我们选择maven方式构建。
这里构建的项目可以使用我之前写的springboot项目,https://github.com/xuwujing/springBoot-study/tree/master/springboot-package
创建完成之后,我们根据图片来进行填写,下面是设置了在编译时进行参数配置,可以手动选择分支,可以不进行配置。

这里需要配置git项目地址和制定分支

编译前的操作,无特殊要求,可以不操作

打包操作,可以使用默认值

配置的远程服务地址

配置完毕之后,点击保存即可。
进行构建

构建成功之后,在远程服务的设置好的路径可以查看服务已更新并且已经启动成功!
前端项目构建
这里我们是创建前端项目,我们可以选择freestyle方式进行构建。
这里的配置基本同上

这里的构建选择执行shell命令:

进行远程传输

进行构建

额外操作
自定义工作空间
将git的项目下载到指定目录,并进行操作
在general中点击高级->勾选自定义空间

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


运行分支选择
在项目的配置中勾选如下参数



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


异常处理
这里是我在进行配置的时候遇到的一些错误,整理如下
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",
解决办法: 添加成功即可.

如果还是不行,使用
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
Jenkins安装部署使用图文详解(非常详细)的更多相关文章
- 全网最详细的PLSQL Developer + Oracle client的客户端 或者 PLSQL Developer + Oracle server服务端的下载与安装过程(图文详解)
不多说,直接上干货! 环境说明: 本地没有安装Oracle服务端,oracle服务端64位,是远程连接,因此本地配置PLSQL Developer64位. Oracle database使用在本机部署 ...
- Python安装、配置图文详解(转载)
Python安装.配置图文详解 目录: 一. Python简介 二. 安装python 1. 在windows下安装 2. 在Linux下安装 三. 在windows下配置python集成开发环境(I ...
- 【和我一起学python吧】Python安装、配置图文详解
Python安装.配置图文详解 目录: 一. Python简介 二. 安装python 1. 在windows下安装 2. 在Linux下安装 三. 在windows下配置python集成开发环境( ...
- windows系统下如何正确安装Cygwin(图文详解)
我的操作系统信息是 1.在官网https://cygwin.com/install.html下载win64位安装包 选择包的下载存放目录,点击“下一步” 为了使我们安装的Cygwin能够编译程序, ...
- windows系统里Cygwin中如何正确安装wget(图文详解)
具体步骤,见如下: https://ftp.gnu.org/gnu/wget/ 解压到Cygwin的主目录中,一般是 你的Cygwin目录/home/当前用户名/ . 我这是如下 先./c ...
- 全网最详细的Windows系统里PLSQL Developer 32bit的下载与安装过程(图文详解)
不多说,直接上干货! 注意的是: 本地若没有安装Oracle服务端,Oracle server服务端32位,是远程连接,因此本地配置PLSQL Developer32位. PLSQL Develope ...
- 全网最详细的Windows系统里PLSQL Developer 64bit的下载与安装过程(图文详解)
不多说,直接上干货! ORACLE是数据库,有客户端和服务器: 其,具体下载,可见http://www.oracle.com/technetwork/database/enterprise-editi ...
- 基于JDBC的跨平台数据库管理工具DbVisualizer安装步骤(图文详解)(博主推荐)
首先,关于跨平台数据库管理工具DbVisualizer是什么?这个不多说,大家自行去看. 这个工具可以自定义连接其他没有驱动的数据库. 公司的项目牵扯到的数据库有mysql,sqlserver,o ...
- Linux 下Redis集群安装部署及使用详解(在线和离线两种安装+相关错误解决方案)
一.应用场景介绍 本文主要是介绍Redis集群在Linux环境下的安装讲解,其中主要包括在联网的Linux环境和脱机的Linux环境下是如何安装的.因为大多数时候,公司的生产环境是在内网环境下,无外网 ...
随机推荐
- GIT Bash 简单讲解-git如何推/拉代码
GIT Bash 简单讲解 一. 注册/登录GIT账号 注册(或者登录) GitHub地址:https://github.com/ 注册不做详细的讲解,按照注册指示进行注册就可以 ...
- Codeforces 809C - Find a car(找性质)
Codeforces 题目传送门 & 洛谷题目传送门 首先拿到这类题第一步肯定要分析题目给出的矩阵有什么性质.稍微打个表即可发现题目要求的矩形是一个分形.形式化地说,该矩形可以通过以下方式生成 ...
- Topcoder 10748 - StringDecryption(dp)
题面传送门 神仙题. 首先这个两次加密略微有点棘手,咱们不妨先从一次加密的情况入手考虑这个问题.显然,一次加密等价于将加密过的序列划分成若干段,每一段都是 \(xd\) 的形式表示这一段中有 \(x\ ...
- Eigensoft-smartpca分析PCA报错:warning (mapfile): bad chrom: Segmentation fault
目录 问题 解决 问题 一直以来用Eigensoft的smartpca来做群体遗传的PCA分析很顺畅,结果也比较靠谱. 但今天报错如下: $ ~/miniconda3/bin/smartpca -p ...
- OOM机制
Linux内核根据应用程序的要求分配内存,通常来说应用程序分配了内存但是并没有实际全部使用,为了提高性能,这部分没用的内存可以留作它用,这部分内存是属于每个进程的,内核直接回收利用的话比较麻烦,所以内 ...
- DOTA数据集
航拍图像面临的问题 正常图像受重力作用相对固定,航拍图像的物体受拍摄角度影响 航拍图像的物体比例变化很大 某些航拍图像中小物体很密集 传统的数据集面临数据偏差的问题严重 好的数据集必备的几个特征 大量 ...
- C# 设计模式(1)——简单工厂模式、工厂模式、抽象工厂模式
1.前言 上一篇写了设计模式原则有助于我们开发程序的时候能写出高质量的代码(牵一发而不动全身),这个系列还是做个笔记温习一下各种设计模式,下面就看看简单工厂模式.工厂模式.抽象工厂模式. 2.简单工厂 ...
- 零基础学习java------day19-------定时器,线程面试题,Udp,Tcp
0. 定时器 0.1 概述: 定时器是一个应用十分广泛的线程工具,可用于调度多个定时任务以后台线程的方式执行,在jaa中,可以通过Timew和TimerTask类来实现定义调度的功能 0.2 Tim ...
- 容器之分类与各种测试(四)——multimap
multiset和multimap的具体区别在于,前者的key值就是自己存储的value,后者的key与value是分开的不相关的. 例程 #include<stdexcept> #inc ...
- 如何在Swagger2或Swagger3中增加Json Web Token
1. 前言 Swagger 3.0已经发布有一段时间了,作为一个非常有用的文档工具已经越来越多的项目在使用它.而JWT也是目前前后端分离最常用的安全技术.那么如何在Swagger 3.0 中添加JWT ...