使用jenkins進行項目的自動構建部署

 

jenkins 簡介

  • Jenkins是基于Java開發的一種持續集成工具,用于監控持續重復的工作,功能包括:持續的軟件版本發布/測試項目和監控外部調用執行的工作。
  • 官網地址地址: https://jenkins.io

下載安裝啟動

CentOS 下用yum進行安裝啟動

# 先更新源再安裝最新版 jenkins
sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
sudo yum install jenkins
# 啟動
sudo service jenkins start
# 停止
sudo service jenkins stop
# 重啟
sudo service jenkins restart
# 檢查
sudo chkconfig jenkins on

下載war包放到tomcat中啟動

  • 服務器 yum 安裝速度太慢了,最終我選擇了這種方式,本地下載好war包傳到服務器上的tomcat容器下,然后啟動
  • 下載地址:http://mirrors.jenkins.io/war-stable/latest/jenkins.war

初始化

  • 在瀏覽器中輸入url打開jenkins的后臺控制頁面

    初始化界面
  • 初始化成功后會自動生成一個管理員密碼放到指定位置,根據頁面提示復制密碼粘貼到輸入框就可以登錄了

    初始登錄界面
  • 登錄成功后回讓你選擇插件的安裝,可以選擇建議的安裝也可以自己進行選擇,不清楚的話可以使用建議的安裝

    初始登錄界面
  • 由于建議安裝的插件比較多,安裝的過程有點慢,多等待一會

    初始登錄界面
  • 安裝的過程也可能因為網絡等一些原因安裝會失敗,現在可以無視它,點擊Continue,后面再進行手動的安裝

    安裝完成
  • 安裝完成后最好新創建一個管理員賬戶代替之前的臨時自動生成的密碼賬戶

    創建新的管理員賬戶
  • 初始化完成,進入后臺管理界面

    初始化完成


    后臺管理界面

安裝插件

  • 之前初始化的時候,有些插件安裝失敗,可以在用到的時候來手動修復它,沒用到的話就可以暫且不理它,不影響jenkins的使用
  • 點擊左側邊欄的“系統管理”,就可以看了插件安裝的一些錯誤信息

    插件錯誤信息
  • 在“系統管理”中往下拉,找到“管理插件”點擊進去就可以查看和管理所有的插件,點擊“可選插件”顯示所有jenkins支持的插件,在右上角的“過濾”輸入框中,輸入需要安裝的插件名就可以篩選查找到想要的插件

    查找插件
  • 選中要安裝的插件輸入框,點擊安裝就可以在線安裝需要的插件,當然由于網絡的原因也可能再次安裝錯誤,或者安裝的比較慢。我們可以點擊插件名進入插件的主頁,里面有該插件的詳細信息并能下載hpi文件進行手動安裝

    插件詳情
  • 在“管理插件”的頁面中點擊高級選項,我們可以在下面找到“上傳插件”,上傳下載好的插件,點擊“上傳”,系統就會自動上傳安裝該插件。

    上傳插件

gitlab的配置

  • 集成gitlab,讓jenkins能夠直接讀取修改gitlab中的代碼,方便項目的構建
  • 安裝gitlab-plugin
  • 在“系統管理” -> “系統設置“ -> “Gitlab” 中配置對應的gitlab信息
  • 點擊“Test Connection”測試下配置是否成功

    Gitlab配置


    Add Gitlab Credentials


    Gitlab API token

Publish Over SSH

  • 通過ssh連接遠程服務器,并能執行腳本部署項目
  • 安裝publish-over-ssh
  • 在“系統管理” -> “系統設置“ -> “Publish over SSH” 中配置對應的ssh信息
  • Key中填登錄遠程服務器的密碼(ssh免密碼登錄)
  • 點擊"SSH Servers"后的“增加”按鈕,新增一個遠程服務器
  • 點開“高級...”按鈕,能進一步的配置端口等信息。
  • 配置為Server信息后,點擊"Test Configuration"按鈕測試是否能夠連接成功。

    ssh配置

