アプリケーションの構築と展開は難しい作業です。なぜJenkinsビルドジョブを使用して、プロセス全体を自動化しないのですか?あなたは構築に集中し、Jenkinsがコードの展開を処理します。
このチュートリアルでは、Jenkinsを使用してコードの展開を自動化する方法を学び、時間を節約して他のタスクに同時に集中できます。
準備はできましたか?さあ始めましょう!
前提条件
このチュートリアルには実演が含まれています。一緒に進める場合は、以下のものを準備してください:
- Ubuntuシステム – このチュートリアルではUbuntu 20.04を使用します
- A GitHub account
- OpenJDKバージョン1.8.0_292
- Jenkinsバージョン2.303.1
- Node.jsバージョン14.17.6
- このGitHubリポジトリをフォーク – フォークした後、GitHubリポジトリのURLをメモしておく必要があります。
以下のスクリーンショットに表示されるリポジトリは上記のリンクと若干異なる場合がありますが、フォークした後は異なるリポジトリのURLも使用します。
Jenkinsのビルドジョブを作成する
Jenkinsは、ソフトウェア開発ライフサイクルの自動化に役立つオープンソースの自動化サーバーです。このライフサイクルには、ビルド、テスト、展開が含まれ、継続的インテグレーションと継続的デリバリーを容易にします。
このデモでは、Jenkinsのビルドジョブの作成方法を説明します。ビルドジョブは通常、ソフトウェアのビルド/パッケージングのためのタスクを自律的に実行するための構成です。
- お気に入りのブラウザを起動し、http://localhost:8080/ に移動し、Jenkinsのダッシュボードにログインします。ポート
8080
は、Jenkinsのダッシュボードにアクセスするためのデフォルトのポートです。
2. Jenkinsのダッシュボードで、左パネルの新規作成ボタンをクリックしてビルドジョブの作成を初期化します。これにより、ブラウザが新しいジョブページにリダイレクトされます。

3. 次に、以下に表示される入力フィールドにビルドジョブのためのプロジェクト名を入力します。この例では、プロジェクト名はwebDeployです。
フリースタイルプロジェクトオプションを選択して、ジョブの作成、スクリプトのポストビルドアクションの設定、およびプロジェクトのビルドトリガーの設定を有効にします。その後、OKをクリックします。次のステップで表示されるジョブの設定ページにリダイレクトされます。

4. 一般タブをクリックし、GitHubプロジェクトのチェックボックスをオンにして、Jenkinsがコードを取得する場所を知るためのソースコードマネージャーをリンクします。このデモでは、GitHubにホストされているサンプルプロジェクトのソースコードマネージャーとしてGitを使用します。GitHubアカウントからGitHubリポジトリのURLをプロジェクトURLのフィールドに貼り付けてください。

