BluePen BluePen
  • Jenkins
  • OS
  • 算法
随笔
分类
标签
归档
关于
留言板
GitHub (opens new window)

Alex

一个好人
  • Jenkins
  • OS
  • 算法
随笔
分类
标签
归档
关于
留言板
GitHub (opens new window)
  • Jenkins 安装
  • Jenkins 权限控制
  • Jenkins 环境变量
    • 来源
    • 使用
  • 流水线语法
  • 流水线任务
  • Jenkins 邮件通知
  • Jenkins 参数化构建
  • Jenkins 使用 FTP插件上传文件
  • Jenkins 使用提交信息
  • Jenkins 执行命令和脚本
  • 多分支流水线插件
  • Jenkins REST api
  • Jenkins 踩坑总结
  • Jenkins
Alex
2019-10-01
目录

Jenkins 环境变量

-> 来源

使用变量在流水线脚本中是非常方便且强大的功能,变量的来源主要有三个部分

  • 任务运行所在的节点的系统环境变量(增量需要重新建立连接生效)
  • Jenkins 及安装的插件提供的全局变量
    • http://<jenkins-url>/pipeline-syntax/globals对应的全局变量
    • http://<jenkins-url>/systemInfo(对应 系统管理 -> 系统信息) 环境变量的部分
    def env = System.getenv()
    print env
    
    1
    2
    • http://<jenkins-url>/env-vars.html, 在任务执行脚本中可以使用的环境变量
    • 在 系统管理 -> 系统配置 -> 全局属性 中添加的环境变量
    • 插件提供的环境变量参考插件使用说明
  • 在流水线脚本中动态定义的环境变量
  • 流水线定义的参数在运行过程中会被设定为同名环境变量

-> 全局变量

参考 http://<jenkins-url>/pipeline-syntax/globals

  • pipeline
  • scm
  • currentBuild
  • env
  • params
  • docker

-> 使用

  • 全局变量可在脚本中直接使用,如 pipeline, scm, currentBuild等
  • 推荐统一使用 "${env.ENV_NAME}"的方式来引用全局环境变量 env里的内容

    注意

    特别注意要使用双引号包裹环境变量

  • 插件暴露的接口函数, 可直接使用
    • eg: checkout
  • 有一些插件变量,是作为参数传递给插件暴露的函数接口,使用时不能使用双引号包裹
    • eg: 邮件插件,emailext to: '$DEFAULT_RECIPIENTS'

-> 常用环境变量

//env
echo "workspace: ${env.WORKSPACE}"
echo "node: ${env.NODE_NAME}"
echo "job: ${env.JOB_NAME}"
echo "curr-branch: ${env.BRANCH_NAME}" //multi branch only
// GIT_BRANCH = 'origin/' + sh(returnStdout: true, script: 'git rev-parse --abbrev-ref HEAD').trim()
echo "author: ${env.CHANGE_AUTHOR}"
echo "build_id: ${env.BUILD_NUMBER}"
echo "log: ${env.BUILD_URL}console"
echo "job url: ${env.JOB_URL}"
echo "display url: ${env.RUN_DISPLAY_URL}"

//currentBuild
echo "result: ${currentBuild.result}" //可读写,中间过程时可能为null
echo "result: ${currentBuild.result}" //只读,not null
echo "duration: ${currentBuild.durationString}"
echo "fullDisplayName: ${currentBuild.fullDisplayName}"
// folder1 » folder2 » foo #123
echo "absoluteUrl: ${currentBuild.absoluteUrl}"

script{
    Date start = new Date(currentBuild.startTimeInMillis)
    Date end = new Date(currentBuild.startTimeInMillis + currentBuild.duration)
    String startDate = start.format("YYYY-MM-dd HH:mm:ss.Ms")
    String endDate = end.format("YYYY-MM-dd HH:mm:ss.Ms")
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
编辑此页 (opens new window)
更新于: 2019-10-01
Jenkins 权限控制
流水线语法

← Jenkins 权限控制 流水线语法→

Copyright © 2019-2022 | yxxy | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式