[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'
}
}
}
}
~~~
- DevOps介绍
- 持续集成流程
- git工作流实践
- 新人准备git环境
- git工作流最佳实践
- jenkins基础入门
- jenkins简介
- jenkins安装(docker)
- 源码拉取
- maven构建
- 应用发布
- 结合gitlab版本管理
- jenkins-docker部署
- harbor镜像发布
- jenkins集成SonarQube
- SonarQube代码检测
- 集成SonarQube
- jenkins-pipeline
- 构建pipeline任务
- pipeline基础结构
- pipeline核心语法
- jenkinsfile构建
- 完整案例
- 整合钉钉发送通知
- 脚本使用凭证信息
- jenkins结合k8s使用
- k8s架构及基础概念
- k8s操作命令
- jenkins部署k8s
- 附录(其他未完成)
- jenkins高可用服务搭建
- gitlab-docker环境搭建
- 开发人员安装git
- JDK与maven
- docker安装gitlab
- docker安装
- docker-compose安装
- harbor安装
- SonarQube安装
- 2.暂时没写的内容
- 构建结果邮件发送
- 已有项目上传gitlab