Windowsサーバーを長期間管理している場合、おそらくパスワードのリセット、ログデータの収集、バックアップファイルのアーカイブなど、定期的に行う必要のある退屈なタスクを実行するための多くのPowerShellスクリプトを持っていることでしょう。JenkinsでPowerShellを使用できることを知っていましたか?
おそらく定期的に実行するスクリプトがあるかもしれませんし、PowerShellスクリプトを自動化しようとしてタスクスケジューライベントを設定しているかもしれません。
しかし、もっと良い方法があります。
この記事では、WindowsにJenkinsをインストールし、シンプルなPowerShellスクリプトを実行する方法を学びます。Jenkinsのインストール方法、基本的なセキュリティの設定、PowerShellプラグインの有効化、パラメータを入力してシンプルなテキストファイルを作成するジョブの実行方法を学びます。
この記事はJenkinsの基本的な紹介を目的としています。学んでいる設定は本番環境向けではありません。
前提条件
この記事のほとんどは手順の説明です。一緒に進める予定の場合、いくつかの前提条件を満たしていることを確認してください。
Jenkinsを実行するための要件は非常に最小限ですので、どんな現代のコンピュータでも実行できます。この記事の例はすべて、次の環境で動作するJenkinsを前提としています:
- Windows 10 Enterprise v.1903
- PowerShell Core v6
Jenkinsは、ほとんどのプラットフォームで動作しますが、今回はWindows 10 Enterpriseに焦点を当てて簡単に説明します。
Jenkinsのインストール
必要な前提条件が整ったら、Jenkinsをインストールしましょう。
Jenkinsのインストールは簡単です。以下のURLにアクセスして、Long-term support (LTS) バージョンをダウンロードします。LTSバージョンと”Weekly”バージョンの2つがありますが、”Weekly”バージョンは定期的に更新されるため、安定性に欠けることがあります。この記事ではLTSバージョンを使用します。これが最も安定したバージョンです。
以下のスクリーンショットでわかるように、いくつかのオプションがあります。Windowsバージョンを選択してダウンロードを開始します。

インストーラーをダウンロードしたら、zipアーカイブを展開し、デフォルト値をすべて受け入れてインストーラーを実行します。インストールは簡単です。
インストールが完了すると、Jenkinsはブラウザを開き、Getting Startedページを表示します。このページには、Jenkinsの設定を続けるための初期管理者パスワードが記載されています。以下のスクリーンショットでわかるように、Jenkinsは私に、C:\Program Files (x86)\Jenkins\secrets\initialAdminPasswordというテキストファイルを読むように指示しています。

表示されたファイルに移動し、パスワードをコピーして、Getting Startedページで管理者パスワードとして使用します。
プラグインのインストール
初めてログインした後、Jenkinsは最終設定を完了し、インストールするプラグインを選択するように求めます。以下のスクリーンショットで確認できるように、いくつかの選択肢があります。
推奨プラグインをインストールを選択すると、一般的な使用シナリオに基づいて推奨されるプラグインセットがインストールされます。これには、認証プロバイダ、GitHubの連携、およびJavaの拡張機能に関するプラグインが含まれます。インストールするプラグインを選択では、すべての利用可能なプラグインのリストから必要なプラグインのみをインストールすることができます。
推奨プラグインをインストールをハイライトし、OKをクリックしてください。このプロセスには数分かかりますので、初期プラグインのインストール中にコーヒーを飲むのに良い時間です。

管理者ユーザーの作成
プラグインがインストールされたら、次のステップは最初のユーザーを作成することです。この最初のユーザーはJenkinsの管理者であり、Windows Serverのエンタープライズ管理者と同様にグローバルな権限を持ちます。以下に最初の管理者ユーザーの作成ページの見た目を示します。

この時点から先は、有効なユーザー名とパスワードを入力することでJenkinsのインターフェースにアクセスできます。
Jenkins管理URLの設定
最後のステップは、Jenkinsサービスの実行URLを設定することです。このURLはJenkinsプログラムを管理するためのインターフェースであり、理想的には完全修飾ドメイン名(FQDN)に設定する必要があります。FQDNに設定することで、ウェブサイトと同様にリモートアクセスが可能になります。この記事では、簡単にするためにデフォルトのURLを受け入れてください。

セキュリティの設定
インストールが完了したら、認証を設定しましょう。すでにメインダッシュボードが開いていない場合は、メインダッシュボードに移動してください。メインダッシュボードから、Jenkinsの管理をクリックし、グローバルセキュリティの設定をクリックして、以下のようにセキュリティ設定を開きます。

グローバルセキュリティの設定ページでは、いくつかのオプションが表示されます。この記事では、簡単にするためにJenkins独自のユーザーデータベースを使用します。また、アカウント作成を許可するにチェックを入れない方が良いでしょう。チェックを入れておくと、ユーザーはアカウントを作成し、Jenkinsへのアクセス権限を自分自身に与えることができます。.
以下のスクリーンショットを見ると、認証のための他のオプションもあります。
- サーブレットコンテナへの委任 – これは、すでにJenkinsと設定されたDockerコンテナがある場合に使用され、コンテナを介した認証を可能にします。
- LDAP – これは、既に使用しているActive Directoryを認証に使用したい場合に使用されます。
次に、ログインしたユーザーは何でもできるオプションを選択します。このモードでは、ログインしたユーザーはJenkinsの全ての操作を行うことができます。これは本番環境では良いアイデアではありません。なぜなら、どのユーザーでも設定を変更できるようになってしまうからです。

