Jenkins入门教程

@

1. 什么是Jenkins

1.1 我们为啥需要jenkins

在一次系统开发中,往往需要如下几步:

  1. 写代码
  2. 代码提交
  3. 四处打听有没有人没提交的代码
  4. 项目打包(通常是jar包和war包)
  5. 上传到Linux服务器上
  6. 如果项目正在运行,关闭它
  7. 启动刚刚部署的项目
  8. 如果有人突然举手说我代码好像有点问题!重复步骤1-7,可以说是相等的折磨人了

这时有人就会问了,有没有那种可以自动打包部署的工具呢?

正确答案:Jenkins

Jenkins是一个基于Java构筑的一个持续集成工具,可以帮助用户更好地实现持续集成

1.2. Jenkin实现原理

  1. 程序员们提交代码
  2. 版本控制服务器(git、svm)整合代码库
  3. 版本控制服务器通知Jenkins自动化部署
  4. Jenkins调用git/svn插件获取源码
  5. Jenkins调用maven插件打包成war包或者是jar包
  6. Jenkins调用命令将项目部署到服务器
  7. 使用人员:测试/前端

2. Jenkins搭建

2.1. Jenkins环境搭建(以CentOS7.5为例)

  1. jdk
  2. maven/gradle
  3. git/svm

以上为部署java项目的基本环境,请先行搭建好

2.2. 安装Jenkins

  1. 安装包下载,Jenkins官网下载较慢,这里提供国内下载地址:Jenkins

  2. 在安装包根路径下输入: nohup java -jar -Dhudson.security.csrf.GlobalCrumbIssuerConfiguration.DISABLE_CSRF_PROTECTION=true jenkins.war --httpPort=8080 &

    1. nohup ............. & 后台启动
    2. -Dhudson.security.csrf.GlobalCrumbIssuerConfiguration.DISABLE_CSRF_PROTECTION=true 为了关闭CSRF,Jenkins2.2版本之后无法关闭CSRF,会导致项目拉取失败
    3. jenkins.war 下载下来的war包
    4. --httpPort=8080 指定jenkins管理页面的端口
  3. 安装结束后会有一个很长的初始密码,如果忘了可以在~/.jenkins/secrets/initialAdminPassword文件中查看

  4. 在浏览器输入 http://localhost:8080

  5. 输入密码后,建议点击安装推荐的插件,保证基本功能可用

  6. 安装完成后设置首个管理员用户和密码

2.3. Jenkins初始化配置

2.3.1. 汉化插件(可选)

Linux安装完成后,第一次打开发现内部全都是英文的

