pipeline 简单来说就是一套运行在jenkins上的工作流框架,将原来独立运行于单个或多个节点的任务连接起来,实现单个任务难以完成的复杂流程编排和可视化的工作。
声明式 和 脚本式 语法:
存放方式:1.直接在jenkins界面以脚本的形式书写;2.以jenkinsfile的形式存放在代码管理仓库项目下
新建一个流水线项目(web_demo_pipeline):
流水线
演示:申明式
pipeline { agent any stages { stage('pull code') { steps { echo '=======pull code========' } } stage('build project') { steps { echo '=======build project========' } } stage('publish project') { steps { echo '=======publish project========' } } } }申明式pipeline
脚本式:
node { def mvnHome stage('pull code') { // for display purposes // Get some code from a GitHub repository echo '======pull code=========' } stage('Build project') { // Run the maven build echo '======Build code=========' } stage('publish project') { echo '======publish project=========' } }脚本式pipeline
====================================================================================================================================
建议使用声明式:
gitlab拉取代码
echo '=======pull code========' 我们就可以删掉,(流水线语法) -> 片段生成器 -> checkout: ... -> ......... -> 生成流水线脚本;如下图
将生成的代码贴到步骤中去
构建过程:我这是shell脚本mvn clean package 和 一个cp 命令,有俩种方式一种也是用生成器生成,还有一种直接 sh 'shell 脚本'
发布过程:
pipeline { agent any stages { stage('pull code') { steps { checkout([$class: 'GitSCM', branches: [[name: '*/master']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[credentialsId: 'ffc3ff54-9666-4b52-ab77-4560e5c188a9', url: 'git@gitlab.hy.com:lifubiao/dm-eureka-server.git']]]) } } stage('build project') { steps { sh label: '', script: 'mvn clean package'; sh 'cp /apprun/333/boss.war /var/lib/jenkins/workspace/web_demo_pipeline/target' } } stage('publish project') { steps { deploy adapters: [tomcat8(credentialsId: 'ae1d1d65-99cf-4418-97ca-fc526a3005aa', path: '', url: 'http://192.168.109.137:8080/')], contextPath: null, war: 'target/*.war' } } } }pipline