日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

Spring Cloud【使用jenkins持续部署】Gogs+jenkins+Docker Swarm+Protainer

發布時間:2025/3/20 javascript 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring Cloud【使用jenkins持续部署】Gogs+jenkins+Docker Swarm+Protainer 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

導讀:

很久沒有更新文章了 最近公司在使用Spring Cloud構建的項目中經常會持續發布變更頻繁,一天中會出現發布多次的情況 在這種情況下對測試環境做了改造 使得開發人員可以不再過多關注發布與更新docker鏡像的操作 當master分支上的代碼發生變化時會自動更新docker容器中正在運行的鏡像版本,目前分為 開發環境 測試環境 和線上環境 三套 測試環境接近于線上環境。

持續集成、持續部署、持續交付的概念以及其目的?

集成是指軟件個人研發的部分向軟件整體部分交付,以便盡早發現個人開發部分的問題; 部署是代碼盡快向可運行的開發/測試節交付,以便盡早測試;交付是指研發盡快向客戶交付,以便盡早發現生產環境中存在的問題。

如果說等到所有東西都完成了才向下個環節交付,導致所有的問題只能再最后才爆發出來,解決成本巨大甚至無法解決。

而所謂的持續,就是說每完成一個完整的部分,就向下個環節交付,發現問題可以馬上調整。 是的問題不會放大到其他部分和后面的環節。

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


補充:從敏捷思想中提出的這三個觀點,還強調一件事:通過技術手段自動化這三個工作。加快交付速度。

引用知乎-趙劼

準備工作

工具

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

Gogs

Gogs是一款類似Github(國內有碼市)的開源文件/代碼管理系統(基于Git) 無聞大神寫的 之前學golang的時候就是看的他的視頻

jenkins

Jenkins是一個功能強大的應用程序,允許持續集成和持續交付項目,無論用的是什么平臺。這是一個免費的源代碼,可以處理任何類型的構建或持續集成。

Docker

Docker 是一個開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到一個可移植的容器中,然后發布到任何流行的 Linux 機器上,也可以實現虛擬化。容器是完全使用沙箱機制,相互之間不會有任何接口。

Protainer

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

開始

思路

  • 使用Gogs的鉤子函數 來 觸發 jenkins
  • 項目發生變化 觸發 jenkins構建docker鏡像
    修改docker-compose.yml文件 提交 docker-compose.yml 到 gogs docker-compose 項目上
  • 當 gogs docker-compose 項目發生變化 觸發 jenkins docker swarm 運行最新的鏡像

插件

此處我們使用了兩個插件

maven構建Docker鏡像插件

<plugin><groupId>com.spotify</groupId><artifactId>dockerfile-maven-plugin</artifactId><version>1.4.3</version><configuration><repository>192.168.2.50:8082/demo/${project.artifactId}</repository><tag>${project.version}</tag><buildArgs><JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE></buildArgs></configuration><executions><execution><id>default</id><phase>package</phase><goals><goal>build</goal><goal>push</goal></goals></execution></executions> </plugin>

配置Gogs webhook插件

配置 Gogs webhook 插件

打開 系統管理 -> 管理插件 -> 可選插件 ,在右上角的輸入框中輸入“gogs”來篩選插件:

在gogs中配置

1.進入我們的倉庫,點擊倉庫設置

2.添加webhook

點擊 管理Web鉤子 -> 添加Web鉤子 ->選擇Gogs

添加如下配置:

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

3.配置Jenkins

進入主面板,點擊我們的任務:

選擇配置:

選擇Gogs Webhook 根據自己的需要進行配置,如果沒有設置密鑰那么什么都不用動。

測試
我們回到gogs,點擊 推送測試 ,推送成功之后會看到一條推送記錄

回到我們的Jenkins可以看到已經成功進行了一次構建:

待續......

docker stack deploy --with-registry-auth -c docker-compose.yml dx-ec #!/bin/bashAPP_NAME=goods-center#TODO 分支如果發生變化就進行下面操作 rm -rf ./targetdocker 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-robotgit checkout masterline=$(cat -n ./docker-compose.yml | grep "${IMAGE_NAME}" | awk '{print $1}')#修改版本號 sed -i "${line}c\ image: ${IMAGE_NAME}:${DOCKER_TAG}" ./docker-compose.yml#TODO 提交docker-compose.yml 觸發 robotgit add docker-compose.ymlgit commit -m "update docker-compose.yml line: ${line} image: ${APP_NAME}:${DOCKER_TAG}"git push -u origin master

總結

以上是生活随笔為你收集整理的Spring Cloud【使用jenkins持续部署】Gogs+jenkins+Docker Swarm+Protainer的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。