目次
10. フリースタイルCI運用(中間アーキテクチャ)
中間アーキテクチャ図
Webプロジェクトの作成
Web プロジェクトを作成するには、 spring boot
プロジェクト名 などの単純なプロジェクトを使用しますhellojks
。 spring web
依存関係をインポートするだけです。
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloController {
@GetMapping("/hello")
public String helloHandle(){
return "Hello Jenkins!!!!";
}
}
テストを開始するとアクセスが成功します
アイデアはプロジェクトをリモート ウェアハウスに送信します
gitlab でリモート ウェアハウスを作成して、以前に作成した Web プロジェクトを管理する
アイデアでローカル ライブラリを作成する
リモート ウェアハウス ページの Git グローバル セットアップのコマンドに従って、プロジェクトTerminal 窗口
にグローバル ユーザーを作成します。
コードをローカル ライブラリに送信する
プロジェクトを右クリックし、 を選択しますGit -> Commit Directory
。
Commit to master
ウィンドウが ポップアップ表示されます。コミットするファイルを選択し、テキスト領域にコミット ログを入力します。それからCommit
。
その後、警告が表示されますが、送信には影響せず、再Commit Anyway
インストールするだけです。
コードをリモート ライブラリに送信する
まず、リモート倉庫から倉庫のアドレスを取得します。Clone with HTTP
コピーするアドレスを選択します。
次に、プロジェクトを右クリックして、 を選択しますGit -> Push
。
新しいウィンドウ をクリックしDefine remote
、コピーしたリモート ウェアハウスのアドレスをポップアップ ウィンドウに貼り付けます。
GitLab
プッシュ後、ログイン ウィンドウが表示され
、ユーザー名を入力しますroot
。パスワードは以前のものです。GitLab修改过的密码
プッシュが成功すると、アイデアの右下隅に成功のプロンプトが表示されます。
この時点で、GitLab ページを更新すると、プッシュされたプロジェクトが表示されます。
ジェンキンスからコードをプルします
新しいタスクを作成する
jenkins は gitlab を統合します
一般向けGitLab 仓库,直接指定仓库地址,应用保存即可
。しかし、のために private 仓库,则需要指定访问 GitLab 的用户名与密码
。「追加」ボタンをクリックして、下のウィンドウを開きます。
入力後用户名与密码
「追加」で前のページに戻ると、Credentials
ドロップダウンボックスで新しく追加したユーザー情報を見つけて選択できます。
今すぐ構築
コンソール出力を表示する
上記は 2 番目のビルドですが、最初のビルドでは、 Jenkins がそのコンテナーをプロジェクトのローカル ウェアハウス (データ ボリューム ディレクトリ) としてJenkins执行 git init /var/jenkins_home/workspace/my_hellojks 命令
使用していることがわかります。/var/jenkins_home/workspace/my_hellojks 目录
jenkins データ ボリュームを入力して、プロジェクトがすでに存在していることを確認します。
プロジェクトをjarパッケージにする
Jenkins では、これを構成し、ローカルで呼び出しmaven 的 mvn 命令
、プルしたプロジェクトを Jar パッケージに入力できます。
Jenkinsのconfigure mvnコマンド
「構成」をクリックすると、構成ページが開きます。クリックすると Build Steps
次の場所にジャンプします。
最上位の Maven ゴールを呼び出し、以前に構成した Maven を使用してパッケージ化タスクを完了します。
「clean package -DskipTests」は、Java プロジェクトをビルドしてテストの実行をスキップする Maven コマンドです。
再構築する
ビルド成功
ビルドが成功したら、jenkins データ ボリューム ディレクトリに入る/var/jenkins_home/workspace/my_hellojks
と、ターゲット ディレクトリ () が追加されたことがわかります"target" 目录是 Maven 构建工具生成的默认目录,用于存放构建过程中生成的各种输出文件。
。ターゲット ディレクトリを開くと、出力された jar パッケージが表示されます。
コード品質検査
Jenkins の my_hellojks プロジェクト内のSonarScanner
コードに品質チェックを適用します。したがって、プロジェクト内で設定する必要があります SonarScanner
。
ビルドが立即构建
成功したら、SonarQube ページを更新すると、新しいプロジェクトが追加されたことがわかります。
正常に構築されました。ページを表示します
Jenkins がコードをターゲット サーバーにプッシュします。
返されたタスクのホームページで、即時ビルドを再度実行します。ログを見ると、対象サーバーに接続してファイルを1つプッシュしたログが確認できます。
ターゲット サーバーを確認すると、jar パッケージがプッシュオーバーされていることがわかります。
イメージをビルドしてコンテナを起動する
Jenkins でターゲット サーバーで実行される関連コマンドを構成すると、Jenkins が jar パッケージをターゲット サーバーにプッシュした後、構成されたコマンドがすぐに自動的に実行され、jar パッケージがミラー イメージに構築され、対応するコンテナーが起動されます。プロジェクトを実行し始めます。
Dockerfile の定義
イメージを構築するには、イメージを定義する必要がありますDockerfile
。Directory
たとえば、Idea プロジェクトに新しいプロジェクトを作成しdocker
、その中に新しいプロジェクトを作成しますDockerfile
。
Idea ターミナルの実行は、mvn clean package
プロジェクトをクリーンアップしてビルド操作を実行するために使用される Maven コマンドです。
Dockerfile ファイルの内容
FROM openjdk:8u102
LABEL auth="shengxia" email="[email protected]"
COPY hellojenkins-0.0.1-SNAPSHOT.jar /jenkins/hellojenkins.jar # 复制到目标服务器所在的目录
WORKDIR /jenkins
ENTRYPOINT ["java", "-jar", "hellojenkins.jar"]
compose.ymlを定義する
compose.yml
イメージの構築とコンテナの起動のために、 idea の新しいディレクトリに新しいものを作成します。
services:
hellojenkins:
build: ./
image: hellojenkins
container_name: myhellojenkins
ports:
- 8080:8080
GitLab にプッシュする
ビルド後の操作を再構成する
再構築する
Jenkins の返されたタスクのホームページで、即時ビルドを再度実行します。ビルドが成功したら、ターゲット サーバーのディレクトリをチェックして/jenkins
、docker 目录及其下的两个 docker 文件已经存在了
jar パッケージもコピーされていることを確認します。
hellojenkins 镜像
ターゲット サーバー上の Docker イメージでは、Docker イメージが生成されている ことがわかります。
ターゲットサーバーではdocker ps
、コンテナが起動していることがわかります。
ブラウザでターゲット サーバー上のアプリケーションにアクセスすると、すでにアクセス可能になっています。
アイデア内のコードを変更して gitlab にプッシュし、[ビルド] をクリックすると、配信が完了します。
コードを変更する
package com.example.hellojenkins.controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloController {
@GetMapping("/hello")
public String helloHandle(){
return "Hello Jenkins. This is the second modified!!!!";
}
}
今すぐ構築
チェック