如何配置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
相关产品推荐
相关产品推荐