PowerShell in Jenkinsプラグインを有効にする
基本的なセキュリティの設定が完了したら、PowerShell in Jenkinsプラグインを設定しましょう。PowerShellプラグインをインストールするには、メインダッシュボードに移動し、Jenkinsの管理をクリックして、プラグインの管理をクリックします。

数百のプラグインがありますので、PowerShellプラグインを見つける最良の方法は検索することです。フィルターバーに「PowerShell」と入力し、リストから選択してください。以下に示すように、有効にするためにチェックボを確認してください。これにより、JenkinsがPowerShellコマンドとスクリプトを直接Jenkins内のテキストボックスに書き込み、別個のPowerShellコンソールを起動せずにPowerShellを呼び出すことができるようになります。
以下に、これがどのように見えるかを示します。

プラグインが有効になっているため、JenkinsはPowerShellジョブを実行する準備ができています。
JenkinsでPowerShellのジョブを作成する
PowerShell in Jenkinsプラグインのインストールが完了しました。楽しいことが始まります。ジョブを作成しましょう。
Jenkinsでは、ジョブは完了するための一連のタスクとして定義されます。一般的なシナリオは、開発者がコードをチェックインするとプログラムのコンパイルを開始するジョブです。Windowsサーバーのタスクマネージャーに非常に似ています。
設定するジョブは、c:\tempディレクトリをチェックし、そのディレクトリにカスタムメッセージのテキストファイルを挿入するものです。
Jenkinsには、特定の目的に焦点を当てたさまざまなプロジェクトタイプ、またはパイプラインがあります。プロジェクトのタイプに応じて、異なる設定、オプション、パラメータがあります。プロジェクトの種類と使用方法についての詳細な情報は、Jenkinsサイトで確認できます。
メインダッシュボードから、新しいアイテムをクリックします。ジョブ名には、テキストファイルの作成と入力します。これは任意ですが、意味のある名前を付けることが良いアイデアです。
この記事では、フリースタイルプロジェクトを使用します。これにより、ジョブを作成するための最大の柔軟性が得られます。 フリースタイルプロジェクトを強調表示し、一番下までスクロールしてOKをクリックします。

このジョブはパラメータ化されたプロジェクトになります。これはユーザーに入力を求め、その入力がジョブに渡されることを意味します。たとえば、Jenkinsのジョブでログファイルを特定のディレクトリにコピーするPowerShellのジョブがあるとします。ジョブを実行する際に、ビルドに含めるファイル名を求めるプロンプトをジョブに追加できます。
ドロップダウンリストからこのプロジェクトはパラメーター化されていますを選択します。 パラメーターの追加ドロップダウンをクリックし、文字列パラメーターを選択します。文字列パラメーターには、テキストファイルに含めたいメッセージを入力します。

次に、二つ目の選択肢パラメーターを追加します。以下のスクリーンキャプチャのようになるはずです。このオプションにより、ユーザーはドロップダウンリストからアイテムを選択することができます。

ジョブの設定は、以下のスクリーンショットのようになるはずです。

ビルドセクションまでスクロールダウンしてください。小さな矢印をクリックし、Windows PowerShellを選択します。これにより、JenkinsにPowerShellスクリプトを実行することを知らせます。ここにもPowerShellスクリプトを入力します。このジョブは準備完了です。保存をクリックしてください。

PowerShell in Jenkinsジョブのサンプルスクリプトとして、一時ディレクトリにファイルを作成し、シンプルなメッセージを追加しましょう。
これは、ルートの下に一時ディレクトリを作成し、そのディレクトリにテキストファイルを作成するシンプルなスクリプトです。
TIP: スクリプトはまずVSCodeや他のエディタで作成し、その後ボックスに貼り付けてください。
PowerShell in Jenkinsジョブの実行
最後に、最初のジョブを実行する準備が整いました。メインダッシュボードに戻り、メインダッシュボードにテキストファイルを作成ジョブがリストされているのを確認できます。以下を参照してください。

右端の時計アイコンをクリックしてジョブフォームを表示します。

メッセージボックスに、テキストファイルに挿入したいテキストを入力し、ビルドをクリックしてください。ビルドが完了したら、コンソール出力をクリックします。コンソール出力には、ジョブのステータスとジョブの実行が成功したかどうかが表示されます。

今や残すことは、ファイルマネージャーを開いてファイルを確認するだけです。一時ディレクトリに移動し、テキストファイルを開いてください。ビルドメッセージボックスに入力したテキストと同じテキストが含まれています。

要約
JenkinsでのPowerShellの基本的な理解ができました。これはパワフルなツールであり、PowerShellスクリプトの管理やすべてのことの自動化に使用することができます!