初期準備作業
- Linuxシステム(外部ネットワークからアクセス可能。AlibabaCloudの場合は、ポートを開く必要があります)
- Docker(docker Foundationが必要)
- ジェンキンス(ドッカーコンテナに基づく)
- Mavenプロジェクトはgithub管理を使用します
プロジェクトのアイデアをリリースする:
- dockerfileを使用してイメージを書き込み、jarパッケージを実行します。
- ミラーを実行し、プロジェクトパスをマウントします。
- Jenkinsが自動的にビルドされたら、構成されたSSHを介してjarパッケージをマウントされたパスにアップロードします。
- アップロード後にrestartcontainerコマンドを実行します。
- 書かれたDockerfile:
FROM java:8
RUN cd /
RUN mkdir projects
WORKDIR /projects
EXPOSE 90
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","tuding.jar"]
- コンテナを実行します
docker run --name=tuding-1 -d -p 90:90 -v /usr/local/docker_volume/projects/tuding:/projects tuding-1
ps:jarパッケージがまだないため、ここでコンテナを実行すると失敗します。ここで必要なのはコンテナだけで、jenkinsがjarパッケージをビルドしてアップロードし、containerrestartコマンドを実行するのを待ちます。
目標
ローカルコードを変更し、Githubリモートウェアハウスに送信して、自動展開を完了します。
ステップコーミング
- 今回の全体のプロセスは次のとおりです。
- GitHubでスプリングブートWebプロジェクトを準備します。
- GitHubでアクセストークンを作成し、このアクセストークンを使用して、Jenkinsがアクセス許可を必要とするいくつかの操作を実行するときに認証します。
- GitHubでJenkinsWebhookアドレスを構成します。
- JenkinsはGitHubプラグインをインストールします。
- JenkinsはGitHubアクセス許可を構成します。
- Jenkinsでビルドプロジェクトを作成します。対応するソースコードは、手順1のWebプロジェクトです。
- Webプロジェクトのソースコードを変更し、GitHubに送信します。
- Jenkinsビルドプロジェクトがトリガーされて自動的にビルドされるかどうかを確認します。ビルドが成功したら、プロジェクトにアクセスして、最新のコードに基づいているかどうかを確認します。
webhookアドレス
Webhookは、GitHubに入力するために使用される、Jenkinsに通知するときに要求されるアドレスであり、GitHubがこのアドレスを介してJenkinsに通知できるよう
にします。Jenkinsが配置されているサーバーのアドレスが192.168.15.11、ポートが8080であるとすると、Webhookアドレスはhttp:/です。 /192.168.15.11:8080/github-webhook
繰り返しますが、上記のアドレスは外部ネットワークからアクセスできる必要があります。アクセスできない場合、GitHubはJenkinsにアクセスできません。
1.IDEAを使用してGithubソースコードをプルします
デモプロジェクトのソースコード
- 今回Jenkinsでビルドするために使用したプロジェクトは、springboot Webプロジェクトです。
コードは非常に単純で、コントローラーは1つだけで、次のようにhttpリクエストを受信して文字列を返します。
@RestController
public class Controller {
Date date = new Date();
@RequestMapping("hello")
public String hello(String name){
return name + ",<font color='red'>您好:</font>" + date.getTime();
}
}
- ローカルテスト、httpリクエストアクセス
2つ目は、GitHubを構成する
1.パーソナルアクセストークンを生成する
- JenkinsがGitHubプロジェクトにアクセスする場合、一部の操作には承認が必要なため、Jenkinsが使用するためにGitHubで承認済みトークンを生成する必要があります。これはパーソナルアクセストークンです。生成手順は次のとおりです。
以下に示すように、GitHubにログインし、[設定]ページに入り、左下隅にある[開発者設定]をクリックします。
- [開発者設定]ページにジャンプした後、以下に示すように、左下隅にある[個人アクセストークン]をクリックします。
- 「パーソナルアクセストークン」ページにジャンプした後、以下に示すように、右上隅にある「新しいトークンの生成」ボタンをクリックします。
- GitHubパスワードの入力を求められる場合があります。入力後、次の図に示すようにトークン作成ページにリダイレクトされ、タイトルを入力し、[repo]と[admin:repo_hook]をオンにして、下部にある[Generatetoken]ボタンをクリックします。新しいアクセストークンを生成し、この文字列をコピーします。これは、後でjenkinsタスクで使用されます。
2. Github Webhookを構成します(フック、新しいコードが送信されると、jenkinsに通知されます)
- 以下に示すように、プロジェクトのメインページで、右上隅の[設定]をクリックし、左側の[Webhook]をクリックしてから、[Webhookの追加]をクリックします。
- 次の図に示すように、[ペイロードURL]の位置にWebhookアドレスを入力し、下部にある[Webhookの追加]ボタンをクリックしてWebhookの構成を完了します。将来、現在のプロジェクトにコードが送信されている場合、GitHubはこのWebhookアドレスにリクエストを送信してJenkinsに通知します構成:
Github Webhook(フック)を構成するこのステップは、実際には構成する必要はありません。構成されている場合、405にアクセスできません。以下のjenkins構成で構成した後、Githubは自動的にフックを作成します。
3、ジェンキンス構成
1.国内ソースを構成します(プラグインをダウンロードする必要がある場合は、プラグインのダウンロード速度を上げるように構成できます)
- 以下に示すように、[システム管理]-> [プラグインの管理]-> [詳細]をクリックします。
- 国内の送信元アドレスを入力してください:https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
2、システム設定
-
GitHubプラグインプラグイン。このプラグインが[システム管理]-> [プラグインの管理]の場所にインストールされているかどうかを確認します。インストールされていない場合は、最初にインストールしてください。赤いボックス4にフィルタープラグインを入力してください
。- Gitを検索し、すべてを選択し、赤いボックス5をクリックしてダウンロードし、使用するgithubを構成します。
- SSHを検索し、すべてを選択し、赤いボックス5をクリックしてダウンロードし、使用するリモートサーバーを構成します。
- Mavenを検索し、すべてを選択し、赤いボックス5をクリックしてダウンロードし、Mavenが使用する必要のあるプロジェクトを構成します。
- ロケールを検索し、すべてを選択し、赤いボックス5をクリックしてダウンロードし、使用する国際化された中国語を構成します。
- 上記のダウンロードは、並行して一緒にダウンロードできます。
-
以下に示すように、国際化を構成し、[システム管理]-> [システム設定]をクリックします。zh_CN:
簡略化された中国語
zh_TW:従来の中国語 -
GitHubを構成し、[システム管理]-> [システム設定]をクリックして、システム設定ページで[GitHub]を見つけ、次の図に示すように[GitHubサーバー]を構成します。「APIURL」に「https://api.github.com」と入力します。 「資格情報」の場所は、下の図の赤いボックスに示されています。「追加」->「ジェンキンス」を選択します。
-
ポップアップ表示されるページで、[種類]の[シークレットテキスト]を選択し、GitHubで以前に生成されたパーソナルアクセストークンを[シークレット]に入力し、次のように説明に説明を入力します。
-
書き込んだ後、右側の[接続のテスト]ボタンをクリックします。情報が入力されていない場合、表示されるコンテンツは次の図のようになります
(ps:[接続のテスト]をクリックすると失敗する可能性があります。[資格情報]ドロップダウンボックスを切り替えて、数回試してください)
-
次の図に示すように、ログインSSHサーバー情報を構成し、構築されたjarパッケージをアップロードするサーバーとパスを記述します。
上記の説明:- 名前:ssh名、自由に入力できます。
- ホスト名:リモートサーバーアドレス。
- ユーザー名:リモートサーバーアカウント。
- リモートディレクトリ:リモートサーバーにアップロードするパス(これはグローバル構成です。これは、このSSHサーバーを選択するすべてのプロジェクトに影響します。これについては後で説明します)。;
- 次の図に示すように、赤いボックス2をクリックしてリモートサーバーのログインパスワードを入力し、右側の[構成のテスト]ボタンをクリックしてテストします。
-
ページの下部にある[保存]ボタンをクリックします。
3.Githubプロジェクトのアドレスを取得します
- GitHubプロジェクトの
倉庫アドレス下図に示すように、プロジェクトのホームページと倉庫アドレスが異なります。赤いボックス2のボタンをクリックすると、赤いボックス3の倉庫アドレス(SSHの代わりにHTTPSを使用):
倉庫アドレス:https:// github.com/a402942988/tuding.git
4、ジェンキンスの新しいビルドプロジェクト
- ジェンキンスの新しい下に示すように、tudingと呼ばれるプロジェクトをビルドするMavenの:
何Mavenの選択肢が存在しない場合は、次のMavenプラグインでは、プラグイン「システム管理] - > [プラグインの管理」をインストールしてくださいいない場合は、プラグインがインストールされているかどうかを確認するために位置を、
その後、設定されている構成情報は、「ソースコード管理設定」と「ビルド環境設定」の2つの部分に分かれています。
5、ソースコード管理設定
1.初めて設定する場合は、赤いボックス3の右側にある[追加]をクリックして、Githuログインアカウントとパスワードを入力する必要があります。2。Github
フックを確認します。
上の図の各赤いボックスの設定は次のように説明されています。
- 「Git」を選択します。
- 「リポジトリURL」入力ウェアハウスアドレス:https://github.com/a402942988/tuding.git;
- 「Credentials」は資格情報を作成し、Kindは「Usernamewith password」を選択し、UsernameはGitHubアカウントを入力し、PasswordはGitHubpasswordを入力します。
- 「ビルドトリガー」の「GiTScmポーリング用のGitHubフックトリガー」を確認してください。
6、環境設定を構築する
-
次の図に示すように、[シークレットテキストまたはファイルを使用する]をオンにして、以下の[資格情報]用に以前に構成した[個人アクセストークン]を選択します。
-
以下に示すように、Mavenの設定:
-
次の図に示すように、ビルド後に操作を構成し、リモートLinuxDockerマウントディレクトリにアップロードする準備をし
ます。上記の手順について説明します。- 「ビルドが成功または不安定な場合は両方を実行する」を選択します。
- 選択择「SSH経由でファイルを送信またはコマンドを実行する」;
- Jenkinsグローバル構成で構成されたリストからSSH構成(つまり、上記で構成された「GitHubサーバー」)を選択します。
- jarパッケージの相対パスを選択します(今回は、jarの場所はdemo-www / target /ディレクトリの下にあります)。
- プレフィックスを削除します。つまり、jarパッケージ名のみを残します。
- アップロードが成功した後に実行されるコマンドの場合、dockerを使用してコンテナーを再起動します。
-
設定後、ページ下部の「保存」ボタンをクリックしてください。
-
構成が完了したら、Githubをチェックして、フックが自動的に正常に作成されるかどうかを確認します。次の図が表示されている場合は、成功を意味します。
紫色のボックスに「✔」が表示され、Githubがジェンキンスに通知できることを示します
セブン、ビルドして実行
-
以下に示すように、[ビルド]をクリックします。
-
次の図に示すように、数秒待つと、ビルドの進行状況バーが右下隅に表示されます。
-
プロジェクト名をクリックし、次の図を入力し、クリックしてビルドログを表示します。
-
次の図に示すように、ログを確認します。
赤いボックス1:正常に構築されたことを示します。
赤いボックス2:構築後のプロジェクトパスを示します。
赤いボックス3:Linuxサーバーにアップロードしてコマンドを実行します。
赤いボックス4:正常に実行されたことを示します。
-
リモートhttpアドレスにアクセスして、リリースが成功したかどうかを確認します。
-
以下に示すように、ローカルコードを変更します。
@RestController
public class Controller {
Date date = new Date();
@RequestMapping("hello")
public String hello(String name){
return name + ",<font color='red'>您好,我修改了内容:</font>" + date.getTime();
}
}
- Gitがコードを送信すると、jenkinsが自動的にビルドされます
(原則として、コードがGithubウェアハウスに送信された後、Githubは構成されたWebhookアドレスを介してjenkinsに通知し、jenkinsはリクエストを受信した後に自動的にビルドします)
- 次の図に示すように、Github通知ログを確認して、正常に通知されます。
- 自動ビルドが成功したかどうかを確認します。
終わり
これまでのところ、Mavenプロジェクトのgithub + jenkins + docker自動構築が達成されています。この構造は、中小企業でも問題なく実行できます。頻繁なビルドなどでパフォーマンスが維持できない場合は、この構造を拡張して、ジェンキンスクラスターとドッカーサーバーを追加できます。