一、环境搭建基础

1、持续集成、持续交付、持续部署概念

  ①、集成:

  是指软件多人研发的部分软件代码整合交付,以便尽早发现个人开发部分的问题;持续集成:强调开发人员提交了新代码之后,立刻进行构建(单元)测试,根据测试结果,我们可以确定新代码和原有代码能否正确地集成在一起。

  ②、交付:

  是指研发尽快向客户交付,以便尽早发现生产环境中存在的问题;如果说等到所有东西都完成了才向下个环节交付,导致所有的问题只能在最后才爆发出来,解决成本巨大甚至无法解决;持续交付:在持续集成的基础上,将集成后的代码部署到更贴近真实运行环境的【生产环境】(production-like environments)中,比如,我们完成单元测试后,可以把代码部署到连接数据库的(Staging)环境中更多的测试,如果,代码没有问题,可以继续手动部署到生产环境中。

  ③、部署:

  是代码尽快向可运行的开发/测试交付,以便尽早测试;持续部署:持续部署则是在持续交付的基础上,把部署到生成环境的过程自动化;

  ④、持续:

而所谓的持续,就是说每玩成一个完整的部分,就向下一个环节交付,发现问题可以马上调整,使得问题不会放大到其他部分和后面的环节;

  ⑥、核心思想:

  核心在于,既然事实上难以做到事先完全了解完整的、正确的需求,那么就干脆一小块一小块的做,并且加快交付的速度和频率,使得交付物尽早在下个环节得到验证,早发现问题早返工。

  ⑦、jenkins概述

2、安装部署

安装

  ①、准备环境:

Jenkins 清华大学下载点: https://mirrors.tuna.tsinghua.edu.cn/jenkins/redhat/

其他软件包,在官方下载。


[root@jenkins- tmp]# ls
apache-maven-3.5.-bin.tar.gz git-2.9..tar.gz jdk-8u171-linux-x64.tar.gz jenkins-2.130-1.1.noarch.rpm

  ②、解压部署基础环境

[root@jenkins- tmp]# tar xf jdk-8u171-linux-x64.tar.gz -C /usr/local/
[root@jenkins- tmp]# ln -s /usr/local/jdk1..0_171 /usr/local/java
​
[root@jenkins- tmp]# tar xf apache-maven-3.5.-bin.tar.gz -C /usr/local/
[root@jenkins- tmp]# ln -s /usr/local/apache-maven-3.5. /usr/local/maven
​

  ③、java和maven环境变量配置

[root@jenkins- tmp]# vim /etc/profile.d/jenkins.sh
JAVA_HOME=/usr/local/java
MAVEN_HOME=/usr/local/maven
PATH=$PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin
​
export JAVA_HOME MAVEN_HOME

  ④、重新加载系统环境变量

[root@jenkins- tmp]# source /etc/profile
​
[root@jenkins- tmp]# ln -s /usr/local/java/bin/java /usr/bin/java
#我实验本机没java环境基础,所以我需要创建一个软链接到/usr/bin/ 避免会在后面没有java命令报错
​

  ⑥、查看系统环境变量是否生效,如果有一下输出,就表示环境变量都没有问题;

[root@jenkins- local]# java -version
java version "1.8.0_171"
Java(TM) SE Runtime Environment (build 1.8.0_171-b11)
Java HotSpot(TM) -Bit Server VM (build 25.171-b11, mixed mode)
[root@jenkins- local]# mvn -v
Apache Maven 3.5. (3383c37e1f9e9b3bc3df5050c29c8aff9f295297; --25T03::+:)
Maven home: /usr/local/maven
Java version: 1.8.0_171, vendor: Oracle Corporation
Java home: /usr/local/jdk1..0_171/jre
Default locale: zh_CN, platform encoding: UTF-
OS name: "linux", version: "3.10.0-862.2.3.el7.x86_64", arch: "amd64", family: "unix"
​

  ⑦、编译安装git

[root@jenkins- git-2.9.]# yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker -y
#安装编译依赖包
[root@jenkins- git]# tar xf git-2.9..tar.gz
[root@jenkins- git]# ls
git-2.9. git-2.9..tar.gz
[root@jenkins- git]# cd git-2.9./
[root@jenkins- git-2.9.]# make prefix=/usr/local/git all prefix=/usr/local/git install
#执行编译

  ⑧、设置git环境变量


[root@jenkins- git-2.9.]# vim /etc/profile.d/git.sh
[root@jenkins- git-2.9.]# source /etc/profile
[root@jenkins- git-2.9.]# git --version
git version 2.9.
[root@jenkins- git-2.9.]# which git
/usr/local/git/bin/git

  ⑨、安装Jenkins


[root@jenkins- tmp]# rpm -i jenkins-2.130-1.1.noarch.rpm
警告:jenkins-2.130-1.1.noarch.rpm: 头V4 DSA/SHA1 Signature, 密钥 ID d50582e6: NOKEY
#这个警告可以忽略
[root@jenkins- tmp]# rpm -ql jenkins
/etc/init.d/jenkins
/etc/logrotate.d/jenkins
/etc/sysconfig/jenkins #jenkins 配置
/usr/lib/jenkins
/usr/lib/jenkins/jenkins.war #war包
/usr/sbin/rcjenkins
/var/cache/jenkins
/var/lib/jenkins #默认的jenkinsHOME目录
/var/log/jenkins #日志
​

  ⑩、jenkins 内存优化,端口更改