監測代碼變動自動部署

  • 點擊左側邊欄的“新建”按鈕,新建一個任務。
  • 填寫項目的名稱,并選擇一種構建的方式,此時我們選擇第一個,構建一個自由風格的軟件項目,然后點擊“OK”按鈕創建任務,并進行詳細的配置

    新建任務
  • 默認設置里填寫項目名和描述,并選擇之前配置好的要連接的gitlab

    默認配置
  • 配置源碼,填寫要構建項目的源碼倉庫地址,并指定要構建的分支

    配置源碼
  • 配置觸發器,選擇觸發構建的方式,可以通過hook,根據jenkins提供的地址,放到gitlab中的hook配置中,就會自動觸發構建。此時我們選擇的是定時檢測項目變動,如果檢測到分支有新的變動就觸發構建,如果感覺一分鐘時間太頻繁的話,可以自己設置時間頻率。

    構建觸發器
  • 配置構建,構建選用的是“Invoke top-level Maven target”,填寫對應的maven命令,就會自動執行maven命令進行侯建
  • 配置構建后操作, 該行為會在構建完成后執行,我們選用的是“Send build artifacts over SSH”的方式,把構建完成的jar包發送到遠程服務器上用ssh命令執行啟動,此時jenkins所有機器的默認路徑是任務所在的目錄,遠程機器的默認路徑是之前publish-over-ssh中指定的文件地址。Source files指定要傳送到遠程服務器上的文件,remote directory指定的是傳送到遠程服務器上的文件地址,Remove prefix是值要去除的文件目錄,不然傳送到遠程服務器也會帶有該目錄層級結構的。exec Command里輸入的是在遠程服務器上要執行的指令。

    構建部署配置
  • 項目構建后會有構建歷史,點擊進去,選擇“Console Output”就可以查看構建過程中的執行記錄

項目回滾

  • 上面雖然實現了項目的自動部署,但是有時部署失敗的時候我們需要回滾到指定版本的構建,這樣才能更靈活的進行項目的構建部署。我們可以選擇“參數化的構建過程”進行傳遞不同的參數來選擇是進行新的構建還是回滾
  • 如果要在實現回滾,一定要在構建后將,構建完成的文件進行存檔,方便以后回滾的時候使用

    構建后存檔
  • 使用參數化構建過程,讓后面的腳步可以根據不同的變量執行不同的操作。添加“Choice”參數配置不同的選項,讓選擇發布還是回滾,添加“String Parameter”參數來傳遞要回滾的版本號。

    參數和構建過程
  • 構建選擇“Execute Shell”的方式,自己根據變量,自定義構建的腳本,此時如果是發布安裝maven的構建過程進行新的構建,如果是回滾,知道歷史構建后的文件,復制到當前構建結果目錄。

    構建腳本
  • 點擊構建,根據不同的參數選擇發布還是回滾,回滾的時候填寫要回滾到的歷史版本號

    構建頁面


作者:尋夢的尕柳
鏈接:http://www.jianshu.com/p/dceaa1c7bb49
來源:簡書
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/279882.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/279882.shtml
英文地址,請注明出處:http://en.pswp.cn/news/279882.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

如何刪除Apple Music中的連接功能

Love Apple Music, but tired of the intrusive Connect feature taking up space on your favorite artist’s page? Well, don’t worry, because getting “dis-Connected” is just a matter of changing a few simple settings in your iPhone or iPad running iOS 8.0 o…

python設計模式(十四):模板方法模式

定義一個算法或者流程,部分環節設計為外部可變,用類似于模板的思想來實例化一個實體,可以往模板中填充不同的內容;在模板思想下,實體的整體框架是確定的,他是一個模板,但是模板下內容可變&#…

FirstBird--項目流程

創建項目(英文路徑)—–img圖片文件創建窗體–設置大小(Basic—size–>320*480)—最大化功能禁用(Expert–>setResizable(false))添加面板–設置布局方式(set Layout—>AbsoluteLayout)自己創建面板 GameMain中將Jpanel1改為WinJpanel–創建對應類–>extends JPane…

PeeringDB初探

