この記事では、Jenkinsを使用して単純なCI/CDパイプラインを実装する手順を説明します。サンプルのJavaコードを使用し、そのコードを.warファイルとしてApacheTomcatWebサーバーにデプロイします。ビルドツールとしてMavenを使用します。サンプルのJavaコードは、私のGithubリポジトリ(リポジトリ)にあります。先に進む前に、CI/CDパイプラインの設定に使用するツールとテクノロジーの基本を理解しましょう。
- EC2インスタンス: EC2インスタンスは、AWSクラウドの仮想マシン(VM)です。 ApacheTomcatとJenkinsをEC2インスタンスにデプロイします。
- Apache Tomcat: Apache Tomcatは、オープンソースのWebサーバーです。サンプルのJavaアプリケーションを.warファイルとしてApacheTomcatにデプロイします。
- Github: Githubはコードホスティングプラットフォームです。基本的にはバージョン/ソース管理管理システムです。サンプルのJavaコードをGithubにインストールします。
- Github Webhook: Github Webhookは、統合の構築とセットアップに使用されます。 Githubリポジトリで新しいコミットが行われるたびにJenkinsジョブをトリガーするWebhookを作成します。
- ジェンキンス: Jenkinsは、無料のオープンソース自動化ツールです。サンプルのJavaアプリケーションコードの.warファイルをビルドしてApacheTomcatサーバーにデプロイするジョブをJenkinsで作成します。
- Maven :Mavenは、主にJavaプロジェクトをビルドするために使用されるビルド自動化ツールです。
前提条件
- AWSアカウント(お持ちでない場合は作成)
- Githubの基本的な理解。
- Jenkinsの基本的な理解。
- Linuxサーバーとコマンドの基本的な理解
何をしますか?
- EC2インスタンスを作成する
- Javaをインストールする
- Jenkinsをインストールする
- ApacheTomcatのセットアップ
- Githubレポジトリをフォークする
- Jenkinsへのアクセスと構成
- .warデプロイメント用のJenkinsジョブをセットアップする
- GithubリポジトリでWebhookを設定する
- コミットごとに自動ビルドをテストする
VMまたはEC2インスタンスを作成する
EC2インスタンスを作成するには、こちらから入手できるドキュメントを参照できます。
ここでは、AWSアカウントに新しいEC2インスタンスを作成しました。このインスタンスにはUbuntu18OSが搭載されています。
インスタンスが表示されていることがわかります 稼働中です。このインスタンスを使用して、Javaまたは依存関係、およびApacheTomcatとJenkinsもインストールします。
Javaのインストール
JavaをUbuntu18システムにインストールするには、次のコマンドを使用できます。次のコマンドはJava8をインストールします。インストールすると、そのバージョンを確認することもできます。
sudo apt-get update
sudo apt install openjdk-8-jdk
java -version
Jenkinsをインストール
次のコマンドを使用して、インスタンスにJenkinsをインストールします。
sudo apt-get update
wget -q -O-https://pkg.jenkins.io/debian/jenkins.io.key | sudo apt-key add-
sudo sh -c'echo deb http://pkg.jenkins.io/debian-stable binary /> /etc/apt/sources.list.d/jenkins.list'
sudo apt-get update
sudo apt-get install jenkins
Jenkinsをインストールしたら、次のコマンドを使用して起動し、ステータスを確認します。
sudo systemctl start jenkins #Start Jenkins
service jenkins status #Check Jenkins Status
次のスクリーンショットでは、Jenkinsサービスが開始されていることがわかります。このJenkinsサービスはポート8080で開始されました。
ApacheTomcatのセットアップ
ApacheTomcatをインストールする
Apache Tomcatをダウンロードしてインストールする前に、ApacheTomcatパッケージをダウンロードできるディレクトリを作成しましょう。
次のコマンドを使用して、/ opt
にディレクトリを作成します。
cd / opt /
sudo mkdir Innovecture
次のコマンドを使用して、ディレクトリの所有権を変更します。所有権をユーザーUbuntuとグループUbuntuに変更して、UbuntuユーザーがApache Tomcatサービスを開始できるようにし、root、user、またはsudo特権を使用する必要がないようにします。
sudo chown -R ubuntu:ubuntu Innovecture
cd Innovecture /
次のコマンドを使用してApacheTomcatをダウンロードおよび抽出します。他のバージョンのApacheTomcatを使用する場合は、ダウンロードして抽出できます。
wget https://downloads.apache.org/tomcat/tomcat-9/v9.0.31/bin/apache-tomcat-9.0.31.tar.gz
tar -zxvf apache-tomcat-9.0 .31.tar.gz
cd apache-tomcat-9.0.31 /
次のコマンドを使用して、ApacheTomcatで必要な構成を行います。実行する必要のある構成については、次のスクリーンショットを参照してください。次の構成では、ApacheTomcatのマネージャーアプリケーションへのログインに使用できるユーザーとパスワードを割り当てています。これらの資格情報は後で必要になるため、このユーザー名とパスワードをメモしてください。
ApacheTomcatを構成する
vim conf / tomcat-users.xml
次のスクリーンショットを参照して、context.xmlの構成が同じであることを確認してください。
vim webapps / manager / META-INF / context.xml
confディレクトリの下のserver.xmlで、ApacheTomcatが実行されているポートを変更します。 Jenkinsサービスはすでにポート8080で実行されているため、ポート8080を8090に変更します。
vim conf / server.xml
また、server.xmlファイルのローカルホスト構成をサーバーのIPに変更して、インターネットからサーバーにアクセスできるようにします。
ApacheTomcatを起動します
次のコマンドを使用して、ApacheTomcatサービスを開始します。
bin / startup.sh
次のスクリーンショットでは、Apache Tomcatサービスがポート8090で実行されており、ポート8080でJenkinsサービスが実行されていることがわかります。システムを確認するには、次のコマンドを使用します。
netstat -tulpn
TomcatManagerアプリにログイン
前に指定した資格情報を使用してApache Tomcatのマネージャーアプリケーションにログインできるかどうかを確認するには、ApacheTomcatのURLhttp://IP-ofを押します。 -Apache-Tomcat:8090/マネージャー。 conf/tomcat-users.xmlで構成したユーザー名「tomcat-manager」とパスワードを入力するだけで認証画面が表示されます。
ログインに成功すると、次のような画面が表示されます
フォークGithubレポジトリ
下記のリポジトリをフォークまたはクローンできます。このリポジトリにはサンプルのJavaコードが含まれています。このコードを使用するか、独自のリポジトリがある場合はそれも使用できます。
リポジトリのURL:https://github.com/shivalkarrahul/Innovecture.git
Jenkinsにアクセスして構成する
Jenkinsにアクセスするには、URL http:// IP-of-Jenkins:8080を押します。
Jenkinのロックを解除し、推奨プラグインをインストールするための画面に従います
Jenkinのロックを解除し、提案されたプラグインをインストールすると、次の画面が表示されます。
構成する必要のあるユーザー名とパスワードを入力し、[保存]をクリックして続行する必要があります。
再起動せずにGithub認証プラグインをインストール
ログインに成功したら、Jenkinsの管理に移動します>プラグインを管理します。 利用可能の下 タブgitを検索します 。 「GithubAuthentication」プラグインを選択し、再起動せずにインストールをクリックします。
再起動せずにMaven統合プラグインをインストール
同様に、Maven統合プラグインをインストールし、再起動せずにインストールします
インストール再起動せずにコンテナプラグインにデプロイ
Apache Tomcatへの.warファイルのデプロイを自動化するには、「Deploytocontainer」プラグインが必要です。 gitおよびmavenプラグインをインストールしたのと同じ方法で、「Deploytocontainer」プラグインをインストールします。
.warデプロイメント用のJenkinsジョブをセットアップします
次に、フリースタイルのジョブを作成します。メインダッシュボードに移動し、[ジョブの作成]をクリックします。フリースタイルのジョブを選択して、先に進みます。
[一般]タブの下にGithubリポジトリを追加
[全般]タブで[Githubプロジェクト]チェックボックスをオンにして、ソースコードレポジトリのURLまたはレポジトリからフォークしたレポジトリのURLを追加します。
ソースコード管理の下にGithubURLを追加
[ソースコード管理]タブで[Git]ラジオボタンをクリックし、以下に示すようにリポジトリのURLを追加します。私のリポジトリはプライベートではなくパブリックなので、資格情報を追加する必要はありませんでした。
Githubフックトリガーを選択
[ビルドトリガー]タブで[GitSCMポーリング用のGitHubフックトリガー]を選択します
ビルドステップの追加
ビルド環境で、ビルドステップの追加をクリックし、[トップレベルのMavenターゲットを呼び出す]を選択します
目標には、クリーンとパッケージを指定してジョブを保存します。
テストビルド
コードをプルしてビルドできるかどうかをテストするには、[今すぐビルド]をクリックします。
デプロイの追加ビルド後のアクション
これで、コードがプルされてビルドされたことが確認できたので、ビルド後のアクションを追加する準備が整いました。ビルド後のアクションを追加するには、ビルド環境でビルド後のアクションをクリックし、[コンテナに戦争をデプロイする]を選択します。
次に、TomcatサーバーのURLとクレデンシャルを追加します。クレデンシャルを追加するには、[追加]をクリックし、表示される手順に従ってジョブを保存します。
テスト手動ビルド
ここで、ジョブがApache Tomcatサーバーでコードをプル、ビルド、およびデプロイできるかどうかをテストします。今すぐビルドをクリックして、ジョブをテストしてください。
上のスクリーンショットのように、手動ビルドは成功し、ApacheTomcatサーバーにデプロイされました。
戦争が実際に展開されたかどうかをテストするには、ApacheTomcatをヒットします。 http:// IP-of-Apache-Tomcat:8090 / manager > マネージャーアプリケーションにアクセスします。
ここで、 web_ex.warを確認できます。 ファイルはApacheTomcatサーバーに正常にデプロイされました。
テストサンプルJava アプリケーション
Javaアプリケーションが実行されているかどうかをテストするには、URLを押します http:// IP-of-Apache-Tomcat:8090 / web_ex 。
GithubリポジトリでWebhookをセットアップする
Webhookを作成する
タブにアクセスして可愛い本を作成するには、彼女のWebサイトにアクセスしてアカウントにログインし、以下の手順に従ってください。
リポジトリの設定に移動し、左側のパネルでWebフックをクリックしてから、[Webhookを追加]をクリックします
ペイロードURLにhttp:// Jenkins-URL:8080/github-webhookを追加します。
このWebhookをトリガーするイベントを選択するか、すべてのイベントでJenkinsジョブをトリガーする場合は、[すべて送信]を選択して、更新をクリックします。保存するWebhook。
コミット時に自動ビルドをテストする
これで、自動ビルドジョブをテストする準備が整いました。
Jenkinsジョブがコミットごとにgithubリポジトリからコードをプルするかどうかをテストするには、次のコマンドを使用します。
リポジトリをローカルに複製するには、次のコマンドを使用しました。独自のレポートがある場合は、ローカルシステムに送信してください。
git clone https://github.com/shivalkarrahul/Innovecture.git
cd Innovecture /
リポジトリにいくつかの変更を加えて、プッシュできるようにします。ここでは、リモートリポジトリにプッシュする新しいファイルをローカルに追加しました
README.mdをタッチします
gitのユーザー名とメールIDを設定するには、次のコマンドを使用します。
git config user.name "Rahul Shivalkar"
git config user.email "[email protected]"
変更をコミットしてプッシュするには、次のコマンドを使用します
git commit -m "Test Commit"
git push
変更をGithubのリポジトリにプッシュするとすぐに、GithubWebhookに追加したJenkinsジョブがトリガーされます。
これは、ジョブの[ポーリングログ]で確認できます。同じものについては、次のスクリーンショットを参照してください。
ジョブのコンソール出力に移動すると、ジョブが正常に実行され、戦争がApacheTomcatにデプロイされていることがわかります。
再テスト
次に、コードを変更して、最新のコードがデプロイされるかどうかをテストします。ブラウザに表示されるメッセージを変更します。
独自のレポートを使用している場合は、コードに必要な変更を加えます。ここでは、ブラウザにメッセージを出力するサンプルのindex.jspファイルを変更しています。
vim src / main / webapp / index.jsp
次に、変更されたコードが反映されるかどうかを確認しましょう。
次のコマンドを使用して、コードに加えた変更をコミットします。
git add src / main / webapp / index.jsp
gitcommit-m「コードをHelloWorldNew!に変更しました!」
git push
ApacheTomcatURLをヒットhttp:// IP-of-Apache-Tomcat:8090 / web_ex サンプルアプリケーションにアクセスします。
最新のコードがApache Tomcatにビルドおよびデプロイされていることがわかります。これは、アプリケーションが正常にデプロイされ、パイプラインも正常にトリガーされたことを意味します。
以前のコードに「HelloWorld!」と表示されていることに気付いた場合index.jspに変更を加えてコミットすると、最新のアプリケーションに「HelloWorldNew!」と表示されます。
結論
この記事では、Githubリポジトリからコードをプルして、コミットするたびにApacheTomcatサーバーにデプロイできるシンプルなCI/CDパイプラインを作成する手順を説明しました。また、Jenkins、Apache Tomcat、Java、プラグインをJenkinsにインストールする手順も確認しました。