質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
Jenkins

Jenkinsとは、Apache TomcatなどのServletで動作しているサーバーベースシステムです。Jenkinsはオープンソースであり、LInux,Mac OS X,Windows,Solaris,FreeBSDとOpenBSDのためのパッケージがあります。

Q&A

解決済

1回答

19508閲覧

jenkinsfile内で変数をセットしたい

newbiemstr

総合スコア43

Jenkins

Jenkinsとは、Apache TomcatなどのServletで動作しているサーバーベースシステムです。Jenkinsはオープンソースであり、LInux,Mac OS X,Windows,Solaris,FreeBSDとOpenBSDのためのパッケージがあります。

0グッド

0クリップ

投稿2019/03/12 05:39

jenkins内で$WORKSPACEの一部の文字列を取得して変数に代入したいと考えています。
今考えているのはシェルスクリプトを実行して文字列を取得して、それを変数に入れようかと考えているのですが、
シェルの実行結果を変数に代入する方法がわからなくて困っています。
※特にシェルで取得にこだわっているわけではないので、他の方法がありましたら教えていただけるとありがたいです

今試しているjenkinsfileは下記のような形です。
/tmp/setenv.shは${WORKSPACE}を渡すと文字列をechoで出力します。

pipeline{ agent any stages{ stage('環境'){ steps{ testvar=setenv() echo "steps : ${testvar}" } } } } def setenv(){ sh "/tmp/setenv.sh ${WORKSPACE}" }

実行すると下記のようなエラーが出ます。

Running in Durability level: PERFORMANCE_OPTIMIZED org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed: WorkflowScript: 6: Expected a step @ line 6, column 9. testvar=setenv() ^ 1 error

お手数ですがお詳しい方がいらっしゃしましたら、よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

シェルの標準出力を受け取るためには、 sh に returnStdout: true オプションを指定する必要があります。

また、環境変数は、Environment Directives で設定する必要があるようです。

質問にあったスクリプトを書き直してみましたが、こんな感じでどうでしょうか?

pipeline{ agent any stages{ stage('環境'){ environment { testvar = setenv() } steps{ echo "steps : ${testvar}" } } } } def setenv(){ sh ( script: "/tmp/setenv.sh ${WORKSPACE}", returnStdout: true ) }

参考:
environment

投稿2019/03/14 07:16

編集2019/03/14 07:17
CHERRY

総合スコア25216

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

newbiemstr

2019/03/15 04:00

CHERRY様 ご返答ありがとうございます。頂いた案で無事にやりたいことができました! environmentは固定値しか受け付けないと思っていたのですが、シェルの実行結果を 渡すこともできるのですね。目からうろこでした! このたびはスクリプトまでご提示いただきまして誠にありがとうございました。 また何かありましたらよろしくお願いいたします!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問