做網絡相關工作的,可能需要了解PeeringDB這個網站(https://www.peeringdb.com), 這里有大部分公開注冊的 ASN(Autonomous System Number) 以及他們相互直接做Peering的信息,這也是這個網站名字的由來。據統計&#xff…

網站排障分析命令

系統連接狀態篇:1.查看TCP連接狀態netstat-nat|awk{print$6}|sort|uniq-c|sort-rnnetstat-n|awk/^tcp/{print$NF}|sort|uniq-c|sort-rnnetstat-ant|awk{print$NF}|grep-v[a-z]|sort|uniq-c2.查找請求數請20個IP(常用于查找攻來源)&#xff1a…

修復windows臉部識別_如何在Windows 10中改善面部識別

修復windows臉部識別If you have the right hardware, Windows 10 lets you unlock your computer with nothing but a smile. However, Microsoft’s facial recognition isn’t always spot-on. Here’s how to help Windows recognize you better. 如果您擁有合適的硬件&…

使用組策略推送exchange自簽名證書

一、導出證書打開證書頒發機構,在證書服務器上面選屬性,然后按照下圖進行導出操作。 在選擇格式時按照上圖標識選擇。 二、導入證書新建一個組策略,在計算機配置-策略-windows設置-安全設置-公鑰策略中選中“受信任的根證書頒發機構”并新建導…

基于.NetCore開發,前端支持Layui、React、Vue且前后端分離的快速開發框架

今天給大家推薦一個基于.Net Core開發的,前端框架支持Layui、React、Vue,并且前端和后端都支持代碼一鍵生成,用于項目開發,可極大的提升開發效率。項目簡介這是基于.net core的快速開發框架,前端框架可以根據自己需求選…

PHP常用工具方法集...

PHP常用工具方法集&#xff0c;更新時間 2018-7-14 <?php /*** 常用工具方法集* Author: zj*//** 工具總述 1.加密解密 2.生成隨機字符串 3.獲取文件擴展名&#xff08;后綴&#xff09; 4.文件大小格式化 5.替換標簽字符 6.列出目錄下的文件名 7.獲取當前頁面URL 8.讓瀏覽…

一題多解 面試題

最近在其他論壇上看到幾個網友的面試題&#xff0c;這些天&#xff0c;QQ群內的人都在討論怎么解答才最簡單&#xff0c;下面列出題目&#xff1a; 文件a&#xff1a; 文件b: a b c a b c b c a b c a c b a …

什么是Google On.Here,以及如何設置?

Google Wi-Fi is similar to other mesh Wi-Fi systems, but one big feature separates it from the pack: Google On.Here. Google Wi-Fi與其他網狀Wi-Fi系統相似&#xff0c;但其中一個重要功能將其與眾不同&#xff1a;Google On.Here。 發生什么了&#xff1f; (What Is O…

一張圖看懂 SQL 的各種 join 用法

原文鏈接https://www.codeproject.com/Articles/33052/Visual-Representation-of-SQL-Joins 轉載于:https://www.cnblogs.com/xuchao0506/p/10559951.html

1Python全棧之路系列Web框架介紹

Python全棧之路系列之Web框架介紹 所有的語言Web框架本質其實就是起一個socket服務端,監聽一個端口,然后運行起來 Web框架包含兩部分,一部分是socket,另外一部分是業務的邏輯處理,根據請求的不同做不同的處理 Python的Web框架分成了兩類, 即包含socket也包含業務邏輯處理的(tor…

『 再看.NET7』數值類型

在C#中&#xff0c;有int16&#xff0c;用short來定義&#xff1b;有int32&#xff0c;用int定義&#xff1b;用int64&#xff0c;用long來定義。在.NET7中&#xff0c;添加了int128&#xff0c;和unint128&#xff0c;位數更大的整型。var i16 short.MaxValue; Console.Write…

獲取幫助命令

whatis 基于數據庫的查找,查找內容比較慢 優點&#xff1a;查找速度快 缺點&#xff1a;沒有實時性 [rootlocalhost ~]# whatis ls ls (1) - list directory contents ls (1p) - list directory contents 數據庫文件 Centos6:/…

筆記本電腦升級固態硬盤好嗎_如何升級筆記本電腦硬盤

筆記本電腦升級固態硬盤好嗎Upgrading your laptop’s hard drive is a great way to get some extra life out of an old machine (or resurrect a dead one). Read on as we walk you through the prep work, the installation, and the followup. 升級筆記本電腦的硬盤驅動器…

購物單

小明剛剛找到工作&#xff0c;老板人很好&#xff0c;只是老板夫人很愛購物。老板忙的時候經常讓小明幫忙到商場代為購物。小明很厭煩&#xff0c;但又不好推辭。 這不&#xff0c;XX大促銷又來了&#xff01;老板夫人開出了長長的購物單&#xff0c;都是有打折優惠的。 …

Seay源代碼審計系統

這是一款基于C#語言開發的一款針對PHP代碼安全性審計的系統&#xff0c;主要運行于Windows系統上。這款軟件能夠發現SQL注入、代碼執行、命令執行、文件包含、文件上傳、繞過轉義防護、拒絕服務、XSS跨站、信息泄露、任意URL跳轉等漏洞。 下載鏈接 https://pan.baidu.com/s/1V…

dotnet 世界猜測 隨機數的小測試

這是一個半技術向的博客&#xff0c;主題來源于我讀過的某本書的片段&#xff0c;這是一個稍稍有些前置知識的故事&#xff0c;主題的大概內容就是假定世界存在某個規則序列&#xff0c;通過一代代的探索&#xff0c;可以獲取到此序列的內容。本文將模擬此情形&#xff0c;寫一…

python 批量修改密碼

下午閑來無事&#xff0c;就搞個批量密碼修改工具玩玩... #!/usr/bin/env python import paramiko import time ip_list(ip1,ip2) log_fileopen(mpwdok.log,w) log_file1open(mpwderr.log,w) for ip in ip_list: try: s paramiko.Transport((ip, 22)) s.c…