鹤壁做网站公司哪家好,怎么做微信小程序平台,网站做行测题,企业网站现状什么是Jenkins pipeline
Jenkins Pipeline是Jenkins的一个插件#xff0c;它允许你以代码的方式定义和管理持续集成和交付流水线。通过Jenkins Pipeline#xff0c;你可以将整个软件交付过程定义为一个可重复、可扩展和可管理的流水线。这个流水线可以包括构建、测试、部署和…什么是Jenkins pipeline
Jenkins Pipeline是Jenkins的一个插件它允许你以代码的方式定义和管理持续集成和交付流水线。通过Jenkins Pipeline你可以将整个软件交付过程定义为一个可重复、可扩展和可管理的流水线。这个流水线可以包括构建、测试、部署和其他各种操作使得软件交付过程更加自动化和可靠。Jenkins Pipeline支持使用Groovy语言编写流水线脚本你可以通过代码的方式定义流水线的各个阶段和操作以及它们的顺序和依赖关系。这使得流水线的定义更加灵活和可维护同时也方便了版本控制和团队协作。
Pipeline 关键概念
以下是Jenkins Pipeline的关键概念它们与Pipeline语法请参阅下文概述密切相关。
管道Pipeline一个管道是一个用户定义的CD管道模型。管道的代码定义了整个构建过程通常包括构建应用程序、测试应用程序以及部署应用程序的阶段。节点Node节点是一个属于Jenkins环境的机器并且能够执行管道。阶段Stage阶段块定义了整个管道中执行的概念上不同的任务子集例如“构建”、“测试”和“部署”阶段许多插件使用它来可视化或呈现Jenkins Pipeline的状态/进度。步骤Step一个单独的任务。从根本上说一个步骤告诉Jenkins在某个特定的时间点或过程中的“步骤”做什么。例如要执行shell命令make请使用sh步骤sh ‘make’。当一个插件扩展Pipeline DSL时[1] 这通常意味着该插件已经实现了一个新的步骤。
以下Pipeline代码框架说明了Declarative Pipeline语法和Scripted Pipeline语法之间的根本区别。
请注意阶段和步骤上文是Declarative和Scripted Pipeline语法中都通用的元素。
Jenkins Pipeline 基础示例
Jenkins Pipeline 分声明式和脚本式两种写法差不多。
1声明式 Pipeline 示例
在声明式 Pipeline语法中pipeline块定义了整个Pipeline中执行的所有工作。
pipeline {agent any // 在任何可用的代理上执行此Pipeline或其任何阶段stages {stage(Build) {steps {git branch: master, credentialsId: gitee_wlddhj, url: https://gitee.com/personal_practice/demo.git}}stage(Test) {steps {sh label: , script: mvn clean package -Dmaven.test.skiptrue -f pom.xml}}stage(Deploy) {steps {sh label: , script: cp target/*.jar /data/product/deploy/}}}
}2脚本式 Pipeline 示例
在脚本式 Pipeline语法中一个或多个node块在整个Pipeline中执行核心工作。虽然这不是脚本式 Pipeline语法的强制要求但将Pipeline的工作限制在一个node块中可以做两件事
通过将项目添加到Jenkins队列来安排块中包含的步骤运行。一旦节点上的执行器空闲步骤就会运行。创建一个工作区特定于该特定Pipeline的目录可以在其中对从源控制中检出的文件进行工作。
node {stage(pull code) {git branch: master, credentialsId: gitee_wlddhj, url: https://gitee.com/personal_practice/demo.git}stage(build) {sh label: , script: mvn clean package -Dmaven.test.skiptrue -f pom.xml} stage(release) {sh label: , script: cp target/*.jar /data/product/deploy/}stage(start) {ansiColor(xterm) {sh JENKINS_NODE_COOKIEdontKillMe nohup java -jar /data/product/deploy/spring-demo-0.0.1-SNAPSHOT.jar demo.log }}
}注意在shell环境中使用nohup并且 某个程序后会后台执行退出当前链接后程序依然可以执行。 但是在Jenkins pipeline中nohup在Jenkins编译任务结束时运行的程序会自动退出。针对该解决办法是设置系统环境变量JENKINS_NODE_COOKIEdontKillMe Jenkins 环境变量
Jenkins Pipeline通过全局变量env来公开环境变量在Jenkinsfile的任何地方都可以使用。完整的可在Jenkins Pipeline中访问的环境变量列表在${YOUR_JENKINS_URL}/pipeline-syntax/globals#env中有详细说明包括
BUILD_ID 当前构建的ID对于在Jenkins版本1.597中创建的构建与BUILD_NUMBER相同
BUILD_NUMBER 当前构建的编号例如153
BUILD_TAG 形如jenkins-${JOB_NAME}-${BUILD_NUMBER}的字符串方便放入资源文件、jar文件等以便更容易识别
BUILD_URL 可以找到此构建结果的URL例如http://buildserver/jenkins/job/MyJobName/17/
EXECUTOR_NUMBER 标识当前执行器在同一台机器上的执行器执行此构建的唯一编号。这是您在“构建执行器状态”中看到的编号只是编号从0开始而不是1
JAVA_HOME 如果您的任务配置为使用特定的JDK则此变量设置为指定JDK的JAVA_HOME。当设置了此变量时PATH也会更新以包括JAVA_HOME的bin子目录
JENKINS_URL Jenkins的完整URL例如https://example.com:port/jenkins/注意仅当在“系统配置”中设置了Jenkins URL时可用
JOB_NAME 此构建的项目名称例如foo或foo/bar
NODE_NAME 当前构建正在运行的节点的名称。对于Jenkins控制器设置为’master’。
WORKSPACE 工作空间的绝对路径
可以像访问Groovy Map中的任何键一样引用或使用这些环境变量例如
pipeline {agent anystages {stage(Example) {steps {echo Running ${env.BUILD_ID} on ${env.JENKINS_URL}}}}
}设置环境变量
在Jenkins Pipeline中设置环境变量的方法取决于使用的是声明式Pipeline还是脚本化Pipeline。
声明式Pipeline支持environment指令而脚本化Pipeline的用户必须使用withEnv步骤。
1声明式Pipeline
pipeline {agent anyenvironment {CC clang}stages {stage(Example) {environment {DEBUG_FLAGS -g}steps {sh printenv}}}
}2脚本化Pipeline
node {/* .. snip .. */withEnv([PATHMAVEN${tool M3}/bin]) {sh mvn -B verify}
}参考
https://www.jenkins.io/doc/book/pipeline/