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. element-ui中使用font-awesome字体图标

    element-ui提供的字体图标是很少的,所以我们需要集成其它图标来使用,nodejs的集成官方有说明,这里说明一下非nodejs开发集成图标 首先下载fontawesome,需要更改里面图标前缀, ...

  2. Django基础七之Ajax

    一 Ajax简介 1.简介 AJAX(Asynchronous Javascript And XML)翻译成中文就是“异步的Javascript和XML”.即使用Javascript语言与服务器进行异 ...

  3. BS和CS的区别

    C/S又称Client/Server或客户/服务器模式.服务器通常采用高性能的PC.工作站或小型机,并采用大型数据库系统,如Oracle.Sybase.Informix或 SQL Server.客户端 ...

  4. 语义化的HTML及其目的

    一.什么是语义化的HTML? 语义化的HTML就是写出的HTML代码,符合内容的结构化(内容语义化),选择合适的标签(代码语义化),能够便于开发者阅读和写出更优雅的代码的同时让浏览器的爬虫和机器很好地 ...

  5. opencv3.2.0形态学滤波之腐蚀

    /* 腐蚀(erode)含义: 腐蚀和膨胀是相反的一对操作,所以腐蚀就是求局部最小值的操作,腐蚀操作使原图中 国的高亮部分被腐蚀,效果图比原图有更小的高亮的区域. 腐蚀函数原型API及参数同膨胀相同 ...

  6. 11招教你做好 ERP 系统维护

    ERP 维护的具体工作内容主要包括以下几个方面: 例行和突发事件的处理 以管理和技术的手段,维护和发展 ERP 运行环境,如平衡技术先进性/实用风险.目标/成本而进行的IT基础结构(服务器.网络.PC ...

  7. hue简单介绍

    hue定义: HUE=Hadoop User Experience 个人理解:可视图的webui界面,方便大数据技术之间的CRUD操作. 官方定义:Hue是一个能够与Apache Hadoop交互的W ...

  8. 【转】grep -v grep

    1.grep 是查找含有指定文本行的意思,比如grep test 就是查找含有test的文本的行 2.grep -v 是反向查找的意思,比如 grep -v grep 就是查找不含有 grep 字段的 ...

  9. 使用Axure设计中,大型的后台系统原型总结

    使用Axure设计中,大型的后台系统原型总结 2018年4月16日luodonggan 在产品原型设计中,经常会涉及到后台系统原型的设计,如何设计出更规范标准的后台系统原型,是很多产品同行们都会遇到的 ...

  10. [转载]Cool, Tomcat is able to handle more than 13,000 concurrent connections

    Last time I have promised you to take a look at more real life scenario regarding threads. In the la ...