継続的インテグレーション環境(4)-Mavenプロジェクトの構築とパイプラインパイプラインプロジェクトの構築

1Mavenプロジェクトの構築

1.1 MavenIntegrationプラグインをインストールします

ここに画像の説明を挿入

1.2Mavenプロジェクトを作成する

ここに画像の説明を挿入

1.3構成項目

コードをプルしてリモート展開するプロセスは、「ビルド」部分を除いて、フリースタイルプロジェクトのプロセスと同じです。
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入

2パイプラインパイプラインプロジェクトの建設

2.1パイプラインの概要

1)コンセプト

パイプラインは、簡単に言うと、Jenkinsで実行されるワークフローフレームワークのセットであり、元々単一または複数のノードで独立して実行されていたタスクを接続し、単一のタスクでは完了が難しい複雑なプロセスオーケストレーションと視覚化作業を実現します。

2)パイプラインを使用することには次の利点があります

  • コード:パイプラインはコードの形式で実装され、通常はソースコード管理にチェックインされるため、チームは配信プロセスを編集、確認、および反復できます。
  • 耐久性:サーバーの計画的または計画外の再起動であるかどうかにかかわらず、パイプラインは回復可能です。
  • 停止可能:パイプラインは、パイプラインの実行を続行するかどうかを決定するためのインタラクティブな入力を受け取ることができます。
  • 多機能:パイプラインは、現実の世界で複雑な継続的デリバリー要件をサポートします。フォーク/結合、ループ実行、およびタスクの並列実行をサポートします。
  • 拡張可能:Pipelineプラグインは、DSLのカスタム拡張、および他のプラグインと統合するための複数のオプションをサポートします。

3)Jenkinsパイプラインを作成するにはどうすればよいですか?

  • パイプラインスクリプトはGroovy言語で実装されていますが、個別に学習する必要はありません
  • GroovyPipelineは、宣言型(宣言型)構文とスクリプト型パイプライン(スクリプト型)構文の2つの構文をサポートしています。
  • パイプラインを作成する方法も2つあります
    。JenkinsWebUIインターフェイスにスクリプトを直接入力する方法と、Jenkinsfifileスクリプトファイルを作成してプロジェクトのソースコードライブラリに配置する方法です(通常、ソースコード管理から直接お勧めします)。 (SCM)in Jenkins)
    Jenkinsfifile Pipelineを直接ロードします)。

2.2パイプラインプラグインをインストールする

Jenkinsの管理->プラグ
ここに画像の説明を挿入
インの管理->オプションのプラグインプラグインをインストールした後、プロジェクトを作成するときに、より多くの「パイプライン」タイプがあります(以下のケースを参照)

2.3パイプライン構文のクイックスタート

1)宣言型-パイプライン

プロジェクト
ここに画像の説明を挿入
パイプラインを作成します-> HelloWorldテンプレートを選択します。
ここに画像の説明を挿入
生成されたコンテンツは次のとおりです
ここに画像の説明を挿入

  • ステージ:パイプライン全体のすべての実行ステージを表します。通常、複数のステージを含む1つのステージのみがあります。
  • stage:パイプラインの特定のステージを表します。nが表示される場合があります。通常、コードのプル、コンパイルとビルド、デプロイなどの段階に分けられます。
  • ステップ:ステージで実行する必要のあるロジックを表します。手順の中には、シェルスクリプト、gitプルコード、sshリモートパブリッシングなどがあります。

単純な宣言型パイプラインを記述します。

pipeline {
    
     
    agent any   
    stages {
    
     
        stage('拉取代码') {
    
     
            steps {
    
     
               echo '拉取代码' 
            }        
        }
        stage('编译构建') {
    
     
            steps {
    
     
                echo '编译构建' 
            } 
        }
        stage('项目部署') {
    
     
            steps {
    
     
                echo '项目部署' 
            } 
        } 
    }
}

ビルドをクリックすると、ビルドプロセス全体が表示されます
ここに画像の説明を挿入

2)スクリプトパイプライン脚本式-パイプライン

プロジェクトを作成する
画像
ここに画像の説明を挿入
画像

