Jenkins+Docker継続的インテグレーションの実装

Jenkins+Docker継続的インテグレーションの実装

1. Jenkinsの紹介

Jenkins はオープンソース ソフトウェア プロジェクトです。Java をベースに開発された継続的インテグレーション ツールです。継続的な反復作業を監視するために使用されます。ソフトウェアの継続的インテグレーションを可能にするオープンで使いやすいソフトウェア プラットフォームを提供することを目的としています。

2. Jenkinsをインストールしてデプロイする

ダウンロードアドレス: https://jenkins.io/download/

ここからwarパッケージをダウンロードします。バージョン: 1.642.3 LTS .war

1. 環境情報

ホスト名オペレーティング システムのバージョンIPアドレスソフトウェアをインストールする
osb30レッドハット6.5 172.16.206.30ジェンキンス

2. 新しいJenkinsユーザーを作成する

[root@osb30 ~]# グループ追加ジェンキンス

[root@osb30 ~]# useradd -g jenkins jenkins

[root@osb30 ~]# id ジェンキンス

uid=501(jenkins) gid=501(jenkins) グループ=501(jenkins)

[root@osb30 ~]# echo "wisedu" | passwd --stdin jenkins &> /dev/null

3. Jenkinsのインストール方法

Jenkins をインストールするには、Tomcat デプロイメントと Java デプロイメントの起動の 2 つの方法があります。この実験では、Tomcat でのデプロイメントと起動を例に説明します。

(1)Tomcatを使ったデプロイメント

a. まず、TomcatとJAVAをインストールし、環境変数を設定します(この手順についてはここでは説明しません。Javaの設定は必須です)

ここでjdk 1.8.0_65をインストールしました。

b. 公式サイトからダウンロードしたjenkins.warファイルをtomcatの下のwebappsディレクトリに配置し、tomcatの/binディレクトリに入り、tomcatを起動してjenkinsを起動します。

ここではtomcat8を使用しています。

c. Jenkins を起動すると、webapps ディレクトリの下に Jenkins ディレクトリが自動的に作成されます。アクセス アドレスは http://localhost:8080/jenkins です。

[jenkins@osb30 ~]$ tar zxf apache-tomcat-8.0.30.tar.gz

[jenkins@osb30 ~]$ mv jenkins.war apache-tomcat-8.0.30/webapps/

[jenkins@osb30 ~]$ cd apache-tomcat-8.0.30

[jenkins@osb30 apache-tomcat-8.0.30]$ bin/startup.sh

Jenkins ホーム ディレクトリ: /home/jenkins/.jenkins が $user.home/.jenkins にあります

起動時にエラーが発生した場合:

原因: java.awt.AWTError: DISPLAY 変数の値として ':0' を使用して X11 ウィンドウ サーバーに接続できません...

解決する:

[jenkins@osb30 ~]$ cd apache-tomcat-8.0.30/bin/

[jenkins@osb30 bin]$ vim catalina.sh

JAVA_OPTS="-Xms1024m -Xmx1024m -Djava.awt.headless=true"

d. Jenkinsにアクセスする

http://172.16.206.30:8080/ジェンキンス

(2)JavaデプロイメントがJenkinsを起動する

jenkins.war が保存されているディレクトリに切り替えて、次のコマンドを入力します。

$ java -jar ジェンキンス.war

起動ポートを変更できます

$ java -jar jenkins.war --httpPort=8000

次に、ブラウザに http://localhost:8080 と入力します (Firefox または Chrom を推奨)。localhost は、ローカル IP アドレスまたはコンピューター名にすることができます。 Jenkins を開くことができます。ポートを変更した後、アクセス アドレスのポートも同期的に変更する必要があります。

4. Jenkinsの認可とアクセス制御

デフォルトでは、Jenkins にはセキュリティ チェックが含まれていないため、誰でも Jenkins の設定、ジョブを変更し、ビルドを開始できます。当然のことながら、複数の部門が連携して作業する必要がある大規模な企業では、セキュリティ チェックがないと多くの問題が発生します。 Jenkins のセキュリティは、次の方法で強化できます。

