申し訳ありませんが、Jenkins はインタラクティブなアプリケーションではありません。自動実行用に設計されています。
Jenkins ジョブ (およびそのジョブから実行されるすべてのもの) への入力を取得する唯一の実行可能な方法は、ジョブが開始される前に設定されたジョブ パラメーターを使用することです。確かに、パラメーター入力用の Jenkins GUI は最高ではありませんが、機能はします。Jenkins ジョブは、ジョブの開始時にジョブ パラメーターを収集すると、ジョブ中の任意の時点で、実行するすべてのもの (Python、シェルなど) にそれらのパラメーターを渡すことができます。そのためには、次の 2 つのことが当てはまる必要があります。
- ジョブを開始する前に、すべての入力データを収集する必要があります
- ジョブが呼び出すもの (Python、シェルなど) は、対話形式ではなく、コマンド ラインから入力を受け取る必要があります。
プログラムに入力を取得する方法
適切に設計されたスクリプトは、コマンド ラインでパラメーターを単純に受け入れることができるはずです。
./goodscript.sh MyName
スクリプトの最初のパラメーターに値MyName
が格納される最も簡単な方法です。$1
後続のコマンド ライン パラメーターは、 variables$2
などで使用できます$3
。
./goodscript.sh -name MyName -age 30
スクリプトは、パラメーター値の前にパラメーター名を指定することで、順序に関係なく複数のパラメーターを受け取ることができます。パラメータを渡すこのメソッドにgetoptを使用する方法について読むことができます
goodscript.sh
上記の両方の例は、これらのコマンド ライン パラメータを処理できるように適切に記述されていることを前提としています。スクリプトがコマンド ライン パラメータを明示的に処理しない場合、上記を実行しても意味がありません。
コマンド ライン パラメータを明示的に処理するように設計されていない対話型スクリプトに出力を「パイプ」することができます。これは、ユーザーに提供される最初の対話型プロンプトに
echo MyName | ./interactivescript.sh
値を渡します。これに関する問題は、最初の対話型プロンプトにしか値を渡すことができないことです。MyName
interactivescript.sh
Jenkins ジョブ パラメータ GUI
上で述べたように、Jenkins GUI を使用して、あらゆる種類のジョブ パラメータ (ドロップダウン リスト、チェックボックス、テキスト エントリ) を収集できます。パラメータを使用してJenkinsジョブをセットアップする方法を知っていると思います。そうでない場合は、ジョブ構成で「このビルドはパラメーター化されています」チェックボックスをクリックします。これを設定する方法がわからない場合、それは別の問題であり、個別に説明する必要があります。
ただし、Jenkins ジョブが事前にすべてのパラメーターを収集したら、「シェルの実行」ステップでそれらを参照できます。Windows を使用している場合は として参照し%PARAM_NAME%
、Linux では として参照します$PARAM_NAME
。
ヘルプが必要なことを説明してください: スクリプトでコマンド ライン パラメーターを受け入れるようにするか、jenkins ジョブ GUI からそれらのコマンド ライン パラメーターを渡します。この回答をさらに詳しく説明します。