0

我需要获取 tfs 变更集文件(我已经完成了),以及是否使用 jenkins 服务器上的 groovy 插件添加或删除了它。

我无法弄清楚如何访问包含获取编辑类型的方法的项目类。我已经尝试了下面的代码,但无法弄清楚。

import java.lang.*
import jenkins.*
import jenkins.model.*
import hudson.*
import hudson.model.*
import hudson.util.*
import hudson.scm.*
import hudson.scm.SubversionChangeLogSet.LogEntry
import hudson.plugins.tfs.model.ChangeSet
import hudson.plugins.tfs.model.ChangeSet.Item
import groovy.util.slurpersupport.GPathResult
import groovy.xml.XmlUtil
import groovy.xml.StreamingMarkupBuilder
import java.io.Serializable
import java.lang.Cloneable
import groovy.xml.MarkupBuilder


// work with current build
def build = Thread.currentThread()?.executable

// get ChangesSets with all changed items
def changeSet = build.getChangeSet()
def items = changeSet.getItems()
println "Affected Paths"

def affectedFiles = items.collect {
 it.getAffectedPaths()
 }

def action = items.getAction()
println action.getEditType

有什么想法吗?

4

1 回答 1

0

在此处输入图像描述

根据您的描述,您似乎希望在变更集或变更集中的文件旁边显示状态,以显示它是什么类型的操作

在 TFS 中,我们将 changeType 称为Microsoft.TeamFoundation.SourceControl.WebApi.VersionControlChangeType

而不是在詹金斯中使用 groovy。您也可以通过 Rest API 获得此信息。如何,看看VSTS Rest API 从 Changeset API 返回特定项目


您应该有一个返回EditType的方法。然后 index.jelly 使用该方法来确定要显示的图标。

看看这里的示例代码:

public EditType getEditType() {
            if (action.equalsIgnoreCase("delete")) {
                return EditType.DELETE;
            }
            if (action.equalsIgnoreCase("add")) {
                return EditType.ADD;
            }
            return EditType.EDIT;
        }

源码链接:jenkinsci/tfs-plugin

于 2018-04-12T14:05:17.160 回答