私はジェンキンスで実行するには、このGroovyのスクリプトを取得しようとしている:のGroovyスクリプト:依存関係の管理
import java.lang.ProcessBuilder.Redirect
import hudson.model.*
import hudson.util.*
import hudson.scm.*
//I'm not sure that these 2 imports are correct:
import hudson.plugins.tfs.model.ChangeSet;
import hudson.plugins.tfs.model.ChangeSet.Item;
// work with current build
def build = Thread.currentThread()?.executable
// get ChangesSets with all changed items
def changeSet= build.getChangeSet()
List<Item> items = changeSet.getItems()
def affectedFiles = items.collect { it.paths }
// get file names
def fileNames = affectedFiles.flatten().findResults
// setup log files
def stdOutFile = "${build.rootDir}\\stdout_groovy.txt"
def stdErrFile = "${build.rootDir}\\stderr_groovy.txt"
//execute a command for each file
fileNames.each
{
def params = ["cmd.exe", "/C", "dir ${it}"]
def processBuilder = new ProcessBuilder(params)
// redirect stdout and stderr to log files
processBuilder.redirectOutput(new File(stdOutFile))
processBuilder.redirectError(new File(stdErrFile))
def process = processBuilder.start()
process.waitFor()
// print log files
println new File(stdOutFile).readLines()
System.err.println new File(stdErrFile).readLines()
}
私の目標は、変更されたファイルのみを反復処理することができ、それらのファイルをコピーすることです別の場所に移動します。私はProcess only changed filesのTFSで動作するコードのバージョンを作成しようとしています。私は2つのエラーを取得:クラスhudson.plugins.tfs.model.ChangeSet
を解決することができませんクラスhudson.plugins.tfs.model.ChangeSet.Item
を解決する
できないがGroovyのため、これは理にかなっていますTFSコードを取得する場所がわかりません。 私はhttps://wiki.jenkins-ci.org/display/JENKINS/Team+Foundation+Server+PluginにTFSプラグインを使用しています。私はGroovyが依存管理のためにGrapeを使用できることを読んだことがあります。 TFSプラグインがhttp://mvnrepository.com/にあったなら、私はGroovyのは、このようになります最新のコードを取得できるように、それを使用することができます。
@Grapes(
@Grab(group='org.apache.maven.scm', module='maven-scm-provider-tfs', version='1.9.4')
)
しかし、TFSプラグインがhttp://mvnrepository.com/ではありません。プラグインのソースはhttps://github.com/jenkinsci/tfs-pluginです。では、どのようにしてGroovyにコードを取得するかを伝えることができますか?理想的には、プラグインコードをビルドマシンにコピーして最新の状態に保つ必要はありません。 (私は自分のコードに誤りがあると確信しています。ただ、依存性管理を試してみようとしています(ただし、コーディングエラーを指摘することは自由です)。ありがとう。
プラグインがインストールされています。たぶん私のインポートステートメントが間違っていますか? import hudson.plugins.tfs.model.ChangeSet; import hudson.plugins.tfs.model.ChangeSet.Item; –
私はtfs apiをチェックして、これらのインポートが正しいように見えます。クラスパスの問題である必要があります。どのようにスクリプトを実行していますか?仕事から?システムのグルーヴィースクリプトとして実行していますか?スクリプトコンソールから実行しようとするとどうなりますか?スクリプトコンソールからテストするとき、この 'Jenkins.instance.getJob(" jobName ")のようなビルドを得ることができます。getBuild( "1") '、ここで、' getBuild'の数値パラメータはそのジョブの有効なビルド番号です。 – TheEllis