Jenkins学习笔记(了解版本)——一看就懂

文章目录

1、基础
  1. DevOps是一种思想:是Development和Operations的组合,是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合。它的出现是由于软件行业日益清晰地认识到:为了按时交付软件产品和服务,开发和运营工作必须紧密合作。

  2. CI/CD

    持续集成,Continuous integration ,CI。在各个项目集成之后测试阶段尽快的发现集成的错误。

    持续交付,Continuous Delivery,CD。将新版本交付给质量团队或者用户,以通过评审。

    持续部署,Continuous deployment,CD。快速上线,即自动化部署到生产环境,保证程序正常运行。

  3. Jenkins,它是一个开源的实现持续集成工具。原名Hudson,2011年改为现在的名字。

  4. 特点:开源,简单(按照,配置等),支持分布式构建,支持很多第三方插件。及早发现问题和上线非常简单。

  5. 持续集成流程:包括,钩子程序,从git拉去代码,编译打包,构建和上传镜像,部署项目来创建容器。
    在这里插入图片描述

2、实战
  1. jenkins构建项目的类型JOB有很多,常用有三种:分别是自由风格软件项目;maven项目和流水线项目。
    在这里插入图片描述

  2. 自由风格基本流程有:

    general、源码管理、构建触发器、构建环境、构建、构建后操作;

    general:主要是一个常规的操作。描述等。
    源码管理:配置项目的git上路径
    构建触发器:就是什么动作就可以出发自动构建,比如GitHub hook的钩子程序。
    构建环境:构建过程中一些选择,比如输出时间
    构建:如何具体的构建,比如可以选择执行shell,写一些脚本进行构建,mvn clean package
    构建后操作:得到jar或者war等之后部署到tomcat等(需要一些插件)
    

    构建步骤中构建docker镜像为例:

    A=$BUILD_ID
    B=`expr $BUILD_ID - 1`
    source /etc/profile
    project="halo"
    cd $WORKSPACE && mvn clean package -Pprod
    docker stop $project && sleep 10
    docker rm $project && sleep 5
    docker rmi $project:$B && sleep 5
    cd $WORKSPACE/target/dist/halo
     
    cat > halo.ini << EOF
    [program:halo]
    command=/usr/local/jdk1.8.0_144/bin/java -jar  /opt/halo/halo-latest.jar
    numprocs=1
    autostart=true
    autorestart=true
    startsecs=60
    EOF
    cat > Dockerfile << EOF
    FROM       idocker.io/eryajf/jdk:1.8
    MAINTAINER eryajf <Linuxlql@163.com>
    ADD     .  /opt/halo
    ADD   halo.ini /etc/supervisor/conf.d
    EXPOSE 8090
    EOF
     
    docker build -t $project:$A . && sleep 5
    docker run -d --name $project -p 8090:8090 $project:$A
    

    简单说明,因为这个是直接在本机进行的试验部署,因此所有的命令也都全部写在这里来了,执行完成之后,应用也会部署在本机当中。

    首先对项目进行打包,接着先停掉服务,然后通过Dockerfile生成新的镜像,然后启动服务。

    如果是异地部署,那么只需将镜像推往私服,然后调用一个远程脚本,进行应用的部署即可。

    http://www.eryajf.net/2036.html

  3. maven,就是提前知道是maven项目了。有一些优化,大致流程与自由风格是一样的。

  4. 流水线pipeline:自己写相关操作的代码,比如来取代码,自己编写打包命令部署命令等,有专门的语法。不过这些都是声明式的。可以把这些命令写成文件放在项目中,命名为Jenkinsfile。重点有stages命令。

    pipeline {
        agent any
        environment {
            git_url     = "git@192.168.3.65:jenkins-learn/hello-world.git"
            remote_ip   = "192.168.3.66"
            remote_dir  = "/opt/hello"
        }
        options {
            buildDiscarder(logRotator(numToKeepStr: '10'))
            disableConcurrentBuilds()
            timeout(time: 10, unit: 'MINUTES')
            timestamps()
        }
        stages {
            stage('rsync') {
                steps {
                    echo 'rsync'
                    sh '''
                        rsync -avz --progress -e 'ssh -p 22' --exclude='Jenkinsfile' --exclude='.git' --delete ${WORKSPACE}/  root@$remote_ip:$remote_dir
                    '''
                }
            }
            stage('delete') {
                steps {
                    echo '清理工作目录'
                    cleanWs()
                }
            }
        }
        post {
            success {
                sh "echo 成功了"
            }
            failure {
                sh "echo 失败了"
            }
        }
    }
    
  5. 触发方式

    build whenever a snapshot dependency is built
       当job依赖的快照版本被build时,执行本job。
       
    build after other projects are built
       当本job依赖的job被build时,执行本job
       
       build periodically
       隔一段时间build一次,不管版本库代码是否发生变化。
       
    poll scm
       隔一段时间比较一次源代码如果发生变更,那么就build。否则,不进行build。
    
  6. 通知方式

    Jenkins的通知方式非常多,常用的如下:
    电子邮件通知
    即时消息,比如钉钉
    短信通知
    
    Jenkins的通知方式非常多,具体如下:电子邮件、通知声明、构建RSS订阅、构建分发器、
    即时消息、IRC通知、桌面通知器、通过Notifo通知、移动通知、短信通知、制造噪声、极端反馈设备
    
  7. Jenkins API

    jenkins(持续集成开源工具)提供了丰富的api接口,实现对 Jenkins中Job、View等等的增、删、改、查操作。还有一些比如触发构建动作,github上。

    Jenkins 中有 viewjob 的概念, view 相当于组, job 则是具体的任务。
    view 下面可以创建 job ,但 job 可以不在任何 view 下。

    例子:
    创建view的API: `<jenkins url>/createView`。
    curl: curl -X POST <jenkins url>/createView?name=<view name> --data-binary "@viewCofnig.xml" -H "Content-Type: text/xml" --auth <u>:<p>
    





【正在去BAT的路上修行!!!】

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值