Jenkins pipeline自动化运行发布部署

0.432字数 689阅读 129

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"]


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

推荐阅读更多精彩内容