Jenkins にアクセスします: http://172.16.206.30:8080/jenkins

「システム管理」->「グローバル セキュリティの構成」をクリックし、「セキュリティを有効にする」をクリックすると、Jenkins の認証とアクセス制御を強化する方法が多数あることがわかります。

ポリシーを表示:

上図に示すように、デフォルトは「すべてのユーザーが何でもできる(制限なし)」です。

「セキュリティドメイン」と「ユーザー登録の許可」で「Jenkins 専用ユーザーデータベース」を選択し、登録後に Jenkins を管理できなくなることを防ぐために、「承認ポリシー」で最初に「すべてのユーザーが何でもできる (制限なし)」をクリックします。この時点で、Jenkins ページを更新すると、右上隅にログイン ボタンと登録ボタンが表示されます。

(1)管理者アカウントを登録する

a. 「登録」をクリックし、まず管理者アカウントを登録します。

b. 「システム管理」->「グローバル セキュリティの構成」をクリックし、「承認ポリシー」で「セキュリティ マトリックス」を選択し、ユーザー/グループを追加し、管理者アカウントを追加し、管理者アカウントのすべての権限を追加し、匿名ユーザーに知らせたい機能をチェックします。

[注意]: 匿名ユーザーはここで読み取り権限を有効にする必要があります。有効にしないと、GitHub または Bitbucket の Webhook のその後の自動ビルドに権限が与えられません。

このオプションをチェックして、「保存」をクリックします。

この操作を完了すると、管理者アカウントでログインし、ログインしているユーザーのあらゆる操作権限を取り消すことができます。

以上の操作で、Jenkins の認証とアクセス制御が完了します。

5. Jenkinsシステム構成

Jenkins - システム管理 - システム設定にログインし、Jenkins に必要な機能構成を追加します。これには次の側面が含まれます。

(1)JDKの設定

jdk オプションで、「JDK の追加」をクリックし、自動インストールをキャンセルして、jdk エイリアス (任意の名前) を入力します。JAVA_HOME は誰でも知っているはずです。jenkins が配置されているサーバーにインストールされている Java プログラムの HOME の場所を入力するだけです。win7 D:\Java\jdk1.8 linux /usr/lib/jvm/jdk1.7.0_51 など、異なるオペレーティング システムに応じて異なるパスを入力します。

設定後は必ず保存してください。

(2)git/svnバージョン管理を追加する

jdk 構成など、使用するバージョンに応じてバージョンを制御するアプリケーションのパスを選択します。

[注意]: バージョン管理リポジトリとして Git を使用する場合、Jenkins にはデフォルトで Git がインストールされません。プラグイン管理インターフェースで Git を選択し、直接「インストール」をクリックする必要があります。

「システム管理」->「プラグインの管理」->「オプションのプラグイン」をクリックし、右上隅の「フィルター」フィールドに git と入力して検索します。

Git クライアント プラグインと Git プラグインを見つけて、それらの前に √ を付け、クリックして直接インストールします。

プラグインをインストールしています。 。 。

インストールが成功したら、Jenkins を再起動します。

[jenkins@osb30 ~]$ cd apache-tomcat-8.0.30

[jenkins@osb30 apache-tomcat-8.0.30]$ bin/shutdown.sh

[jenkins@osb30 apache-tomcat-8.0.30]$ bin/startup.sh ;tail -f logs/catalina.out

(3)JenkinsにMavenの設定を追加する

まず、Jenkins が配置されているホストに Maven がインストールされているかどうかを確認します。

# mvn –バージョン

-bash: mvn: コマンドが見つかりません

インストールされていない場合は、まず Maven をインストールしてください。

a. CentOSにMavenをインストールする

[root@osb30 ~]# cd /usr/local/

[root@osb30 ローカル]# wget http://apache.opencas.org/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gz

 

[root@osb30 ローカル]# tar zxf apache-maven-3.3.9-bin.tar.gz

[root@osb30 ローカル]# ln -s apache-maven-3.3.9 maven

[root@osb30 ローカル]# vim /etc/profile

# 次の設定を追加します。

# Maven 構成。

MAVEN_HOME = /usr/local/maven

