34

私はジェンキンスでMavenの仕事をしています。実際のビルド ステップの前に、「シェルの実行」ビルド前ステップがあります。そのシェルで、変数を設定しました:

REVISION=$(cat .build_revision)

「目標とオプション」の Maven ビルド ジョブでその変数を使用したいと思います。

clean install -Drevision=${REVISION}

しかし、それはうまくいきません!"Drevision" は、${REVISION} の実際の値ではなく、"${REVISION}" に設定されています。出力:

Executing Maven:  -B -f /home/gerrit/.jenkins/jobs/<job_name>/workspace/pom.xml clean install -Drevision=${REVISION}

Jenkins 環境変数で動作します。

clean install -Dbuild=${BUILD_NUMBER}

「Dbuild」を実際のビルド番号に設定します。出力:

Executing Maven:  -B -f /home/gerrit/.jenkins/jobs/<job_name>/workspace/pom.xml clean install -Dbuild=54

私の質問:Mavenの「目標とオプション」でシェル変数を使用する方法??

編集:

ビルド前のシェルの後にJenkins EnvInject Pluginを使用して「環境変数を注入」しようとしましたが、ビルド後のシェルなどから変数にアクセスできるようになりましたが、Maven の「目標とオプション」ではまだ使用できません。

次に、EnvInject プラグインを使用して「ビルド プロセスに環境変数を注入する」を設定することができます。これにより、これらの変数が Maven の「目標とオプション」で実際に使用できるようになりますが、これらの変数は SCM チェックアウトの直後、つまりビルド前のステップの前に設定されます。式の評価をサポートしていません。

4

6 に答える 6

40

あなたはここで正しい道を進んでいますが、EnvInject-Plugin の 3 番目の機能を見逃していました。スクリプトまたはプロパティの結果に基づいて、次のビルド ステップに変数を挿入できる「環境変数の挿入」ビルド ステップです。

EnvInject プラグインをそのように使用しています。スクリプトはリソースを設定し、プラグインによって環境変数として伝播されるプロパティを使用してそのパラメータを伝達します。

つまり、ビルド用の一時データベースをセットアップします。 ビルド用のデータベースを作成する

于 2013-07-25T13:27:14.493 に答える