1.什么是持续集成?
  持续集成来简化我们的工作 还能让产品可以快速迭代,同时还能保持代码高质量产出。
2.Jenkins的安装配置:
        [root@jenkins ~]# yum install java -y
        [root@jenkins ~]# yum localinstall jenkins-2.176.1-1.1.noarch.rpm -y
        [root@jenkins ~]# systemctl start jenkins
        [root@jenkins ~]# netstat -lntp
        配置Host解析  
            10.0.0.120 jenkins.oldxu.com
        
       解锁Jenkins
            [root@jenkins ~]# cat /var/lib/jenkins/secrets/initialAdminPassword
    
      访问Jenkins
            http://jenkins.oldxu.com:8080/
    
      自定义Jenkins插件!!!!!!
            1.如果网络较好,同时你不清楚要安装哪些插件,通常选择  推荐的插件
            2.网络较差,而且对jenkins比较熟悉,建议自定义选择插件
            3.啥都不选, 简单的说就是一个插件都不安装.   直接关闭这一步 跳过它
        
      跳过插件后,直接就进入了jenkins系统
            1.修改admin的密码
                点击右上角admin--->configure-->Password

jenkins的插件管理:
     1)在安装插件过程中如何进行加速?                阿里云
        https://mirror.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
    
     2)通过Web页面上传.hpi文件进行插件安装。
        https://mirror.tuna.tsinghua.edu.cn/jenkins/plugins/
        https://plugins.jenkins.io
    
     3)导入之前服务器已安装的插件 (离线安装)。        -----> 
        [root@jenkins ~]# tar xf jenkins_2.176_plugins.tar.gz
        [root@jenkins ~]# cp -rp  plugins/* /var/lib/jenkins/plugins/
        [root@jenkins ~]#  chown -R jenkins.jenkins /var/lib/jenkins/plugins/
        [root@jenkins ~]# systemctl restart jenkins

Jenkins与Gitlab集成思路:

1.开发提交代码至Gitlab
        需要准备一个仓库-->仓库里面还需要有真实的代码
2.jenkins安装gitlab所需插件
3.jenkins创建freestyle项目,然后配置gitlab仓库项目对应地址。
3.1) 基于SSH方式
            1.需要将Jenkins Root用户的公钥 推送到Gitlab服务器,测试免密
            2.添加一个jenkins的凭证
                添加一个ssh private key
                    描述:            一定要写清楚
                    Username:         root
                    Private Key:     复制/root/.ssh/id_rsa

2.Jenkins实现项目自动化发布
    1.搭建好集群环境   ( 手动搭建  | ansible )
    10.0.0.5   nginx
    10.0.0.7   nginx
    10.0.0.9   nginx    
    2.手动去下载gitlab的代码,推送至web集群
    3.测试访问

3.使用jenkins来实现自动化的上线
    1.jenkins需要拉取gitlab上的仓库代码
    2.jenkins需要将拉取下来的代码推送至web集群    ( 手动 | shell )
    3.编写Shell脚本
        1.拉取代码 (jenkins)  /var/lib/jenkins/workspace/freestyle-monitor
        2.打包到jenkins本地的/opt/
        3.推送公钥至web集群组
        4.推送代码压缩包到web集群组
        5.登录到web集群组
            1.创建站点目录
            2.解压代码至站点目录
            3.删除以前的web站点目录
            4.重新创建软连接
            5.重载服务

5.Jenkins实现项目tag方式发布
    1.需要每次的变更都tag的方式
    2.需要脚本支持进行传递参数  jenkins的参数化构建

6.Jenkins实现项目tag发布与回退
7.Jenkins解决项目能重复发布问题 {扩展}

---------------------------------------------------------------------
jenkins安装
jenkins插件
    1.加速插件  使用清华大学源
    2.如何手动上传一个插件.hpi
    3.导入插件
        ..........
    
