5分钟快速掌握Jenkins,项目一键自动部署
5分钟快速掌握Jenkins,项目一键自动部署
目录
前言
Jenkins是什么?
Jenkins环境安装搭建
Jenkins基本使用介绍
Jenkins快速构建项目,项目自动化部署
学习总结
前言
在开发过程当中,部署项目也算是基本操作了,部署方式多种多样,花费的时间也是不尽相同。项目部署大致需要以下几步:编译,打包,上传,kill已有进程,启动项目。单一架构,常规部署方式,熟练的话估摸着也需要3分钟左右;如果项目包比较大,上传替换,可能需要5-10分钟左右。如果项目改动频繁,一天花费在部署上面的时间也挺长的,而且操作反复;遇到分布式项目,那就更加难搞了,每个服务都需要单独部署,这样下来,部署花费的时间就太长了,反复操作也让人头疼。有别的方式吗?答案肯定是有的,本期学习的jenkins就是一款项目部署神器,集合界面化操作,简单的配置,完整的跟踪,项目监控,自动部署等一系列功能于一身,简直是程序员的福音呀。
Jenkins是什么?
是什么?
言归正传,让我们来看看Jenkins是什么?Jenkins口号:“构建伟大,无所不能”, 可以说是很豪迈的口号了,LOGO是一位绅士,真是简单明了!代表构建功能超级强大,部署代码非常优雅。Jenkins是一款开源的CI&CD软件,用于自动化各种任务,包括构建,测试和部署的软件,支持各种运行方式:可通过系统包、Docker或者通过一个独立的Java程序。
什么是CI&CD?
CI: 表示持续集成(continuous integration) ,在CI的环境中,开发者会频繁的向主干提交代码,这些代码在合并到主干之前,需要进行代码的编译,验证,确保没问题了才能进行合并。否则将会导致不可避免的错误发生。
CD:表示持续部署(continuous deploy) , 在CD的环境当中,通过自动化的构建,测试和部署,循环迭代快速交付高质量的产品。持续部署,可以加速和客户的沟通与反馈,快速帮助产品成长。
有什么特点?
完全开源免费,开源真是世界的福音
master/slave 支持分布式构建
提供web可视化操作界面
安装&配置非常简单
文档详细,反馈及时
插件丰富,功能强大
Jenkins环境安装搭建
jenkins的搭建其实非常简单,但是他需要依赖一些环境,比如docker ,jdk。docker可以集成海量工具镜像,比如maven,node等等
以下示例,服务器版本CentOS7。已经安装好docker,jdk的,可以直接跳过哦
安装JDK
查看服务器是否安装过jdk
# 输入以下命令无jdk版本信息,则未安装过
$ java -version
yum安装jdk
$ yum install java-1.8.0-openjdk-devel.x86_64
配置系统全局变量
$ vim /etc/profile
# 将下面信息复制到文件末尾,然后保存文件
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.171-8.b10.el6_9.x86_64
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
source全局变量
$ source /etc/profile
验证是否安装成功
# 输入以下命令,有Jdk版本信息即表示成功!
$ java -version
[root@iZ2ze0lvzs716zri63oxcmZ ~]# java -version
java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)
安装docker
docker要求, CentOS内核版本大于3.1
查看内核
$ uname -r
[root@iZ2ze0lvzs716zri63oxcmZ ~]# uname -r
3.10.0-514.26.2.el7.x86_64
使用最新yum源
# 如果很久没更新,可能需要更新2分钟左右,网速带宽稍有影响
$ yum update
安装需要的软件包
$ yum install -y yum-utils device-mapper-persistent-data lvm2
设置添加docker镜像
$ yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
安装最新稳定版
$ yum install docker-ce
启动&开机启动
# 启动
$ systemctl start docker
# 开机启动
$ systemctl enable docker
验证(有client和service两部分表示docker安装启动都成功了)
$ docker verison
[root@iZ2ze0lvzs716zri63oxcmZ ~]# docker version
Client: Docker Engine - Community
Version: 19.03.8
API version: 1.40
Go version: go1.12.17
Git commit: afacb8b
Built: Wed Mar 11 01:27:04 2020
OS/Arch: linux/amd64
Experimental: false
Server: Docker Engine - Community
Engine:
Version: 19.03.8
API version: 1.40 (minimum version 1.12)
Go version: go1.12.17
Git commit: afacb8b
Built: Wed Mar 11 01:25:42 2020
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.2.13
GitCommit: 7ad184331fa3e55e52b890ea95e65ba581ae3429
runc:
Version: 1.0.0-rc10
GitCommit: dc9208a3303feef5b3839f4323d9beb36df0a9dd
docker-init:
Version: 0.18.0
GitCommit: fec3683
安装Jenkins
现在万事俱备,只欠东风了
# 打开终端进入到下载目录.
# 运行命令
$ java -jar jenkins.war --httpPort=8080.
# 启动成功后会打印以下信息
*************************************************************
*************************************************************
*************************************************************
Jenkins initial setup is required. An admin user has been created and a password generated.
Please use the following password to proceed to installation:
# 注意复制这个
c0ae33e909df4094bb15ae15ae20ca83
This may also be found at: /root/.jenkins/secrets/initialAdminPassword
*************************************************************
*************************************************************
*************************************************************
# 打开浏览器进入链接 http://服务器ip:8080. 大概需要等几分钟,等它初始化
输入复制的密钥
# 按照说明完成安装.
按照推荐向导就可以啦,太太太太简单了!
Jenkins基本使用与介绍
一些准备工作
硬件要求:
256MB以上运行内存,官方建议最好大于512MB。
10GB硬盘空间,主要用户Jenkins和Docker镜像
基础环境
Java 8,安装jdk或者jre都可以
Docker 安装docker
下载&安装
创建一个Pipeline(流水线)
什么是Jenkins Pipeline?Pipeline是一套插件,可以将上面说的持续交付和持续集成应用到Jenkins中。简单来说就是提供一套插件,用于简单到复杂的交付流程实现。Jenkins Pipeline的定义通常在一个文件中,这个文件我们称之为Jenkinsfile,文件可以放在项目源代码库里。
Pipeline可以定义多种语言,我们以Java为例
Jenkinsfile (Declarative Pipeline)
pipeline {
agent { docker 'maven:3.3.3' }
stages {
stage('build') {
steps {
sh 'mvn --version'
}
}
}
}
简单解读:
agent : 代表使用哪个环境执行
stages:阶段集合,可以有多个stage,即可以有多个构建阶段
stage:阶段,常见有编译,打包,运行等
steps:阶段中需要执行的步骤,步骤可以有多个。
sh: 代表执行shell命令,一个sh代表执行一个步骤 若是windows环境,使用bat
定义流水线的几种方式
通过Blue Ocean,在Blue Ocean中设计一个流水线项目,它会自动帮你编写流水线的Jenkinsfile并提交到源代码管理系统
通过经典UI,经典UI中在Jenkins中直接输入基本的流水线
自己编写Jenkinsfile,然后提交到源代码管理仓库中
简单来说,你可以使用UI可视化界面,按照提示来创建流水线,也可以自己编写Jenkinsfile文件。一般直接用UI交互就行啦,几乎就是傻瓜式,填写以下Git仓库地址等等。有特殊的装*要求的话,编写Jenkinsfile秀技术的一种方式,哈哈。
5分钟快速掌握Jenkins,项目一键自动部署的更多相关文章
- Docker的镜像制作与整套项目一键打包部署
Dockerfile常用指令介绍 指令 描述 FROM 构建的新镜像是基于哪个镜像.例如:FROM centos:6 MAINTAINER 镜像维护者姓名或邮箱地址.例如:MAINTAINER Mr. ...
- jenkins+supervisor实现django项目的自动部署(ubuntu)
没有安装supervisor的话首先安装supervisor, apt install upservisor 安装supervisor大概率会出现问题,不推荐,最好是用pip 安装, 注意python ...
- Jenkins 集成Maven打包SpringBoot项目并自动部署到Tomcat服务器
提前条件: 1.在Jenkins服务器上安装Git.JDK和Maven 2.准备另一台服务器并安装Tomcat 3.Gitlab服务器 4.Gitlab仓库中上传SpringBoot项目代码 第一步, ...
- jekins 实现Django项目的自动部署(ubuntu16.04,python2.7,django1.11)
1.依赖的插件 如果插件下载失败 更换源 http://mirror.xmission.com/jenkins/updates/current/update-center.json 因为我们只需要构建 ...
- Jenkins spring boot 自动部署方案
原文地址:http://www.cnblogs.com/skyblog/p/5632869.html 现在主流的自动部署方案大都是基于Docker的了,但传统的自动部署方案比较适合中小型公司,下面的方 ...
- Jenkins下Vue自动部署(二)
1Jenkins配置 获取首次密码 sudo docker exec jenkins cat /var/jenkins_home/secrets/initialAdminPassword 2 2.1J ...
- 使用Ansible进行项目的自动部署(Tomcat、Weblogic)
原文:https://github.com/x113773/testall/issues/4 问题:Weblogic/Tomcat 通过JAVA直接远程调用或者调用本地Shell还是通过Ansible ...
- Jenkins + maven + svn 自动部署项目
1.安装Jenkins sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins. ...
- Jenkins+svn+maven自动部署到tomcat
jenkins所在主机配置好,jdk,maven,Tomcat 1.配置maven,jdk环境 1) 进入配置界面--->[系统管理]--->[Global Tool Configurat ...
随机推荐
- ACwing 你能回答这些问题吗(线段树求最大连续字段和)
给定长度为N的数列A,以及M条指令,每条指令可能是以下两种之一: 1.“1 x y”,查询区间 [x,y] 中的最大连续子段和,即 maxx≤l≤r≤ymaxx≤l≤r≤y{∑ri=lA[i]∑i=l ...
- robotframework自动化测试框架搭建及问题汇总
1.安装python RF框架是基于python 的,所以一定要有python环境,python与rf存在兼容性问题,我安装的是python3.7.5,robotframework3.1.2. 选择添 ...
- 使用java8的方法引用替换硬编码
背景 想必大家在项目中都有遇到把一个列表的多个字段累加求和的情况,也就是一个列表的总计.有的童鞋问,这个不是给前端做的吗?后端不是只需要把列表返回就行了嘛...没错,我也是这样想的,但是在一场和前端的 ...
- C#知识点:I/O
一.什么是I/0流? 英文翻译:Input/Output,在程序里简单的理解为读写数据操作数据的意思.流操作是为了解决体积大数据占用太多的内存,就是分段进行操作.就跟我们吃饭一样,一口一口的吃,还没见 ...
- leetcode刷题-47全排列2
题目 给定一个可包含重复数字的序列,返回所有不重复的全排列. 思路 其思路与46题完全一致,但是需要与组合总和2题一般,在同一层取出重复元素.因此可以在每一层设置一个set()类型,将访问过的元素放入 ...
- Java判断一个字符串是否是回文
package com.spring.test; /** * 判断字符串是否为回文 * * @author liuwenlong * @create 2020-08-31 11:33:04 */ @S ...
- 一起来读官方文档-----SpringIOC(04)
1.4.2.依赖性和详细配置 如上一节所述,您可以将bean属性和构造函数参数定义为对其他托管bean(协作者)的引用或内联定义的值.Spring的基于XML的配置元数据为此目的在其和元素中支持子元素 ...
- 如何使用dockerfile将jar包生成镜像
1.编写dockersfile FROM java:8 ADD SPRINGCLOUD.jar app.jar RUN bash -c ‘touch /app.jar’ ENTRYPOINT [&qu ...
- PhpStorm license server(版权许可服务器)在线激活服务器集群列表
原文链接:https://bingyishow.top/easy/55.html 服务器列表 序号 服务器(域名) 状态 1 http://www.yuanzhaoyi.cn 在线 2 http:// ...
- 关于微信小程序官网的使用
我们在看微信支付相关的东西的时候,会发现有些想找的地址不好找,,没看到入口,接下来我就是整理了一下 链接: https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa ...