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

如何将文件从其他URL下载至CloudBees/Jenkins并推送至Artifactory?

解决CloudBees上Python脚本保存文件及推送至Artifactory的问题

一、CloudBees/Jenkins中保存下载的ZIP文件

CloudBees(基于Jenkins)通常运行在Linux环境中,Windows风格路径(如C:\xxx)无法识别,推荐使用Jenkins工作空间路径存储文件,步骤如下:

  1. 获取Jenkins工作空间路径
    Jenkins会自动将当前构建的工作空间路径注入环境变量WORKSPACE,Python中可通过os.environ获取。
  2. 修改文件保存路径
    将原代码中的Windows路径替换为工作空间下的路径,确保跨平台兼容。

修改后的代码示例:

import os
import requests
from requests.adapters import HTTPAdapter
from urllib3.util.retry import Retry

jenkins_session = requests.Session()
jenkins_session.auth = (jenkins_auth_userid, jenkins_user_token)
retry = Retry(connect=10, backoff_factor=5)
adapter = HTTPAdapter(max_retries=retry)
jenkins_session.mount('http://', adapter)
jenkins_session.mount('https://', adapter)

req = jenkins_session.get(url)
print(req.status_code)

# 获取Jenkins工作空间,兜底用当前目录
workspace = os.environ.get('WORKSPACE', '.')
# 拼接工作空间与文件名,自动适配Linux路径分隔符
file_path = os.path.join(workspace, name_of_file_to_be_downloaded)

# with语句会自动关闭文件,无需手动调用close()
with open(file_path, 'wb') as output:
    output.write(req.content)

注意:确保Jenkins构建用户对工作空间拥有读写权限,CloudBees默认配置下无需额外设置。

二、将文件推送至Artifactory

有两种常用实现方式,可根据场景选择:

方式1:Python脚本直接上传(使用jfrog-client库)

官方维护的jfrog-client库支持直接调用Artifactory API上传文件:

  1. 安装依赖:
pip install jfrog-client
  1. 上传代码示例:
from jfrog import JfrogClient

# 初始化Artifactory客户端
artifactory_client = JfrogClient(
    url="https://你的Artifactory地址",
    auth=("用户名", "密码/API密钥")
)

# 上传文件到指定仓库路径
artifactory_client.upload(
    local_path=file_path,  # 之前保存的文件路径
    target_path="generic-local/目标文件夹/" + name_of_file_to_be_downloaded
)

方式2:Jenkins Pipeline集成Artifactory插件(推荐CI/CD场景)

通过CloudBees的Artifactory插件实现上传,无需修改Python脚本,在Jenkinsfile中添加步骤:

pipeline {
    agent any
    stages {
        stage('Upload to Artifactory') {
            steps {
                rtUpload(
                    serverId: 'Artifactory-Server', // Jenkins中配置的Artifactory服务器ID
                    spec: '''{
                        "files": [
                            {
                                "pattern": "*.zip", // 匹配工作空间中的ZIP文件
                                "target": "generic-local/目标文件夹/"
                            }
                        ]
                    }'''
                )
            }
        }
    }
}

注意:需提前在CloudBees中配置Artifactory服务器(凭证、地址),并确保构建账号拥有Artifactory对应仓库的上传权限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 15:01:01