PATH=$MAVEN_HOME/bin:$PATH をエクスポートします

[root@osb30 ローカル]# ソース /etc/profile

 

[root@osb30 ローカル]# mvn -version

Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-11T00:41:47+08:00)

Maven ホーム: /usr/local/maven

Java バージョン: 1.8.0_65、ベンダー: Oracle Corporation

デフォルトのロケール: en_US、プラットフォームのエンコーディング: UTF-8

OS 名: "linux"、バージョン: "2.6.32-431.el6.x86_64"、アーキテクチャ: "amd64"、ファミリ: "unix"

b.JenkinsでMavenを設定する

インストールが完了したら、Jenkins にログインします。システム管理 -> システム設定をクリックします。

3. JenkinsはMavenスタイルのジョブを構築する

1. 新しいMavenタスクを作成する

Jenkins にログインし、「新規」をクリックします。アイテム名を入力し、「Maven プロジェクトのビルド」を選択して、「OK」をクリックします。

2. ビルドタスクの構成

3. ソースコード管理構成

設定ページに移動し、「ソース コード管理」を見つけます。ここでは svn を使用しているため、プロジェクトが配置されているリポジトリのアドレスを入力します。

4. ビルドトリガーの設定

「ソース コード管理」の下に「ビルド トリガー」があります。

「ビルド トリガー」は、完了したビルドの結果に基づいて新しいジョブをトリガーしたり、パラメーターを渡したりできる継続的インテグレーション トリガー プラグインです。デフォルトのオプションは、SNAPSHOT 依存関係がビルドされるたびにビルドです。つまり、コードが更新されるとプロジェクトがビルドされます。

定期的にビルドし、SCM でスケジュールされた自動ビルドを設定できます。両者の違いは次のとおりです。

  • SCM のポーリング: ソース コードの変更を定期的に確認します (SCM ソフトウェアのバージョン番号に従って)。更新がある場合は、最新のコードをチェックアウトしてからビルドを実行します。
  • 定期的にビルドする: プロジェクトを定期的にビルドします (ソース コードが変更されたかどうかは関係ありません)。

12 時間ごとにビルドするように設定しました。

5. Mavenビルド設定

(1)事前ステップ

「事前手順」オプションは、ビルド前の作業を構成するために使用され、ここでは変更は行われません。

(2)ルートPOMとゴールとオプションを設定する

これは Maven プロジェクトなので、ビルド オプションにはルート POM と目標およびオプションの設定があります。ルート POM: プロジェクトの pom.xml ファイルの場所を入力します。注: これは相対的な場所です。ファイルが存在しない場合は、赤いプロンプトが表示されます。

たとえば、私はこうです:

(3)ポストステップ

Maven プロジェクトが作成された後、自動公開を実現するために、ビルドが完了するたびに war ファイルを Alibaba Cloud ホストに公開する必要もあります。シェルを追加することで自動公開を実装します。

Post ステップの下にある実行シェルを見つけます。

[注意]: Jenkins はユーザー jenkins としてシェル スクリプトを実行します。シナリオによっては、環境変数 PATH に注意してください。

イントラネット内の Jenkins ホストを信頼するように Alibaba Cloud ホストを構成します。

war パッケージはイントラネット サーバー上にあり、公開環境は Alibaba Cloud ホスト上にあるため、war パッケージを scp するときにパスワードを入力する必要がないように、ホストの相互信頼を構成する必要があります。私のイントラネット サーバーの IP は 172.16.206.30 で、外部 IP は 114.55.29.246 です。

[jenkins@osb30 ~]$ ssh-keygen -t rsa -f .ssh/id_rsa

[jenkins@osb30 ~]$ ssh-copy-id -i .ssh/id_rsa.pub [email protected]

4. Jenkinsのメール通知設定

1. Jenkinsの組み込みメール機能を設定する

(1)システム設定を見つける

(2)システム管理者のメールアドレスを入力する

[注意]: システム管理者のメールアドレスを入力する必要があります。入力しないとメールを送信できず、以下のテストメールも送信できません。

