pipeline {
agent any
options {
timestamps()
}
parameters {
string(name: 'GIT_BRANCH', defaultValue: 'master', description: 'default build branch')
booleanParam(name: 'RUN_SONAR_SCANNER', defaultValue: true, description: 'run the sonar scanner check.')
}
environment {
MAVEN_IMAGE = 'maven:3-alpine'
SONAR_SCANNER_IMAGE = 'cnlinux/sonar-scanner:3.0.3'
SONAR_SERVER = 'http://10.0.7.1:9000'
DOCKER_REGISTRY = "10.0.7.1:5000"
APP_NAME = 'jenkins-jipeline-demo'
DEPLOY_HOST = '10.0.7.1:2376'
}
stages {
stage('Checkout') {
steps {
git branch: "${params.GIT_BRANCH}", url: 'https://github.com/opspy/Jenkins-Pipeline-demo.git'
}
}
stage('Test') {
parallel {
stage ('Unit Test') {
agent {
docker {
reuseNode true
image '${MAVEN_IMAGE}'
args '-v $HOME/.m2:/root/.m2'
}
}
steps {
sh 'mvn test'
junit '**/target/**/*.xml'
}
}
stage ('Sonar Scanner') {
when {
environment name: 'RUN_SONAR_SCANNER', value: 'true'
}
agent {
docker {
reuseNode true
image '${SONAR_SCANNER_IMAGE}'
}
}
steps {
sh 'sonar-scanner -Dsonar.host.url=${SONAR_SERVER}'
}
}
}
}
stage('Build War') {
agent {
docker {
reuseNode true
image '${MAVEN_IMAGE}'
args '-v $HOME/.m2:/root/.m2'
}
}
steps {
sh 'mvn -Dmaven.test.skip=true clean install'
}
}
stage('Docker image') {
steps {
sh """
mv -f target/*.war deployment/
docker build -t ${DOCKER_REGISTRY}/${APP_NAME}:${BUILD_NUMBER} deployment
docker push ${DOCKER_REGISTRY}/${APP_NAME}:${BUILD_NUMBER}
docker rmi ${DOCKER_REGISTRY}/${APP_NAME}:${BUILD_NUMBER}
rm -f deployment/*.war
"""
}
}
stage('Deploy') {
steps {
input message: 'Are you sure Deployment?', ok: 'Yes'
sh"""
docker -H ${DEPLOY_HOST} rm -f ${APP_NAME} | true
docker -H ${DEPLOY_HOST} run -d --name ${APP_NAME} -p 9090:8080 ${DOCKER_REGISTRY}/${APP_NAME}:${BUILD_NUMBER}
"""
}
}
}
post {
always {
emailext body: """<p>STARTED: Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]':</p>
<p>Check console output at "<a href="${env.BUILD_URL}">${env.JOB_NAME} [${env.BUILD_NUMBER}]</a>"</p>""",
subject: "STARTED: Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]'",
to: 'admin@example.com'
}
}
}

