2017-11-14 7 views
2

Jenkinsの組織プラグインを使用してJenkinsを所有しており、Jenkinsfileを持つ組織内のすべてのリポジトリのすべてのブランチ/ PRを構築します。get git commit JGitとのJenkinsパイプライン内のSHA

それは素晴らしいですが、ブランチ名とコミットSHAの両方でDockerイメージにタグを付けるために、ビルドごとにコミットSHAを取得したいと思います。

ブランチ名を取得することは、env.BRANCH_NAMEでうまくいきますが、コミットSHAを取得する方法が見つかりません。

キャッチは私たちがJGitを使用しているため、git logを使用して取得することができません。

sh 'printenv'を使用してENVに含まれているものを見てみましたが、そこには何もありません。

私はまた、次のことを試してみました:

def checkoutResults = checkout scm 
echo 'checkout results: ' + checkoutResults 

が、これは次のような結果が得られます私は私のパイプラインからリビジョンを得ることができないにもかかわらず、ジェンキンスさんは私のように、それは大丈夫になっている

checkout results: [:] 

をログ内に表示されます:

... 
Obtained Jenkinsfile from 98062e5f651ca698f4303c3bb8d20665ce491294 
... 
Checking out Revision 98062e5f651ca698f4303c3bb8d20665ce491294 (docker) 

私は次のバージョンを実行しています:

  • ジェンキンス2.73.3
  • Git pluginプラグイン3.3.0
  • Pipeline: SCM Stepプラグイン2.6

は、この特定の状況でコミットSHA /リビジョンを検索する際に任意のヘルプをお願い申し上げます。

答えて

2

gitプラグインには、3.3.2リリースまでthe fixが含まれていませんでした。少なくともgit plugin 3.3.2に更新する必要があります。

2017年11月23日現在のgit pluginのリリースは3.6.4です。これには、マルチブランチパイプラインの重要な追加および変更が含まれています。

NAMEとEMAILの値の報告にknown bugもあります。regression testは、バグがすべての実装(gitとjgit)に影響することを確認しています。必要に応じてこれらの値を使用する例として、回帰テストを使用できます。

gitプラグイン3.3.0から3.3.2に更新できない場合は、パイプラインスクリプト内のJGitクラスを使用して、別の回答でコマンドラインgitで提供されているのと同じタイプのクエリを実行できる場合があります質問に。私はそれをやったことはありませんが、可能であると信じています。

+0

本当にGit Pluginをアップグレードしていただきありがとうございます3.3.0から3.3.2までの問題を解決しました! –

0

私は:-) ...あなたがいずれかを使用している場合は、あなたのパイプラインに、または共有ライブラリに追加することができます(そうでない場合は、それが開始するには良い時間です

def getCommitSha(){ 
    return sh(returnStdout: true, script: 'git rev-parse HEAD') 
} 

小さなグルーヴィーな機能を作成しました)

+0

質問に記載されているように、私はgitではなくgitを使用していますので、 'git log'か' git rev-parse'のどちらでも 'git'コマンドを呼び出すことはできません –

関連する問題