(3)電子メール通知を見つけて、SMTPサーバーのアドレスを入力し、「詳細設定」をクリックして、送信者のアカウントとパスワードを入力します。

(4)「テストメールを送信して設定をテストする」をチェックし、受信者のアカウントを入力します。

この時点ですでに電子メールを送信できます。特定のジョブ構成で、「ビルド設定」を見つけて受信者の電子メール アドレスを入力しますが、ビルドが失敗した場合にのみ電子メールを送信できることがわかります。メール拡張プラグインをインストールしてカスタマイズできます。

2. メール拡張機能プラグインをインストールして使用する

(1)メール拡張機能プラグインをインストールする

このプラグインは Jenkins バージョン 1.5 以降をサポートしています。

「システム管理」 - 「プラグイン管理」 - 「電子メール拡張プラグインのインストール」に移動します。ビルドの結果に基づいてビルド レポートを送信できます。このプラグインは Jenkins バージョン 1.5 以降をサポートしています。

[注意]: インストール後にメール拡張プラグインを使用すると、組み込みのメール機能を放棄できます。

(2)メール拡張プラグインの設定と使用

「システム構成」→「システム設定」をクリックします。

拡張電子メール通知を見つけて、次の設定を入力します。

【注意】: 上記のユーザー名とパスワードは、「詳細設定」をクリックした後にのみ表示されます。ユーザー名とパスワードを入力する必要があります。そうしないと、メールを送信できません。

下の「保存」をクリックしてください。

次に、ジョブ設定ページに移動してこのプラグインを有効にします。電子メールで送信したいアイテムを見つけてクリックします。

[構成] をクリックし、[ビルド後のアクションの追加] をクリックして、[編集可能な電子メール通知] を選択します。

ビルド ログを添付し、[詳細設定] をクリックします。

トリガーを構成する:

より詳しい紹介: http://www.cnblogs.com/zz0412/p/jenkins_jj_01.html

5. ソナー

公式ドキュメント: http://docs.sonarqube.org/display/SONARQUBE45/Documentation

1. ソナーの紹介

Sonar は、Java ソース コードの品質を管理するために使用される、コード品質管理用のオープン ソース プラットフォームです。プラグイン メカニズムを通じて、Sonar は pmd-cpd、checkstyle、findbugs、Jenkins などのさまざまなテスト ツール、コード分析ツール、継続的インテグレーション ツールを統合できます。これらの結果はさまざまなプラグインを通じて再処理され、コード品質の変化が定量的に測定されるため、さまざまな規模や種類のプロジェクトのコード品質を簡単に管理できます。

継続的インテグレーションツール(Hudson/Jenkins など)とは異なり、Sonar はさまざまなコードチェックツール(FindBugs、PMD など)の結果を Web ページに直接表示するだけでなく、さまざまなプラグインを通じてこれらの結果を再処理し、コード品質の変化を定量的に測定するため、さまざまなサイズや種類のプロジェクトのコード品質を簡単に管理できます。

他のツールのサポートに関しては、Sonar は IDE のサポートを提供するだけでなく、Eclipse や IntelliJ IDEA などのツールで結果をオンラインで表示できるようにします。また、Sonar は多数の継続的インテグレーション ツールのインターフェイス サポートも提供しているため、継続的インテグレーションで Sonar を使用するのに非常に便利です。

さらに、Sonar のプラグインは Java 以外のプログラミング言語のサポートも提供でき、国際化やレポートのドキュメント化も適切にサポートされています。

2. 環境要件

http://docs.sonarqube.org/display/SONAR/要件

3. 新しいユーザーを作成する

[root@osb30 ~]# グループ追加ソナー

[root@osb30 ~]# useradd -g ソナー ソナー

[root@osb30 ~]# id ソナー

uid=502(ソナー) gid=502(ソナー) グループ=502(ソナー)

[root@osb30 ~]# echo "wisedu" | passwd --stdin sonar &> /dev/null

4. JDKをインストールする

[sonar@osb30 ~]$ java -バージョン

Javaバージョン「1.8.0_65」

Java(TM) SE ランタイム環境 (ビルド 1.8.0_65-b17)

