999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Jenkins和Docker容器技術在數字化電站項目自動化部署的研究及應用

2020-04-05 18:51:36蔡永健路云菲鄔遠祥唐海濤
計算機時代 2020年2期

蔡永健 路云菲 鄔遠祥 唐海濤

摘? 要: 隨著信息技術飛速發展,工程項目發展多元化,工程數字化管理系統日趨復雜,系統軟件更新迭代日益頻繁,而傳統人工手動部署軟件會耗費大量人力成本。為了提高軟件研發及交付效率,文章基于持續集成引擎Jenkins和容器引擎Docker提出一種自動化部署的解決方案,并在數字化智能電站系統上應用,在其系統軟件研發交付過程中實現開發環境、測試環境、生產環境的快速自動化部署,對于提高軟件研發效率和項目按時履約具有重要的推進作用。

關鍵詞: Jenkins; Docker; 容器化; 自動化部署

中圖分類號:TP399? ? ? ? ? 文獻標識碼:A? ? 文章編號:1006-8228(2020)02-77-04

Research and application of technologies of Jenkins and Docker container in

automatic deployment of digital power station

Cai Yongjian1,2, Lu Yunfei1,2, Wu Yuanxiang1,2,3,4, Tang Haitao1,2,3

(1.Powerchina Huadong Engineering Corporation Limited, Hangzhou, Zhejiang 311122, China;

2.Zhejiang Huadong Engineering Digital Technology Co., Ltd.;

3.Digital City CIM Technology Zhejiang Engineering Research Center; 4.Zhejiang Engineering Digital Research Center)

Abstract: With the rapid development of information technology, diversified engineering projects, engineering digital management systems are becoming more and more complex, and system software update iterations are becoming more frequent. Traditional manual deployment of software will take up a lot of labor costs. In order to improve software R&D and delivery efficiency, this paper uses continuous integration engine Jenkins and container engine Docker to propose an automated deployment solution and apply it on the digital intelligent power plant system to realize rapid and automatic deployment of the development environment, test environment and production environment during the system software development and delivery process, which plays an important role in promoting software R&D efficiency and guaranteeing project performance on time.

Key words: Jenkins; Docker; containerization; automatic deployment

0 引言

隨著軟件系統功能邏輯復雜化、更新頻繁化的發展進程,手動部署的方式可能導致交付滯后的問題,自動化部署技術應運而生,并已經成為絕大多數公司軟件研發的標準配置。我們公司的主要產品為工程數字化管理軟件,采用Jenkins和Docker技術完成自動化部署任務。Docker容器化技術[1]具有輕量化、跨平臺、消除線上線下環境差異等特性;持續集成引擎Jenkins[2]具備開源、易上手、插件豐富等優勢,這兩者結合提供了一種高效的自動化部署解決方案。

數字化抽水蓄能電站是水電工程運維期管理系統,由于水電站建設周期長、參與單位多等特點,其管理系統具有功能高度復雜化、開發迭代頻率高的特征,基于Jenkins+Docker容器技術的自動化[3]部署方案在很大程度上提高了其研發的效率,為項目履約提供了技術保障,同時,也為公司能夠快速搶占市場份額提供了重要的技術支撐。

1 Docker 簡介

1.1 Docker的概念

Docker使用Google公司推出的Go語言開發實現,基于Linux內核的Cgroup和Namespace,以及AUFS類的UnionFS等技術,對進程做封裝隔離,屬于操作系統層面的虛擬化技術。由于隔離的進程獨立于宿主和其它進程,因此稱為容器[4]。Docker在容器的基礎上進一步封裝,從文件系統、網絡互聯到進程隔離,極大地簡化了容器的創建和維護,使得Docker技術比虛擬機技術更為輕便和快捷。

1.2 Docker的優勢

⑴ 更高效的利用系統資源

相比于傳統虛擬化技術,由于Docker容器不需要進行硬件虛擬以及運行完整操作系統等額外開銷,Docker對系統資源的利用率更高,無論是應用執行速度、內存損耗或者文件存儲速度,都要比傳統虛擬機技術更高效。因此,一個相同配置的主機,往往可以運行更多數量的應用。

⑵ 更快速的啟動速度

傳統虛擬機技術啟動服務往往需要數分鐘,而Docker容器直接運行于宿主機內核,無需啟動完整的操作系統,因此可以做到秒級甚至是毫秒級的啟動速度,可以達到用戶無感知的平滑升級。大大地節約了開發、測試、部署的時間。

⑶ 一致的運行環境

軟件開發過程中一個常見的問題是環境一致性問題。由于開發環境、測試環境、生產環境的不一致,導致有些bug并未在開發過程中被發現。而Docker的鏡像提供了除內核外完整的運行時環境,確保了應用運行環境的一致性,從而不會再出現“這段代碼在我機器上沒有問題”此類問題。

⑷ 遷移更高效

由于Docker確保了執行環境的一致性,使得應用的遷移更加容易。Docker可以在很多平臺上運行,無論是物理機、虛擬機、公有云、私有云,其運行結果是一致的。因此用戶可以很輕易的將一個平臺運行的服務,遷移到另一個平臺上,而不用擔心運行環境的變化導致應用無法正常運行的情況發生。

