2017-02-23 5 views
1

gitに含まれるリージョンに関連するjenkins 2.0パイプラインスクリプトにバグがありますので、私の場合のように大規模なモノレポの場合、マスターへの各チェックインは複数のパイプラインキックオフされることは望ましい行動ではない。 だから視覚化する:パイプライン2.0でグルービットフェッチを実行するgroovyスクリプト

トップレベル:
- >アプリケーションフォルダ1
- >アプリケーションフォルダ2

を私がやりたいことはgitのは、そう、私はgitのを行うことができます最初のフェッチを行うことです特定のフォルダに何かが変更されているかどうかを確認するためにdiffをし、それは、その特定のフォルダのためのパイプラインを実行している場合は何も私が持っている

コードを変更しない場合は何もしないことは以下の通りです:

node{ 
git credentialsId: 'cred id', url: 'ssh://[email protected]:1234/app/mono-repo.git' 
ret = sh(script: 'git fetch; git diff origin/master remotes/origin/master | grep "folder-name"', returnStatus: true) 
    if(ret == 0){ 
     doSomething() 
    }else{ 
     doNothing() 
    } 
} 

git fetchがパーミッションエラーのために失敗するという問題は、私はチェックアウトを使用することができますが、次にdiffを手に入れることはできません。信用度を使ってgit fetchを使ってtilingを使う方法はありますか?

答えて

-2

正しいユーザーでSSH資格情報を使用していることを確認してください。あなたは、以下のキャプチャによって要約されthis answerを、確認することができます。特に

Defining SSH credentials for Jenkins

は、URLに [email protected]部分は実際のSSHユーザーであることを確認してください。私の場合はjenkinsユーザーなので、代わりにssh://[email protected]:1234/app/mono-repo.gitを使用します。

1

単純にタグへの参照を取得するのに役立ちます。注:私はこれがgit fetch --tagsと等価ではないと信じています。例えば、Does "git fetch --tags" include "git fetch"?を参照してください。

git([branches: [ 
     [name: '*/master'], 
     [name: 'refs/tags/*:refs/tags/*']], 
    credentialsId: CREDENTIALS_ID_GIT, 
    url: REPO]) 

のGitプラグインはすでにこの機能を提供することがあり、デフォルトではので、私は、ジェンキンのコンソール上でGitのプラグインがgit fetch --tagsを実行していることに気づきました。これを確認してください。

また、私はこのソリューションを追加したい:

withCredentials(
    [usernamePassword(
     credentialsId: CREDENTIALS_ID_GIT, 
     passwordVariable: 'GIT_PASSWORD', 
     usernameVariable: 'GIT_USERNAME')]) { 
     sh("git fetch --tags https://${GIT_USERNAME}:${GIT_PASSWORD}@${REPO}") 
    } 
関連する問題