Jenkins作為一款持續集成,持續部署的軟件,是由java編寫的一款開源軟件
創新互聯建站是一家專業提供圖們企業網站建設,專注與網站建設、網站設計、html5、小程序制作等業務。10年已為圖們眾多企業、政府機構等服務。創新互聯專業網站建設公司優惠進行中。? 作為一款非常流行的CI(持續集成)工作,用于構建和測試各種項目
? Jenkins 的主要功能是監視重復工作的執行,例如軟件工程的構建或在 cron下設置的 jobs
DEV ---> GIT ---->CI(持續集成) ----->CD(持續部署)
使用過程:
Dev客戶端
1.搭建好git服務器,并使用git add . +git commit -m ‘project’ 上傳至本地文件
2.Git tag v 1.0 ----打標簽 git push,git push --tag推上去
Git端
3.登錄到github服務器,新建項目與群組,并將客戶端的git倉庫使用http推到項目中
Jenkins服務端
4.在jenkins服務器上,建立自己的工程,其中添加git-parameter,并輸入gitlab相關url使其能夠與gitlab的項目通信,
5.可以在主菜單后會可以在build with parameter中看到各種上傳到gitlab上的版本,通過開始構建,將gitlab上的項目下載到jenkens上,搭建web,將文件打包放在web上方便分發
6.編寫腳本,實現Jenkins中文件的自動部署,版本更新
本篇主要對步驟5,6進行自動管理:
步驟5:將Jenkins上的文件一鍵部署至http共享
Jenkins的http自動分發:在工程設置中,添加構建步驟
newcodes_${freetag}:路徑是/var/lib/jenkins/workspace/freesttle
#將版本文件從newcodes_${freetag}放到deploy_dir下
------------------------------------------------------------------------
shell代碼
deploy_dir= /var/www/html/deploy/packages/
cp -r newcodes_${freetag} $deploy_dir
rm -rf $deploy_dir/newcodes_${freetag}/.git #刪除拷貝后原版本文件中的.git文件
cd $deploy_dir
在新的路徑下打包拷貝過來的版本文件
tar czf newcodes_${freetag}.tar.gz newcodes_${freetag}
rm -rf newcodes_${freetag} #刪除拷貝過來的源文件,只留tar包
md5sum newcodes_${freetag}.tar.gz | awk '{print $1}' > newcodes_${freetag}.tar.gz.md5
#用md5計算出tar包校驗值,存放在對應文件下
-------------------------------------------------------------------------------
新建立一個 mp_live_version 版本更新功能
#新版本(live_version),上一個版本(lastest_version)
#[ -e存在這個路徑] &&則將live_version內容寫入lastest_version
#將新的輸入內容寫如新版本
[ -e /var/www/html/deploy/live_version ] && cat /var/www/html/deploy/live_version > /var/www/html/deploy/last_version
echo ${mp_live_ver} > /var/www/html/deploy/live_version
步驟6:從jenkins上下載最新的版本文件并自動完成部署(web網頁部署)
#服務器/var/www/html下提供live_version(最新版本),lastest_version(上一版本)版本文件。提供packages/XXX_1.tar.gz文件
importrequests
fromurllibimportrequest
importhashlib
importos
importtarfile
defget_data(url):#負責將遠端的文件打開text的格式
r = requests.get(url) #下載當地地址
returnr.text #返回文本格式
defdownload(url,fname):#下載文件,前面的download腳本
html = request.urlopen(url)#下載最新的tar包
withopen(fname,'wb')asfobj:
while True:
data = html.read(1024)
if notdata:
break
fobj.write(data)
defcheck_md5(fname): #校驗md5數值,求fname文件的md5數值
m = hashlib.md5()
withopen(fname,'rb')asfobj:#打開文件逐步讀取
while True:
data = fobj.read(1024)
if notdata:
break
m.update(data) #將每次的md5數值更新
returnm.hexdigest() #將md5數值轉化成可讀的形式
defdeploy(app): #部署,先切到目錄,解壓tar,創建快捷方式
os.chdir('/var/www/packages')#cd到這個路徑下
tar = tarfile.open(app,'r:gz')#對app路徑的文件進行解包
tar.extractall()
tar.close()
src = app.replace('.tar.gz','') #將.tar.gz替換為''取/var/www/html/packages
dst ='/var/www/html/mysite'#創建快捷方式的路徑
ifos.path.exists(dst): #創建的路徑是否已經存在,若存在則刪除路徑后,再次創建
os.unlink(dst)
os.symlink(src,dst) #創建快捷方式
if__name__ =='__main__':
ver = get_data('http://192.168.122.59/deploy/live_version')#版本信息在/var/www/html/下
app_name ='myproject_%s.tar.gz'%ver #壓縮包的文件名
app_url = 'http://192.168.122.59/packages/'+ app_name #壓縮包的網絡文件路徑
app_path = os.path.join('/var/www/packages',app_name)#完整的下載到本機路徑
download(app_url,app_path)#下載到本的
locals_md5 = check_md5(app_path)
remote_md5 = get_data(app_url+'.md5').strip()#下載遠程的md5文件,并將內容后面的/n去掉
iflocals_md5 == remote_md5:
deploy(app_path) #若md5校驗沒有問題,則解壓這個版本的文件,并創建快捷方式
另外有需要云服務器可以了解下創新互聯cdcxhl.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業上云的綜合解決方案,具有“安全穩定、簡單易用、服務可用性高、性價比高”等特點與優勢,專為企業上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。
當前名稱:Jenkins中的一鍵部署與版本更新-創新互聯
轉載源于:http://m.kartarina.com/article22/ccgsjc.html
成都網站建設公司_創新互聯,為您提供面包屑導航、靜態網站、網頁設計公司、商城網站、軟件開發、云服務器
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