
CentOS サーバーを 2 台使用しています。コード リポジトリは使用していません。Jenkins で [新しい項目] をクリックしても、ターゲット サーバーを入力する場所が表示されません。特定のビルド用にターゲット サーバーを構成する場所 (bash コマンドを実行したり、Jenkins サーバーからターゲット サーバーにファイルを転送するなど) があるはずです。Jenkins は Linux 側で Jenkins ユーザーとして実行されるため、root として SSH で接続できません。Jenkins をサポートする Linux サーバーからファイルを転送した後、root になってコマンドを実行したいと思います。Jenkins の [新しい項目] ビルド ステップでネイティブ シェル コマンドを使用してこれを行うことができます。このようなコマンドにはフリー テキスト フィールドがあります。ただし、パスワード チャレンジに対話的に応答する方法がわかりません。
特定のデプロイメントのターゲット サーバーはどこで構成すればよいですか?
Jenkins ジョブにルート パスワードをハードコードできますか? できる場合、どうすればいいですか。sshpass をインストールしたくありません。
コア Jenkins の他に、ある Linux サーバーから別の Linux サーバーにファイルをデプロイするために必要なプラグインは何ですか?
答え1
Jenkins では、ラベルを使用してプロジェクトをビルドできる場所を定義します。新しいアイテムを作成すると、(ジョブ構成に)「このプロジェクトを実行できる場所を制限する」というチェックボックスが表示されます。ここでは、スレーブ ノード名 (例: slave4.mycompany) を使用するか、複数のスレーブのコンテナーであるラベルを作成できます。適切に入力すると、このジョブは常に指定されたスレーブ ノードでビルドされます。
それ以上の機能が必要な場合は、NodeLabel パラメータ プラグイン (nodelabelparameter) を試してください。これは、[Jenkins の管理] > [プラグインの管理] > [利用可能] からインストールできます。
ビルド中にどのノードにいるかを識別するには、たとえば、両方のビルド スレーブに永続的な環境変数を手動で設定し (例: $SLAVENAME が "buildslave1" を返す)、スクリプトで Linux の "hostname" コマンドを使用して現在のコンテキストを識別し、その出力に基づいて続行方法を決定します。