変数を渡すbeetwen groovyファイル


9

Jenkinsの多くのジョブをDSLプラグインで管理しています。そのプラグインは.groovy定義を使用しているので、誰かがJenkinsを使用していなくても、groovyを使用すると役立つ場合があると思います。

一般的に、Groovyファイル、JSON、YAMLなど、追加のファイルを作成します。重要なのは、そのファイルを.groovyファイルに関連付ける可能性です。

そのファイルでは、たとえばアドレスIPなどの変数(文字列のみ)を定義しています。

ip_gitlab: 1.2.3.4
default_user: admin

私のgroovyファイルでは、これらの変数を使用できるようにしたいと考えています。

そのアプローチはグルービーで可能ですか?


もちろんそれは可能です。たとえば、groovy-lang.org / json.htmlがあります
におい

DSLプラグインで追加のクラスパスを定義できる場合。次に、のようなクラスパスgroovyファイルに追加するフォルダーに配置しますclass GLOBAL{ def a=111; def b=222; }。その後、コードでアクセスできるはずですGLOBAL.a
daggett

@daggettあなたが書いたように私が試みていましたが、常にorg.codehaus.groovy.runtime.typehandling.GroovyCastException: Cannot cast object 'org.codehaus.groovy.runtime.InvokerHelper$1@641eff69' with class 'org.codehaus.groovy.runtime.InvokerHelper$1' to class 'javaposse.jobdsl.dsl.JobParent' エラーが発生しました:このエラーは、クラスGLOBALの処理中に発生します
rafal1337

忘れてた 。定義された変数ごとに、staticプレフィックスが必要です。class GLOBAL{ static def a=111; static def b=222; }。しかし、あなたが持っているエラーは奇妙です。宣言した変数と、それをdslでどのように使用するかを示すことができます。
daggett

1. dsl postimg.cc/TLHK5k6hの私の構成 2. dsl処理中のエラーpostimg.cc/21F37jDs
rafal1337

回答:


3

@JBaruchが書いたように、プロパティファイルを使用することをお勧めします

ip_gitlab=1.2.3.4
default_user=admin

そしてそれをロードする

Properties properties = new Properties()
File propertiesFile = new File('test.properties')
propertiesFile.withInputStream {
    properties.load(it)
}

次に、それを使用できます。たとえば、ipを取得します。

def ipPropertyName= 'ip_gitlab'
properties."$ipPropertyName"

2
これは、他の投稿からの最小限の属性のコピーです。少なくとも参照ガイドラインに従い、作者に名前を付けたいと思います。
Martijn Pieters

残念ながら、これはJenkins DSLでは機能せず、プロパティを持つファイルを見つけることができませんが、このファイルは同じフォルダーです...FATAL: test.properties (No such file or directory) java.io.FileNotFoundException: test.properties (No such file or directory)
rafal1337

@ rafal1337ファイルの部分パスまたは完全パスを使用してみましたか?
user7294900

@ user7294900はい、複数のパスを試しましたが、効果はありませんでした。
rafal1337


2

groovyファイルを作成し、いくつかの一般情報を定義して使用しますload

たとえば、hello.conf(groovyによって作成)

build_name = 'hello'

build_config = [
    'git': 'your git repository',
    'build_job': ['bulid_a', 'build_b']
]

そしてそれを使う load

load 'hello.conf'

println(build_name)
for (job in build_config['build_job']) {
    build job: job
}

見栄えは良いが、JenkinsのDSLプラグインでは機能しませんERROR: (pipeline.groovy, line 1) No signature of method: pipeline.load() is applicable for argument types: (java.lang.String) values: [a_test.groovy]Possible solutions: job(java.lang.String), find(), folder(java.lang.String), job(java.lang.String, groovy.lang.Closure), find(groovy.lang.Closure), wait()
。– rafal1337

2

Jenkins固有の回答が必要な場合:jenkinsへの構成ファイルプロバイダープラグインがあります。

管理ファイルを介してconfig / propertiesファイルを保存できます。[Jenkinsの管理]> [管理ファイル]に移動して、新しいファイルを作成します。.groovy、.json、.xmlおよびその他の多くをサポートしています。

それができたら、「Config fileを提供」チェックボックスを使用してジョブ内で上記のファイルをロードできます。これにより、ファイルが環境変数に自動的にロードされます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.