成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

Spring Cloud【使用jenkins持續(xù)部署】Gogs+jenkins+Docker Swa

王笑朝 / 3116人閱讀

摘要:而所謂的持續(xù),就是說(shuō)每完成一個(gè)完整的部分,就向下個(gè)環(huán)節(jié)交付,發(fā)現(xiàn)問(wèn)題可以馬上調(diào)整。那么每完成一部分就測(cè)試,這是持續(xù)部署。這是一個(gè)免費(fèi)的源代碼,可以處理任何類型的構(gòu)建或持續(xù)集成。容器是完全使用沙箱機(jī)制,相互之間不會(huì)有任何接口。

導(dǎo)讀:

很久沒(méi)有更新文章了 最近公司在使用Spring Cloud構(gòu)建的項(xiàng)目中經(jīng)常會(huì)持續(xù)發(fā)布變更頻繁,一天中會(huì)出現(xiàn)發(fā)布多次的情況 在這種情況下對(duì)測(cè)試環(huán)境做了改造 使得開(kāi)發(fā)人員可以不再過(guò)多關(guān)注發(fā)布與更新docker鏡像的操作 當(dāng)master分支上的代碼發(fā)生變化時(shí)會(huì)自動(dòng)更新docker容器中正在運(yùn)行的鏡像版本,目前分為 開(kāi)發(fā)環(huán)境 測(cè)試環(huán)境 和線上環(huán)境 三套 測(cè)試環(huán)境接近于線上環(huán)境。

持續(xù)集成、持續(xù)部署、持續(xù)交付的概念以及其目的?
集成是指軟件個(gè)人研發(fā)的部分向軟件整體部分交付,以便盡早發(fā)現(xiàn)個(gè)人開(kāi)發(fā)部分的問(wèn)題; 

部署是代碼盡快向可運(yùn)行的開(kāi)發(fā)/測(cè)試節(jié)交付,以便盡早測(cè)試;

交付是指研發(fā)盡快向客戶交付,以便盡早發(fā)現(xiàn)生產(chǎn)環(huán)境中存在的問(wèn)題。

如果說(shuō)等到所有東西都完成了才向下個(gè)環(huán)節(jié)交付,導(dǎo)致所有的問(wèn)題只能再最后才爆發(fā)出來(lái),解決成本巨大甚至無(wú)法解決。

而所謂的持續(xù),就是說(shuō)每完成一個(gè)完整的部分,就向下個(gè)環(huán)節(jié)交付,發(fā)現(xiàn)問(wèn)題可以馬上調(diào)整。
是的問(wèn)題不會(huì)放大到其他部分和后面的環(huán)節(jié)。

這種做法的核心思想在于:既然事實(shí)上難以做到事先完全了解完整的、正確的需求,那么就干脆一小塊一小塊的做,并且加快交付的速度和頻率,使得交付物盡早在下個(gè)環(huán)節(jié)得到驗(yàn)證。早發(fā)現(xiàn)問(wèn)題早返工。
舉個(gè)例子,你家裝修廚房,其中一項(xiàng)是鋪地磚,邊角地磚要切割大小。如果一次全切割完再鋪上去,發(fā)現(xiàn)尺寸有誤的話浪費(fèi)和返工時(shí)間就大了,不如切一塊鋪一塊。這就是持續(xù)集成。
裝修廚房有很多部分,每個(gè)部分都有檢測(cè)手段,如地磚鋪完了要測(cè)試漏水與否,線路鋪完了要通電測(cè)試電路通順,水管裝好了也要測(cè)試?yán)渌疅崴?。如果全部裝完了再測(cè),出現(xiàn)問(wèn)題可能會(huì)互相影響,比如電路不行可能要把地磚給挖開(kāi)……。那么每完成一部分就測(cè)試,這是持續(xù)部署。
全部裝修完了,你去驗(yàn)收,發(fā)現(xiàn)地磚顏色不合意,水池太小,灶臺(tái)位置不對(duì),返工嗎?所以不如沒(méi)完成一部分,你就去用一下試用驗(yàn)收,這就是持續(xù)交付。

補(bǔ)充:從敏捷思想中提出的這三個(gè)觀點(diǎn),還強(qiáng)調(diào)一件事:通過(guò)技術(shù)手段自動(dòng)化這三個(gè)工作。加快交付速度。

引用知乎-趙劼

準(zhǔn)備工作 工具

Gogs+jenkins+Docker+Docker Swarm(此處暫未使用k8s)+Protainer

Gogs

Gogs是一款類似Github(國(guó)內(nèi)有碼市)的開(kāi)源文件/代碼管理系統(tǒng)(基于Git) 無(wú)聞大神寫的 之前學(xué)golang的時(shí)候就是看的他的視頻