⑸ 維護和擴展更輕松

Docker的分層存儲技術,使得鏡像重復部分的復用更為容易,也使得鏡像的維護更新更加簡單,基于基礎鏡像進一步擴展也變得更加容易。此外,Docker團隊同各個開源項目團隊一起維護了一大批高質量的官方鏡像,既可以在生產環境使用,又可以作為基礎進一步定制,大大地降低了應用服務的鏡像制作成本[5]。

2 Jenkins簡介

2.1 Jenkins的概念

Jenkins是基于Java開發的一種可擴展的開源持續集成引擎,用于監控持續重復的工作,是業內比較常用的軟件自動化工具之一。

持續集成是在開發階段對項目進行持續性自動化編譯、測試,以達到控制代碼質量的目的。其具備即時發現問題,追蹤問題、修復問題的機制,改變了在所有代碼編寫完成后才提交給QA部門的傳統方法。每次集成都通過自動化的構建來驗證,及早發現集成錯誤,在研發過程中可極大減少集成導致的問題。

2.2 Jenkins的優勢

⑴ 跨平臺

支持幾乎所有的平臺,可在Windows,Ubuntu/Debian,RedHat/Fedora/CentOS,MacOSX等常見的操作系統下運行。

⑵ 易于配置

Jenkins可以通過友好的webGUI輕松設置和配置,其中包括即時錯誤檢查和內置幫助。不需要手動編輯xml配置文件,雖然Jenkins也支持手動修改xml配置文件。

⑶ 插件豐富

Jenkins擁有數以千計的插件,幾乎集成了所有自動化相關的工具,由于Jenkins可以通過插件架構進行擴展,為其提供了無限可能。在項目構建后,Jenkins也提供了郵件反饋形式,可以將構建結果及時告知相關人員。

3 自動化部署方案

3.1 環境搭建

自動化部署硬件環境包含一臺Jenkins持續集成服務器、一臺DockerRegistry 私有鏡像倉庫服務器、一臺GitLab代碼倉庫服務器和多臺應用服務器,應確保在整個網絡中Jenkins服務器可以訪問其他服務器,應用服務器能直接訪問Docker Registry服務器。其次,Jenkins服務器需要安裝Docker容器引擎軟件并實現登錄Docker Registry認證。

3.2 工作原理

開發人員在Gitlab服務器創建一個Project,確定各部署環境對應分支并將Jenkins服務器的SSH key加入到GitLab的SSHKey管理中心,確保Jenkins有權限訪問GitLab并可獲取代碼。在Jenkins中配置相關的參數:如BuildTriggers中輪詢GitLab分支的間隔時間、SSH remote hosts中的SSH sites遠程服務器登錄配置、Extended E-mail Notification 中的參數等,保證自動化部署流程的實現。

Jenkins服務器每個任務都會根據Build Triggers中的配置定時輪詢GitLab代碼分支,當檢測到GitLab分支上有代碼變動時就會觸發一系列的動作:自動拉取代碼、編譯代碼、構建鏡像、上傳鏡像至鏡像倉庫。構建完成后再調用遠程服務器的腳本完成軟件更新,最后調用郵件功能,將結果發送給研發人員和項目負責人,主流程如下圖1所示。

4 自動化部署實踐

4.1 項目描述

數字化抽水蓄能電站管理系統是水電站全生命周期的項目管理系統,通過收集實體電站全過程管理數據,采用三維可視化技術,實現物理電站和虛擬電站在全過程管理數據的一一對應,實現“一站式”電站的工程管理、資產管理、生產管理、安全管理、運檢管理、資料管理等功能,為管理層的決策提供技術支持,保證電站的安全、優質、經濟運行,提高企業效益[6]。

4.2 項目實踐

項目采用前后端分離的方式開發,前端采用Facebook和Instagram開源的React框架,后端使用微服務架構,采用Java和Python兩種語言,前后端采用Restful API接口進行數據交互。

對于Python應用,在Jenkins中配置shell腳本,利用自定義的Dockerfile文件將代碼及其運行所需環境封裝到Docker鏡像中,上傳至Docker Registry,調用SSH插件功能執行遠程服務器上的更新腳本,下載最新鏡像,利用docker-compose容器編排工具完成迭代。

對于Java應用,Jenkins會調用Maven工具將代碼編譯打包成Jar包,通過SCP命令上傳至應用服務器,調用Java鏡像啟動容器執行java-jar命令完成軟件更新。

前端代碼使用Nodejs編譯成靜態的文件,采用Nginx托管,Jenkins將源代碼下載到本地并通過Node鏡像啟動容器將代碼編譯成可部署的靜態文件,將編譯后的代碼推送到遠端Nginx服務器完成部署。最后將構建結果通過E-mail發送至開發人員和研發負責人。在更新的過程中,Jenkins也會根據配置執行代碼掃描和單元測試,執行結果如圖2和圖3所示。

