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

如何配置Jenkins的Run任务以选择Artifactory中的快照版本执行测试

配置Jenkins Run任务的分步指南

我来一步步帮你搞定这个Run任务的配置,让执行人员能轻松选择Build任务部署到Artifactory的快照版本,顺利运行测试脚本:

1. 给Run任务添加参数化构建(核心:让用户选版本)

首先得让Run任务支持选择特定的快照版本,这里推荐用Active Choices Parameter(需要先安装Jenkins的「Active Choices」插件),它能动态从Artifactory拉取可用的快照版本列表,比静态选择框灵活得多。

配置步骤:

  • 进入Run任务的「配置」页面,找到「参数化构建过程」,点击「添加参数」→「Active Choices Reactive Reference Parameter」
  • 参数名称设为SNAPSHOT_VERSION(后续脚本要用到这个变量),显示名称可以叫「选择要测试的快照版本」
  • 在「脚本」区域选择Groovy脚本,填入以下代码(记得替换成你的Artifactory地址、仓库名、groupId和artifactId):
    // 替换成你的Artifactory信息
    def artifactoryUrl = "http://your-artifactory-domain/artifactory"
    def repoKey = "your-snapshot-repository-key"
    def groupId = "com.yourcompany.yourproject"
    def artifactId = "your-build-artifact-id"
    
    // 调用Artifactory的版本搜索API
    def auth = "Basic " + "your-artifactory-username:your-password".bytes.encodeBase64().toString()
    def conn = new URL("${artifactoryUrl}/api/search/versions?g=${groupId}&a=${artifactId}&repos=${repoKey}").openConnection()
    conn.setRequestMethod("GET")
    conn.setRequestProperty("Authorization", auth)
    
    // 解析返回的JSON,提取版本并倒序(最新版本在前)
    def response = new groovy.json.JsonSlurper().parse(conn.inputStream)
    return response.versions.unique().reverse()
    
  • 注意:别硬编码用户名密码!最好用Jenkins的凭证管理,把Artifactory的凭证存起来,再通过Groovy脚本安全获取(可搜索Jenkins Groovy获取凭证的方法)。

如果不想装插件,也可以用静态的「Choice Parameter」,但每次有新版本都要手动更新选项,不太推荐。

2. 拉取Git代码到Run任务的工作空间

Run任务需要myrunsubFolder里的测试代码,所以在「源码管理」里配置Git:

  • 填入和Build任务相同的Git仓库地址,选择对应的分支
  • 这样构建时,Jenkins会把整个仓库拉到Run任务的工作空间,包含mybuildsubFolder和myrunsubFolder两个子文件夹。

3. 配置构建步骤:用选中的版本执行测试脚本

首先要确保myrunsubFolder里的pom.xml支持参数化依赖版本——也就是把Build任务产出的artifact的版本改成变量,比如:

<dependency>
    <groupId>com.yourcompany.yourproject</groupId>
    <artifactId>your-build-artifact-id</artifactId>
    <version>${snapshot.version}</version> <!-- 这里用变量替代固定版本 -->
</dependency>

然后回到Run任务的「构建步骤」,添加一个「执行 shell」步骤,填入以下脚本:

# 进入测试代码目录
cd ${WORKSPACE}/myrunsubFolder
# 执行Maven命令,传入选中的快照版本和其他参数
mvn clean install -P abc -Dformat.type=xyz -Dsnapshot.version=${SNAPSHOT_VERSION}
  • 这里的${SNAPSHOT_VERSION}就是我们第一步配置的参数,会自动替换成用户选择的版本。
  • 另外要确保Jenkins服务器的Maven能访问Artifactory的快照仓库:可以在Jenkins全局配置里设置Maven的settings.xml,或者在Run任务的Maven步骤里指定自定义的settings.xml,里面配置好Artifactory的仓库地址和凭证。

4. (可选)用Artifactory插件简化配置

如果你的Jenkins装了「Artifactory Plugin」,可以省去写Groovy脚本的麻烦:

  • 在参数化构建里选择「Artifactory Query Parameter」
  • 配置好Artifactory服务器、快照仓库、groupId和artifactId,插件会自动拉取所有可用的快照版本
  • 同时插件还能自动配置Maven的settings,确保能从Artifactory拉取依赖,不用手动维护settings.xml,更省心。

5. (可选)关联Build和Run任务,直接选择Build产出的版本

如果希望用户能直接选择某个Build任务的构建编号,自动获取对应的快照版本,可以这样做:

  • 在Build任务里,添加一个构建步骤,把当前构建的版本号写入Jenkins变量:
    # 获取当前项目的版本号,存入Jenkins环境变量
    echo "SNAPSHOT_VERSION=$(mvn help:evaluate -Dexpression=project.version -q -DforceStdout)" > build.env
    
  • 安装「EnvInject Plugin」,在Build任务里添加「Inject environment variables」步骤,加载刚才的build.env文件
  • 然后在Run任务的参数化构建里,添加「Build Parameter」,选择你的Build任务,这样用户可以选择某个Build编号,Run任务就能自动获取到该Build产出的SNAPSHOT_VERSION。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 04:20:40