jenkins目录结构
jenkins基本的使用
    freestyle  --> 自由软件风格
        1.jenkins调用Shell命令
        2.Jenkins集成Gitlab
            1.准备一份代码
            2.将代码提交到gitlab的仓库
            3.jenkins抓取gitlab仓库代码至本地
                前置条件
                    1.需要有对应的插件
                    2.填写对应的仓库地址
                    3.配置免秘认证
                        1.先推送系统的root的公钥给gitlab  (系统<==>gitlab)
                        2.jenkins添加一个凭据
                            root的私钥    (jenkins<==>gitlab)
        
        3.手动搭建Nginx集群
            三台
                负载均衡    10.0.0.5
                web集群        10.0.0.7 10.0.0.9

3.1 安装集群环境
            3.2 克隆代码,推送给web集群组
            3.3 测试访问
            3.4 更新代码
            3.5 运维下载代码
            3.6运维推送代码至web集群
            
        3.完整的gitlab+jenkins+shell实现自动化部署代码
            1.下载代码--->jenkins
            2.推送代码--->Shell
                1.打包本地的最新代码
                2.推送至远程web集群组
                3.准备对应的站点目录-->将代码解压至站点目录
                4.删除软连接  重新创建软连接
                
                
        4.完整的  gitlab+jenkins+shell+tag   实现自动化部署代码        
            脚本必须能接收参数的传递   ===> 传递 git的版本号
            
            1.git parameter 插件
            2.添加了一个 git parameter 的参数化构建--->设定一个变量 git_version
            3.修改jenkins拉取gitlab代码不再只拉取最新的master  而是拉取 git_version传入的版本
            4.Shell  --->所有的操作都需要带上git_version的信息

5.回退:
            1.添加一个选项参数构建  deploy_env   ( deploy | rollback )
            2.修改Shell
                1.添加一个判断条件,判断deploy_env这个变量
                    如果传递的字符串是deploy就调用deploy的函数
                    如果传递的是rollback则调用back函数执行回退
                2.back函数怎么写?
                    1.获取要回退的版本的路径
                    1.删除软连接
                    2.重建软连接

