LoginSignup
7
3

More than 3 years have passed since last update.

【Jenkins】Pipelineのstage間で変数を引き回す

Posted at

対象読者

  • Jenkins Pipeline初心者向け
  • Pipelineの仕組みもそこまで深く理解していない方向け

背景

最近ようやっとJenkinsジョブをコード管理せねばと思い立って、Webコンソールに直書きしていたジョブたちをコードに起こす作業に取り掛かりました。
既存のジョブではシェルの実行結果を次のシェルや後続のジョブへ引き回すために、EnvInject Pluginを用いて環境変数のインジェクトをよく行なっていました。
ところがPipelineになるとこれまで通り「テキストファイルに値を書き込んでその値をインジェクトする」使い方が見つけられなかったため、他の方法がないかと試行錯誤したところ、stage間でシェルの実行結果を引き回せることに気付いたのでここに記します。

サンプルコード

こちらのコードでは、Androidアプリをビルドした後にそのアプリの情報をbuild.gradleファイルから引っ張り出して、その値を次のstageで利用するサンプルになっています。
(ビルドのシェルは省略しています。)

サンプルコード
pipeline {
    stages {
        stage('Build App') {
            steps {
                sh'''
                    # Androidアプリのビルド
                '''
            }
        }
        stage('Read App Info') {
            steps {
                script {
                    MIN_SDK_VERSION = sh(script: "cat mobile/build.gradle | grep \"minSdkVersion\" | sed -e \"s/[^0-9]//g\"", returnStdout: true)
                    TARGET_SDK_VERSION = sh(script: "cat mobile/build.gradle | grep \"targetSdkVersion\" | sed -e \"s/[^0-9]//g\"", returnStdout: true)
                    COMPILE_SDK_VERSION = sh(script: "cat mobile/build.gradle | grep \"compileSdkVersion\" | sed -e \"s/[^0-9]//g\"", returnStdout: true)
                    BUILD_TOOLS_VERSION = sh(script: "cat mobile/build.gradle | grep \"buildToolsVersion\" | grep -o -E \"[0-9]+.[0-9]+.[0-9]+\"", returnStdout: true)
                }
            }
        }
        stage('Print App Info') {
            steps {
                script {
                    print MIN_SDK_VERSION
                    print TARGET_SDK_VERSION
                    print COMPILE_SDK_VERSION
                    print BUILD_TOOLS_VERSION
                }
            }
        }
    }
}
実行結果
[Pipeline] echo
19

[Pipeline] echo
27

[Pipeline] echo
27

[Pipeline] echo
27.0.3

Read App Infoのscriptで生成した変数が次のstageであるPrint App Infoにも引き回せました。

7
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
3