Java HotSpot(TM) 64 ビット サーバー VM (ビルド 25.65-b01、混合モード)

5. データベースをインストールして構成する

[root@osb30 ~]# mysql -uroot –p

mysql> CREATE DATABASE sonar CHARACTER SET utf8 COLLATE utf8_general_ci;

mysql> 'sonar' というユーザーを作成します。ID は 'sonar' です。

mysql> 'sonar'@'%' に 'wisedu' によって識別されるすべての権限を GRANT ON sonar.* TO 'sonar'@'%';

mysql> 'wisedu' によって識別される 'sonar'@'localhost' に sonar.* のすべての権限を付与します。

mysql> 権限をフラッシュします。

6. ソナーをインストールする

ここで使用するバージョンはSonarQube 4.5.7 (LTS *) です。ソフトウェアをsonarユーザーのホームディレクトリにアップロードします。

[sonar@osb30 ~]$ 解凍 -oq sonarqube-4.5.7.zip

[sonar@osb30 ~]$ vim sonarqube-4.5.7/conf/sonar.properties

次のフィールドを変更します (データベース情報を構成するだけで、他に変更する必要はありません)。

sonar.jdbc.ユーザー名: sonar

sonar.jdbc.パスワード: wisedu

sonar.jdbc.url: jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true

 

# オプションのプロパティ

sonar.jdbc.driverクラス名: com.mysql.jdbc.Driver

7. ソナーを起動する

Sonar はデフォルトで jetty コンテナを統合しており、これを直接起動してサービスを提供することも、スクリプトを通じて war パッケージに組み込み、tomcat コンテナにデプロイすることもできます。

Sonar のデフォルトのポートは「9000」、デフォルトのコンテキスト パスは「/」、デフォルトのネットワーク インターフェイスは「0.0.0.0」、デフォルトの管理者アカウントとパスワードは admin/admin です。これらのパラメータは、構成ファイル sonar.properties で変更できます。このマシンのポート 9000 は他のプログラムによって使用されているため、ここでポートを変更しました。

[sonar@osb30 ~]$ vim sonarqube-4.5.7/conf/sonar.properties

ソナーウェブポート=9003

[sonar@osb30 ~]$ sonarqube-4.5.7/bin/linux-x86-64/sonar.sh 開始

ログを表示します:

[sonar@osb30 ~]$ tail -f sonarqube-4.5.7/logs/sonar.log

初めて起動するときに初期化ステートメントが表示されます。

8. ソナーを閉じる

[sonar@osb30 ~]$ sonarqube-4.5.7/bin/linux-x86-64/sonar.sh を停止します

9. ソナーにアクセスする

ブラウザにhttp://172.16.206.30:9003/と入力してください

デフォルトの管理者アカウントとパスワードは admin/admin です。

10. ソナープラグイン

Sonar はさまざまなプラグインをサポートしています。プラグインのダウンロード アドレスは次のとおりです: http://docs.codehaus.org/display/SONAR/Plugin+Library

ダウンロードしたプラグインを ${SONAR_HOME}extensions\plugins ディレクトリにアップロードし、sonar を再起動します。

Sonar は、プラグインのコレクションである Java Ecosystem プラグインをデフォルトで統合します。

  • Java [sonar-java-plugin]: Javaソースコード解析、計算インジケータなど。
  • Squid [sonar-squid-java-plugin]: Sonar定義のルールに違反するコードをチェックします
  • Checkstyle [sonar-checkstyle-plugin]: CheckStyleを使用して、統一コーディングスタイルに違反するコードをチェックします。
  • FindBugs [sonar-findbugs-plugin]: FindBugsを使用して、ルールに違反する欠陥のあるコードをチェックします
  • PMD [sonar-pmd-plugin]: pmdを使用してルールに違反するコードをチェックします
  • Surefire [sonar-surefire-plugin]: Surefireを使用してユニットテストを実行する
  • Cobertura [sonar-cobertura-plugin]: Cobertura を使用してコード カバレッジを取得する
  • JaCoCo [sonar-jacoco-plugin]: JaCOCO を使用してコード カバレッジを取得する

11. Jenkinsとの統合

