【エンタープライズ戦闘!] Jenkins + Pipeline + DockerはJavaプロジェクトを自動的にリリースします

前に書く:

前回のブログで、Javaバックエンドプロジェクトのパイプラインリリースについて書きましたが、まだコンテナの操作は含まれていません。この記事は、パイプラインリリースのDockerイメージのデプロイプロセスに関するものです

展開環境

CPU名 IPアドレス ソフトウェアを展開する
192.168.154.129 docker、docker-compose、harbour 2G
gitlab 192.168.154.131 gitlab、git、gitlab、mysql 3G
ジェンキンス 192.168.154.128 jdk、git、jenkins、docker、maven 2G

ハーバーサーバーへの配備:

1.港湾倉庫を建設する

1.港湾倉庫を設置し、Tomcatイメージをアップロードします

参考ブログhttps://blog.51cto.com/13760351/2532347

2つ目は、データベースMySQLを構築する

1. mysql5.7をインストールします

参照ブログhttps://blog.51cto.com/13760351/2497200

2.データベースにログインして承認します

mysql -uroot -pMypass @ 123#!

mysql> grant all privileges on *.* to 'root'@'%' identified by 'Mypass@123#!' with grant option; #设置权限
mysql> flush privileges;

2.データをインポートする

データベースquartz
source /etc/quartz.sqlを作成します

3.表を見る

石英を使用します。
テーブルを表示します。

【エンタープライズ戦闘! ] Jenkins + Pipeline + DockerはJavaプロジェクトを自動的にリリースします

注意:

テーブル名またはライブラリ名が認識されない場合は、

解決:

vim /etc/my.cnf

#忽略大小写
lower_case_table_names=1  

【エンタープライズ戦闘! ] Jenkins + Pipeline + DockerはJavaプロジェクトを自動的にリリースします

データベースを再起動します

systemctl restart mysqld

gitlabサーバーにデプロイする

gitlabウェアハウスを構築する

1. gitlabリポジトリをインストールする

参照ブログhttps://blog.51cto.com/13760351/2467477

2. gitlabウェアハウスにJavaコードをアップロードする

参照ブログhttps://blog.51cto.com/13760351/2526052

Jenkinsサーバーにデプロイする

1つは、Jenkinsサーバーを設定する

1. Jenkinsサービスをインストールする

参照ブログhttps://blog.51cto.com/13760351/2368452

2. mavenプラグインと設定をインストールします

参照ブログhttps://blog.51cto.com/13760351/2527263

3. Dockerをインストールする

1. docker-ceソースを追加する

cd /etc/yum.repos.d
wget http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

2. Dockerをインストールする

yum -y install docker-ce

3. Dockerを起動します

systemctl start docker

2、パイプラインスクリプトを書く

【エンタープライズ戦闘! ] Jenkins + Pipeline + DockerはJavaプロジェクトを自動的にリリースします

1.编写Jenkinsfile

pipeline {

  agent {
    node {
      label 'master'
    }
  }
    // 拉取代码
  stages {
    stage('GetCode') {
      steps {
        sleep 5
      }
    }

    // 代码打包
    stage('Maven Build') {
        steps {
          sh '''
          export JAVA_HOME=/usr/local/java
          /usr/local/apache-maven-3.6.3/bin/mvn clean install -Ptest
          '''
        }
    }

    // 推送到镜像仓库
    stage('Push Image') {
      steps {
      sh '''
        REPOSITORY=192.168.154.129/maven-test01/maven-quartz:${branch}
                //创建镜像
        docker build -t $REPOSITORY .
                //登录,上传镜像到仓库
        docker login 192.168.154.129 -u admin -p Harbor12345
        docker push $REPOSITORY
        '''
      }
    }

    // 部署到Docker主机
    stage('Deploy to Docker') {
      steps {
        sh '''
                //推送shell脚本到docker主机
        scp images.sh root@harbor:/root/ 
                //远程执行脚本
        ssh -p 22 root@harbor "chmod +x images.sh && sh /root/images.sh"
        '''
      }
    } 
  }
}

2. Dockerfileを作成する

#从harbor拉取镜像
FROM 192.168.154.129/maven-test01/tomcat:v1
#镜像构建人信息(可选)
MAINTAINER zhao
#删除webapps目录下文件
RUN rm -rf /usr/local/tomcat/webapps/*
#复制打的最新war包到webapps目录
ADD target/quartz.war /usr/local/tomcat/webapps/

3.ミラーシェルスクリプトを作成する

#!/bin/bash
Img=`docker images |grep master |awk -F ' '  '{ print $3}'`
Con=`docker ps |grep :88 |awk -F ' '  '{ print $1}'`
#删除旧的镜像
docker stop $Con 
docker rmi -f $Img
#下载新镜像,运行
docker pull 192.168.154.129/maven-test01/maven-quartz:master
sleep 2
#后台运行容器
docker run -d -p 88:8080 192.168.154.129/maven-test01/maven-quartz:master

3、新しいプロジェクトpipline-docker

【エンタープライズ戦闘! ] Jenkins + Pipeline + DockerはJavaプロジェクトを自動的にリリースします
【エンタープライズ戦闘! ] Jenkins + Pipeline + DockerはJavaプロジェクトを自動的にリリースします

【エンタープライズ戦闘! ] Jenkins + Pipeline + DockerはJavaプロジェクトを自動的にリリースします

4、ビルドテスト

【エンタープライズ戦闘! ] Jenkins + Pipeline + DockerはJavaプロジェクトを自動的にリリースします
【エンタープライズ戦闘! ] Jenkins + Pipeline + DockerはJavaプロジェクトを自動的にリリースします

5、新しいミラーを見る

【エンタープライズ戦闘! ] Jenkins + Pipeline + DockerはJavaプロジェクトを自動的にリリースします

チップ:

同じラベルの画像がアップロードされると、前の画像は自動的に上書きされるため、古い画像を削除する必要はありません。

6、コンテナー操作を表示する

ドッカーps

【エンタープライズ戦闘! ] Jenkins + Pipeline + DockerはJavaプロジェクトを自動的にリリースします

セブン、Javaプロジェクトテスト

【エンタープライズ戦闘! ] Jenkins + Pipeline + DockerはJavaプロジェクトを自動的にリリースします
【エンタープライズ戦闘! ] Jenkins + Pipeline + DockerはJavaプロジェクトを自動的にリリースします

総括する

1.実際、3つのスクリプトファイルが他の環境に展開されている場合、ここで変更されています。
2.記事の長さを回避するために、多くの手順があります。ブログのリンクアドレスのみが表示されます。参考のために、会社に既に環境がある場合は無視してください。

  1. 参照ドキュメント:https : //blog.51cto.com/13043516/2365284

おすすめ

転載: blog.51cto.com/13760351/2532545