node {
echo 'Hello World'
}
node 在Jenkins环境中分配一个执行器和工作空间。
echo 在控制台输出中写入简单的字符串 try {
timeout(time: 120, unit: 'MINUTES') {
def app_name_prefix="trmserverdev"
// define maven commands
def mvn_cmd = 'mvn -s mvn-settings.xml' //maven配置(nexus/sonar配置)
// define gitlab_project url
def giturl = "http://10.72.76.54/TRM/TRMServer.git"
// define gitlab_project branch
def git_branch = "master"
// define sonar url
def sonarurl = 'http://10.72.76.55:9002'
// define jenkins token
def credentialsId = "dai"
def appName = "${app_name_prefix}" node {
stage("Initialize") {
project = env.PROJECT_NAME
echo "project: ${project}"
}
} node("maven") {
stage("Checkout") {
checkout([$class:"GitSCM", branches: [[name: "*/${git_branch}"]], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[credentialsId: "${credentialsId}", url: "${giturl}"]]])
}
stage("Unit Test") {
sh "${mvn_cmd} test"
}
stage("Sonar") {
// sh "${mvn_cmd} sonar:sonar -Dsonar.sourceEncoding=UTF-8 -Dsonar.host.url=${sonarurl} -Dsonar.projectName=${appName}-${git_branch} -Dsonar.projectKey=${appName}-${git_branch}"
}
stage("Build WAR") {
sh "${mvn_cmd} clean package"
stash name:"war", includes:"target/TRMServerdev.war" //包名 与项目、镜像名保持一致,附加版本号
}
stage ('Clear Environment') {
sh "rm -rf oc-build && mkdir -p oc-build/deployments"
sh "oc delete bc,dc,svc,route,is -l app=${appName} -n ${project}"
}
stage("Build Image") { //包名 与项目、镜像名保持一致,附加版本号
sh "oc project ${project}"
sh "cp target/TRMServerdev.war oc-build/deployments/"
sh "oc new-build --binary=true --name=${appName} -l app=${appName} -n ${project} --image-stream=openshift/jboss-webserver31-tomcat8-openshift:1.2"
sh "oc start-build ${appName} --from-dir=oc-build --follow=true --wait=true -n ${project}"
}
stage("Deploy") { //URL附加版本号
sh "oc new-app --name=${appName} --image-stream=${appName} --env TZ=Asia/Shanghai"
sh "oc expose svc/${appName} --hostname=${appName}-${project}sit.devapp.cnooc -n ${project}"
}
stage('Integration test') { //自动化测试 jmeter
println 'Starting test'
// TBD: Proper test
println 'Test completed!'
}
//增加发邮件
}
}
} catch (err) {
//完善反馈信息
def comment = "编译失败,错误原因如下:${err} "
//jiraAddComment idOrKey: "${params.issueKey}", comment: comment, site: 'cnooc jira'
//失败状态流转
def transitionInput = [ transition: [id: '81'] ]
//jiraTransitionIssue idOrKey: "${params.issueKey}", input: transitionInput,site: 'cnooc jira'
echo "in catch block"
echo "Caught: ${err}"
currentBuild.result = 'FAILURE'
throw err
}

  