Maven 経由で統合することも、Jenkins と直接統合することもできます。ここでは Jenkins と直接統合することを選択します。

(1) メインのMaven設定ファイル(${MAVEN_HOME}/conf/settings.xmlファイルまたは~/.m2/settings.xmlファイル)を変更し、SonarデータベースとSonarサービスアドレスへのアクセスを追加し、次の設定を追加します。

<プロフィール>

<id>ソナー</id>

<プロパティ>

    <sonar.jdbc.url>jdbc:mysql://localhost:3306/sonar</sonar.jdbc.url>

    <sonar.jdbc.driver>com.mysql.jdbc.ドライバー</sonar.jdbc.driver>

    <sonar.jdbc.username>ソナー</sonar.jdbc.username>

    <sonar.jdbc.password>ソナー</sonar.jdbc.password>

    <sonar.host.url>http://localhost:9003</sonar.host.url> <!-- Sonar サーバーのアクセス アドレス -->

</プロパティ>

</プロフィール>

 

<アクティブプロファイル>

    <activeProfile>ソナー</activeProfile>

</アクティブプロファイル>
...

(2)Jenkinsプラグイン管理で、sonar jenkinsプラグインのインストールを選択します。これにより、プロジェクトはビルドされるたびにコード測定のためにsonarを呼び出すことができます。

a. プラグインをインストールする

b. システム構成にソナー構成を追加する

次に示すように、システム構成ページに入り、ソナー プラグインを構成します。

次に、下の「保存」をクリックします。

c. ビルドプロジェクトを構成し、ビルド後のアクションを追加します。

ビルドするプロジェクトをクリックし、左側の [構成] をクリックします。

ページの下部にある「ビルド後のアクション」を見つけて、SonarQube を選択します。

SonarQube Maven ビルダーの使用は推奨されなくなりました。ビルド環境で SonarQube を設定し、標準の Jenkins Maven ターゲットを使用することをお勧めします。

【解決する】:
http://docs.sonarqube.org/display/SCAN/Jenkins 向け SonarQube スキャナーを使用した分析

ビルドを変更する:

最後に、Jenkins に移動してプロジェクトをビルドし、ビルド後に sonar コンソールを確認します。

12. よくある質問

Jenkins がビルドした後、sonar はコードをスキャンしてエラーを報告します。

解決策: sonar JavaScript プラグインをアンインストールします。

6. JenkinsとDockerを組み合わせる

ここでは Docker Pipeline は使用しません。ビルドが完了したらシェル スクリプトを実行するだけなので、より柔軟です。

1. 展開プロセス

  • R&D を SVN コードベースにプッシュ
  • Jenkinsはビルドし、SVNコードをプルし、Mavenを使用してコンパイルおよびパッケージ化します
  • 生成されたコードをパッケージ化し、イメージの新しいバージョンを生成し、ローカルのDockerリポジトリハーバーにプッシュします。
  • リリースでは、テスト マシンはイメージの新しいバージョンをプルし、元のコンテナーを削除して、イメージの新しいバージョンを再実行します。

2. 環境の説明

ホスト名オペレーティング システムのバージョンIPアドレス使用ソフトウェアをインストールする
osb30レッドハット6.5 172.16.206.30 svn コード リポジトリ、Jenkins、Dockerジェンキンス、SVN、Docker 1.7.1
スパーク32セントOS7.0 172.16.206.32ローカル Docker リポジトリ、ビジネス展開テスト環境港、Docker 17.06.1-ce

3. 構成

docker は Jenkins マシン上の root ユーザーとして実行され、Jenkins は通常のユーザー jenkins として実行されるため、まず jenkins ユーザーを設定して docker コマンドを使用できるようにする必要があります。

[root@osb30 ~]# visudo

jenkins ALL=(root) NOPASSWD: /usr/bin/docker

Jenkins マシンでも設定します:

# パスワードが平文で表示されるため、「ssh hostname sudo <cmd>」を無効にします。

# 「ssh -t hostname sudo <cmd>」を実行する必要があります。

#

#デフォルトはttyが必要です

デフォルト:jenkins !requiretty

