1. 程式人生 > 其它 >Jenkins 安裝與使用手冊

Jenkins 安裝與使用手冊

Linux部署Jenkins Nginx轉發Jenkins https,jenkins新增windows節點。

一、安裝與配置

最簡單的安裝,前往官網下載通用的 war 包部署到本地的 Tomcat 中。

外掛安裝

系統配置

全域性工具配置

Nginx轉發的配置

如果前端服務的 Nginx 部署了 SSL 證書時,許多操作會引發web錯誤,可講下面的配置新增到nginx配置中。

server {
    location /jenkins {
        # 常規轉發
        proxy_pass              http://server_local_8080/jenkins;

        proxy_set_header        X-Real-IP $remote_addr;
        proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header        X-Forwarded-Host $host;
        proxy_set_header        Host $host:$server_port;
        proxy_set_header        X-Forwarded-Proto $scheme;

        # 特殊配置
        proxy_redirect http:// https://;        
        proxy_http_version      1.1;
        proxy_request_buffering off;
        proxy_buffering off;
        add_header 'X-SSH-Endpoint' 'domain:8080/jenkins' always;
    }
}       

二、Jenkins 使用

任務管理

1.基本命名約定

命名規則最好只包含英文、數字、下劃線或者中槓,不要使用中文或者空格!

2.建立資料夾

資料夾用於管理任務,可以多層巢狀,管理分組專案。顯示名稱,可以使用中文,並且會顯示在列表中。

3.建立任務

建立專案的第一頁,是輸入任務名稱,選擇任務型別。任務型別目前實測下來,不算 資料夾 型別,最常用的就是:構建一個自由風格的軟體專案構建一個maven專案 。前者基本可適合絕大多數型別的專案,例如:php、python這種解釋型的,以及node這種編譯型的。當然,也可以從當前的某個現有專案複製一份,進行修改。

建立好任務之後,接下來是配置任務,配置任務分為:General(一般配置)、原始碼管理、構建觸發器、構建環境、構建和構建後操作這6大類(對於maven專案,構建又拆分為:Pre Steps、Build、Post Steps和構建設定這四個分類),除了一般配置,其他基本都需要配合相應的外掛或者環境變數來實現,因此後面分步描述。

4.一般配置

在一般配置中,只需要配置的專案並不多,

  • 限制專案的執行節點 : 這是最重要的配置,如果留空,任務構建時會在 所有 節點構建此專案,對於負載分散式部署的專案,即同一個專案部署在多臺伺服器中,並完全配置一致是非常有用的。否則,這隻會帶來麻煩。其中 master 表示執行 jenkins 的當前節點;
  • 顯示名稱 : 不是必要,但是基本都會設定的友好顯示名稱;
  • 丟棄舊的構建 :隨著時間推進,構建的記錄會非常多,可以在這裡配置根據天數或者次數,將構建的記錄進行清理。2個配置是並存的,如果同時進行了配置,滿足其中之一,即會清理;
  • 使用自定義的工作空間 :Jenkins 會為每個專案分配一個獨立的 工作目錄
    ,用於拉取程式碼並執行構建,絕大多數情況下是沒必要去變更的,目前實測下來發現,如果是 SVN+Python/Php 這種組合方式最好將其直接指定到專案目錄中去;
5.構建

構建 通常用於在 Jenkins 根據 構建環境 的配置執行完基礎構建之後的一些自定義操作。比如,複製配置檔案,重啟應用等操作。點選 增加構建步驟 ,後選擇 執行 Shell。在文字框中,新增響應的shell操作並儲存,例如:

#!/bin/bash +x 
/bin/cp -R -f templates /data/web/service/statics/
chmod +x bin/run.sh

在這一步操作時,經常會遇到一些自定義命令或指令碼查詢不到的錯誤,這通常是由環境變數讀取不到引起,後面會有專門的內容來描述。

管理憑據

憑據,即訪問子節點、SCM、SMTP等的身份認證資訊。進入 : 系統配置 --> Manage Credentials ,注意不是 憑據配置 。而且,這裡並不會管理登入 Jenkins 的賬戶資訊。

然後,點選域一列下的全域性連結,進入全域性憑據管理。

點選左側選單 新增憑據 開啟新增憑據頁面,如下圖:

憑據的型別選擇,一般常見的有:

  • Username with password : 帶有密碼的使用者名稱憑據,適用性最強,基本SSH登入、SCM等都可以用這種憑據;
  • SSH Username with private key : 使用私鑰的SSH登入令牌,注意要在下方輸入私鑰文字內容和私鑰密碼;一般訪問節點,都是使用此類憑據。