jenkins

Jenkins是一個(gè)功能強(qiáng)大的應(yīng)用程序,允許持續(xù)集成和持續(xù)交付項(xiàng)目,無(wú)論用的是什么平臺(tái)。這是一個(gè)免費(fèi)的源代碼,可以處理任何類型的構(gòu)建或持續(xù)集成。

Docker

Docker 是一個(gè)開(kāi)源的應(yīng)用容器引擎,讓開(kāi)發(fā)者可以打包他們的應(yīng)用以及依賴包到一個(gè)可移植的容器中,然后發(fā)布到任何流行的 Linux 機(jī)器上,也可以實(shí)現(xiàn)虛擬化。容器是完全使用沙箱機(jī)制,相互之間不會(huì)有任何接口。

Protainer

Portainer是Docker的圖形化管理工具,提供狀態(tài)顯示面板、應(yīng)用模板快速部署、容器鏡像網(wǎng)絡(luò)數(shù)據(jù)卷的基本操作(包括上傳下載鏡像,創(chuàng)建容器等操作)、事件日志顯示、容器控制臺(tái)操作、Swarm集群和服務(wù)等集中管理和操作、登錄用戶管理和控制等功能

開(kāi)始 思路

使用Gogs的鉤子函數(shù) 來(lái) 觸發(fā) jenkins

項(xiàng)目發(fā)生變化 觸發(fā) jenkins構(gòu)建docker鏡像
修改docker-compose.yml文件 提交 docker-compose.yml 到 gogs docker-compose 項(xiàng)目上

當(dāng) gogs docker-compose 項(xiàng)目發(fā)生變化 觸發(fā) jenkins docker swarm 運(yùn)行最新的鏡像

插件

此處我們使用了兩個(gè)插件

maven構(gòu)建Docker鏡像插件

    com.spotify
    dockerfile-maven-plugin
    1.4.3
    
        192.168.2.50:8082/demo/${project.artifactId}
        ${project.version}
        
            target/${project.build.finalName}.jar
        
    
    
        
            default
            package
            
                build
                push
            
        
    

配置Gogs webhook插件 配置 Gogs webhook 插件

打開(kāi) 系統(tǒng)管理 -> 管理插件 -> 可選插件 ,在右上角的輸入框中輸入“gogs”來(lái)篩選插件:

在gogs中配置

1.進(jìn)入我們的倉(cāng)庫(kù),點(diǎn)擊倉(cāng)庫(kù)設(shè)置

2.添加webhook

點(diǎn)擊 管理Web鉤子 -> 添加Web鉤子 ->選擇Gogs

添加如下配置:

推送地址的格式為:http(s)://<你的Jenkins地址>/gogs-webhook/?job=<你的Jenkins任務(wù)名>

3.配置Jenkins

進(jìn)入主面板,點(diǎn)擊我們的任務(wù):

選擇配置:

選擇Gogs Webhook 根據(jù)自己的需要進(jìn)行配置,如果沒(méi)有設(shè)置密鑰那么什么都不用動(dòng)。

測(cè)試
我們回到gogs,點(diǎn)擊 推送測(cè)試 ,推送成功之后會(huì)看到一條推送記錄

回到我們的Jenkins可以看到已經(jīng)成功進(jìn)行了一次構(gòu)建:

待續(xù)......

docker stack deploy --with-registry-auth -c docker-compose.yml dx-ec
#!/bin/bash

APP_NAME=goods-center

#TODO 分支如果發(fā)生變化就進(jìn)行下面操作
rm -rf ./target

docker login --username=admin --password=admin123 192.168.2.50:8082

#打包上傳docker鏡像
mvn package -Dmaven.test.skip=true

