2016-08-31 6 views
0

groovyやバッチではプロではありませんが、ここに入ります。groovy email-extパイプラインにバッチ変数を追加

jenkins pipleineで何かが失敗したときに、その一部が電子メールを送信するような面白いスクリプトがあります。何か問題が生じた場合に電子メールを送信するcatchコードがあります。

catch (Exception e){ 
    def buildNumber = env.BUILD_NUMBER 
    def buildurl = env.BUILD_URL   
    def buildjobname = env.JOB_NAME 

    bat 'for /f "delims=" %%a in (user_id.txt) do set USER_ID=%%a' 

    emailext body: "Failure in build number $buildNumber for the job name $buildjobname. See URL for more detail: $buildurl", 
    subject: "Failure in build number $buildNumber for the job name $buildjobname", 
    to: 
} 

あなたは、私はそれがファイルを読み込むことでUSER_ID変数にuser_idは、コンテンツを格納し、いくつかのバットシェルスクリプトを行うラインを持って見ることができるように。今私はto属性(これのようなもの:to: USER_ID)のUSER_ID変数を使用したいが、これはそれを行う方法ではないようだ。

は私が

編集何をmisisngています:私は、私はEnvInjectプラグインを使用する必要が推測しますか?グルーヴィーで

答えて

0

、あなたは次のように環境変数をアクセスもできます。

groovy -e "println System.env.LOGNAME" 

(USER_IDは、環境変数の場合)ので、それはあなたが

to: System.env.USER_ID 
のように変数の内容にアクセスする可能性があるかもしれません

あなたのjenkins envには、変数はすでに存在していますか?

to: env.USER_ID 

別の可能性は次のようになります。ジェンキンスパイプラインコードで

to: new File("user_id.txt").text.replace("\n", "") 
+0

いやenv.USER_ID' 'のようなものはありませんが、そこ' env.USERNAME'はあるが、ビルドを開始した人のユーザーIDを与えるものではありません。 – gants

+0

もう1つの可能性はありませんでした。( – gants

+0

"to:"の後にマップに直接ないかもしれません。** def userId = new File( "user_id.txt")で変数を作成しようとしました。 ( "\ n"、 "")**を使用して、** to:userId **の変数を使用してください... – susi

0

は、あなたが変数としてユーザーIDを取得するためにバット出力を使用することができます。例:

catch (Exception e){ 
    def buildNumber = env.BUILD_NUMBER 
    def buildurl = env.BUILD_URL   
    def buildjobname = env.JOB_NAME 

    def userId = bat script: 'for /f "delims=" %%a in (user_id.txt) do echo %%a', returnStdout: true 

    emailext body: "Failure in build number $buildNumber for the job name $buildjobname. See URL for more detail: $buildurl", 
    subject: "Failure in build number $buildNumber for the job name $buildjobname", 
    to: "${userId}" 
} 

私はどのように出力ユーザーIDをバットスクリプトを使用して(より、シェルスクリプトに慣れて申し訳ありません)にそんなによく分からないが、あなたのアイデアを得る...

+0

私はそれを試しました'class hudson.plugins.emailext.EmailExtStep.setTo()はクラスjava.lang.Stringを受け取りますがクラスjava.lang.Integer'を受け取りました – gants

+0

私はそれに応じて私の答えを編集しました。' $ {userId } "' 'userId'の代わりに、それはあなたに文字列を取得します。 – Pom12

+0

'' $ {userId} ''を書くと[email protected]、 '' $ {userId} ''は私に$ {userId}@domain.com}を与えます。 – gants

1

を使用して、それを解決ジェンキンスプラグイン

readFile 'user_id.txt' 
関連する問題