software:jenkins
差分
このページの2つのバージョン間の差分を表示します。
| 両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン | ||
| software:jenkins [2023/11/27 10:25] – [Agent の指定] oga | software:jenkins [2023/11/27 10:38] (現在) – [class 定義] oga | ||
|---|---|---|---|
| 行 250: | 行 250: | ||
| + | ==== class 定義 ==== | ||
| + | |||
| + | 外部スクリプトファイル内で class 定義ができるが、groovy の場合実行するコードコンパイル時に型名が判明していなければならない。 | ||
| + | そのため load した script 内ではその class 名を使用することができない。 | ||
| + | |||
| + | <code groovy> | ||
| + | def lib= load( " | ||
| + | def obj= new LibClass() | ||
| + | </ | ||
| + | |||
| + | <code groovy> | ||
| + | // LibClass.groovy | ||
| + | class LibClass { | ||
| + | ~ | ||
| + | } | ||
| + | return this | ||
| + | </ | ||
| + | |||
| + | ↓ ローダーを用意し、Lib と実行スクリプトに分ける必要あり | ||
| + | |||
| + | <code groovy> | ||
| + | def lib= load( " | ||
| + | load( " | ||
| + | </ | ||
| + | |||
| + | <code groovy> | ||
| + | // main.groovy | ||
| + | def obj= new LibClass() | ||
| + | </ | ||
| + | |||
| + | また class 内では jenkins のデフォルト context が無効なので、node, | ||
| + | 必ず実行中の context を明示的に渡す必要がある。以下の例のように必ず **lib.** をつける必要あり。 | ||
| + | |||
| + | <code groovy> | ||
| + | class LibClass { | ||
| + | def lib= null | ||
| + | def LibClass( lib_ ) | ||
| + | { | ||
| + | this.lib= lib_ | ||
| + | } | ||
| + | def steps() | ||
| + | { | ||
| + | lib.node( ' | ||
| + | lib.stage( ' | ||
| + | lib.println( " | ||
| + | } | ||
| + | } | ||
| + | } | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | <code groovy> | ||
| + | // main.groovy | ||
| + | def obj= new LibClass( this ) | ||
| + | </ | ||
| + | |||
| + | |||
| + | また class 名は global な namespace に属するため、class 定義が含まれる script を複数回読み込むと多重定義エラーになる。 | ||
software/jenkins.1701048338.txt.gz · 最終更新: by oga