[root@jenkins- tmp]# vim /etc/sysconfig/jenkins
JENKINS_JAVA_OPTIONS="-Djava.awt.headless=true -Xms1024m -Xmx1024m" 内存优化,根据机器的配置给。
JENKINS_PORT="" 端口
jenkins 启动 [root@jenkins- tmp]# /etc/init.d/jenkins start
Starting jenkins (via systemctl): [ 确定 ]
[root@jenkins- tmp]# ps axu | grep java
jenkins 18.4 ? Ssl : : /usr/bin/java -Dcom.sun.akuma.Daemon=daemonized -Djava.awt.headless=true -Xms1024m -Xmx1024m -DJENKINS_HOME=/var/lib/jenkins -jar /usr/lib/jenkins/jenkins.war --logfile=/var/log/jenkins/jenkins.log --webroot=/var/cache/jenkins/war --daemon --httpPort= --debug= --handlerCountMax= --handlerCountMaxIdle=
root 0.0 0.0 pts/ S+ : : grep --color=auto java
​

3、Jenkins WEB页面配置

  ①、在浏览器输入:本机ip:jenkins端口(如:10.18.43.3:8888)

  ②、接下来就根据提示,完成页面初始配置操作;

  ③、等待所有的插件安装完成,(如果有失败的,可以重试安装插件)

  ④、创建一个管理员用户(等会用来登录使用)

  ⑤、网站地址初始配置

  ⑥、点击保存完成,进入jenkins Web页面,接下来就是安装必需的插件和配置,

4、配置web插件及设置

  ①、系统管理>>>:插件管理

    GIT plugin (可能已经默认安装了)
​
Publish Over SSH (远程Shell)
​
Maven Integration plugin

  ②、系统管理>>>:全局工具配置>>>: Jdk >>>:配置

  ③、系统管理>>>:全局工具配置>>>: Git >>>:配置

  ④、系统管理>>>:全局工具配置>>>: maven >>>:配置

  ⑤、系统管理>>>:系统设置>>>:jenkins位置及管理邮箱设置

  ⑥、系统管理>>>:系统设置>>>:jenkins邮箱通知设置

  ⑦、系统管理>>>:系统设置>>>:jenkins Publish over SSH 设置

    配置publish over ssh: Passphrase:密码(key的密码,如果你设置了) Path to key:key文件(私钥)的路径(下面的key和这个2选1) Key:将私钥复制到这个框中 Disable exec:

二、任务项目构建

1.项目创建

  首先,点击【新建】进入选择页面,如下图(一般选择“构建一个自由风格的软件项目”),这里是maven项目;

2.项目描述

  填好项目名称后,点击ok,跳转至如下页面,可以在这个页面进行项目的配置(包括拉源码、修改持续构建时间、打包部署前修改配置文件等)

3.其他参数

  General中的“丢弃旧的构建”可以设定持续构建的

4.参数构建

  在“参数化构建过程”中可以设置要构建的版本有哪些,如下

5.源码管理

  在源码管理模块可以设置源码地址(一般用的Git,这里我们用官网一项目,)

6.自动化设置

  如果是自动化构建,可以在构建触发器中的“Poll SCM”中设置自动化构建时间(即每隔多长时间进行一次构建)

7.Build

  在Build中的Goals and options添加: clean package -Dmaven.test.skip=true

8.构建后的操作

  最后是构建后的操作,这里一般要设置我们要输出包的路径;

9.远程主机所需

  在远程主机创建是需要的脚本和目录;

[root@git7- /]# mkdir -p /jenkins/war
[root@git7- /]# mkdir -p /jenkins/sh
[root@git7- /]# mkdir -p /jenkins/logs/
[root@git7- /]# mkdir /tomcat
[root@git7- /]# vim /jenkins/sh/deploy.sh
[root@git7- /]# chmod a+x /jenkins/sh/deploy.sh

10.脚本内容!

  (可以将构建好的项目,推送到tomcat目录下。)

