0

私は開発用の自動化に取り組んでおり、ジョブを使って各タイプの特定のサーバーにscpedする必要があります。これらのジョブでは、各sqoopジョブに関連付けられたスクリプトはdevとprodに基づいて変更する必要があります。現在のところ、devとprodフォルダを含むgit repoがあり、承認されたdevの変更はprodフォルダに置かれますが、変数(devデータベースとprodデータベースへの参照)が変更されています。それから私は2つのジェンキンパイプラインを持っていて、それぞれに関連し、独立したトリガーを持っています。これは信じられないほどハッキーです。生産と開発のためのJenkinsパイプラインのデプロイ

私の現在の計画は、すべての変数を%DBPREFIX%のような擬似変数に置き換えた後、関連するパイプラインを正規表現にして、すべての一致を関連するデータベース接頭辞とコンパイル時に置き換えることです。

変更が必要なファイルはシェルスクリプトとハイブスクリプトなので、Jenkinsノードシェル内で環境変数を定義するだけでは不十分です。

これを処理するより良い方法はありますか?

tl; dr:ジェンキンスパイプラインを通じて自動的に変更できるさまざまなファイルに変数を設定する必要があります。

答えて

1

実際には、シェルスクリプトとハイブスクリプトで環境変数を参照できます。

echo $HOT_VAR 

$ HOT_VARを参照するハイブスクリプトで:$ HOT_VARを参照するシェルスクリプトで

select * from foo where day >= '${env:HOT_VAR}' 

それはハイブスクリプトの例であれば、私はよく分かりません。多分あなたはhttps://stackoverflow.com/a/12485751/6090676を見たいと思うかもしれません。 :)

何らかの理由で環境変数を本当に使用できない場合は、awk、sed、perlなどのコマンドラインツールを使用できます(なぜ、人々はいつもルビーの代わりにperlを提案していますか?あなたが設定する必要のあるファイル(おそらく環境変数に基づいて)。

関連する問題