创建一个流水线job,这只是个简单的流水线发布教程,写的不好~
 
创建好后进入改job设置
你可以在参数化构建中加入这些需要提前设定的参数,以自己的Jenkinsfile需要做添加
 
 
然后我们看下Jenkins-a的内容
node {
    def JAVA_HOME = tool 'jdk'                                 #定义个局部变量,设置jdk环境
    env.PATH = "${JAVA_HOME}/bin:${env.PATH}"
    
   stage('拉取代码') {
      #检出代码的命令可以用上面的生成器自己生成
      checkout([$class: 'SubversionSCM', additionalCredentials: [], excludedCommitMessages: '', excludedRegions: '', excludedRevprop: '', excludedUsers: '', filterChangelog: false, ignoreDirPropChanges: false, includedRegions: '', locations: [[cancelProcessOnExternalsFail: true, credentialsId: '', depthOption: 'infinity', ignoreExternalsOption: true, local: '.', remote: 'svn.jsc.com']], quietOperation: true, workspaceUpdater: [$class: 'UpdateUpdater']])
    }
   
   stage('构建') {
        if ("${Status}"== 'Deploy') {
            sh "/usr/local/maven/bin/mvn clean install -pl $module -am -U -Dmaven.test.skip=true"
            echo '需要构建'
        } else {
            echo '不需要构建'
        }
    }
    
    def web_name = "${JOB_NAME}"
   
    stage('Status判断') {
        if ("${Status}"== 'Deploy') {
            jar_file = sh (
                script: 'find $WORKSPACE/$module/target -name *.war',
                returnStdout: true
            ).trim()
            sh 'mkdir -p $WORKSPACE/bak/$BUILD_ID'
            sh "(cp -a '${jar_file}' $WORKSPACE/bak/$BUILD_ID)"
            echo '部署'
        } else {
            jar_file = sh (
                script: 'find $WORKSPACE/bak/$Rollback_tag -name *.war',
                returnStdout: true
            ).trim()
            echo '回滚'
        }
    }
 
    war_file_name = sh (
        script: "(basename '${jar_file}')",
        returnStdout: true
    ).trim()
    
    config_file_name = sh (
        script: 'basename ${config_file}',
        returnStdout: true
    ).trim()
    
    old_BUILD_NUMBER = sh (
        script: "(awk 'BEGIN{print '${BUILD_NUMBER}' - 1 }')",
        returnStdout: true
    ).trim()
   
   stage('打印部署参数') {
        #这些参数都后面ansible发布需要用的,不一定适合你
        echo "jar_file: ${jar_file}"
        echo "war_file_name: ${war_file_name}"
        echo "config_file: ${config_file}"
        echo "config_file_name: ${config_file_name}"
        echo "job_name: ${web_name}"
        echo "old_BUILD_NUMBER: ${old_BUILD_NUMBER}"
    }
   
   stage('部署') {
        #这里你可以用ansible部署到机器上,或者用其他什么的,下面只做个示范照抄无效
        sh "/usr/bin/ansible-playbook /etc/ansible/playbook/deploy_test.yaml -f 5 -e jar_file=${jar_file} -e config_file_name=${config_file_name} -e host=${host}  "
    }
}
最后的效果
 
 
 
 

