「インターネットアーキテクチャ」ソフトウェアアーキテクチャ-JenkinsConstructionとMavengitlabの自動展開プロセス(パート2)(6)

環境は基本的に前回設定されたものであり、次のステップはプロセス全体の自動展開を開始することです。ソースコード:https://github.com/limingios/netFuture/tree/master/jenkins/

環境レビュー

応用 IPアドレス サービス アプリをインストールする 設置方法
gitlab 192.168.66.100 gitlab 10080 gitlab docker
ジェンキンス 192.168.66.101 ジェンキンス 8888 jdk8 maven3.2 git2.8 シェル
ネクサス 192.168.66.102 ネクサス 8081 ネクサス docker
Tomcat 192.168.66.103 Tomcat 8080 Tomcat docker
IPアドレス ユーザー名 パスワード
192.168.66.100 10080 ルート 123456789qwe
192.168.66.101 8888 ルート 8d31833e277c4b579a3be35fe2bdc7d4
192.168.66.102 8081 管理者 admin123
192.168.66.103 8080

ローカルプロジェクトをgitlabで100にデプロイします

  • ネイティブコード

コードはプロセスにとって比較的単純です


  • ローカルでgitlabに送信する

構成を変更します。コードをローカル以外で送信できます

新しいユーザーを作成してウェアハウスを構築するか、rootを使用してウェアハウスを構築できます。

sshキーがアップロードされていないことを確認する

ローカルのsshキーを表示し、ウィンドウ環境で直接gitbashを使用します

ssh-keygen -t rsa -C "[email protected]"
cat /c/Users/Administrator/.ssh/id_rsa.pub

jenkinsのsshシークレットキーを表示し、101環境を直接使用します

ssh-keygen -t rsa -C "[email protected]"
cat /root/.ssh/id_rsa.pub

ローカルウィンドウと101のジェンキンが追加されました

ローカルWindowsコードの送信

git init
git add .
git commit -m "注释语句"
git remote add origin ssh://[email protected]:10022/root/idig8.git
git push -u origin master

ローカルプロジェクトをJenkins101にデプロイします

  • グローバルセキュリティ構成

  • タスクを作成する

パスワードを自由に記述し、gitlabでトリガー設定を待ち
ます。次のURLを使用して、ビルドをリモートでトリガーします:JENKINS_URL / job / idig8 / build?token = TOKEN_NAMEまたは/ buildWithParameters?token = TOKEN_NAME

100gitlabトリガー設定
http://192.168.66.101:8888/job/idig8/build?token=123456
トークンの値はjenkinsに設定されています。

パイプラインの特別な準備を待つ

保存

101構成プライベートサーバーネクサス

cd .m2
pwd
vi settings.xml

settings.xml

<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" 
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">

  <pluginGroups></pluginGroups>
  <proxies></proxies>

  <servers>
      <server>
      <id>nexus-releases</id>
      <username>admin</username>
      <password>admin123</password>
    </server>
    <server>
      <id>nexus-snapshots</id>
      <username>admin</username>
      <password>admin123</password>
    </server>
  </servers>

  <mirrors> 
    <mirror> 
      <id>nexus-releases</id> 
      <mirrorOf>*</mirrorOf> 
      <url>http://192.168.66.102:8081/nexus/content/groups/public</url> 
    </mirror>
    <mirror> 
      <id>nexus-snapshots</id> 
      <mirrorOf>*</mirrorOf> 
      <url>http://192.168.66.102:8081/nexus/content/repositories/snapshots</url> 
    </mirror> 
  </mirrors> 
 
  <profiles>
   <profile>
      <id>nexus</id>
      <repositories>
        <repository>
          <id>nexus-releases</id>
          <url>http://nexus-releases</url>
          <releases><enabled>true</enabled></releases>
          <snapshots><enabled>true</enabled></snapshots>
        </repository>
        <repository>
          <id>nexus-snapshots</id>
          <url>http://nexus-snapshots</url>
          <releases><enabled>true</enabled></releases>
          <snapshots><enabled>true</enabled></snapshots>
        </repository>
      </repositories>
      <pluginRepositories>
         <pluginRepository>
                <id>nexus-releases</id>
                 <url>http://nexus-releases</url>
                 <releases><enabled>true</enabled></releases>
                 <snapshots><enabled>true</enabled></snapshots>
               </pluginRepository>
               <pluginRepository>
                 <id>nexus-snapshots</id>
                  <url>http://nexus-snapshots</url>
                <releases><enabled>true</enabled></releases>
                 <snapshots><enabled>true</enabled></snapshots>
             </pluginRepository>
         </pluginRepositories>
    </profile>
  </profiles>

  <activeProfiles>
      <activeProfile>nexus</activeProfile>
  </activeProfiles>
 
