2017-08-15 22 views
3

私はGroovyスタイルのスクリプトを使用するJenkins Scripted Pipelineを使用しており、パイプラインを記述するJenkinsfileを作成しています。 git repo nameと同じフォルダ名でワークスペースを作成し、ワークスペースフォルダ内のコードをチェックアウトする必要があります。 私の質問は、checkout scmを実行する前に、git repoの名前またはgit repoのURLを知る方法はありますか?Jenkinsパイプラインでリポジトリ名を取得する方法

+0

だけで簡単に明確化してリポジトリにも動作しますが、 Jenkinsのスクリプトパイプラインでは、JenkinsファイルがJenkinsのパイプライン定義でコーディングされているか、JenkinsfileがSCMからコードされていますか? –

+0

これにはいくつかの情報が含まれている可能性があるscm変数があります。 – StephenKing

+0

@ manish-joshi - 私はJenkinsfileをレポに保存しました。 – srini

答えて

5
String determineRepoName() { 
    return scm.getUserRemoteConfigs()[0].getUrl().tokenize('/')[3].split("\\.")[0] 
} 

この比較的醜いコードは、repoNameを取得するために使用します。あなたは何を得るために、いくつかの文字列OPSを行う必要があり、そこから

scm.getUserRemoteConfigs()[0] .getUrl()

:キーは、レポのURLがに保存されていることです欲しいです。


更新:。 String determineRepoName() { return scm.getUserRemoteConfigs()[0].getUrl().tokenize('/').last().split("\\.")[0] }

これは、より深い階層(開始時に2 //が含まれていませんhttps://domain/project/subproject/repoまたはssh Gitのレポ

+1

私はこのエラーを取得しました 'org.jenkinsci.plugins.scriptsecurity.sandbox.RejectedAccessException:スクリプトはメソッドhudson.plugins.git.GitSCM getUserRemoteConfigs'を使用することを許可されていません – srini

+1

私はhttpsからヒントを使用しました: //stackoverflow.com/a/38255364/2018909でスクリプト例外を承認し、リポジトリ名を取得できました。ありがとう@herm – srini

関連する問題