看到了一个pipeline例子,的更多相关文章

  1. SQL Server Reporting Service(SSRS) 第一篇 我的第一个SSRS例子

    很早就知道SQL SERVER自带的报表工具SSRS,但一直没有用过,最近终于需要在工作中一展身手了,于是我特地按照自己的理解做了以下总结: 1. 安装软件结构 SSRS全称SQL Server Re ...

  2. 一个简单例子:贫血模型or领域模型

    转:一个简单例子:贫血模型or领域模型 贫血模型 我们首先用贫血模型来实现.所谓贫血模型就是模型对象之间存在完整的关联(可能存在多余的关联),但是对象除了get和set方外外几乎就没有其它的方法,整个 ...

  3. java连接mysql的一个小例子

    想要用java 连接数据库,需要在classpath中加上jdbc的jar包路径 在eclipse中,Project的properties里面的java build path里面添加引用 连接成功的一 ...

  4. java操作xml的一个小例子

    最近两天公司事比较多,这两天自己主要跟xml打交道,今天更一下用java操作xml的一个小例子. 原来自己操作xml一直用这个包:xstream-1.4.2.jar.然后用注解的方式,很方便,自己只要 ...

  5. MVVM模式的一个小例子

    使用SilverLight.WPF也有很长时间了,但是知道Binding.Command的基本用法,对于原理性的东西,一直没有深究.如果让我自己建一个MVVM模式的项目,感觉还是无从下手,最近写了一个 ...

  6. Lea指令计算地址(用于四则混合运算),附上一个函数调用例子及其反汇编代码,很清楚

    比如你用local在栈上定义了一个局部变量LocalVar,你知道实际的指令是什么么?一般都差不多像下面的样子:     push   ebp     mov   esp,   ebp     sub ...

  7. (转)Java中使用正则表达式的一个简单例子及常用正则分享

    转自:http://www.jb51.net/article/67724.htm 这篇文章主要介绍了Java中使用正则表达式的一个简单例子及常用正则分享,本文用一个验证Email的例子讲解JAVA中如 ...

  8. C语言多线程的一个简单例子

    多线程的一个简单例子: #include <stdio.h> #include <stdlib.h> #include <string.h> #include &l ...

  9. 【Qt官方MQTT库的使用,附一个MqttClient例子】

    Qt官方MQTT库的使用,附一个MqttClient例子 开发环境:win7 64 + Qt5.9 记录时间:2018年3月11日 00:48:42 联系邮箱: yexiaopeng1992@126. ...

随机推荐

  1. 并发编程之ThreadLocal源码分析

    当访问共享的可变数据时,通常需要使用同步.一种避免同步的方式就是不共享数据,仅在单线程内部访问数据,就不需要同步.该技术称之为线程封闭. 当数据封装到线程内部,即使该数据不是线程安全的,也会实现自动线 ...

  2. SQL0286N 找不到页大小至少为 "8192"、许可使用授权标识 "db2inst" 的缺省表空间。

    在 SQL 处理期间,它返回: SQL0286N  找不到页大小至少为 "8192".许可使用授权标识 "db2inst" 的缺省表空间. 顾名思义,DB2默认 ...

  3. axios上传图片(及vue上传图片到七牛))

    浏览器上传图片到服务端,我用过两种方法: 1.本地图片转换成base64,然后通过普通的post请求发送到服务端. 操作简单,适合小图,以及如果想兼容低版本的ie没办法用此方法 2.通过form表单提 ...

  4. Vue双向绑定原理详解

    前言:Vue最核心的功能之一就是响应式的数据绑定模式,即view与model任意一方改变都会同步到另一方,而不需要手动进行DOM操作,本文主要探究此功能背后的原理. 思路分析 以下是一个最简单的双向绑 ...

  5. Ubuntu pydot failed to call GraphViz.Please install GraphViz 解决方法

    如果遇到: OSError: `pydot` failed to call GraphViz.Please install GraphViz (https://www.graphviz.org/) a ...

  6. web容器向jar中寻找资源

    示例代码下载地址 https://files.cnblogs.com/files/Mike_Chang/web%E5%AE%B9%E5%99%A8%E5%90%91jar%E4%B8%AD%E5%AF ...

  7. 二、vue学习--父元素如何获取子元素的值,子元素如何获取父元素的值

      下图是父元素: 下图是子元素,获取父元素的值,使用props定义属性,这样就可以获取到父元素上传过来的set .place.type,拿到值就可以做一些自己的逻辑处理 二.子元素给父元素传值? 下 ...

  8. cmake 基本命令

    1 # CMake 最低版本号要求cmake_minimum_required (VERSION 2.8) 2 项目信息project (Demo2) 3 aux_source_directory 查 ...

  9. 7.Spring MVC静态资源访问

    在SpringMVC中常用的就是Controller与View.但是我们常常会需要访问静态资源,如html,js,css,image等. 默认的访问的URL都会被DispatcherServlet所拦 ...

  10. -webkit-min-device-pixel-ratio: 2是什么意思?

    DPI(DPR) stands for Dots Per Inch which technically means printer dots per inch. 这个参数实际上量化了屏幕的物理分辨率和 ...