5. 最後に、ソースコード管理タブをクリックし、ソースコードマネージャーとしてGitを選択します。
このGitHubリポジトリのURL (https://github.com/Claradev32/webDeploy.git)を入力フィールドにコピーして貼り付けます。現在の設定を保存するには、保存ボタンをクリックします。

Jenkinsプロジェクトの資格情報の作成
おそらく、お客様のプロジェクトではリポジトリを非公開にしたい場合があります。その場合、JenkinsがGitHubからプロジェクトをクローンするための認証情報を作成する必要があります。
Jenkinsプロジェクトの認証情報を作成するには、GitHubアカウントに最初にSSHキーを生成して追加する必要があります。
1. あなたのUbuntuターミナルを開き、以下のコマンドを実行してSSHキーを生成してください。キーのタイプにはed25519
を使用します。GitHubのメールアドレスである[email protected]
をコメントとしてSSHキーに追加してください。
2. 次に、公開SSHキーを以下のように保存してください:
- SSHキーの保存場所を指定し、Enterを押して保存してください。保存場所を指定しない場合、コマンドはデフォルトの場所にSSHキーを保存します。
- SSHキーに安全なパスフレーズを入力し、Enterで確認し、公開SSHキーの出力が表示されます。
- 生成されたSSHキーの場所をメモしておき、次の手順でGitHubアカウントに追加します。

3. ウェブブラウザでGitHubにサインインし、アカウント設定ページに移動してください。
4. 左パネルのSSHとGPGキーリンクをクリックし、New SSH Keyをクリックして新しいSSHキーを構成します。

5. 最後に、SSHキーのタイトルを入力してください。タイトルは内部のドキュメンテーション用です。以前に保存したファイルからSSHキーを貼り付け、Key入力フィールドに貼り付け、Add SSH Keyをクリックしてキーを保存してください。
これは公開鍵であり、秘密鍵ではありません!

Jenkinsの資格情報にSSHプライベートキーを追加
SSHキーペアを作成してJenkins資格情報として使用するために、SSHプライベートキーもJenkins資格情報に追加する必要があります。JenkinsがGitHubリポジトリにアクセスするための承認を受けるためです。しかし、まず、GitHubリポジトリのSSH URLをメモしておいてください。
1. GitHubリポジトリページに移動し、Code → SSHをクリックし、以下に示すコピー アイコンをクリックしてSSH URLをクリップボードにコピーします。

2. 次に、Jenkinsダッシュボードに移動し、Manage Jenkinsをクリックしてプロジェクトの設定ページにアクセスします。

3. スクロールして、Securityセクションの下にあるManage Credentialsオプションをクリックして、Jenkins資格情報のリストを表示します。

4. 以下に示すCredentialsページでJenkinsをクリックして、新しい資格情報を追加できる「System」ページにアクセスします。

5. 今、Systemページで、マウスをGlobal credentials (unrestricted)オプションの上に置いて、ドロップダウンメニューを表示し、下向きの矢印アイコンをクリックします。
ドロップダウンメニューからAdd credentialsをクリックします。ページがリダイレクトされ、次のステップで表示される新しい資格情報を設定するフォームに移動します。

6. 最初の入力フィールドでSSHユーザー名とプライベートキーを選択し、Usernameフィールドにプロジェクトのユーザー名を入力します。この例では、ユーザー名はCI/CDです。
この場合、ユーザー名は純粋に内部ドキュメントであり、認証には使用されません。

7. 以下のコマンドを実行して、SSHプライベートキーを表示します。キーの保存場所を以下のように変更してください(以下のキーはホームディレクトリに保存されています)。次のステップでJenkinsの資格情報に追加するため、SSHプライベートキーをメモしておいてください。

8. SSHプライベートキーをメモしたら、グローバル資格情報(制限なし)ページに戻ります。
「Jenkinsプロジェクトの資格情報を作成する」セクション(ステップ2)で設定したパスフレーズをパスフレーズ入力欄に入力し、OKをクリックします。これにより、JenkinsがGitHubリポジトリにアクセスする権限が与えられます。
SSHキーを作成する際にパスワードを含めなかった場合は、直接入力をクリックして、追加ボタンをクリックします。以下に示すようにSSHプライベートキーをキー入力欄に入力し、資格情報を保存するためにOKボタンを押します。

8. Jenkinsダッシュボードに戻り、プロジェクトにマウスを重ね、矢印の下向きアイコンをクリックし、設定を選択します。ページがプロジェクトの設定ページにリダイレクトされます。

10. 最後に、ドロップダウンフィールドで資格情報のユーザー名を選択します(「Jenkinsの資格情報にシークレットキーを追加する」セクションのステップ6から)。JenkinsはデフォルトでCID原則を適用し、プロジェクトの継続的な統合と展開を保証します。

ビルドトリガーとポストビルドアクションの設定
これで、ビルドジョブの骨組みが作成されました。しかし、プロジェクトを定期的に変更する場合、毎回手動で再展開する必要がありますか?ビルドトリガーを設定しないでしょうか?ビルドトリガーは、GitHubにプッシュされたプロジェクトの変更を自動的に再展開します。
1. プロジェクトの設定ページで、ビルドトリガータブをクリックし、GITScmポーリングのためのGitHubフックトリガーオプションをチェックします。このオプションを使用すると、プロジェクトの変更が自動的に再展開されます。

2. ビルドタブをクリックし、ビルドステップを追加をクリックし、シェルを実行を選択して、Jenkinsが新しいバージョンのコードをダウンロードするたびに実行されるスクリプトを作成します。

作成するシェルスクリプトは、開発環境に依存します。Windowsの場合、Windowsがスクリプトを実行します。他のオペレーティングシステムでも同様です。
3. 以下のシェルコマンドを入力し、保存をクリックしてビルドスクリプトを保存します。変更を保存した後、ページはプロジェクトのダッシュボードにリダイレクトされます。
以下のコマンドは、コードをソースコードリモートロケーション(`origin master`)からプルし、NodeJS NPM install(`npm install`)を使用してプロジェクトを実行するために必要な依存関係をインストールします。これらのコマンドは、プッシュリクエストをソースコードマネージャーに行うたびに実行されます。
この特定のプロジェクトでは、依存関係にNodeJSが使用されていますが、あなたのプロジェクトではそうでない場合もあります。

4. 今、プロジェクトのダッシュボードで、Build Nowをクリックしてビルドを実行します。

5. ビルド履歴にスクロールして、ビルドのステータスを確認します。ビルドが成功した場合、以下のスクリーンショットと類似した出力が表示されます。

ビルドが失敗した場合は、以下に示す出力が表示されます。

6. 次に、上にスクロールして、Configureをクリックしてプロジェクトのポストビルドアクションを設定します。

7. Post Build Actionsタブをクリックし、Add post-build actionをクリックしてGit publisherを選択します。ページはGit Publisher設定セクションを展開します(次のステップ)。

8. 最後に、Push Only If Build Succeedsオプションを有効にし、変更を保存するためにSaveボタンをクリックします。このオプションを有効にすると、Jenkinsにビルドが成功したときにのみコードをデプロイするように指示されます。

結論
このチュートリアルでは、Jenkinsをソースコード管理システムに接続するプロセスを学びました。また、Jenkinsがコードの新しいバージョンをダウンロードすると自動的に実行されるビルドスクリプトを作成し、Webデプロイメントを自動化するためのビルドトリガーを設定しました。
では、Jenkinsのビルドジョブを使用してアプリケーションのデプロイメントを自動化して、時間を節約しませんか?