git jenkins 基本部署 jenkins持续集成的更多相关文章

  1. Git Hooks、GitLab CI持续集成以及使用Jenkins实现自动化任务

    Git Hooks.GitLab CI持续集成以及使用Jenkins实现自动化任务 前言 在一个共享项目(或者说多人协同开发的项目)的开发过程中,为有效确保团队成员编码风格的统一,确保部署方式的统一, ...

  2. Docker+Jenkins+Maven+SVN搭建持续集成环境

    Docker+Jenkins+Maven+SVN搭建持续集成环境 环境拓扑图(实验项目使用PHP环境) 发布流程图 环境说明 系统:Centos 7.4 x64 Docker版本:18.09.0 Ma ...

  3. jenkins+ant+jmeter搭建持续集成的接口测试平台

    一.jemter接口脚本的编写步骤如下: 1. 编写接口请求 通过录制或者查看接口文档,编写接口请求,进行调试,确保接口调试通过,对于http的请求来说,就是正确的填写域名,查询字符串,查询参数等信息 ...

  4. Net 项目构建基于Jenkins + Github + Mono 的持续集成环境

    Net 项目构建基于Jenkins + Github + Mono 的持续集成环境 阅读目录 1 安装 2 配置 3 测试 在Redhat enterprise 6.5 的服务器上,为在gutub 上 ...

  5. 使用 Jenkins 搭建 iOS/Android 持续集成打包平台【转】

    背景描述 根据项目需求,现要在团队内部搭建一个统一的打包平台,实现对iOS和Android项目的打包.而且为了方便团队内部的测试包分发,希望在打包完成后能生成一个二维码,体验用户(产品.运营.测试等人 ...

  6. Jenkins+Ant+Jmeter搭建持续集成的接口测试平台(转)

    一.什么是接口测试? 接口测试是测试系统组件间接口的一种测试.接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点.测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻 ...

  7. 【转】Jenkins+Ant+Jmeter搭建持续集成的接口测试平台

    一.什么是接口测试? 接口测试是测试系统组件间接口的一种测试.接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点.测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻 ...

  8. Jenkins 搭建 .NET Core 持续集成环境

    关于c#的.Net FrameWork 的集成环境以及MsBuild的配置可以看     jenkins搭建.NET FrameWork持续集成环境 这篇文章     关于.NET Core 这个项目 ...

  9. Jenkins构建Android项目持续集成之findbugs的使用

    Findbugs简介 关于findbugs的介绍,可以自行百度下,这里贴下百度百科的介绍.findbugs是一个静态分析工具,它检查类或者 JAR 文件,将字节码与一组缺陷模式进行对比以发现可能的问题 ...

  10. 漫谈:从APP崩溃率标准,到Monkey介绍拓展Maxim,及Jenkins自动化配置,持续集成获取崩溃monkey日志

    漫谈:从APP崩溃率标准,到Monkey介绍拓展Maxim,及Jenkins自动化配置,持续集成获取崩溃日志 1.APP崩溃率标准 开发或测试app的同学,对于app崩溃肯定非常熟悉,频繁的线上崩溃属 ...

随机推荐

  1. net core WebApi——定时任务Quartz

    目录 前言 Quartz 测试 问题及解决方法 小结 前言 本来打算昨天都开始写这篇,就因为要把小团队的博客整理汇总,一看二哈的博客那么多,一个个复制粘贴肯定麻烦(其实是我自己觉得复制麻烦),所以穿插 ...

  2. Python学习-迭代器、生成器

    一.迭代器 1. 可迭代对象 我们知道字符串.列表.元组.字典.集合都可以使用for语句进行循环遍历,然后输出每一个元素,这些都是可迭代对象. 检查对象是否是可迭代对象可以用两种方式去判断: (1)使 ...

  3. [python]汉诺塔问题

    相传在古印度圣庙中,有一种被称为汉诺塔(Hanoi)的游戏.该游戏是在一块铜板装置上,有三根杆(编号A.B.C),在A杆自下而上.由大到小按顺序放置64个金盘(如下图).游戏的目标:把A杆上的金盘全部 ...

  4. visual c++.net 技术内幕 第6版 附带的程序如何在vs2013中编译成功

    看vc++技术内幕时 如果你使用的是比此书的附带项目更新版的vs时千万不要使用这种方法,这些对编译都有影响. 请使用当前新版的vs并输入书中改动的代码就Ok,因为vs会生成合理的mfc代码,养成好的习 ...

  5. mybatis collection和association使用区别

    1. association-关联,用于一对一(如人与身份证)和多对一(如班级和学生) 2. collection-集合,用于一对多(如学生和班级)的关系

  6. thymeleaf常用配置说明

    #spring.thymeleaf.cache = true #启用模板缓存. #spring.thymeleaf.check-template = true #在呈现模板之前检查模板是否存在. #s ...

  7. 深入MYSQL随笔

    (1)查询生命周期:从客户端到服务器,然后在服务器上进行解析,生成执行计划,执行,并返回给客户端.执行是整个生命周期中,最重要的阶段. (2)慢查询基础:优化数据访问,减少访问的数据行. (3)查询不 ...

  8. Python基础(十五)

    今日主要内容 模块初识 模块导入 模块路径 自定义模块 内置模块(标准库) time datetime random sys os funtools 一.模块初识 (一)什么是模块 其实我们创建的每一 ...

  9. .Net Core 商城微服务项目系列(十一):MQ消费端独立为Window服务+消息处理服务

    之前使用MQ的时候是通过封装成dll发布Nuget包来使用,消息的发布和消费都耦合在使用的站点和服务里,这样会造成两个问题: 1.增加服务和站点的压力,因为每次消息的消费就意味着接口的调用,这部分的压 ...

  10. 函数的return和参数

    1.函数 将一些代码进行封装 def 函数名 括号 冒号:#创建 函数体(代码块) 函数名 + 小括号 #调用 1.1函数的返回值 return return 不写返回的是None,return写了不 ...