これが設定されていない場合、次のスクリプトを実行するとエラーが報告されます。

+ cp -f /home/jenkins/.jenkins/workspace/godseyeBranchForNov/godseye-container/target/godseye-container-wisedu.war /home/jenkins/docker-file/godseye_war/godseye.war

+ sudo dockerログイン -u jkzhao -p Wisedu123 -e [email protected] 172.16.206.32

sudo: 申し訳ありませんが、sudo を実行するには tty が必要です

172.16.206.32 マシンで構成します。

#visudo

#

#デフォルトはttyが必要です

デフォルト:root !requiretty

そうしないと、マシン 172.16.206.32 でスクリプトを実行するときにエラーが報告されます。

[SSH] 実行中...

sudo: 申し訳ありませんが、sudo を実行するには tty が必要です

docker: 参照形式が無効です。

4. プラグインをインストールする

Jenkins にログインし、「システム管理」をクリックし、「プラグインの管理」をクリックして、プラグイン「SSH プラグイン」を検索してインストールします。

Jenkins にログインし、「資格情報」をクリックして、「ドメインの追加」をクリックします。

「システム管理」、「システム構成」をクリックし、「SSH リモート ホスト」を見つけます。

5. 投稿ステップを設定する

プロジェクトのその他の構成は変更されません。上記のセクションを参照してください。

[注意]: スクリプトで使用するウェアハウスと認証アカウントは、まず harbor に作成する必要があります。

# Jenkins マシン: コンパイルが完了すると、ビルドによってイメージの新しいバージョンが生成され、リモートの docker リポジトリにプッシュされます # 変数

JENKINS_WAR_HOME='/home/jenkins/.jenkins/workspace/godseyeBranchForNov/godseye-container/target'

DOCKERFILE_HOME='/home/jenkins/docker-file/godseye_war'

HARBOR_IP='172.16.206.32'

リポジトリ = 'godseye_war/godseye'

HARBOR_USER='jkzhao'

HARBOR_USER_PASSWD='Wisedu123'

HARBOR_USER_EMAIL='[email protected]'

 

# 最新の war を docker-file ディレクトリにコピーします。

\cp -f ${JENKINS_WAR_HOME}/godseye-container-wisedu.war ${DOCKERFILE_HOME}/godseye.war

 

# イメージの初期バージョンを削除します。

sudo docker login -u ${HARBOR_USER} -p ${HARBOR_USER_PASSWD} -e ${HARBOR_USER_EMAIL} ${HARBOR_IP} 

IMAGE_ID=`sudo docker images | grep ${REPOSITORIES} | awk '{print $3}'`

if [ -n "${IMAGE_ID}" ];then

    sudo docker rmi ${IMAGE_ID}

フィ

 

# イメージをビルドします。

${DOCKERFILE_HOME} をコピーします

TAG=`日付 +%Y%m%d-%H%M%S`

sudo docker build -t ${HARBOR_IP}/${REPOSITORIES}:${TAG} . &>/dev/null

 

# 港湾レジストリにプッシュします。

sudo docker push ${HARBOR_IP}/${REPOSITORIES}:${TAG} &>/dev/null 

# イメージをプルして公開する HARBOR_IP='172.16.206.32'

リポジトリ = 'godseye_war/godseye'

HARBOR_USER='jkzhao'

HARBOR_USER_PASSWD='Wisedu123'

 

# 港にログイン

#docker ログイン -u ${HARBOR_USER} -p ${HARBOR_USER_PASSWD} ${HARBOR_IP}

 

# コンテナを停止し、コンテナを削除します。

CONTAINER_ID=`docker ps | grep "godseye_web" | awk '{print $1}'`

if [ -n "$CONTAINER_ID" ]; then

    docker stop $コンテナID

    docker rm $コンテナID

else #コンテナの起動に失敗した場合は、コンテナを見つけるために docker ps -a を実行する必要があります CONTAINER_ID=`docker ps -a | grep "godseye_web" | awk '{print $1}'`

    if [ -n "$CONTAINER_ID" ]; then # このマシンでコンテナをプルして実行するのが初めての場合、docker ps -a はこのコンテナを見つけることができません。docker rm $CONTAINER_ID

    フィ