軟件研發過程中使用不同的分支管理不同環境的源代碼,開發人員將代碼提交到dev分支上,Jenkins輪詢機制會檢測到COMMITID變更而觸發構建,執行特定的腳本完成軟件更新,期間自動執行單元測試并反饋運行結果。自測通過后合并代碼到test分支,jenkins完成自動化部署到測試環境,QA團隊開始測試工作。

數字化抽水蓄能電站系統一共有15個功能模塊,每個模塊平均構建300次,人工部署時,更新一次需要大概5-10分鐘,如果操作錯誤則花費更長時間。而自動化部署每次構建平均只耗時1分30秒,并保證每次更新的一致性,減少了因人為失誤導致的更新滯后問題,部署結果如圖4所示。根據以上數據粗略估算,自動化部署技術為該項目運維節省時長可達600小時,而且,Docker鏡像也保證了各服務器上運行環境的一致性,加快項目研發進度,節約人力資源。

5 結束語

本文重點介紹了基于Jenkins和Docker容器技術在軟件研發過程中自動化部署的實現方案,并概述了在數字化抽水蓄能電站項目上的實踐情況。基于以上論述可看出,該技術對項目持續集成、持續交付方面有很大的提升作用,在很大程度上減少了開發、測試、運維部門由于系統環境差異引起的矛盾,為項目履約提供了技術保障。同時,也可以為公司DevOps[7]發展提供理論依據和實踐成果,能在一定程度上為微服務架構[8]項目在私有云、公有云自動化部署積累寶貴的經驗;更為公司今后實現自動化運維計劃提供了寶貴的經驗。

參考文獻(References):

[1] James Turnbull.《第一本Docker書》.人民郵電出版社 2014-12[1-15]

[2] 周瑩,歐中紅,李俊.基于Jenkins的持續集成自動部署研究[J].計算機與數字工程,2016.2.

[3] 楊洪嬌.基于Docker的高校網站自動部署應用[J].無線互聯科技,2017.

[4] 蔡志強.基于Docker技術的容器隔離性分析[J].電子世界,2017.

[5] 劉國樂,余彥峰.淺析Docker容器技術[J].保密科學技術,2017.10.

[6] 錢玉蓮,王金峰,王國光,鄧新星.數字化設計在仙居抽水蓄能電站中的應用[J].2018.2.

[7] 黃璜,張賀,邵棟.自動化工具對中國DevOps實踐的影響[J].軟件學報.

[8] 王方旭.基于Spring Cloud和Docker的微服務架構設計[J].中國信息化,2018.3.

主站蜘蛛池模板: 日本国产精品| 视频二区欧美| 久久精品无码国产一区二区三区| 人妻出轨无码中文一区二区| 亚洲美女一区| 亚洲视频色图| 亚洲人成网18禁| 精品成人免费自拍视频| 国产正在播放| 国产精品对白刺激| 九九久久精品免费观看| 国产成人亚洲无码淙合青草| 超级碰免费视频91| 国产高清无码第一十页在线观看| 91久久夜色精品国产网站| 国产精品大尺度尺度视频| 成人免费黄色小视频| 91精品国产无线乱码在线| 國產尤物AV尤物在線觀看| 中文字幕乱妇无码AV在线| 国产精品女主播| 国产一区二区三区在线无码| 凹凸国产熟女精品视频| 国产原创演绎剧情有字幕的| 美女高潮全身流白浆福利区| 国产波多野结衣中文在线播放| 97一区二区在线播放| 亚洲爱婷婷色69堂| 亚洲动漫h| 91精品国产情侣高潮露脸| 久久久久久国产精品mv| 国产成人夜色91| 在线va视频| 亚洲人成影院午夜网站| 精品成人免费自拍视频| 亚洲aaa视频| 国产网站一区二区三区| 一级毛片在线免费视频| 国产黄视频网站| 亚洲精品中文字幕无乱码| 激情在线网| 色精品视频| 欧美在线一二区| 国产精品久久久久久久久kt| 国产综合欧美| 久综合日韩| 国产麻豆福利av在线播放| 777国产精品永久免费观看| 中文字幕无码制服中字| 香蕉国产精品视频| 一本大道视频精品人妻 | 五月激情综合网| 伊人福利视频| 欧美三级自拍| AV老司机AV天堂| 国产精品免费露脸视频| 欧美日韩成人在线观看| 国产成人高精品免费视频| 热re99久久精品国99热| 99在线国产| 国产在线观看91精品| 国产本道久久一区二区三区| 日韩免费成人| 六月婷婷精品视频在线观看| 天天综合色网| 国产一区二区三区夜色| 久久午夜影院| 亚洲自拍另类| 色亚洲激情综合精品无码视频 | 97综合久久| 国产精品观看视频免费完整版| 中文纯内无码H| 国产日韩欧美在线播放| 日韩国产精品无码一区二区三区| 少妇高潮惨叫久久久久久| 青青久在线视频免费观看| 国产女人综合久久精品视| 一区二区三区精品视频在线观看| 国产一级毛片yw| 免费可以看的无遮挡av无码| 国产在线精品人成导航| 日本午夜影院|