GenプラグインはJenkinsに(デフォルトで)インストールされていますが、Gitプラグインによって渡されるはずの環境変数を取得できません。を探しています:
GIT_COMMIT
GIT_BRANCH
GIT_PREVIOUS_COMMIT
GIT_PREVIOUS_SUCCESSFUL_COMMIT
GIT_URL
etc.次のコードを含むJenkinsfileでGithubリポジトリを指しているパイプラインジョブアイテムを使用しています。
stage 'PushToProd'
node {
git url: "https://github.com/username/fakeurl.git"
echo "Starting PushToProd"
sh 'printenv'
sh 'env'
sh 'echo $BRANCH_NAME'
sh 'echo $GIT_COMMIT'
}
Githubプラグインのものではなく、env
またはprintenv
を使用すると、多くの環境変数が得られます。
Git env変数をジョブに渡す方法に関するヒントはありますか?
更新:フリースタイルプロジェクトを使用してシェルステップでecho $GIT_COMMIT
を使用すると、Git env変数を簡単に取得できます。 Jenkinsfile + Pipelineジョブアイテムを使用して動作させる方法についても知りたいです。
二重引用符がない、中括弧がない、env.
がないため、これは機能しません。
sh 'echo $BRANCH_NAME'
これはJenkinsfileで期待どおりに機能します。
node {
sh "echo ${env.BRANCH_NAME}"
}
したがって、このStackoverflowの問題に遭遇した他の誰もが、これが現在のパイプライン状況のbugであることを認識しておく必要があります。
ここでたくさんの議論: https://issues.jenkins-ci.org/browse/JENKINS-352
基本的に、パイプラインとのいくつかの非互換性のため、プラグインは環境変数を正しく追加できません。
これは Gitプラグイン3.3.1 で修正されています
バージョン3.3.1(2017年6月23日)
私が見つけたほとんどのパイプラインの例では、コードを「ノード」クロージャでラップしています。これは、何らかの理由で、Jenkins Gitプラグインが環境変数を入力することを許可していません。
ただし、代わりに次のようにラップすると、環境変数が適切に設定されます。
pipeline {
agent {
label ('<AGENT>')
}
stages {
stage('<STAGE>') {
steps {
<CODE>
}
}
}
}
ここでどのクロージャーが重要であるかはわかりませんが、このフォーマットにより、env.GIT_COMMIT
などの環境変数にアクセスできました
このようなことをする必要があるかもしれません。
node {
def branch = env.BRANCH_NAME
sh "My branch name: ${branch}"
}