💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
[TOC] # 配置方法 Jenkinsfile方式需要将脚本内容编写到项目中的Jenkinsfile文件中,每次构建会自动拉取项目并且获取项目中Jenkinsfile文件对项目进行构建 - 配置pipeline | 配置pipeline | | :----------------------------------------------------------: | | ![](https://img.kancloud.cn/74/09/74093a78a023636b07cfcd25d7c4c40c_1920x970.png) | - 准备Jenkinsfile | 准备Jenkinsfile文件 | | :----------------------------------------------------------: | | ![](https://img.kancloud.cn/88/24/88249f1a5a8297a77187d0744cb4b8be_1920x952.png) | - 测试效果 | 测试效果 | | :----------------------------------------------------------: | | ![](https://img.kancloud.cn/d3/7e/d37e30f18932afe7349dd968bd698e21_1920x774.png) | # Jenkinsfile 的使用 上面讲过流水线支持两种语法,即声明式和脚本式,这两种语法都支持构建持续交付流水线。并且都可以用来在 Web UI 或 Jenkinsfile 中定义流水线,不过通常将 Jenkinsfile 放置于代码仓库中(当然也可以放在单独的代码仓库中进行管理)。 创建一个 Jenkinsfile 并将其放置于代码仓库中,有以下好处 * 方便对流水线上的代码进行复查/迭代 * 对pipeline进行版本审计跟踪 * 流水线真正的源代码能够被项目的多个成员查看和编辑 ## 环境变量 ### 1.静态变量 Jenkins有许多内置变量可以直接在Jenkinsfile中使用,可以通过JENKINS\_URL/pipeline/syntax/globals#env 获取完整列表。目前比较常用的环境变量如下 * BUILD\_ID:当前构建的ID,与Jenkins版本 1.597+中的BUILD\_NUMBER完全相同 * BUILD\_NUMBER:当前构建的 ID,和BUILD\_ID一致 * BUILD\_TAG:用来标识构建的版本号,格式为:jenkins-${JOB\_NAME}-${BUILD\_NUMBER}, 可以对产物进行命名,比如生产的jar包名字、镜像的TAG等; * BUILD\_URL:本次构建的完整 URL,比如:[http://buildserver/jenkins/job/MyJobName/17/;](http://buildserver/jenkins/job/MyJobName/17/%EF%BC%9B) * JOB\_NAME:本次构建的项目名称 * NODE\_NAME:当前构建节点的名称; * JENKINS\_URL:Jenkins 完整的 URL,需要在SystemConfiguration设置; * WORKSPACE:执行构建的工作目录。 示例如果一个流水线名称为`print_env`,第2次构建,各个变量的值。 ~~~bash BUILD_ID: 2 BUILD_NUMBER: 2 BUILD_TAG:jenkins-print_env-2 BUILD_URL:http://192.168.10.16:8080/job/print_env/2/ JOB_NAME:print_env NODE_NAME:built-in JENKINS_URL:http://192.168.10.16:8080/ WORKSPACE:/bitnami/jenkins/home/workspace/print_env ~~~ 上述变量会保存在一个Map中,可以使用env.BUILD\_ID或env.JENKINS\_URL引用某个内置变量 ~~~json pipeline { agent any stages { stage('print env') { parallel { stage('BUILD_ID') { steps { echo "$env.BUILD_ID" } } stage('BUILD_NUMBER') { steps { echo "$env.BUILD_NUMBER" } } stage('BUILD_TAG') { steps { echo "$env.BUILD_TAG" } } } } } } ~~~ ### 2.动态变量 动态变量是根据某个指令的结果进行动态赋值,变量的值根据指令的执行结果而不同。如下所示 * returnStdout:将命令的执行结果赋值给变量,比如下述的命令返回的是clang,此时 CC 的值为“clang”。 * returnStatus:将命令的执行状态赋值给变量,比如下述命令的执行状态为 1,此时 EXIT\_STATUS 的值为 1。 ~~~json //Jenkinsfile (Declarative Pipeline) pipeline { agent any environment { // 使用 returnStdout CC = """${sh( returnStdout: true, script: 'echo -n "clang"' //如果使用shell命令的echo赋值变量最好加-n取消换行 )}""" // 使用 returnStatus EXIT_STATUS = """${sh( returnStatus: true, script: 'exit 1' )}""" } stages { stage('Example') { environment { DEBUG_FLAGS = '-g' } steps { sh 'printenv' } } } } ~~~