汉化步骤:

  1. 点击Manage Jenkins
  2. 点击Mange Plugins
  3. 点击Advanced,设置Update Sites的URL为:https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json 用国内镜像源安装插件速度会很快
  4. 插件安装(新老版本二选一)
    1. 老版的安装Locale插件,随后依次点击Manage Jenkins -> Configure System,找到Locale输入zh_CN,并在下面打钩,
    2. 新版的安装Localization:Chinese(Simplified)插件即可(作者自用,Jenkins版本2.277)
  5. 拉到最下方点击save
  6. 重启(推荐方式: http://localhost:8080/restart)真的很省事

2.3.2. 全局工具配置(系统管理底下)

JDK、Git、Maven配置:





注意项:

  1. 如果没有git的配置项,先在插件里安装一下git插件,具体安装方式参照上面汉化步骤
  2. 是否自动安装自行考虑,网上看别人的建议是用自己的(自己的才是最好的)
  3. 记得拉到最底下点保存
  4. 换上你自己的目录配置项
  5. 记得把Maven的settings.xml里的mrror换成阿里源
  6. 上图git记得配置成git可执行文件的全路径

2.3.3. 安装远程服务器插件以及其余插件

一共需要安装三个插件(安装步骤参考上面汉化步骤):

  1. Publish Over SSH 用于连接远程服务器
  2. Deploy to container 用于把打包的应用发布到远程服务器
  3. Maven Integration 用于构建Maven项目

2.4. 配置连接远程服务器的SSH

  1. 依次点击 系统管理 -> 系统配置
  2. 拉到最底下找到Publish over SSH,参考下图填写完毕

参考值:

名字 对应内容
Passphrase 服务器的密码
Path to key 连接远程服务器密钥文件的路径
Key SSH Key (具体内容看下面注意项)
Name 自定义服务器名
HostName 服务器IP地址
UserName 服务器用户名
Remote Directory 传输文件的目录

注意项:

  1. 如果找不到Publish over SSH,说明该插件未安装,请参考汉化步骤自行安装

  2. 登录方式:

    • 如果是用户名密码登录,输入Passphrase即可
    • 如果是SSH秘钥登录则输入Path to Key以及Key
  3. Key在~/.ssh/id_rsa.pub文件里,若无此文件则命令行输入ssh-keygen,然后一路回车自动生成(Windows系统还请自行百度)

  4. Remote Directory是你打包后的项目(jar包/war包)存放的地方,请先记住后续需要使用。

  5. 右下角有个Test Configuration可以点一下看看有没有Success


3. 守护程序员的笑容---自动化集成部署(来了来了,他来了)

3.1 项目构建

以构建maven项目为例,构建步骤如下:

  1. 新建任务

  2. 构建maven项目

  3. 源码管理配置(选择github上的项目)

  1. 触发器配置(github稍后会配置)

  2. 构建后操作

3.2. github配置

3.3 服务器添加脚本

进入到2.4配置的Remote Directory里,创建两个脚本(请根据自己的情况修改脚本)

stop.sh:

#!/bin/bash
pid=ps -ef |grep springboot-demo-0.0.1-SNAPSHOT.jar|awk '{print $2}'
if [ -n "$pid" ]
then
kill -9 $pid
fi

start.sh:

#!/bin/bash
chmod 777 /usr/local/java-projects/springboot-demo-0.0.1-SNAPSHOT.jar
cd /usr/local/java-projects
nohup java -jar springboot-demo-0.0.1-SNAPSHOT.jar &

3.4 测试

  1. 编写一个helloController
		@RestController
public class HelloController {
@GetMapping("/hello")
public String hello(){
return "Hello World!!!!!!!!!!!!";
}
}
  1. push项目

  2. jenkins开始自动部署项目

  3. 点击进项目,可查看控制台

  4. 访问项目路径 http://beanchan.cn/hello (我的,给你偷偷看一眼)


  至此我的处女作也算是小小的完结了,内容也只是入门,后续部分会慢慢完善,在哪里如有存在着问题,或者这篇哪里还可以改进的,又或者你在通篇按照我的指示完成后还是无法正常使用欢迎与我探讨探讨,感谢你的观看。

Jenkins入门教程的更多相关文章

  1. Jenkins入门教程(一):Windos下Jenkins的安装教程

    Jenkins的安装教程 Jenkins安装前的准备 1.安装jenkins前首先确保你的电脑已经安装了JDK,由于jenkins是基于java开发的 JDK下载地址 2.下载jenkins的安装包 ...

  2. jenkins 入门教程(下)

    接上回继续学习jenkins,这次主要来看一些疑难杂症: 一.yum install安装方式 除了直接java -jar jenkins.war方式,还可以用yum安装,这种方式下提供了更多的可配置选 ...

  3. jenkins 入门教程(中)

    接上回继续,本文以我托管在bitbucket上的一个开源项目spring-boot-rest-framework做为演示,讲解如何创建自动化部署. 一.创建item 点击ok继续,item的详情页面很 ...

  4. jenkins 入门教程(上)

    jenkins是一个广泛用于持续构建的可视化web工具,持续构建说得更直白点,就是各种项目的"自动化"编译.打包.分发部署.jenkins可以很好的支持各种语言(比如:java, ...

  5. jenkins 入门教程(上)【转】

    转自:https://www.cnblogs.com/yjmyzz/p/jenkins-tutorial-part-1.html jenkins是一个广泛用于持续构建的可视化web工具,持续构建说得更 ...

  6. jenkins 入门教程

    jenkins是一个广泛用于持续构建的可视化web工具,持续构建说得更直白点,就是各种项目的"自动化"编译.打包.分发部署.jenkins可以很好的支持各种语言(比如:java, ...

  7. Jenkins入门系列之——02第二章 Jenkins安装与配置

    2014-12-08:已不再担任SCM和CI的职位,Jenkins的文章如无必要不会再维护. 写的我想吐血,累死了. 网页看着不爽的,自己去下载PDF.有问题请留言! Jenkins入门系列之——03 ...

  8. [转载] Jenkins入门总结

    转载自http://www.cnblogs.com/itech/archive/2011/11/23/2260009.html 在网上貌似没有找到Jenkins的中文的太多的文档,有的都是关于Huds ...

  9. Jenkins入门总结

    Jenkins是基于Java开发的一种持续集成工具,用于监控持续重复的工作,功能包括: 1.持续的软件版本发布/测试项目. 2.监控外部调用执行的工作 在网上貌似没有找到Jenkins的中文的太多的文 ...

随机推荐

  1. Raft算法系列教程4:日志不一致的解决

    网络不可能一直处于正常情况,因为Leader或者某个Follower有可能会崩溃,从而导致日志不能一直保持一致.因此存在以下三种情况: (1)Follower缺失当前Leader上存在的日志条目.(2 ...

  2. web前台界面的两种验证方式

    JSON的全称是"JavaScript Object Notation",意思是JavaScript对象表示法,它是一种基于文本,独立于语言的轻量级数据交换格式. 第一种: 用户体 ...

  3. 风炫安全WEB安全学习第二十二节课 DOM型XSS讲解

    风炫安全WEB安全学习第二十二节课 DOM型XSS讲解 Dom型XSS演示 通过Javascript,可以重构整个HTML文档,你可以添加.移除.改变或重排页面上的项目 要改变页面的某个东西,Java ...

  4. 来不及解释!Linux常用命令大全,先收藏再说

    摘要:Linux常用命令,很适合你的. 一提到操作系统,我们首先想到的就是windows和Linux.Windows以直观的可视化的方式操作,特别适合在桌面端PC上操作执行相应的软件.相比较Windo ...

  5. 谈谈你不知道的gist

    1.Gist是什么关于Gist的详细介绍,请阅读官方文档About gists,下面只简略介绍部分功能: Gist是一种与其他人共享代码片段和粘贴的简单方法. 当您需要与同事或朋友共享示例代码或技术时 ...

  6. kubernets之pod简介

    一  k8s集群里面的最小单位是pod 1.1 一个较为简单的pod的配置文件 apiverson: api的版本号 kind: 资源的种类 metadata: pod的种类等相关信息 spec: p ...

  7. 【七天搞定Python】day01.Python环境配置、pip、IDE、注释、变量,数据类型、标识符/关键字、输出、输入

    什么是Python? 动态解释型语言,1982年由荷兰人Guido von Rossum发明. 更多细节可以google,这里不做展开. Python解释器: CPython(官方版本C语言实现) I ...

  8. centos7安装vsftpd最大的坑

    1.检查用户和密码没有错误2.vsftpd.conf配置没有错误3.检查/etc/vsftpd/vsftpd.conf  里面pam_service_name =vsftpd4.终极boss查看vim ...

  9. USB充电限流芯片,输出短路关闭,过压关闭

    PW1503,PW1502是超低RDS(ON)开关,具有可编程的电流限制,以保护电源源于过电流和短路保护.它具有超温保护以及反向闭锁功能. PW1503,PW1502采用薄型(1毫米)5针薄型SOT2 ...

  10. 学习Java第一天

    public 保证类名和文件名一致 关键字字母全小写,编辑器中有颜色标记 null空常量不能打印 变量就是内存中的存储空间 计算机中最小的存储单元时字节(byte) //1字节(B) = 8位(bit ...