久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放AV片

<center id="vfaef"><input id="vfaef"><table id="vfaef"></table></input></center>

    <p id="vfaef"><kbd id="vfaef"></kbd></p>

    
    
    <pre id="vfaef"><u id="vfaef"></u></pre>

      <thead id="vfaef"><input id="vfaef"></input></thead>

    1. 站長資訊網(wǎng)
      最全最豐富的資訊網(wǎng)站

      Docker微服務-Jenkins+GitLab+Maven+Shell自動化構建實施案例

      * 環(huán)境:
      CentOS7
      代碼倉庫:Gitlab
      持續(xù)集成代碼更新:Jenkins
      構建打包:Maven
      鏡像自動交付腳本:Shell

      基礎環(huán)境軟件安裝:Gitlab、Jenkins、Maven配置,安裝參考網(wǎng)上,這里安裝略,重點介紹項目持續(xù)集成和鏡像交付。
      結合上一博文:http://www.sfodin.cn/Linux/2019-02/157106.htm
      這里配置了兩個基礎服務容器的自動化構建,一個常規(guī)業(yè)務服務容器的自動化構建,其他的容器服務持續(xù)集成類似操作,這不做重復操作。


      * 創(chuàng)建基礎持續(xù)集成項目-config

      1.1 創(chuàng)建自由風格的軟件項目-Job,創(chuàng)建config-tmp-release
      Docker微服務-Jenkins+GitLab+Maven+Shell自動化構建實施案例

      1.2 創(chuàng)建maven項目-Job,創(chuàng)建基礎項目config-tmp-ms
      Docker微服務-Jenkins+GitLab+Maven+Shell自動化構建實施案例

      1.3 配置config-tmp-ms基礎項目
      基于jdk8,配置config-tmp-ms項目Git代碼倉庫源,并選取release分支。
      Docker微服務-Jenkins+GitLab+Maven+Shell自動化構建實施案例
      配置關聯(lián)項目config-tmp-release:
      Docker微服務-Jenkins+GitLab+Maven+Shell自動化構建實施案例
      構建命令及構建后操作腳本:
      Docker微服務-Jenkins+GitLab+Maven+Shell自動化構建實施案例

      1.4配置腳本
      項目jar包同步腳本:/home/jenkins/docker-tmp/script/rsync.sh config-tmp-ms config-service

      cat /home/jenkins/docker-tmp/script/rsync.sh  #!/bin/bash  ip=10.1.1.1  #docker tmp server  passwd=******  rsync -vzrtopg --numeric-ids --progress --password-file=/etc/rsyncd.password6 /home/jenkins/.jenkins/workspace/$1/target/alaxiaoyou-$2-0.0.1-SNAPSHOT.jar root@$ip::$1  expect /home/jenkins/docker-test/script/image.exp $ip $passwd $1 $2 $3

      其中config-tmp-ms必須跟項目job名稱一樣。$1為此項目job名稱“config-tmp-ms”,$2為此項目代碼git@gitlab.alaxiaoyou.com:xxx/alaxiaoyou-config-service.git, provider:config-service。目的是自動替換各個provider配置。

      expect腳本遠程觸發(fā)rancher服務器上腳本: /home/jenkins/docker-pro/script/image.exp

      cat /home/jenkins/docker-pro/script/image.exp   #!/usr/bin/expect -f  set ipaddress [lindex $argv 0]  set passwd [lindex $argv 1]  set msname [lindex $argv 2]  set msnameb [lindex $argv 3]    spawn ssh name@$ipaddress;  expect "password:";  send "$passwdr";  expect "#"  send "sudo nohup /data/docker/layout-script/pro-all.sh $msname $msnameb  >> /data/docker/logs/$msname.log &r"  expect eof {exit 1}

      rancher server服務器上腳本,構建,推送push到阿里鏡像倉庫:/data/docker/layout-script/pro-all.sh

      #!/bin/bash  namems=$1  namemsb=$2  version=latest  msrepo=/data/docker/$1  imgrepo=xmbaby  imgname=$1    if [ ! -d $msrepo ];then    mkdir -p $msrepo    scp jenkins@10.1.1.1:~/.jenkins/workspace/$1/target/alaxiaoyou-$2-0.0.1-SNAPSHOT.jar $msrepo  echo "[$namems]" >> /etc/rsyncd.conf  echo "path=/data/docker/$namems/" >> /etc/rsyncd.conf  echo "comment = update  ignore errors  read only = no  list = no  hosts allow = 10.1.1.1/255.255.255.0  auth users = root  uid = root  gid = root  secrets file = /etc/rsyncd.secrets" >> /etc/rsyncd.conf    else    echo "開始構建docker鏡像"    fi    echo "FROM registry-internal.cn-hangzhou.aliyuncs.com/xmbaby-pre/ms-jdk8" > $msrepo/dockerfile  echo "MAINTAINER $namems "name@alaxiaoyou.com"" >> $msrepo/dockerfile  echo "ADD alaxiaoyou-$namemsb-0.0.1-SNAPSHOT.jar /data/httpd/" >> $msrepo/dockerfile  echo "WORKDIR /data/httpd/" >> $msrepo/dockerfile  echo "ENTRYPOINT java -Xmx512m -Xss512k -jar alaxiaoyou-$namemsb-0.0.1-SNAPSHOT.jar" >> $msrepo/dockerfile    cd $msrepo    docker build -t ms/$namems .    if [ $? -ne 0 ];then    echo "$namems 鏡像構建失敗,請檢查dockerfile !"  exit    else    imageid=`docker images |grep "ms/$namems" |awk '{print $3}'`  docker login --username=name@alaxiaoyou.com --password=****** registry-internal.cn-hangzhou.aliyuncs.com  docker tag $imageid registry-internal.cn-hangzhou.aliyuncs.com/$imgrepo/$imgname:$version  docker push registry-internal.cn-hangzhou.aliyuncs.com/$imgrepo/$imgname:$version    fi

      1.5 構建操作
      Docker微服務-Jenkins+GitLab+Maven+Shell自動化構建實施案例

      構建config-tmp-release項目,此項目執(zhí)行完成后,自動構建關聯(lián)的下級項目config-tmp-ms,config-tmp-ms項目會Jenkins中自動拉取最新代碼,觸發(fā)rsync同步腳本,rsync腳本里觸發(fā)docker鏡像build和push操作。Jenkins最終構建完成后,即可將鏡像倉庫拉取最新交付的鏡像。


      * 創(chuàng)建基礎持續(xù)集成項目-gateway

      2.1 創(chuàng)建自由風格的軟件項目-Job,創(chuàng)建gateway-tmp-release
      Docker微服務-Jenkins+GitLab+Maven+Shell自動化構建實施案例

      2.2 創(chuàng)建maven項目-Job,創(chuàng)建基礎項目gateway-tmp-ms
      Docker微服務-Jenkins+GitLab+Maven+Shell自動化構建實施案例

      2.3 配置gateway-tmp-ms基礎項目
      基于jdk8,配置gateway-tmp-ms項目Git代碼倉庫源,并選取release分支。
      Docker微服務-Jenkins+GitLab+Maven+Shell自動化構建實施案例

      配置關聯(lián)項目gateway-tmp-release:
      Docker微服務-Jenkins+GitLab+Maven+Shell自動化構建實施案例

      配置構建前操作腳本,構建命令,構建后操作腳本:
      Docker微服務-Jenkins+GitLab+Maven+Shell自動化構建實施案例

      2.4配置腳本
      構建前配置模板替換,配置成相應的provider,這里為gateway provider:
      腳本:sh /home/jenkins/docker-tmp/script/configuration.sh gateway-tmp-ms api-gateway

      cat /home/jenkins/docker-tmp/script/configuration.sh  #!/bin/bash  sed s/module/alaxiaoyou-$2/g  /home/jenkins/.jenkins/workspace/ms-tmp-configuration/module.yml > /home/jenkins/.jenkins/workspace/ms-tmp-configuration/bootstrap.yml  yes | cp -rfp /home/jenkins/.jenkins/workspace/ms-tmp-configuration/bootstrap.yml /home/jenkins/.jenkins/workspace/$1/src/main/resources/

      其中gateway-tmp-ms必須跟項目job名稱一樣。$1為此項目job名稱“gateway-tmp-ms”,$2為此項目代碼git@gitlab.alaxiaoyou.com:xxx.git名稱”api-gateway”。目的是自動替換各個provider配置,接下來后面各個provider自動替換。

      模板文件:

      cat /home/jenkins/.jenkins/workspace/ms-tmp-configuration/module.yml  spring:    application:      name: module     cloud:      zookeeper:        connect-string: zookeeper1:2181,zookeeper2:2181,zookeeper3:2181      config:        uri: http://msconfig:20000

      構建后配置,項目包(maven打包)同步腳本rsync,從git倉庫服務器拉取代碼打包后,包同步到docker-tmp服務器(rancher服務器)中:
      項目jar包同步腳本:sh /home/jenkins/docker-tmp/script/rsync.sh gateway-tmp-ms api-gateway

      cat /home/jenkins/docker-tmp/script/rsync.sh  #!/bin/bash  ip=10.1.1.1  #docker tmp server  passwd=******  rsync -vzrtopg --numeric-ids --progress --password-file=/etc/rsyncd.password6 /home/jenkins/.jenkins/workspace/$1/target/alaxiaoyou-$2-0.0.1-SNAPSHOT.jar root@$ip::$1  expect /home/jenkins/docker-tmp/script/image.exp $ip $passwd $1 $2 $3

      expect腳本遠程觸發(fā)rancher服務器上腳本: /home/jenkins/docker-tmp/script/image.exp

      cat /home/jenkins/docker-tmp/script/image.exp  #!/usr/bin/expect -f  set ipaddress [lindex $argv 0]  set passwd [lindex $argv 1]  set msname [lindex $argv 2]  set msnameb [lindex $argv 3]  set jvm [lindex $argv 4]    spawn ssh name@$ipaddress;  expect "password:";  send "$passwdr";  expect "#"  send "sudo nohup /data/docker/layout-script/all.sh $msname $msnameb $jvm  >> /data/docker/logs/$msname.log &r"

      rancher server服務器上腳本,構建,推送push到阿里鏡像倉庫:/data/docker/layout-script/all.sh

      #!/bin/bash  namems=$1  namemsb=$2  version=latest  msrepo=/data/docker/$1  imgrepo=xmbaby  imgname=$1    if [ ! -d $msrepo ];then    mkdir -p $msrepo    scp jenkins@10.1.1.1:~/.jenkins/workspace/$1/target/alaxiaoyou-$2-0.0.1-SNAPSHOT.jar $msrepo    echo "[$namems]" >> /etc/rsyncd.conf  echo "path=/data/docker/$namems/" >> /etc/rsyncd.conf  echo "comment = update  ignore errors  read only = no  list = no  hosts allow = 10.1.1.1/255.255.255.0  auth users = root  uid = root  gid = root  secrets file = /etc/rsyncd.secrets" >> /etc/rsyncd.conf    else    echo "開始構建docker鏡像"    fi    echo "FROM registry-internal.cn-hangzhou.aliyuncs.com/xmbaby-pre/ms-jdk8" > $msrepo/dockerfile  echo "MAINTAINER $namems "name@alaxiaoyou.com"" >> $msrepo/dockerfile  echo "ADD alaxiaoyou-$namemsb-0.0.1-SNAPSHOT.jar /data/httpd/" >> $msrepo/dockerfile  echo "WORKDIR /data/httpd/" >> $msrepo/dockerfile  echo "ENTRYPOINT java -Xmx512m -Xss512k -jar alaxiaoyou-$namemsb-0.0.1-SNAPSHOT.jar" >> $msrepo/dockerfile    cd $msrepo    docker build -t ms/$namems .    if [ $? -ne 0 ];then    echo "$namems 鏡像構建失敗,請檢查dockerfile !"  exit    else    imageid=`docker images |grep "ms/$namems" |awk '{print $3}'`  docker login --username=name@alaxiaoyou.com --password=****** registry-internal.cn-hangzhou.aliyuncs.com  docker tag $imageid registry-internal.cn-hangzhou.aliyuncs.com/$imgrepo/$imgname:$version  docker push registry-internal.cn-hangzhou.aliyuncs.com/$imgrepo/$imgname:$version    fi

      2.5 構建操作
      Docker微服務-Jenkins+GitLab+Maven+Shell自動化構建實施案例

      構建gateway-tmp-release項目,此項目執(zhí)行完成后,自動構建關聯(lián)的下級項目gateway-tmp-ms,gateway-tmp-ms項目會Jenkins中自動拉取最新代碼,觸發(fā)rsync同步腳本,rsync腳本里觸發(fā)docker鏡像build和push操作。Jenkins最終構建完成后,即可將鏡像倉庫拉取最新交付的鏡像。


      * 創(chuàng)建持續(xù)集成項目-sms

      3.1 創(chuàng)建maven項目-Job,創(chuàng)建sms-tmp-release
      Docker微服務-Jenkins+GitLab+Maven+Shell自動化構建實施案例

      3.2 配置ms-tmp-release項目
      基于jdk8,配置sms項目Git代碼倉庫源,并選取release分支。
      Docker微服務-Jenkins+GitLab+Maven+Shell自動化構建實施案例

      構建基于pom.xml進行構建
      Docker微服務-Jenkins+GitLab+Maven+Shell自動化構建實施案例

      3.3 創(chuàng)建maven項目-Job,創(chuàng)建sms-tmp-ms
      Docker微服務-Jenkins+GitLab+Maven+Shell自動化構建實施案例

      3.4 配置sms-tmp-ms項目
      基于jdk8,配置sms項目Git代碼倉庫源,并選取release分支:
      Docker微服務-Jenkins+GitLab+Maven+Shell自動化構建實施案例

      配置關聯(lián)項目sms-tmp-release:
      Docker微服務-Jenkins+GitLab+Maven+Shell自動化構建實施案例

      配置構建前操作腳本,構建命令,構建后操作腳本:
      Docker微服務-Jenkins+GitLab+Maven+Shell自動化構建實施案例

      3.5配置腳本
      構建前配置模板替換,配置成相應的provider,這里為sms provider:
      腳本:sh /home/jenkins/docker-tmp/script/configuration.sh sms-tmp-ms sms-provider

      cat /home/jenkins/docker-tmp/script/configuration.sh sms-tmp-ms sms-provider  #!/bin/bash  sed s/module/alaxiaoyou-$2/g  /home/jenkins/.jenkins/workspace/ms-tmp-configuration/module.yml > /home/jenkins/.jenkins/workspace/ms-tmp-configuration/bootstrap.yml  yes | cp -rfp /home/jenkins/.jenkins/workspace/ms-tmp-configuration/bootstrap.yml /home/jenkins/.jenkins/workspace/$1/src/main/resources/

      模板文件:

      cat /home/jenkins/.jenkins/workspace/ms-tmp-configuration/module.yml  spring:    application:      name: module     cloud:      zookeeper:        connect-string: zookeeper1:2181,zookeeper2:2181,zookeeper3:2181      config:        uri: http://msconfig:20000

      其中sms-tmp-ms必須跟項目job名稱一樣。$1為此項目job名稱“sms-tmp-ms”,$2為此項目代碼git@gitlab.alaxiaoyou.com:xxx.git名稱”sms-provider”。目的是自動替換各個provider配置。

      構建后配置,項目包(maven打包)同步腳本rsync,從git倉庫服務器拉取代碼打包后,包同步到docker-tmp服務器(rancher服務器)中:
      腳本:sh /home/jenkins/docker-tmp/script/rsync.sh sms-tmp-ms sms-provider 256m

      cat /home/jenkins/docker-tmp/script/rsync.sh  sms-tmp-ms sms-provider 256m  #!/bin/bash  ip=10.1.1.1  #docker tmp server  passwd=******  rsync -vzrtopg --numeric-ids --progress --password-file=/etc/rsyncd.password6 /home/jenkins/.jenkins/workspace/$1/target/alaxiaoyou-$2-0.0.1-SNAPSHOT.jar root@$ip::$1  expect /home/jenkins/docker-test/script/image.exp $ip $passwd $1 $2 $3

      Jenkins和rancher不在同一臺服務器行,用shell expect腳本遠程觸發(fā)rancher服務器上腳本:

      cat /home/jenkins/docker-test/script/image.exp  #!/usr/bin/expect -f  set ipaddress [lindex $argv 0]  set passwd [lindex $argv 1]  set msname [lindex $argv 2]  set msnameb [lindex $argv 3]  set jvm [lindex $argv 4]    spawn ssh name@$ipaddress;  expect "password:";  send "$passwdr";  expect "#"  send "sudo nohup /data/docker/layout-script/all.sh $msname $msnameb $jvm  >> /data/docker/logs/$msname.log &r"  expect eof {exit 1}

      rancher server服務器上腳本,構建,推送push到阿里鏡像倉庫:/data/docker/layout-script/all.sh

      #!/bin/bash  namems=$1  namemsb=$2  version=latest  msrepo=/data/docker/$1  imgrepo=xmbaby  imgname=$1    if [ ! -d $msrepo ];then    mkdir -p $msrepo    scp jenkins@10.1.1.1:~/.jenkins/workspace/$1/target/alaxiaoyou-$2-0.0.1-SNAPSHOT.jar $msrepo    echo "[$namems]" >> /etc/rsyncd.conf  echo "path=/data/docker/$namems/" >> /etc/rsyncd.conf  echo "comment = update  ignore errors  read only = no  list = no  hosts allow = 10.1.1.1/255.255.255.0  auth users = root  uid = root  gid = root  secrets file = /etc/rsyncd.secrets" >> /etc/rsyncd.conf    else    echo "開始構建docker鏡像"    fi    echo "FROM registry-internal.cn-hangzhou.aliyuncs.com/xmbaby-pre/ms-jdk8" > $msrepo/dockerfile  echo "MAINTAINER $namems "name@alaxiaoyou.com"" >> $msrepo/dockerfile  echo "ADD alaxiaoyou-$namemsb-0.0.1-SNAPSHOT.jar /data/httpd/" >> $msrepo/dockerfile  echo "WORKDIR /data/httpd/" >> $msrepo/dockerfile  echo "ENTRYPOINT java -Xmx512m -Xss512k -jar alaxiaoyou-$namemsb-0.0.1-SNAPSHOT.jar" >> $msrepo/dockerfile    cd $msrepo    docker build -t ms/$namems .    if [ $? -ne 0 ];then    echo "$namems 鏡像構建失敗,請檢查dockerfile !"  exit    else    imageid=`docker images |grep "ms/$namems" |awk '{print $3}'`  docker login --username=name@alaxiaoyou.com --password=****** registry-internal.cn-hangzhou.aliyuncs.com  docker tag $imageid registry-internal.cn-hangzhou.aliyuncs.com/$imgrepo/$imgname:$version  docker push registry-internal.cn-hangzhou.aliyuncs.com/$imgrepo/$imgname:$version    fi

      3.6 構建操作
      Docker微服務-Jenkins+GitLab+Maven+Shell自動化構建實施案例

      構建sms-tmp-release項目,此項目執(zhí)行完成后,自動構建關聯(lián)的下級項目sms-tmp-ms,sms-tmp-ms項目會Jenkins中自動拉取最新代碼,觸發(fā)rsync同步腳本,rsync腳本里觸發(fā)docker鏡像build和push操作。Jenkins最終構建完成后,即可將鏡像倉庫拉取最新交付的鏡像。

      3.7 發(fā)布已構建鏡像
      進入rancher控制臺

      添加服務tmp-sms-ms:
      Docker微服務-Jenkins+GitLab+Maven+Shell自動化構建實施案例

      映射卷:
      Docker微服務-Jenkins+GitLab+Maven+Shell自動化構建實施案例

      點擊“創(chuàng)建”,選中“創(chuàng)建前總是拉取鏡像”,rancher便會分發(fā)任務至agent,進行最新鏡像的拉取。
      其中鏡像為已在rancher宿主機上,進行手動鏡像構建交付到阿里云鏡像倉庫的。并非通過Jenkins自動構建交付到阿里云鏡像倉庫。

      3.8 鏡像升級、回滾操作
      升級步驟:
      停止該服務正在運行的容器
      拉取最新鏡像
      運行新容器

      回滾:
      如果不單擊rancher控制臺右上角“Upgraded”,該服務可進行回滾操作。
      rancher控制臺上方為“stopped”狀態(tài)的容器為舊容器,單擊“啟動”按鈕可進行回滾;
      下方為“Running”狀態(tài)的容器為升級的容器,單擊右上角“Upgraded”按鈕可進行回滾;容器鏡像升級完成,舊容器銷毀。
      Docker微服務-Jenkins+GitLab+Maven+Shell自動化構建實施案例

      3.9 阿里云鏡像倉庫交付的鏡像
      Docker微服務-Jenkins+GitLab+Maven+Shell自動化構建實施案例

      說明:以上配置了兩個基礎服務容器的持續(xù)交付,一個常規(guī)服務容器的持續(xù)交付,其他的容器服務持續(xù)交付類似操作,這不做重復操作。其中,構建、推送鏡像倉庫的腳本里對應的IP配置為生產(chǎn)環(huán)境地址,由于此次測試環(huán)境為內網(wǎng),無外網(wǎng)IP。所以,涉及到鏡像的push操作無法操作成功。各個服務provider的打包,如要在Jenkins中自動操作,無法完成。所以,均從其他已打好包的服務器上拷貝過來,然后在rancher宿主機進行構建、推送push到阿里云鏡像倉庫。

      贊(0)
      分享到: 更多 (0)
      網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號