# 獲取tag
jarName=$(ls ./target/ | grep "docker-info.jar" | awk "{print $1}" | sed -n "1,1p")
jarInfo=${jarName:0:-16}
len=${#APP_NAME}
DOCKER_TAG=${jarInfo:len+1}


IMAGE_NAME="192.168.2.50:8082/dx-ec/"${APP_NAME}

cd  ../deploy-robot

git checkout master

line=$(cat -n ./docker-compose.yml | grep "${IMAGE_NAME}" | awk "{print $1}")

#修改版本號(hào)
sed  -i "${line}c    image:  ${IMAGE_NAME}:${DOCKER_TAG}"   ./docker-compose.yml

#TODO 提交docker-compose.yml 觸發(fā) robot

git add docker-compose.yml

git commit -m "update docker-compose.yml line: ${line}   image:  ${APP_NAME}:${DOCKER_TAG}"

git push -u origin master

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/76438.html

相關(guān)文章

  • 使用 Jenkins 自動(dòng)部署 Docker 服務(wù)(二、構(gòu)建部署篇)

    摘要:如果還沒(méi)有搭建好可以使用的,請(qǐng)先移步到這篇文章進(jìn)行搭建使用自動(dòng)部署服務(wù)一搭建篇目標(biāo)通過(guò)實(shí)現(xiàn)推送代碼后自動(dòng)部署基于的服務(wù)準(zhǔn)備工作獲取示例項(xiàng)目或者直接復(fù)制以下文件內(nèi)容獲取示例項(xiàng)目項(xiàng)目文件頁(yè)面文件鏡像文件部署文件部署腳本文件頁(yè)面文件項(xiàng)目很簡(jiǎn)單, 如果還沒(méi)有搭建好可以使用 Docker 的 Jenkins,請(qǐng)先移步到這篇文章進(jìn)行搭建 使用 Jenkins 自動(dòng)部署 Docker 服務(wù)(一、Je...

    denson 評(píng)論0 收藏0
  • 基于 Docker ,GogsJenkins,Kubernetes 實(shí)踐工程源代碼的自動(dòng)構(gòu)建和持續(xù)

    本期目標(biāo) : 基于 Centos 7.6 , 封裝出一個(gè)可用于運(yùn)行 php 項(xiàng)目的開(kāi)箱即用鏡像本文不討論 dockerfile 語(yǔ)法 , 并且假設(shè)你懂得基本的類unix 操作系統(tǒng)常識(shí)并擁有類unix 運(yùn)行環(huán)境 (包括但不限于安裝了mac 或 linux 的實(shí)體機(jī) , 類unix虛擬機(jī) , 安裝了 MinGW 或 CygWin 的 windows 機(jī)器) , 并且認(rèn)為你懂得基本的 docker 操作...

    Achilles 評(píng)論0 收藏0
  • 基于 DockerGogs,Jenkins,Kubernetes 實(shí)踐工程源代碼的自動(dòng)構(gòu)建和持續(xù)

    本期目標(biāo) : 基于 Centos 7.6 , 封裝出一個(gè)可用于運(yùn)行 php 項(xiàng)目的開(kāi)箱即用鏡像本文不討論 dockerfile 語(yǔ)法 , 并且假設(shè)你懂得基本的類unix 操作系統(tǒng)常識(shí)并擁有類unix 運(yùn)行環(huán)境 (包括但不限于安裝了mac 或 linux 的實(shí)體機(jī) , 類unix虛擬機(jī) , 安裝了 MinGW 或 CygWin 的 windows 機(jī)器) , 并且認(rèn)為你懂得基本的 docker 操作...

    RayKr 評(píng)論0 收藏0
  • 基于 Docker ,Gogs,Jenkins,Kubernetes 實(shí)踐工程源代碼的自動(dòng)構(gòu)建和持續(xù)

    本期目標(biāo) : 基于 Centos 7.6 , 封裝出一個(gè)可用于運(yùn)行 php 項(xiàng)目的開(kāi)箱即用鏡像本文不討論 dockerfile 語(yǔ)法 , 并且假設(shè)你懂得基本的類unix 操作系統(tǒng)常識(shí)并擁有類unix 運(yùn)行環(huán)境 (包括但不限于安裝了mac 或 linux 的實(shí)體機(jī) , 類unix虛擬機(jī) , 安裝了 MinGW 或 CygWin 的 windows 機(jī)器) , 并且認(rèn)為你懂得基本的 docker 操作...

    Moxmi 評(píng)論0 收藏0
  • Docker容器系列教程(三):jenkins環(huán)境搭建與插件安裝

    摘要:本文將使用這些命令搭建一個(gè)持續(xù)集環(huán)境,解決不能聯(lián)網(wǎng)的問(wèn)題來(lái)安裝各種常用插件??偨Y(jié)通過(guò)本章學(xué)習(xí),你已經(jīng)知道了基于如何在環(huán)境下搭建環(huán)境,并創(chuàng)建一個(gè)項(xiàng)目。以為基礎(chǔ)框架,為數(shù)據(jù)訪問(wèn)層,為權(quán)限授權(quán)層,對(duì)常用數(shù)據(jù)進(jìn)行緩存,基于構(gòu)建的作為前端框架。 回顧:上一文對(duì)Docker常用的命令以羅列的方式做了一個(gè)詳盡的介紹。本文將使用這些命令搭建一個(gè)jenkins持續(xù)集環(huán)境,解決jenkins不能聯(lián)網(wǎng)的問(wèn)題...

    vvpvvp 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<