フィ

 

# godseye_web イメージの初期バージョンを削除します。

IMAGE_ID=`sudo docker images | grep ${REPOSITORIES} | awk '{print $3}'`

if [ -n "${IMAGE_ID}" ];then

    docker rmi ${IMAGE_ID}

フィ

 

# イメージをプルします。

TAG=`curl -s http://${HARBOR_IP}/api/repositories/${REPOSITORIES}/tags | jq '.[-1]' | sed 's/\"//g'` #最後の sed はタグの前後の二重引用符を削除します docker pull ${HARBOR_IP}/${REPOSITORIES}:${TAG} &>/dev/null

 

# 走る。

docker run -d --name godseye_web -p 8080:8080 ${HARBOR_IP}/${REPOSITORIES}:${TAG}

Jenkins+Docker 継続的インテグレーションの実装に関するこの記事はこれで終わりです。Jenkins Docker 継続的インテグレーションに関するより関連性の高いコンテンツについては、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Docker+Jenkinsによる自動デプロイの実現方法
  • Docker ベースの Jenkins のデプロイに関する詳細なチュートリアル
  • Docker コンテナは Jenkins を使用して Web プロジェクトをデプロイします (概要)
  • Jenkins が Docker イメージをビルドする例
  • コンテナ化されたテクノロジーアーキテクチャの分析 Jenkins Docker K8s スクリプト

<<:  60件のページング事例と優れた実践例を推奨

>>:  CSS でデフォルトのスタイルをクリアし、共通のスタイルを設定する方法

推薦する

Centos 6.5 での mysql-community-server. 5.7.18-1.el6 のインストール

次のコマンドを使用して、MySQL Serverがインストールされているかどうかを確認します。 [r...

Vue ターンテーブル抽選の簡単な実装

この記事では、ホイール抽選を簡単に実装するためのVueの具体的なコードを参考までに共有します。具体的...

phpstudy から Linux への MySQL の移行に関するチュートリアル

プロジェクトの目的元のWindows環境でphpstudyを使用して構築されたMySQL 5.5.5...

Linux で ping は成功するがポートが利用できない問題を解決する方法

ping は成功したがポートにアクセスできない場合のポート可用性検出の説明ポート可用性検出ツールの紹...

CentOS8 yum/dnfで国内ソースを設定する方法

CentOS 8 ではソフトウェア パッケージのインストール プログラムが変更され、yum 構成方法...

CocosCreatorでWeChatゲームを作成する方法

目次1. WeChatパブリックプラットフォームからWeChat開発者ツールをダウンロードする2. ...

JSはフロントエンドのページング効果を実現します

この記事の例では、フロントエンドのページング効果を実現するためのJSの具体的なコードを参考までに共有...

Vueプロジェクトの支払い機能コードの詳細な説明

1. Alipay方式: Alipay メソッド: Alipay をクリックして支払い、バックエンド...

テーブルタグ(TAGS)の詳細な紹介

テーブルの基本構文<table>...</table> - テーブルを定義し...

Ubuntu 18.04 でソースコードから Odoo14 をインストールするチュートリアル

目次このシリーズの背景概要PostgreSQL データベースの準備ソースからインストール仮想環境の作...

CSS3 で QR コードスキャン効果を実装する例

オンラインプレビューhttps://jsrun.pro/AafKp/まず効果を見てみましょう:最初の...

React プロジェクトにおける axios カプセル化と API インターフェース管理の詳細な説明

目次序文インストール導入環境の切り替え傍受を要求するレスポンスインターセプションAPIの統合管理要約...

MySQL データベースのバックアップ プロセスに関する注意事項

今日は、データ バックアップに関連するいくつかの点について調べ、MySQL データ バックアップに関...

VueのSSRサーバーサイドレンダリング例の詳細な説明

サーバーサイドレンダリング (SSR) を使用する理由検索エンジンのクローラーが完全にレンダリングさ...

MySQL 5.7 クラスタ構成手順

目次1. サーバーAのmy.cnfファイルを変更する2. サーバーBのmy.cnfファイルを変更する...