You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Jenkins共享库中定义可多场景访问的全局变量

Jenkins共享库全局变量实现方案(无需实例传递)

以下几种方案可实现无需创建传递类实例,在共享库所有文件及流水线中直接读写全局变量:

1. 利用vars脚本的@Field注解定义全局变量

在vars/globalVars.groovy中使用Groovy的@Field注解声明变量,这类变量会成为脚本的全局属性,无需实例化即可直接访问:

import groovy.transform.Field

// 定义全局可读写变量
@Field
def globalEnv = "prod"
@Field
int buildCounter = 0

// 可选:添加修改变量的方法
def updateBuildCounter() {
    buildCounter += 1
}

使用方式:

  • 流水线中直接调用:
    println globalVars.globalEnv
    globalVars.updateBuildCounter()
    
  • src目录下的Groovy类(如Functions1.groovy)中直接访问:
    def someBusinessFunc() {
        println globalVars.globalEnv
        globalVars.buildCounter = 10
    }
    

注意:这种方式的变量是跨构建共享的,并发构建时会出现变量互相覆盖的问题,仅适合存储全局常量或非构建相关的配置。

2. 扩展Jenkins内置env全局变量

Jenkins的env对象是每个构建上下文的全局变量,所有流水线步骤和共享库代码都能直接访问。可以在共享库中给env添加自定义属性:

// vars/globalVars.groovy
def initGlobalVars() {
    // 为当前构建设置全局变量,仅在本次构建中有效
    env.SHARED_BUILD_ENV = "staging"
    env.SHARED_BUILD_ID = "${env.BUILD_NUMBER}-custom"
}

使用方式:

  • 流水线中先初始化,之后直接使用:
    globalVars.initGlobalVars()
    println env.SHARED_BUILD_ENV
    env.SHARED_BUILD_ID = "new-id-123"
    
  • src目录下的业务类中直接读取/修改:
    def processBuild() {
        if (env.SHARED_BUILD_ENV == "prod") {
            // 执行生产环境逻辑
        }
    }
    

优势:每个构建的env是独立的,不会有并发冲突,适合存储构建级别的动态变量;缺点是env中的变量只能是字符串类型。

3. 使用静态类变量

在src目录下创建一个包含静态变量的类,静态变量属于类本身,无需实例化即可访问:

// src/com/yourteam/GlobalConfig.groovy
package com.yourteam

class GlobalConfig {
    // 全局常量(建议用final修饰)
    static final String DEFAULT_ENV = "dev"
    // 可修改的静态变量(注意并发问题)
    static int globalBuildCount = 0
}

使用方式:

  • src目录下的业务类中导入后使用:
    import com.yourteam.GlobalConfig
    
    def checkEnv() {
        println GlobalConfig.DEFAULT_ENV
        GlobalConfig.globalBuildCount += 1
    }
    
  • 流水线中直接导入访问:
    import com.yourteam.GlobalConfig
    println GlobalConfig.globalBuildCount
    

注意:静态变量是类级别的,所有构建共享,若用于存储构建动态数据,会出现并发覆盖问题,适合存储全局通用的常量配置。

内容的提问来源于stack exchange,提问作者Silviu Alexandru

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 06:16:08