jenkisn Pipeline的流水线发布,自动化部署的更多相关文章

  1. Jenkins + Pipeline 构建流水线发布

      Jenkins + Pipeline 构建流水线发布 利用Jenkins的Pipeline配置发布流水线 参考: https://jenkins.io/doc/pipeline/tour/depl ...

  2. 大厂是如何用DevCloud流水线实现自动化部署Web应用的?

    DevUI是一支兼具设计视角和工程视角的团队,服务于华为云DevCloud平台和华为内部数个中后台系统,服务于设计师和前端工程师. 官方网站:devui.design Ng组件库:ng-devui(欢 ...

  3. Kubernetes笔记(三):Gitlab+Jenkins Pipeline+Docker+k8s+Helm自动化部署实践(干货分享!)

    通过前面两篇文章,我们已经有了一个"嗷嗷待哺"的K8s集群环境,也对相关的概念与组件有了一个基本了解(前期对概念有个印象即可,因为只有实践了才能对其有深入理解,所谓"纸上 ...

  4. [转]利用Jenkins的Pipeline实现集群自动化部署SpringBoot项目

    环境准备 Git: 安装部署使用略. Jenkins: 2.46.2版本安装部署略(修改jenkins执行用户为root,省得配置权限) JDK: 安装部署略. Maven: 安装部署略. 服务器免密 ...

  5. .Net Core自动化部署系列(二):使用Jenkins打造镜像发布流水线

    一.简介 之前写过一篇关于Jenkins搭配GitLab实现.net core项目自动发布到IIS的博文,比较简单哈,只是个Demo.本篇我们将会使用Jenkins搭配GitLab实现镜像的自动打包和 ...

  6. 项目案例之Pipeline流水线发布JAVA项目(三)

    项目案例之Pipeline流水线发布JAVA项目(三) 链接:https://pan.baidu.com/s/1NZZbocZuNwtQS0eGkkglXQ 提取码:z7gj 复制这段内容后打开百度网 ...

  7. 持续集成+自动化部署[代码流水线管理及Jenkins和gitlab集成]

    转载:https://www.abcdocker.com/abcdocker/2065 一.代码流水线管理 Pipeline名词顾名思义就是流水线的意思,因为公司可能会有很多项目.如果使用jenkin ...

  8. 项目案例之Pipeline流水线及流水线发布PHP项目(二)

    项目案例之Pipeline流水线及流水线发布PHP项目(二) 链接:https://pan.baidu.com/s/1NZZbocZuNwtQS0eGkkglXQ 提取码:z7gj 复制这段内容后打开 ...

  9. 持续集成与自动化部署---代码流水线管理及Jenkins和gitlab集成

    1.代码流水线管理 Pipeline名词顾名思义就是流水线的意思,因为公司可能会有很多项目.如果使用jenkins构建完成后,开发构建项目需要一项一项点击,比较麻烦.所以出现pipeline名词. 代 ...

随机推荐

  1. 外星人电脑出现the system is running in low graphics mode的解决方法

    问题现象: 执行删除GCC5.4.0: sudo  apt-get remove gcc gcc-5重启电脑后,就显示the system is running in low graphics mod ...

  2. orm之peewee

    peewee是一款orm框架,为什么选择peewee,是因为它比较简单和Django比较类似,而且还有一个async-peewee,可以进行异步化. 如何定义model和生成表 ''' 我们要定义两张 ...

  3. 2019.9.19HTML基础

    html:超文本标记语言,不是编程语言,是标签语言,显示数据. 有双标签和单标签 双标签:有开始有结束,<body></body> 单标签:只有一个.<img src=# ...

  4. PAT Basic 1006 换个格式输出整数 (15 分)

    让我们用字母 B 来表示“百”.字母 S 表示“十”,用 12...n 来表示不为零的个位数字 n(<),换个格式来输出任一个不超过 3 位的正整数.例如 234 应该被输出为 BBSSS123 ...

  5. Hive Server2(五)

    HiveServer2 基本概念介绍 1.HiveServer2基本介绍 HiveServer2 (HS2) is a server interface that enables remote cli ...

  6. AIX 下的 find 命令使用

      平常我们使用 find , -size +100M/K/G ,就可以找到相应大小的文件了. 可是 AIX 平台下,却好像不能使用,虽然执行起来不报错,但是查找出来的文件却并不是我们想要的.所以 m ...

  7. js判断网页标题包含某字符串则替换

    js判断网页标题包含某字符串则替换,代码如下: var tit=document.title; if(tit.indexOf("afish")>0){ tit=tit.rep ...

  8. 【bzoj 4059】Non-boring sequences

    这题的重点不在于代码,而在于复杂度分析…… 首先我们肯定会写 $n^2$ 暴力,就是每次暴力扫 $[l,r]$ 区间,找到任意一个在此区间中只出现过一次的数.设其下标为 $mid$,显然在这个区间中任 ...

  9. JS 转Boolean的两张方法

    // 1.Boolean() console.log(Boolean(123)); // true console.log(Boolean(undefined)); // false console. ...

  10. BZOJ1787 [Ahoi2008]Meet 紧急集合[结论题]

    location. 求到树上三点距离和最短的点及此距离. 这个不还是分类讨论题么,分两类大情况,如下图. 于是乎发现三个点对的lca中较深的那个lca是答案点.距离就是两两点对距离加起来除以2即可.这 ...