Jenkins Pipeline脚本
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脚本的更多相关文章
- Jenkins的Pipeline脚本在美团餐饮SaaS中的实践
一.背景 在日常开发中,我们经常会有发布需求,而且还会遇到各种环境,比如:线上环境(Online),模拟环境(Staging),开发环境(Dev)等.最简单的就是手动构建.上传服务器,但这种方式太过于 ...
- Jenkins的Pipeline脚本在美团餐饮SaaS中的实践(转)
一.背景 在日常开发中,我们经常会有发布需求,而且还会遇到各种环境,比如:线上环境(Online),模拟环境(Staging),开发环境(Dev)等.最简单的就是手动构建.上传服务器,但这种方式太过于 ...
- 让Jenkins执行GitHub上的pipeline脚本
本文是<Jenkins流水线(pipeline)实战>系列的第二篇,上一篇搭建好了Jenkins环境并执行了一个简单的pipeline任务,当时我们直接在Jenkins网页上编写pipel ...
- jenkins pipeline的声明式与脚本式
自从Jenkins 2.0 版本升级之后,支持了通过代码(Groovy DSL)来描述一个构建流水线,灵活方便地实现持续交付,大大提升 Jenkins Job 维护的效率,实现从 CI 到 CD 到转 ...
- 在容器中运行 Jenkins pipeline 任务
持续集成中的 pipeline 技术和 docker 都是当前正在发展的主流方向,当然把它们结合起来在 CI/CD 过程中发挥出更强大的威力也是大家共同的目标.本文将介绍如何在 Jenkins pip ...
- jenkins + pipeline构建自动化部署
一.引言 Jenkins 2.x的精髓是Pipeline as Code,那为什么要用Pipeline呢?jenkins1.0也能实现自动化构建,但Pipeline能够将以前project中的配置信息 ...
- 基于Jenkins Pipeline的ASP.NET Core持续集成实践
最近在公司实践持续集成,使用到了Jenkins的Pipeline来提高团队基于ASP.NET Core API服务的集成与部署效率,因此这里总结一下. 一.关于持续集成与Jenkins Pipelin ...
- Jenkins pipeline job 根据参数动态获取触发事件的分支
此文需要有Jenkins pipeline job 的简单使用经验 场景 我们日常的测试函数, 一般是不能仅仅在本地跑的,还需要一个公共的跑测试的环境,作为合并新的PR的依据. 如果用Jenkins ...
- Jenkins pipeline:pipeline 使用之语法详解
一.引言 Jenkins 2.0的到来,pipline进入了视野,jenkins2.0的核心特性. 也是最适合持续交付的feature. 简单的来说,就是把Jenkins1.0版本中,Project中 ...
随机推荐
- 【原创 深度学习与TensorFlow 动手实践系列 - 4】第四课:卷积神经网络 - 高级篇
[原创 深度学习与TensorFlow 动手实践系列 - 4]第四课:卷积神经网络 - 高级篇 提纲: 1. AlexNet:现代神经网络起源 2. VGG:AlexNet增强版 3. GoogleN ...
- 【原创 Hadoop&Spark 动手实践 5】Spark 基础入门,集群搭建以及Spark Shell
Spark 基础入门,集群搭建以及Spark Shell 主要借助Spark基础的PPT,再加上实际的动手操作来加强概念的理解和实践. Spark 安装部署 理论已经了解的差不多了,接下来是实际动手实 ...
- Mysql 索引问题-日期索引使用
这两天发现原来的查询效率慢了,使用explain 查看,居然没有使用索引,我的索引是日期类型的,首先想到的是mysql对日期类型的索引的处理机制是不是不同,在where条件里试了几种,发现效果都差不多 ...
- Web API 异常处理
Web Api的ExceptionFilter只能截获并处理Action执行过程中发生的异常,在Action执行过程之外如果出现异常,ExceptionFilter是无能为力的. 这些异常包括: 1. ...
- go module下golang.org如何处理被墙
一.系统提示 go: golang.org/x/sys@v0.0.0-20180905080454-ebe1bf3edb33: unrecognized import path "golan ...
- php -- func_get_args
该方法必须在某个方法内部执行才有效 返回值为索引数组,一个数组元素对应一个参数
- 基于【CentOS-7+ Ambari 2.7.0 + HDP 3.0】搭建HAWQ数据仓库——操作系统配置,安装必备软件
注意未经说明,所有本文中所有操作都默认需要作为root用户进行操作. 一.安装zmodem,用于远程上传下载文件,安装gedit,方便重定向到远程windows上编辑文件(通过xlanuch) [ro ...
- python中通过字符串名来调用函数
强调:eval()函数功能虽然强大,但是也很危险,这个方法需要慎重使用. 利用python中的内置函数 eval() ,函数说明: def eval(*args, **kwargs): # real ...
- 【中间件安全】IIS6安全加固规范
1. 适用情况 适用于使用IIS6进行部署的Web网站. 2. 技能要求 熟悉IIS配置操作,能够利用IIS进行建站,并能针对站点使用IIS进行安全加固. 3. 前置条件 1. 根据站点开放端口.进程 ...
- ActiveQt框架 禁止弹出ActiveX控件交互提示
重点重写QAxBindable的createAggregate() 参考Qt例子: qtactiveqt\activeqt\opengl\glbox.cpp