1. 程式人生 > >Jekins+Gitlab+Nexus自動構建Project

Jekins+Gitlab+Nexus自動構建Project

1、安裝

我這裡將三個軟體全部安裝到了一臺伺服器上,安裝時注意埠衝突問題,參照以上文章的安裝和操作步驟即可

2、建立專案

類似github,在gitlab新建一個Java project,這裡以一個maven專案為例,gitclone到本地,寫幾個簡單的java程式碼,pom.xml檔案中新增幾個dependency等等,能用到nexus私服下載jar包,具體的說明還是檢視步驟1中的幾篇文章,這裡重點是Jenkins的自動構建,gitlab上建立的project,如圖: 在這裡插入圖片描述

3、伺服器安裝

Jenkins是由各種外掛組成的,外掛執行或者執行指令碼等也需要伺服器上安裝了相關軟體才行 1)由於我們需要自動構建一個maven專案,所以伺服器需要安裝maven,這裡注意配置setting.xml檔案,為了使用私服,將倉庫下載地址指向Nexus私服,同樣Jenkins需要maven外掛 在這裡插入圖片描述

2)我們需要從gitlab拉取程式碼,所以伺服器需要安裝git,Jenkins需要gitlab,gitlab Hooks 外掛

yum install git-core

在這裡插入圖片描述 在這裡插入圖片描述

4、Jenkins新建一個專案

點選新建專案,如圖: 在這裡插入圖片描述 點選確定,如圖: 在這裡插入圖片描述 1)首先來看原始碼管理,我們需要配置從哪裡獲取原始碼,點選git,如圖: 在這裡插入圖片描述

  1. 這裡有個repository URL倉庫地址,進入gitlab的專案地址,有兩種形式,一種通過SSH,一種通過HTTP,如圖: 在這裡插入圖片描述
  2. 首先看HTTP形式的,如果填寫的地址連線不上會報錯,如圖: 在這裡插入圖片描述 點選Add按鈕,新增Credentials,如果是HTTP連線,一般型別選擇username with password,輸入使用者名稱、密碼、id即可,如圖: 在這裡插入圖片描述
    點選新增後,Credentials選擇剛剛新增的內容,如圖: 在這裡插入圖片描述 不出現錯誤提示,即為連線成功
  3. 再看SSH形式的,同樣,如果填寫的地址連線不上會報錯,這種方式之前的使用者名稱密碼形式已經不行了,如圖: 在這裡插入圖片描述 這裡需要生成祕鑰和私鑰檔案,在git中,執行:
git config --global user.name "xxx"
git config --global user.email "[email protected]" #後面是郵箱
ssh-keygen -t rsa -C "[email protected]" #後面是郵箱

注意執行ssh-keygen時,需要輸入密碼,一般直接回車,否則輸入密碼太麻煩,在使用者目錄下.ssh資料夾中找到公鑰和私鑰檔案: 在這裡插入圖片描述

在gitlab上新增公鑰,如圖: 在這裡插入圖片描述 在這裡插入圖片描述 回到Jenkins,點選Add按鈕,新增Credentials,如果是SSH連線,一般型別選擇SSH Username with private key,輸入使用者名稱、將私鑰內容貼上進private Key框中、在輸入id即可,如圖: 在這裡插入圖片描述 點選新增後,Credentials選擇剛剛新增的內容,如圖: 在這裡插入圖片描述 4. 對於Branches to build,這是選擇要構建的分支,寫法點選右側問號檢視詳細說明,這裡選擇master分支進行構建: 在這裡插入圖片描述 2)對於構建觸發器 我們選擇Build when a change is pushed to GitLab,注意後面的webhook,gitlab配置時需要,如圖: 在這裡插入圖片描述 3)Pre Steps執行一條命令 如圖: 在這裡插入圖片描述 4)Build配置maven,並輸入執行的maven命令 如圖: 在這裡插入圖片描述 點選紅色字型連線,或者點選系統管理–>全域性工具配置配置maven均可以: 在這裡插入圖片描述 配置後: 在這裡插入圖片描述 5)構建之後的操作,以及郵件通知,這裡暫時省略

5、gitlab webhooks

進入gitlab,點選專案的setting,選擇integrations,填寫jenkins構建觸發器顯示的webhook,並選擇觸發的時間,這裡選擇Push Events,如圖: 在這裡插入圖片描述 點選add webhook之後,如圖: 在這裡插入圖片描述 此時點選Test下拉框,選擇Push Events觸發,一般會發生403的錯誤,如圖: 在這裡插入圖片描述 解決這個問題,首先需要正確安裝了gitlab hook外掛,然後在系統管理 --> 系統設定 --> 取消勾選 Enable authentication for ‘/project’ end-point,儲存後再次點選測試,如圖: 在這裡插入圖片描述 此時檢視Jenkins,發現完成了一次構建,如圖: 在這裡插入圖片描述 雖然構建失敗,但是的確觸發了構建。說明webhook生效了

通過檢視構建的控制檯輸出,發現mvn的goal寫的有問題,應該去掉mvn,如圖: 在這裡插入圖片描述 在這裡插入圖片描述 修改後,點選立即構建測試,構建成功,如圖: 在這裡插入圖片描述 由於使用的maven的goal是deploy,去私服檢視,可以發現已經部署成功,如圖: 在這裡插入圖片描述

6、通過push程式碼測試生效

push程式碼,如圖: 在這裡插入圖片描述 觸發了一次新的構建,如圖: 在這裡插入圖片描述 測試成功

7、只監測某一分支的push events

此時在構建觸發器設定的位置,點選高階,配置如圖: 在這裡插入圖片描述 此test分支push程式碼,在gitlab上可以檢視是webhook是呼叫了的,但是未觸發構建,如圖: 在這裡插入圖片描述 此時master分支push程式碼,觸發了一次構建,如圖: 在這裡插入圖片描述 這裡就介紹完了,當然還要更多的細節,篇幅有限,需要在使用中慢慢發現他們的作用和使用注意事項,但是總體來說,等你用了幾次之後就會發現Jenkins很容易上手。