憑據的使用範圍,主要包含全域性和系統兩類:

  • 全域性 : 該憑據適用於全域性,即可適用於任何需要的地方;
  • 系統 : 該憑據僅用於系統使用,例如登入節點。

這裡要注意的是,憑據的使用範圍這一選項並不影響憑據的使用。僅僅是在選擇憑據的時候,可以簡單的過濾,減少干擾而已。

其他任務配置

1.原始碼管理

任務的原始碼管理依賴於元件及系統工具。這表示,需要在 Jenkins 中安裝相應的元件,並在對應的節點(包含本機)中安裝對應的管理工具,例如:gitsubversion

勾選合適的版本管理工具,在 Repository URL 中輸入倉庫地址,在 Credentials 下選擇正確的憑據,當然也可以點選 新增 按鈕進行新增。

對於 gitsvn ,有兩個不同的選項要輸入:

  • 對於 git 來說,需要指定分支,即表示該任務只和對應的分支相關聯,當然也可以留空;
  • 對於 svn 來說,需要在 Local module directory 選項中輸入 . ,該值對應任務基本配置中的 使用自定義的工作空間 選項。
2.構建觸發器

構建觸發器意為在何種情況下觸發構建,根據不同公司的管理規定,可以用也可以不用。根據我們的管理流程,對於非生產環境,均配置了自動觸發,即在 gitee 上提交了程式碼之後,會自動觸發任務構建。為了實現目標,僅需做如下配置即可(前提是安裝了gitee外掛):

  • 勾選 Gitee webhook 觸發構建 ,複製後面的 url備用;
  • 允許觸發構建的分支 選項中,選擇 根據分支名過濾 , 根據具體情況輸入分支名;
  • Gitee WebHook 密碼 選項中, 點選右下方的 生成按鈕, 生成密碼並複製備用。

訪問 gitee 上對應的專案,進入管理中的 WebHooks ,在 URLWebHook 密碼/簽名金鑰 中輸入上面複製出來的兩段值,選擇事件中保持預設的勾選 Push 即可。這裡的配置,表示在程式碼 Push 時會自動推送到 Jenkins 中觸發響應的構建。

注意,構建觸發器 和前面的 原始碼管理 有一定的關聯,注意前後的匹配!!!

3.構建環境

構建環境中的工具,預設會繼承自 Jenkins 系統配置中的 全域性工具配置 ,當然也可以在此處指定該節點自定義的配置。對於 nodejs 編譯專案,只需要勾選下 Provide Node & npm bin/ folder to PATH 選項並選擇合適的版本即可。

對於需要編譯的 nodejs ,在 構建 環節的 執行 Shell 中方可執行構建操作。

npm config set "chromedriver_cdnurl" "https://npm.taobao.org/mirrors/chromedriver"
npm install
npm run build
4.Maven專案的構建

Maven 專案構建的重點,主要是在 Build 環節中,選擇專案的 pom 檔案路徑以及構建目標。例如:

節點管理

所謂節點,是可以由 Jenkins 管理的伺服器,可以任務繫結在任意節點中進行構建。節點的配置,可大致分為:一般配置、啟動方式(或者叫連線方式)和節點屬性這三大部分。

  • 一般配置中,遠端工作目錄為客戶端機器的構建專案根目錄,用法一般選擇為 只允許執行繫結到這臺機器的Job
  • 啟動方式中,連線 Linux 主機使用 Launch agents via SSH,連線 Windows 主機使用 通過Java Web啟動代理 ,在高階選項中可以指定 SSH 的連線埠;
  • 節點屬性中,工具位置可以指定不同於系統配置中全域性工具配置的自定義值,環境變數可以指定該節點自定義的一些變數。

注意:

Jenkins 管理Linux和Windows的方式略有不同,Windows可以理解為被動式的。需要開啟 系統管理-->全域性安全配置 中的代理並指定埠,用於Windows節點的反向連結。

在新增完 Windows 節點之後,初始會報錯,表示無法連線,如下圖,右鍵儲存 Launch 按鈕對應的 jnpl 檔案。

在對應的節點伺服器執行這個 jnlp 檔案,當然前提是安裝了 jdk ,如果提示許可權問題,可以按照詳細資訊裡的描述,將 Jenkins 伺服器加入 java 的安全允許站點。執行成功則如下圖所示,File 選單,可以將其新增為系統服務。

曾經我以為我是個程式設計師攻城獅,,現在我發現,必須要要前面加上“廣告公司”四字。