Jenkins Pipeline脚本的更多相关文章

  1. Jenkins的Pipeline脚本在美团餐饮SaaS中的实践

    一.背景 在日常开发中,我们经常会有发布需求,而且还会遇到各种环境,比如:线上环境(Online),模拟环境(Staging),开发环境(Dev)等.最简单的就是手动构建.上传服务器,但这种方式太过于 ...

  2. Jenkins的Pipeline脚本在美团餐饮SaaS中的实践(转)

    一.背景 在日常开发中,我们经常会有发布需求,而且还会遇到各种环境,比如:线上环境(Online),模拟环境(Staging),开发环境(Dev)等.最简单的就是手动构建.上传服务器,但这种方式太过于 ...

  3. 让Jenkins执行GitHub上的pipeline脚本

    本文是<Jenkins流水线(pipeline)实战>系列的第二篇,上一篇搭建好了Jenkins环境并执行了一个简单的pipeline任务,当时我们直接在Jenkins网页上编写pipel ...

  4. jenkins pipeline的声明式与脚本式

    自从Jenkins 2.0 版本升级之后,支持了通过代码(Groovy DSL)来描述一个构建流水线,灵活方便地实现持续交付,大大提升 Jenkins Job 维护的效率,实现从 CI 到 CD 到转 ...

  5. 在容器中运行 Jenkins pipeline 任务

    持续集成中的 pipeline 技术和 docker 都是当前正在发展的主流方向,当然把它们结合起来在 CI/CD 过程中发挥出更强大的威力也是大家共同的目标.本文将介绍如何在 Jenkins pip ...

  6. jenkins + pipeline构建自动化部署

    一.引言 Jenkins 2.x的精髓是Pipeline as Code,那为什么要用Pipeline呢?jenkins1.0也能实现自动化构建,但Pipeline能够将以前project中的配置信息 ...

  7. 基于Jenkins Pipeline的ASP.NET Core持续集成实践

    最近在公司实践持续集成,使用到了Jenkins的Pipeline来提高团队基于ASP.NET Core API服务的集成与部署效率,因此这里总结一下. 一.关于持续集成与Jenkins Pipelin ...

  8. Jenkins pipeline job 根据参数动态获取触发事件的分支

    此文需要有Jenkins pipeline job 的简单使用经验 场景 我们日常的测试函数, 一般是不能仅仅在本地跑的,还需要一个公共的跑测试的环境,作为合并新的PR的依据. 如果用Jenkins ...

  9. Jenkins pipeline:pipeline 使用之语法详解

    一.引言 Jenkins 2.0的到来,pipline进入了视野,jenkins2.0的核心特性. 也是最适合持续交付的feature. 简单的来说,就是把Jenkins1.0版本中,Project中 ...

随机推荐

  1. [转]Mybatis foreach 批量操作

    原文地址:https://blog.csdn.net/jason5186/article/details/40896043 foreach属性属性    描述item    循环体中的具体对象.支持属 ...

  2. Android Studio报错Error:Failed to open zip file. Gradle's dependency cache may be corrupt

    Android Studio导入项目后,Gradle编译失败,报错如下. Error:Failed to open zip file. Gradle's dependency cache may be ...

  3. 使用import scope解决maven继承(单)问题<转>

    测试环境 maven 3.3.9 想必大家在做SpringBoot应用的时候,都会有如下代码: <parent> <groupId>org.springframework.bo ...

  4. Oracle分析函数-统计(sum、avg、max、min)

    很多需求中都涉及到统计:均值.累计.范围均值.相邻记录比较等.这些操作会统计多次,或有明确的统计范围,或返回的记录统计的数据集不同... 根据场景不同可分为如下几类: 1. 全统计 2. 滚动统计 3 ...

  5. Java 判断字符串 中文是否为乱码

    import java.util.regex.Matcher; import java.util.regex.Pattern; public class ChineseUtill { private ...

  6. Ubuntu下创建新用户后,不能使用管理员用户下安装的Anaconda

    解决办法: 将管理员用户下Anaconda的安装环境添加到新用户下的环境变量里,具体操作: 系统切换到新用户下: vim .bashrc #添加Anaconda的环境变量 source .bashrc ...

  7. Java8学习笔记目录

    Java8学习笔记(一)--Lambda表达式 Java8学习笔记(二)--三个预定义函数接口 Java8学习笔记(三)--方法引入 Java8学习笔记(四)--接口增强 Java8学习笔记(五)-- ...

  8. ubuntu源码安装jdk8

    最近学习java,想起来没有在Ubuntu上使用过 因此想安装下环境,并在Ubuntu上试用MPXJ读取mpp文件 1.安装 下载jdk8 https://www.oracle.com/technet ...

  9. TeamViewer 版本v13.2.26558 修改ID

    TeamViewer 使用频繁后会被判定为商业用途,不可用.此软件的账号和设备mac地址绑定. 修改TeamViewer ID后可以重新开始使用.下述方法可以成功修改TeamViewer ID. Wi ...

  10. SQL查询无限层级结构的所有下级,所有上级

    无限层级结构的table1表,Id(主键),ParentId(父级id)查询某个Id的所有下级或所有上级,使用WITH AS,UNION ALL 查询 1.查询Id为1所有的下级 WITH T AS( ...