美文网首页
Jenkins pipeline自动化运行发布部署

Jenkins pipeline自动化运行发布部署

作者: 暗夜精灵_NightElf | 来源:发表于2019-07-26 18:08 被阅读0次

    JenkinsPipeline是一套插件,支持将连续输送Pipeline实施和整合到Jenkins。Pipeline提供了一组可扩展的工具,用于通过PipelineDSL为代码创建简单到复杂的传送Pipeline。 对于单个项目来说,使用这样的Pipeline来构建能够满足绝大部分需求,但是这样做也有很多缺陷,包括:

    多个项目的Pipeline打包脚本不能公用,导致一个项目写一份脚本,维护比较麻烦。

    Jenkins提供了一个更优雅的管理Pipeline脚本的方式,在配置项目Pipeline的时候,选择Pipeline script from SCM。

    这样,Jenkins在启动job的时候,首先会去仓库里面拉取脚本,然后再运行这个脚本。在脚本里面,我们规定的构建方式和流程,就会按部就班地执行。

    接下来我们来实践下。

    一、Jenkins安装插件

      系统管理--->管理插件--->可选插件--->搜索pipeline--->点击直接安装

      系统管理--->管理插件--->可选插件--->搜索extended choice parameter---->点击直接安装

    二、Jenkins安装插件

    新建一个Pipline的Item后,配置选项卡,Pipeline里配置,在下面script path写入你工程下的Jeckinsfile的名称。

    Jenkinsfile文件大概如下:

    检出代码-》编绎-》打包并推送仓库-》发布部署

    stage '审核'

    node {

    stage('检出代码'){

    git branch: 'master',url:'http://10.20.16.3/ruancanghui/springbootdemo.git'

    }

    stage('Maven编绎'){

    dir('./'){

    sh 'mvn clean install -DskipTests=ture'

    }

    }

    stage('推送仓库'){

    dir('./'){

    sh  '/root/docker_dir/step1.sh'

    }

    }

    stage('发布部署'){

    dir('./'){

    sh  '/root/docker_dir/step2.sh'

    }

    }

    }

    两个脚本:

    step1.sh:将打包的应用推送到私有仓库里

    #!/bin/sh

    jarName=spring-boot-demo-0.0.1-SNAPSHOT.jar

    jarFolder=ph

    projectName=ph

    docker_path=${WORKSPACE}

    echo jar path is "${WORKSPACE}\/target\/${jarName}"

    cp ${WORKSPACE}/target/${jarName} ${docker_path}

    sh /root/docker_dir/deploy_docker.sh ${projectName} ${docker_path} ${jarName}

    setp2.sh:远程执行swarm的命令,运行程序。

    set -e

    echo ok

    #ssh 10.20.17.217 'docker service rm wordpress_web'

    ssh 10.20.17.217 'docker stack deploy wordpress --compose-file=/root/docker-compose.yml' 

    docker-compose.yml:-》拉取远程最新的镜像,映射到8888的端口

    version: "3"

    services:

      web:

        # replace username/repo:tag with your name and image details

        image: 10.20.17.180:5000/ph:latest

        deploy:

          replicas: 2

          resources:

            limits:

              cpus: "0.1"

              memory: 50M

          restart_policy:

            condition: on-failure

        ports:

          - "8888:8888"

        networks:

          - webnet

    networks:

      webnet:

    Dockerfile里的配置:

    FROM registry-scu.cloudtogo.cn/ubuntu:jdk

    COPY target/spring-boot-demo-0.0.1-SNAPSHOT.jar /spring-boot-demo-0.0.1-SNAPSHOT.jar

    ENTRYPOINT ["java" , "-jar" , "/spring-boot-demo-0.0.1-SNAPSHOT.jar"]

    现在可以执行点击:自己就会发布了。

    相关文章

      网友评论

          本文标题:Jenkins pipeline自动化运行发布部署

          本文链接:https://www.haomeiwen.com/subject/bgcqlctx.html