前面我介绍了jenkins的安装和基础配置,这一篇我来说一下怎么通过流水线参数化自动部署;

一、新建任务

新建任务 -> 流水线

二.General

1.勾选参数化构建过程

2.添加参数

三、 高级项目选项

不需要填

四、 流水线

  1. 选择Pipeline script

  2. 下面是我构建用到的脚本,大家可以参考着改,因为我只有一台服务器,所有没有用到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 流水线参数化构建例子相关推荐

  1. Jenkins:参数化构建:多分支|多模块|回滚|打印日志

    Jenkins:参数化构建:多分支|多模块|回滚|打印日志 多分支 安装Git Parameter Plug-In 配置参数 选择构建分支 分模块 前提 分模块build 参数配置 分模块shell脚 ...

  2. jenkins+jmeter参数化构建

    jenkins支持参数化,通过参数化可以将jenkins上定义的参数动态传给待执行脚本,从而实现脚本动态运行的目的,实际测试过程中,也经常会碰到一个脚本需要在不同的环境中运行的情况,结合参数化可以方便 ...

  3. jenkins没有参数化构建过程选项

    Build With Parameters 输入框式的参数 Persistent Parameter 下拉框式的参数 安装上述两个插件, 然后重启jenkins https://www.cnblogs ...

  4. Pipeline流水线项目构建

    目录 Pipeline简介 概念 安装Pipeline插件 Scripted脚本式Pipeline Declarative声明式Pipeline 使用代码生成器生成流水线脚本 管理Jenkinsfil ...

  5. Jenkins 流水线语法 06 options 运行时选项和 parameters参数化构建

    选项参数都是在字符界面配置的. options {buildDiscarder logRotator(artifactDaysToKeepStr: '', artifactNumToKeepStr: ...

  6. DEVOPS技术实践_04:Jenkins参数化构建

    一.参数化构建 1.1 各个参数的信息 凭据参数存储一个用户的账号密码信息,等等,运用最多的是选项参数 1.2 使用选项参数 构建已经变成参数化构建 1.3 获取这个值,修改Jenkinsfile文件 ...

  7. jenkins参数化构建过程

    http://www.cnblogs.com/meitian/p/5492457.html 1,首先增加Jenkisn插件 https://wiki.jenkins-ci.org/display/JE ...

  8. Jenkins骚操作第四章构建maven项目和Pipeline流水线项目构建

    文章目录 Jenkins构建Maven项目 1.Jenkins项目构建类型-自由风格项目构建 1.1.拉取代码 1.2.编译打包 1.3.部署 2.Jenkins项目构建类型(3)--Maven项目构 ...

  9. 【DevOps】Jenkins:配置jenkins 流水线/多分支流水线任务构建成功通知企业微信@相关人

    目录 视频教程 需求说明 最终效果 实现过程 安装插件 编写shell 编写jenkinsfile 测试一下 视频教程 视频教程:https://edu.csdn.net/learn/38191/60 ...

最新文章

  1. C++编译器Qt Creator下载地址
  2. 使用SAE和Gitcafe开发网站应用
  3. Codeforces Round #193 (Div. 2)
  4. 初识Lock与AbstractQueuedSynchronizer(AQS)
  5. python打开excel执行vba代码_python可以添加,运行和删除VBA宏以实现excel而无需中间保存步骤吗?...
  6. Linux引导过程详解
  7. 数据概览_2015年概览:开源年鉴
  8. Received status code 403 from server: Forbidden
  9. python的__name__
  10. Atitit orm的实现模式 data-mapper模式和active-record模式有什么区别
  11. 计算机基础知识高职版,计算机应用基础 课件教学全套课件(高职版大学计算机基础 第7章 计算机网络基础知识 课件.pptx...
  12. 华为海思有多么强大?一起来看看它的成就
  13. 中国城市网约车监管之政策走向与发展前景
  14. 游戏建模常用软件以及模型制作流程
  15. 难道我的博客也成了名人博客?
  16. 三星java安装_三星F488E的JAVA安装方法
  17. 一阶常系数微分方程组的笔记
  18. 智能家居软文营销以受众为中心,创作有说服力的文案
  19. 【单片机毕业设计】【mcuclub-306】万年历电子时钟 | 数字时钟 | 多功能时钟 | 智能闹钟
  20. 电化学传感器(1)---原理

热门文章

  1. Microsoft SQL Server Download
  2. JPEG图像的解压缩操作
  3. 人工智能之语音机器人
  4. linux arm 无法执行二进制文件,qemu-arm无法运行arm编译的二进制文件
  5. Red5 Client 调用 Red5 Server
  6. CVPR小样本检测:蒸馏上下文助力小样本检测(代码已开源)
  7. 网页提示404什么意思
  8. 循环当中的continue用法
  9. 数据化管理 - 洞悉零售及电商运营【初始】
  10. UE4_AR/MR项目经验