一、环境搭建基础

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. 对于BIO/NIO/AIO,你还只停留在烧开水的水平吗?

    1.发发牢骚 相信大家在网上看过不少讲解 BIO/NIO/AIO 的文章,文章中举起栗子来更是夯吃夯吃一大堆,我是越看越觉得 What are you 你讲啥嘞? 本文将针对 BIO/NIO/AIO ...

  2. 【HDU - 2181】哈密顿绕行世界问题(dfs+回溯)

    -->哈密顿绕行世界问题 Descriptions: 一个规则的实心十二面体,它的 20个顶点标出世界著名的20个城市,你从一个城市出发经过每个城市刚好一次后回到出发的城市.  Input 前2 ...

  3. 从零到一,利用kubeadm在ubuntu server 16.04 64位系统离线安装kubernetes v1.10.0

    说明 初步接触kubernets,记录学习过程 本教程目的利用kubeadm在ubuntu server 16.04 64位系统离线安装kubernets v1.10.0 环境信息 节点IP地址 角色 ...

  4. 关于sql 中delete, truncate,drop的理解与总结

    关于文章,本文是在网上查找资料整理而来,方便以后记忆 delete 命令删除的数据可以恢复, truncate 命令删除的数据是不可以恢复的,全删的那种 drop 命令删除的数据不可恢复,连表结构都删 ...

  5. 2018年东北地区赛S - Problem I. Spell Boost HDU - 6508

    题目地址:https://vjudge.net/problem/HDU-6508 思路:给一些卡,分为四种卡.1.白卡(没效果)2.魔法,作用卡(会对作用卡的费用减少,也会被魔法卡作用)3.作用卡(会 ...

  6. 9.5 考试 第三题 奇袭题解(codeforce 526f)

    问题 C: 奇袭 时间限制: 1 Sec  内存限制: 256 MB 题目描述 由于各种原因,桐人现在被困在Under World(以下简称UW)中,而UW马上 要迎来最终的压力测试——魔界入侵. 唯 ...

  7. C#开发中常用的加密算法总结

    相信很多人在开发过程中经常会遇到需要对一些重要的信息进行加密处理,今天给大家分享我个人总结的一些加密算法: 常见的加密方式分为可逆和不可逆两种方式 可逆:RSA,AES,DES等 不可逆:常见的MD5 ...

  8. python爬虫笔记之re.match匹配,与search、findall区别

    为什么re.match匹配不到?re.match匹配规则怎样?(捕一下seo) re.match(pattern, string[, flags]) pattern为匹配规则,即输入正则表达式. st ...

  9. aspnetcore 刷新Session Id总是改变

    public class Startup { public Startup(IConfiguration configuration) { Configuration = configuration; ...

  10. Shrio多Realm认证及认证策略

    在大型的系统中,安全数据可能会存放在多个数据库中,而且每个数据的加密方式也是不一样的,那么单一的Realm就无法完成. 这时,就需要用到多Realm认证了,多Realm又涉及到认证策略,及在多个Rea ...