</settings>

sshpassをインストールします。sshloginはコマンドラインでパスワードを指定できません。sshpassの登場により、この問題は解決しました。sshpassは、非対話型SSHのパスワード認証に使用されます。通常、shスクリプトで使用され、パスワードを再入力する必要はありません。

 yum -y install sshpass

gitlabとjenkinsをテストする

正式に書かれた

  • パイプライン
#!groovy
pipeline {
    
    
    agent any
    //环境变量,
    environment {
    
    
        REPOSITORY="ssh://[email protected]:10022/root/idig8.git"
        MODULE="idig8"
        SCRIPT_PATH="/root/"
        remoteHost_tomcat= '192.168.66.103'
    
    }
    //流水线是如何提前,都是通过很多个stages下面的stage
    stages {
    
    
        stage('获取代码'){
    
    
            steps{
    
    
                echo " start fetch code from git ssh://[email protected]:10022/root/idig8.git"
                deleteDir()
                git "${REPOSITORY}"
            }
        }
        stage('代码静态检查') {
    
    
            steps{
    
    
                echo " start code check"
            }
        }
        stage('编译+单元测试') {
    
    
            steps{
    
    
                echo " start compile"
                 sh"""
         cd $workspace/idig8/common-parent/
         mvn  -U clean install -Dmvn.test.skip=true -Ptest
         """
            }
        }
        
        stage('jar包上传到nexus上') {
    
    
            steps{
    
    
                echo " start maven update jar"
                 sh"""
         cd $workspace/idig8/common-parent/common-utils
         mvn clean deploy
         cd $workspace/idig8/common-parent/common-dao
         mvn clean deploy
         cd $workspace/idig8/common-parent/common-service
         mvn clean deploy
         """
            }
        }
        
        stage('移动目录到用户目录下') {
    
    
            steps{
    
    
                echo "mv idig8.war"
                 sh"""
         mv -f $workspace/idig8/common-parent/common-web/target/common-web.war ${SCRIPT_PATH}${MODULE}.war
         """
            }
        }
        stage('拷贝文件到tomcat指定目录下') {
    
    
        
            steps{
    
    
                echo "scp 目标文件"
                 sh"""
         sshpass -p 'vagrant' ssh -p 22 -o stricthostkeychecking=no root@${remoteHost_tomcat} 'rm -rf /root/tomcat/tomcat-persistence/tomcat/data/${MODULE}*';
         sshpass -p 'vagrant' scp -P 22 -o stricthostkeychecking=no ${SCRIPT_PATH}${MODULE}.war root@${remoteHost_tomcat}:/root/tomcat/tomcat-persistence/tomcat/data/${MODULE}.war;
         """
         echo "打包完毕美滋滋 刷新tomcat查看吧"
            }
        }
        
    }
}

プッシュコードパイプラインが自動的に機能し始める限り、それは本当に美しいです

その結果、20ラウンドのパイプラインの準備はようやく成功しました
。dockerによってマウントされたidigのすべてのディレクトリを削除してから、新しいjarパッケージをその中に置き換えます。

PS:自動展開を完了し、最終的に完了しました。自分の仮想マシン環境で3日間実行しました。達成感を感じます。最初の選択肢は、シェルスクリプトの展開について学ぶことです。パイプラインはそれほど面倒ではありません。 。2年間のシェル開発のおかげで、そのほとんどはシェルによって行われました。最初の2年間で理解しなければならないことが、私の将来の道にとって非常に重要であることを忘れていません。ssh公開鍵もその中で非常に重要な役割を果たします。私の考えによれば、古いアイアンが簡単に展開を完了できることを願っています。Lao Tieのサポートに感謝します。当初は、2つの記事を一緒に書きたかったのですが、内容が多すぎたため、後で分離されました。毎日夕方2時までこれをするために、仕事を降りるのは簡単ではありません。それではさようなら〜握手するには遅すぎます!

おすすめ

転載: blog.csdn.net/zhugeaming2018/article/details/108215127