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. 为什么java需要序列化对象

    序列化是一种用来处理对象流的机制 所谓对象流:就是将对象的内容进行流化,可以对流化后的对象进行读写操作,也可将流化后的对象传输与网络之间 序列化是为了解决在对象流进行读写操作时所引发的问题 序列化的实 ...

  2. STS的安装教程-鹏鹏

    STS全称Spring Tools Suite. 简介:Spring Tools Suite (STS)其实就是一个被包装过的Eclipse,主要用于快速的开发Spring项目,我们不用再去编辑繁琐的 ...

  3. zoj 3286 Very Simple Counting---统计[1,N]相同因子个数

    Very Simple Counting Time Limit: 1 Second      Memory Limit: 32768 KB Let f(n) be the number of fact ...

  4. try,except用法

    lst = ["皇阿玛", "皇额娘", "容嬷嬷", "紫薇"] # 模拟for循环 it = lst.__iter_ ...

  5. 使用JSON实现分页

    使用JSON实现分页可直接用 Fenye.html <!DOCTYPE html> <html> <head> <title>JSON分页</ti ...

  6. PHP中的prepare准备语句的意义

    mysqli和PDO扩展都有prepare这个语法,刚开始以为只是单纯的语法,没想到,还是有实际意义的: “每次发送查询语句给MySQL服务时,都必须解析该查询的语法,确保结构正确并能够执行.这是这个 ...

  7. Nginx的文件夹的别名设计&drupal简洁url

    参考:nginx 官方drupal 配置 - Drupal | NGINX 环境:ubuntu14,Nginx1.12, MariaDB5.5.56,PHP7.1.7 需求:1.不同的网站,不要用文件 ...

  8. mysql 导入时报错:Got a packet bigger than‘max_allowed_packet’bytes

    原因是max_allowed_packet 值设置过小. 网上粘贴一段定义: max_allowed_packet:指代mysql服务器端和客户端在一次传送数据包的过程当中数据包的大小这个是定义mys ...

  9. C# 压缩图片到指定宽度,假如图片小于指定宽度 判断图片大小是否大于指定大小(KB) 如果大于则压缩图片质量 宽高不变

    class Program { static void Main(string[] args) {//G:\zhyue\backup\projects\Test\ConsoleApplication1 ...

  10. map与pagelayout同步新方法

    本文转自: http://hi.baidu.com/murphy1314/blog/item/3d3144f319b19dcf0a46e0a4.html 前天写的那个MapControl和Pagela ...