Jenkins Pipeline中Artifactory.newServer的参数配置与环境变量引用
Artifactory.newServer 核心参数配置位置
代码中用到的SERVER_URL和CREDENTIALS两个参数,没有强制要求在某个固定系统配置页预存,可按实际使用习惯灵活配置,具体路径如下:
SERVER_URL即实际访问Artifactory服务的完整地址,两种配置方式二选一即可:- 直接在Jenkinsfile代码中填入实际地址,不需要进系统配置页预存
- 如果需要多流水线复用统一地址,可到「Manage Jenkins > System > Global properties > Environment variables」下新增键值对,键名自定义(比如
RT_SERVER_URL),值填实际访问地址,后续在Jenkinsfile里通过该键名引用
CREDENTIALS即Jenkins中存储的Artifactory访问凭据的唯一ID,必须提前在凭据管理模块完成配置:
配置入口为「Manage Jenkins > Security > Credentials」
配置步骤:- 选择全局可用的
(global)凭据域,避免权限范围不足导致流水线无法读取 - 根据使用的认证方式(账号密码/API Token/Access Token)选择对应的凭据类型,填入认证信息
- 给该凭据设置全局唯一的标识ID——这个ID就是要传给
credentialsId参数的值,比如凭据ID设为prod-artifactory-access-token,代码中就对应写credentialsId: 'prod-artifactory-access-token'
- 选择全局可用的
常见认知误区:很多用户误以为必须在全局Artifactory插件的配置页面提前新增服务器关联凭据才能用,实际上用Artifactory.newServer动态实例化客户端对象的场景,完全不依赖该全局配置,所有连接参数都可以在流水线脚本中动态指定。
Jenkinsfile 可直接复用的引用模板
注意:不要直接把占位符
SERVER_URL、CREDENTIALS直接当变量名丢进代码,要么填实际值,要么替换为你自定义的环境变量名、提前配好的凭据ID
pipeline { agent any environment { // 流水线级定义服务地址,无需跑到全局系统配置页设置 RT_SERVER_URL = 'https://your-company.jfrog.io/artifactory' } stages { stage('初始化Artifactory客户端') { steps { script { // 动态实例化服务连接对象 def rtServer = Artifactory.newServer( url: RT_SERVER_URL, credentialsId: 'your-predefined-jenkins-credential-id' ) // 后续可直接使用该对象完成依赖拉取、构件上传等操作 } } } } }
实操踩坑提醒
- 严禁把Artifactory的访问密钥、密码硬编码写在Jenkinsfile中,所有敏感认证信息必须通过Jenkins凭据模块存储,代码里仅传递凭据ID
- 如果引用全局配置的环境变量作为服务地址,需确认当前流水线任务的权限允许读取全局环境变量,避免出现变量为空、地址解析失败的报错
- 只有使用声明式流水线内置的
artifactoryPublisher步骤时,才需要关联全局配置页提前添加的Artifactory服务器;脚本化实例化newServer的场景,完全不需要提前在插件全局配置中做预设置
内容的提问来源于stack exchange,提问作者Evan Gertis
相关产品推荐
相关产品推荐

