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

如何在Jenkins Pipeline中使用CA Agile Central Publisher更新Rally用户故事

我之前也碰到过这个情况——自由风格任务里能轻松找到CA Agile Central Publisher的构建后操作,但Pipeline的代码片段生成器里却找不到对应的选项。其实这个插件是支持Pipeline的,只是没在生成器里显示出来,下面给你两种靠谱的解决方案:

方案1:直接使用CA Agile Central Publisher的Pipeline步骤

首先确保你安装了最新版的CA Agile Central(Rally)Jenkins插件,然后可以直接在Pipeline中调用caAgileCentralPublisher步骤,示例代码如下:

pipeline {
    agent any
    stages {
        stage('Build') {
            steps {
                // 替换成你的实际构建步骤,比如Maven打包
                sh 'mvn clean install'
            }
        }
    }
    post {
        always {
            caAgileCentralPublisher(
                rallyServer: 'https://rally1.rallydev.com',
                apiKey: credentials('rally-api-key-cred'), // 从Jenkins凭据中读取API密钥,避免硬编码
                workspaceName: '你的Rally工作区名称',
                projectName: '你的Rally项目名称',
                artifactType: 'UserStory',
                artifactIds: ['US12345', 'US67890'], // 要更新的用户故事ID列表
                buildUrl: env.BUILD_URL,
                buildNumber: env.BUILD_NUMBER,
                buildStatus: currentBuild.result ?: 'SUCCESS', // 动态获取构建状态,默认SUCCESS
                buildName: '你的Jenkins任务名称'
            )
        }
    }
}

参数说明

  • apiKey:把Rally的API密钥存在Jenkins的「Secret text」凭据中,用credentials()引用凭据ID即可
  • artifactIds:填写需要关联构建信息的User Story编号(比如US开头的ID)
  • buildStatus:通过currentBuild.result动态获取构建状态,失败时会自动传入FAILURE,未结束的构建默认用SUCCESS

如果不确定参数细节,可以先在自由风格任务中配置好CA Agile Central Publisher,然后查看任务的config.xml文件,里面会有完整的参数映射,直接对应到Pipeline步骤即可。

方案2:通过Rally REST API手动更新

如果插件的步骤满足不了复杂的自定义需求,你可以直接调用Rally的REST API来更新User Story,灵活性更高。下面是用curl命令实现的示例:

pipeline {
    agent any
    environment {
        RALLY_API_KEY = credentials('rally-api-key-cred')
        RALLY_SERVER = 'https://rally1.rallydev.com'
        WORKSPACE_OID = '12345678901' // 从Rally URL中提取,比如#/12345678901/workspace/...
        PROJECT_OID = '98765432109'
    }
    stages {
        stage('Update Rally User Stories') {
            steps {
                script {
                    def targetStories = ['US12345', 'US67890']
                    targetStories.each { storyId ->
                        // 第一步:获取User Story的Rally唯一引用地址(_ref)
                        def storyInfo = sh(
                            script: """
                                curl -s -H "Authorization: Bearer ${RALLY_API_KEY}" \
                                "${RALLY_SERVER}/slm/webservice/v2.0/UserStory?query=(FormattedID = \"${storyId}\")&workspace=${WORKSPACE_OID}&project=${PROJECT_OID}&fetch=ObjectID"
                            """,
                            returnStdout: true
                        )
                        def storyRef = new groovy.json.JsonSlurper().parseText(storyInfo).QueryResult.Results[0]._ref
                        def storyObjectId = storyRef.split('/').last()

                        // 第二步:更新User Story的Build字段,关联Jenkins构建信息
                        def updateResult = sh(
                            script: """
                                curl -s -X POST -H "Authorization: Bearer ${RALLY_API_KEY}" \
                                -H "Content-Type: application/json" \
                                "${RALLY_SERVER}/slm/webservice/v2.0/UserStory/${storyObjectId}" \
                                -d '{
                                    "UserStory": {
                                        "Build": "Build ${env.BUILD_NUMBER} - ${env.BUILD_URL}"
                                    }
                                }'
                            """,
                            returnStdout: true
                        )
                        echo "更新User Story ${storyId}的结果:${updateResult}"
                    }
                }
            }
        }
    }
}

注意事项

  • 确保Jenkins服务器能访问Rally的API地址(https://rally1.rallydev.com)
  • Rally的API密钥需要拥有目标User Story的编辑权限
  • 所有敏感信息(API密钥、OID)都要通过Jenkins凭据管理,绝对不要硬编码在Pipeline中

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:46:49