node {
    
    
    def mvnHome
    stage('Preparation') {
    
     // for display purposes
        // Get some code from a GitHub repository
        git 'https://github.com/jglick/simple-maven-project-with-tests.git'
        // Get the Maven tool.
        // ** NOTE: This 'M3' Maven tool must be configured
        // **       in the global configuration.
        mvnHome = tool 'M3'
    }
    stage('Build') {
    
    
        // Run the maven build
        withEnv(["MVN_HOME=$mvnHome"]) {
    
    
            if (isUnix()) {
    
    
                sh '"$MVN_HOME/bin/mvn" -Dmaven.test.failure.ignore clean package'
            } else {
    
    
                bat(/"%MVN_HOME%\bin\mvn" -Dmaven.test.failure.ignore clean package/)
            }
        }
    }
    stage('Results') {
    
    
        junit '**/target/surefire-reports/TEST-*.xml'
        archiveArtifacts 'target/*.jar'
    }
}
  • ノード:ノード。ノードはJenkinsノードです。マスターまたはエージェントは
    ステップ実行するための特定の動作環境です。これは、後でJenkinsのマスタースレーブアーキテクチャについて説明するときに使用されます。
  • ステージ:パイプラインはいくつかのステージに分割できます。各ステージ
    は、ビルド、テスト、デプロイなどの一連の操作を表します。ステージは論理的なグループ化の概念です。
    ステップ:ステップ。ステップは最も基本的な操作単位です。文を印刷したり、Dockerイメージを作成したりできます。これは、コマンド:sh'make 'などのさまざまなJenkinsプラグインによって提供されます。これは、で実行するのと同じです。通常のシェルターミナル。makeコマンドは同じです。

簡単なスクリプト化されたパイプラインを記述します。構築結果は宣言型と同じです。

node {
    
     
  def mvnHome 
  stage('拉取代码') {
    
     // for display purposes 
      echo '拉取代码' 
  }
  stage('编译构建') {
    
     
      echo '编译构建' 
  }
  stage('项目部署') {
    
     
      echo '项目部署' 
  }
}

ステップ1:プルコード

pipeline {
    
     
    agent any 
    stages {
    
      
      stage('拉取代码') {
    
     
        steps {
    
     
          checkout([$class: 'GitSCM', branches: [[name: '*/master']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[credentialsId: 'ff7972f4-c4bb-4b3b-a6c1-f6fdda5bbdea', url: 'http://10.99.200.110:8888/test/test-war.git']]]) 
        } 
      } 
    } 
}

ステップ2:コンパイルしてビルドする

pipeline {
    
     
    agent any 
    stages {
    
      
      stage('拉取代码') {
    
     
        steps {
    
     
          checkout([$class: 'GitSCM', branches: [[name: '*/master']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[credentialsId: 'ff7972f4-c4bb-4b3b-a6c1-f6fdda5bbdea', url: 'http://10.99.200.110:8888/test/test-war.git']]]) 
        } 
      }
      stage('编译构建') {
    
     
        steps {
    
     
          sh label: '', script: 'mvn clean package' 
          }
       } 
    } 
}

ステップ3:プロジェクトの展開

pipeline {
    
     
    agent any 
    stages {
    
      
      stage('拉取代码') {
    
     
        steps {
    
     
          checkout([$class: 'GitSCM', branches: [[name: '*/master']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[credentialsId: 'ff7972f4-c4bb-4b3b-a6c1-f6fdda5bbdea', url: 'http://10.99.200.110:8888/test/test-war.git']]]) 
        } 
      }
      stage('编译构建') {
    
     
        steps {
    
     
          sh label: '', script: 'mvn clean package' 
          }
       } 
       stage('项目部署') {
    
     
         steps {
    
     
           deploy adapters: [tomcat9(credentialsId: '6d072e85-02b4-4874-a0fa-c6eecb77fe79', path: '', url: 'http://10.99.200.111:8080')], contextPath: null, war: 'target/*.war' 
         } 
       }
    } 
}

3)SCMのパイプラインスクリプト

現在、JenkinsのUIインターフェイスでパイプラインコードを直接記述していますが、これはスクリプトのメンテナンスには便利ではありません。パイプラインスクリプトをプロジェクトに配置することをお勧めします(バージョン管理を一緒に実行するため)。

ステップ1:Jenkinsfifileファイルを書き込む

プロジェクトのルートディレクトリにJenkinsfifileファイルを作成し、コンテンツをファイルにコピーしてから、送信してgitlabにプッシュする

、gitlabの現在のプロジェクトのルートパスの下にJenkinsfifileを作成し、コンテンツをファイルにコピーします。

これはgitlabを直接操作する例です
ここに画像の説明を挿入
ここに画像の説明を挿入

ステップ2:プロジェクト内のファイルを参照する

ここに画像の説明を挿入
ここに画像の説明を挿入

ステップ3:すぐにビルドする

ここに画像の説明を挿入

ステップ4:プロジェクトの検証

画像

すべてここにあります。その他の記事については、個人のWeChatパブリックアカウントを参照してください。ALLLinuxでは、スキャンしてみましょう。
ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/weixin_44729138/article/details/115097743