GNU/Linux >> Linux の 問題 >  >> Linux

AWSEC2LinuxインスタンスでGithubとJenkinsを使用してシンプルなCI/CDパイプラインをセットアップする

この記事では、Jenkinsを使用して単純なCI/CDパイプラインを実装する手順を説明します。サンプルのJavaコードを使用し、そのコードを.warファイルとしてApacheTomcatWebサーバーにデプロイします。ビルドツールとしてMavenを使用します。サンプルのJavaコードは、私のGithubリポジトリ(リポジトリ)にあります。先に進む前に、CI/CDパイプラインの設定に使用するツールとテクノロジーの基本を理解しましょう。

  1. EC2インスタンス: EC2インスタンスは、AWSクラウドの仮想マシン(VM)です。 ApacheTomcatとJenkinsをEC2インスタンスにデプロイします。
  2. Apache Tomcat: Apache Tomcatは、オープンソースのWebサーバーです。サンプルのJavaアプリケーションを.warファイルとしてApacheTomcatにデプロイします。
  3. Github: Githubはコードホスティングプラットフォームです。基本的にはバージョン/ソース管理管理システムです。サンプルのJavaコードをGithubにインストールします。
  4. Github Webhook: Github Webhookは、統合の構築とセットアップに使用されます。 Githubリポジトリで新しいコミットが行われるたびにJenkinsジョブをトリガーするWebhookを作成します。
  5. ジェンキンス: Jenkinsは、無料のオープンソース自動化ツールです。サンプルのJavaアプリケーションコードの.warファイルをビルドしてApacheTomcatサーバーにデプロイするジョブをJenkinsで作成します。
  6. Maven :Mavenは、主にJavaプロジェクトをビルドするために使用されるビルド自動化ツールです。

前提条件

  1. AWSアカウント(お持ちでない場合は作成)
  2. Githubの基本的な理解。
  3. Jenkinsの基本的な理解。
  4. Linuxサーバーとコマンドの基本的な理解

何をしますか?

  1. EC2インスタンスを作成する
  2. Javaをインストールする
  3. Jenkinsをインストールする
  4. ApacheTomcatのセットアップ
  5. Githubレポジトリをフォークする
  6. Jenkinsへのアクセスと構成
  7. .warデプロイメント用のJenkinsジョブをセットアップする
  8. GithubリポジトリでWebhookを設定する
  9. コミットごとに自動ビルドをテストする

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にインストールする手順も確認しました。


Linux
  1. Linuxを使用してWindowsでpodmanを起動して実行する

  2. Terraformを使用してAWSでEC2インスタンスを作成します

  3. Linux で kbhit() と getch() を使用する

  1. AWSインスタンス(EC2)でEBSボリュームを作成および追加する方法

  2. Terraformを使用してAWSEC2インスタンスを起動する方法

  3. AmazonAWSでLinuxサーバーをセットアップする方法

  1. kubeadmを使用してUbuntuを使用してAWSEC2インスタンスにKubernetesクラスターをセットアップする

  2. AWS EC2Ubuntu20.04インスタンスで.warファイルを使用してJenkinsをインストールする方法

  3. シェルスクリプトを使用してAWS上のLinuxEC2インスタンスにCronjobを追加および削除する方法