#!/bin/sh
cp /jenkins/war/*.war /tomcat
echo "恭喜你!这个项目已经构建完成!" > /jenkins/logs/`date +%F`--.log

11.开始构建!

12.构建成功!

自定义脚本中,有日志输出,这个项目已经构建成功了!!!

Jenkins 持续集成持续发布使用搭建基础的更多相关文章

  1. 使用Jenkins与Docker持续集成与发布NetCore项目(实操篇)

    使用Jenkins与Docker持续集成与发布NetCore项目(教程一) 原文地址:https://www.cnblogs.com/Jackyye/p/12588182.html 基本环境 该教程的 ...

  2. 持续集成之二:搭建SVN服务器(subversion)

    安装环境 Red Hat Enterprise Linux Server release 7.3 (Maipo) jdk1.7.0_80 subversion-1.10.3.tar.gz apr-1. ...

  3. 构建gitlab+Jenkins+harbor+kubernetes的DevOps持续集成持续部署环境

    构建gitlab+Jenkins+harbor+kubernetes的DevOps持续集成持续部署环境 整个环境的结构图. 一.准备工作 gitlab和harbor我是安装在kubernetes集群外 ...

  4. CI/CD持续集成/持续部署 敏捷开发

    敏捷软件开发(英语:Agile software development),又称敏捷开发,是一种从1990年代开始逐渐引起广泛关注的一些新型软件开发方法,是一种应对快速变化的需求的一种软件开发能力.它 ...

  5. SAP开源的持续集成-持续交付的解决方案

    SAP开源的持续集成/持续交付的解决方案: (1) 一个叫做piper的github项目,包含一个针对Jenkins的共享库和一个方便大家快速搭建CI/CD环境的Docker镜像: (2) 一套SAP ...

  6. CI / CD /CD 持续集成 持续交付 持续部署

    CI / CD /CD 持续集成 持续交付 持续部署 CI CD 是啥?干了啥? CI continuous integration 持续集成 CD continuous delivery 持续交付 ...

  7. 使用 CircleCI 2.0 进行持续集成/持续部署

    使用 CircleCI 2.0 进行持续集成/持续部署 - 简书https://www.jianshu.com/p/36af6af74dfc Signup - CircleCIhttps://circ ...

  8. 测试需要了解的技术之基础篇三__持续集成持续交付DevOps

    持续集成.持续交付.DevOps 1.容器技术Docker:容器技术介绍.Docker安装与加速配置.Docker基础命令.Docker搭建selenium.Docker搭建持续集成平台Jenkins ...

  9. [持续交付实践] 开篇:持续集成&持续交付综述

    前言 随着微服务架构与容器虚拟化技术的发展,持续集成与持续交付的概念又重新回到了大家的视野,越来越多的公司开始使用持续集成的系统来解决频繁发布带来的质量问题:使用持续交付的工具来实现代码在不同环境上的 ...

随机推荐

  1. 2018.8.19 2018暑假集训之maxnum

    昨天去做志愿服务去了没写成Q_Q 今天再来一道 先放题面描述 设有n个正整数(n<=20),将它们联成一排,组成一个最大的多位数 设有n个正整数(n<=20),将它们联成一排,组成一个最大 ...

  2. 浅谈labviEW定时器

    Labview提供了五种定时器:普通定时器3种: Tick Count (ms). Wait(ms).Wait Until Next ms  Multipule(等待下一个毫秒的整数倍) API函数定 ...

  3. kuangbin专题 专题二 搜索进阶 Nightmare Ⅱ HDU - 3085

    题目链接:https://vjudge.net/problem/HDU-3085 题意:有两个鬼和两个人和墙,鬼先走,人再走,鬼每走过的地方都会复制一个新鬼, 但新鬼只能等待旧鬼走完一次行程之后,下一 ...

  4. 深入学习Spring框架(三)- AOP面向切面

    1.什么是AOP? AOP为 Aspect Oriented Programming 的缩写,即面向切面编程, 通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术..AOP是OOP的延续, ...

  5. C# 使用Quartz简单实例以及备忘

    一.导入NuGet  二.创建一个类并实现接口Ijob,并实现该接口中的方法. using Buday.Gold.Cusumer.Lib; using Quartz; using System; us ...

  6. 十代雅阁广东车友群,雅阁广州车友群,深圳雅阁车友群,雅阁微信群、雅阁车友群、十代雅阁交流微信QQ群

    最近一直在关注第十代雅阁,不论是普通汽油版本还是油电混动版本都很不错,在网上看到很多评测文章和视频 后续都会整理发布到微信群中. 由于论坛发帖,博客发文都不是很方便,为了及时沟通,先创建了微信群,方便 ...

  7. 【DFS的分支限界】(例题-算式等式)

    不知道DFS的请滚去 这里瞅一眼再说. -分支限界- 基本概念: 类似于回溯法,也是一种在问题的解空间树T上搜索问题解的算法.但在一般情况下,分支限界法与回溯法的求解目标不同.回溯法的求解目标是找出T ...

  8. Scrum 使用絮叨

    关于Scrum 的一些絮叨 Scrum 的推行的基础在于全员参与,全员协作,包含Dev, QA(quality assurance) ,BA(Business analyst)以及Supporter ...

  9. Excel催化剂开源第48波-Excel与PowerBIDeskTop互通互联之第二篇

    前一篇的分享中,主要谈到Excel透视表连接PowerBIDeskTop的技术,在访问SSAS模型时,不止可以使用透视表的方式访问,更可以发数据模型发起DAX或MDX查询,返回一个结果表数据,较透视表 ...

  10. ehcache的使用 Shiro与Ehcache的结合(附:EhcacheUtils)

    ehcache 缓存的使用 合理的使用缓存会极大的提高程序的运行效率.切记:缓存请勿滥用. 配置ehcache与Shiro shiro初识请查看该文章 https://blog.csdn.net/py ...