jenkins 流水线参数化构建例子
前面我介绍了jenkins的安装和基础配置,这一篇我来说一下怎么通过流水线参数化自动部署;
一、新建任务
新建任务 -> 流水线
二.General
1.勾选参数化构建过程
2.添加参数
三、 高级项目选项
不需要填
四、 流水线
选择Pipeline script
下面是我构建用到的脚本,大家可以参考着改,因为我只有一台服务器,所有没有用到ssh,其中脚本里的参数service_names和project_version就是通过构建时传进去的。
pipeline{agentanyenvironment {git_addr = "填写自己的git项目地址"target_dir = "/root/data/buildings/jenkins/exec"target_ssh = "root@172.31.142.46"backup_dir = "/root/data/buildings/jenkins/backup"get_branch = "$project_version"}stages {stage('获取代码') {steps {echo "start fetch code from git:${git_addr} branch:$get_branch"sh "pwd"deleteDir()gitbranch:"$get_branch", url:"${git_addr}"}}stage('单元测试') {when {environment name:'is_test', value:'是'}steps {echo "start test"sh "mvn clean test"junit '**/target/surefire-reports/TEST-*.xml'}}stage('打包') {steps {echo "start package"sh "java -version&& mvn -v"sh "mvn clean package -Dmaven.test.skip=true"}}stage('部署') {steps {echo "start deploy"sh '' 'if [!-d "${backup_dir}/${project_version}" ];thenmkdir - p $ {backup_dir}/$ {project_version}fi'' 'script {def apps = "${service_names}".split(",")for (int i = 0; i < apps.size(); ++i) {sh "rm -f${backup_dir}/${project_version}/${apps[i]}-0.0.1-SNAPSHOT.jar"sh "cptarget/${apps[i]}-0.0.1-SNAPSHOT.jar ${backup_dir}/${project_version}/"sh "rm -f${target_dir}/${apps[i]}-0.0.1-SNAPSHOT.jar"sh "cptarget/${apps[i]}-0.0.1-SNAPSHOT.jar ${target_dir}"//我用的是本地所以不用目标ip//sh "ssh ${target_ssh} rm -f${target_dir}/${apps[i]}.jar"//sh "scptarget/${apps[i]}-0.0.1-SNAPSHOT.jar ${target_ssh}:${target_dir}"}}}}stage('重启') {steps {echo "start restart"script {def apps = "${service_names}".split(",")for (int i = 0; i < apps.size(); ++i) {sh "cd ${target_dir};sh shutdown.sh ${apps[i]}-0.0.1-SNAPSHOT"sleep 30sh "cd${target_dir};sh start.sh ${apps[i]}-0.0.1-SNAPSHOT"//我用的是本地所以不用目标ip//sh "ssh${target_ssh} 'cd ${target_dir};sh shutdown.sh ${apps[i]}'"//sleep 30//sh "ssh${target_ssh} 'cd ${target_dir};sh start.sh ${apps[i]}'"}}}}}post {always {echo '构建结束...'}success {echo '恭喜您,构建成功!!!'}failure {echo '抱歉,构建失败!!!'}unstable {echo '该任务已经被标记为不稳定任务....'}changed {echo ''}}
}
目标服务的shutdown.sh内容:
jenkins-0.0.1-SNAPSHOT.jar shutdown.sh start.shpid=`ps ax | grep -i $1 |grep java | grep-v grep | awk '{print $1}'`if [ -z "$pid" ] ; thenecho "No $1 running."fiecho "The $1(${pid}) isrunning..."kill ${pid}echo "Send shutdown request to $1(${pid})OK"
目标服务的 start.sh 内容为:
nohup java -jar -Xmx256M -Xms256M $1.jar>> /dev/null 2>&1 &
到此就全部配置完成了,我们就可以构建项目了;
1.点击 build
下面我标记的就是我们设置的构建参数
点击开始构建,就会出现构建的进度
构建成功是蓝色的,失败是红色的
jenkins 流水线参数化构建例子相关推荐
- Jenkins:参数化构建:多分支|多模块|回滚|打印日志
Jenkins:参数化构建:多分支|多模块|回滚|打印日志 多分支 安装Git Parameter Plug-In 配置参数 选择构建分支 分模块 前提 分模块build 参数配置 分模块shell脚 ...
- jenkins+jmeter参数化构建
jenkins支持参数化,通过参数化可以将jenkins上定义的参数动态传给待执行脚本,从而实现脚本动态运行的目的,实际测试过程中,也经常会碰到一个脚本需要在不同的环境中运行的情况,结合参数化可以方便 ...
- jenkins没有参数化构建过程选项
Build With Parameters 输入框式的参数 Persistent Parameter 下拉框式的参数 安装上述两个插件, 然后重启jenkins https://www.cnblogs ...
- Pipeline流水线项目构建
目录 Pipeline简介 概念 安装Pipeline插件 Scripted脚本式Pipeline Declarative声明式Pipeline 使用代码生成器生成流水线脚本 管理Jenkinsfil ...
- Jenkins 流水线语法 06 options 运行时选项和 parameters参数化构建
选项参数都是在字符界面配置的. options {buildDiscarder logRotator(artifactDaysToKeepStr: '', artifactNumToKeepStr: ...
- DEVOPS技术实践_04:Jenkins参数化构建
一.参数化构建 1.1 各个参数的信息 凭据参数存储一个用户的账号密码信息,等等,运用最多的是选项参数 1.2 使用选项参数 构建已经变成参数化构建 1.3 获取这个值,修改Jenkinsfile文件 ...
- jenkins参数化构建过程
http://www.cnblogs.com/meitian/p/5492457.html 1,首先增加Jenkisn插件 https://wiki.jenkins-ci.org/display/JE ...
- Jenkins骚操作第四章构建maven项目和Pipeline流水线项目构建
文章目录 Jenkins构建Maven项目 1.Jenkins项目构建类型-自由风格项目构建 1.1.拉取代码 1.2.编译打包 1.3.部署 2.Jenkins项目构建类型(3)--Maven项目构 ...
- 【DevOps】Jenkins:配置jenkins 流水线/多分支流水线任务构建成功通知企业微信@相关人
目录 视频教程 需求说明 最终效果 实现过程 安装插件 编写shell 编写jenkinsfile 测试一下 视频教程 视频教程:https://edu.csdn.net/learn/38191/60 ...
最新文章
- C++编译器Qt Creator下载地址
- 使用SAE和Gitcafe开发网站应用
- Codeforces Round #193 (Div. 2)
- 初识Lock与AbstractQueuedSynchronizer(AQS)
- python打开excel执行vba代码_python可以添加,运行和删除VBA宏以实现excel而无需中间保存步骤吗?...
- Linux引导过程详解
- 数据概览_2015年概览:开源年鉴
- Received status code 403 from server: Forbidden
- python的__name__
- Atitit orm的实现模式 data-mapper模式和active-record模式有什么区别
- 计算机基础知识高职版,计算机应用基础 课件教学全套课件(高职版大学计算机基础 第7章 计算机网络基础知识 课件.pptx...
- 华为海思有多么强大?一起来看看它的成就
- 中国城市网约车监管之政策走向与发展前景
- 游戏建模常用软件以及模型制作流程
- 难道我的博客也成了名人博客?
- 三星java安装_三星F488E的JAVA安装方法
- 一阶常系数微分方程组的笔记
- 智能家居软文营销以受众为中心,创作有说服力的文案
- 【单片机毕业设计】【mcuclub-306】万年历电子时钟 | 数字时钟 | 多功能时钟 | 智能闹钟
- 电化学传感器(1)---原理