Try   HackMD

Jenkins 2023學習筆記

備注

  • 系統配置
    • Ubuntu 22.04.2 LTS
    • CPU 1 核心,2 綫程
    • RAM 8 GB
  • 參考網址:
  • 需要檢查伺服器配置是否符合Jenkins的配置需求

目錄

安裝指令

1. 更新系統套件列表:

  • 在安裝任何新軟件之前,首先更新您的系統套件列表。這確保您能安裝到最新版本的軟件:
sudo apt update

這個命令會從所有配置的來源(包括後續添加的 Jenkins 存儲庫)獲取最新的套件信息。

2. 安裝 Java(Jenkins 需要 Java 運行):

  • 可以先執行 java -version , 該指令檢查伺服器是否有安裝java以及版本符合Jenkins的需求
  • 由於 Jenkins 支持多個 Java 版本,包括較新的 OpenJDK 17,您可以根據需要選擇合適的版本。若要安裝 OpenJDK 17,請使用以下命令:
sudo apt install openjdk-17-jdk
  • 安裝完成後,可以檢查安裝的 Java 版本以確保正確安裝了所需的版本。使用以下命令來檢查 Java 版本:
java -version

這個命令將顯示安裝的 Java 版本信息,包括版本號和其他相關細節。確認是否安裝了正確的 Java 版本。

3. 添加 Jenkins 存儲庫的 GPG 鍵:

  • 根據官方指令,使用以下命令添加 Jenkins 存儲庫的 GPG 鍵:
sudo wget -O /usr/share/keyrings/jenkins-keyring.asc https://pkg.jenkins.io/debian-stable/jenkins.io-2023.key

這個命令會從 Jenkins 官方網站下載 GPG 鍵,並將其保存到 /usr/share/keyrings 目錄下的 jenkins-keyring.asc 文件中。GPG 鍵用於驗證存儲庫的安全性,以確保從存儲庫下載的軟件是官方提供的,未被篡改。

4. 將 Jenkins 存儲庫添加到系統源列表:

  • 創建新的存儲庫文件
    您需要在 /etc/apt/sources.list.d/ 目錄下創建一個名為 jenkins.list 的新文件。這可以通過以下命令完成:
sudo nano /etc/apt/sources.list.d/jenkins.list
  • 檢查文件內容
    使用 nano 編輯器打開(或創建)jenkins.list 文件後,檢查是否已經包含了下面的內容:
deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc] https://pkg.jenkins.io/debian-stable binary/

如果該文件是新創建的,這時文件應該是空的。

  • 添加 Jenkins 存儲庫信息:
    如果上述內容不在文件中,您需要添加它。這可以通過下面的命令完成:
echo "deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc] https://pkg.jenkins.io/debian-stable binary/" | sudo tee /etc/apt/sources.list.d/jenkins.list

5. 再次更新套件列表:

  • 如果在完成上述步骤之後有任何新增的存儲庫,則再次更新系統套件列表:
sudo apt update

這個命令將更新系統套件列表,確保安裝最新版本的軟件。

6. 安裝 Jenkins:

sudo apt install jenkins

這個命令將安裝 Jenkins。安裝完成後,Jenkins 會作為服務添加到您的系統中。

7. 啟動 Jenkins 服務並設置自動啟動:

  • 啟動 Jenkins 服務:
sudo systemctl start jenkins

這個命令會啟動 Jenkins 服務。

  • 設置 Jenkins 服務在啟動時自動運行:
sudo systemctl enable jenkins

這個命令將 Jenkins 服務設置為在系統啟動時自動運行。

  • 檢查運行情況
sudo systemctl status jenkins

這個命令用於檢查 Jenkins 服務的狀態。按 q 鍵退出狀態顯示界面,返回命令行提示符。
如果出于某种原因 q 键不起作用,也可以尝试使用组合键 Ctrl + C 来中断命令的执行并返回到命令行。但在大多数情况下,q 键就足够了。
正常運行内容:

Image Not Showing Possible Reasons
  • The image was uploaded to a note which you don't have access to
  • The note which the image was originally uploaded to has been deleted
Learn More →

  • 重新啟動 Jenkins 服務:
sudo systemctl restart jenkins

如果需要,您可以使用此命令來重新啟動 Jenkins 服務。

8. 訪問和配置 Jenkins:

在網頁瀏覽器中訪問 http://<your_server_ip>:8080。使用初始管理員密碼登錄,該密碼可以在以下路徑找到:

sudo cat /var/lib/jenkins/secrets/initialAdminPassword

這個密碼是訪問 Jenkins 的初始管理員密碼。

9. 檢查伺服器8080端口有沒有打開:

sudo ufw status

如果防火牆啟用,確保 8080 端口已開放以便訪問 Jenkins。

10. 成功訪問畫面:

  • http://<your_server_ip>:8080 時(記得檢查端口 8080 是否已開放),您需要輸入上述查詢到的管理員密碼以解鎖並配置 Jenkins。

    Image Not Showing Possible Reasons
    • The image was uploaded to a note which you don't have access to
    • The note which the image was originally uploaded to has been deleted
    Learn More →

  • 之後,您可以選擇安裝推薦的插件。安裝過程可能需要一點時間。安裝完成後,您可以開始使用並進一步配置 Jenkins。

    Image Not Showing Possible Reasons
    • The image was uploaded to a note which you don't have access to
    • The note which the image was originally uploaded to has been deleted
    Learn More →

自動偵測設定

1. 對github repository 設定 webhook

  • 設定 http://xx.xxx.xx.xx:8080/github-webhook/ 為 Webhook 的 URL。在 URL 末尾一定要加上 /github-webhook/(不可以缺少任何符號)。
    Image Not Showing Possible Reasons
    • The image was uploaded to a note which you don't have access to
    • The note which the image was originally uploaded to has been deleted
    Learn More →
  • 設定如下:勾選“Just the push event”選項。
    Image Not Showing Possible Reasons
    • The image was uploaded to a note which you don't have access to
    • The note which the image was originally uploaded to has been deleted
    Learn More →

2. 設定jenkins項目

  • 點擊“新增作業”按鈕:
    Image Not Showing Possible Reasons
    • The image was uploaded to a note which you don't have access to
    • The note which the image was originally uploaded to has been deleted
    Learn More →
  • 輸入項目名稱並點擊“Free-Style”選項:
    屏幕截图 2023-11-27 112105
  • 在“General”區塊內貼上 GitHub 儲存庫的網址:
    屏幕截图 2023-11-27 142603
  • 在“原始碼管理”區塊內也貼上 GitHub 儲存庫的網址:
    • 記得在“Branches to build”設定主要的分支
      屏幕截图 2023-11-27 142633

      設置觸發程序:
  • 勾選“GitHub hook trigger for GITScm polling”選項
    • 這個設定用於當 Jenkins 從 GitHub 收到推送通知時,GitHub 插件會檢查這個通知是否來自與 Jenkins 工作中設定的 Git 儲存庫相匹配的 GitHub 儲存庫。如果兩者相匹配,且相關選項已啟用,GitHub 插件會觸發一次對 GITScm 的輪詢。當 GITScm 輪詢 GitHub 時,它會發現有變更,並開始一次建置(build)。這個行為是 Git 插件的功能,所以輪詢和啟動建置不是 GitHub 插件的功能。
      屏幕截图 2023-11-27 143108

3. 設定构建步驟

  • Shell脚本,輸入以下指令執行條件後的操作:
#!/bin/bash # 目標 Git 倉庫目錄 REPO_DIR="/var/www/html/NewBackEndSystem" # 添加 Git 安全目錄配置 # 這條命令是Git 2.34.1 或更高版本中引入的一個安全機制, # 用於告訴 Git 該目錄是安全的,以避免在新版本 Git 中出現所有權安全檢查導致的錯誤。 git config --global --add safe.directory "$REPO_DIR" # 檢查目錄是否存在 if [ ! -d "$REPO_DIR" ]; then echo "錯誤:目錄 $REPO_DIR 不存在" exit 1 fi # 檢查目錄是否為 Git 倉庫 if [ ! -d "$REPO_DIR/.git" ]; then echo "錯誤:$REPO_DIR 不是一個 Git 倉庫" exit 1 fi # 進入目錄 cd $REPO_DIR # 拉取最新代碼 git pull origin main # 檢查 git 操作是否成功 if [ "$?" -ne 0 ]; then echo "從 Git 倉庫拉取代碼失敗" exit 1 fi echo "代碼更新成功"
  • 設定完成後點擊“存儲”:
    屏幕截图 2023-11-27 143738

4. 測試

進行提交 Pull Request 至 main 分支,檢查 Jenkins 是否有正常執行。

  • 正常情況下左下角會有動作并且顯示為綠色的勾號(✔):

    屏幕截图 2023-11-27 144005

  • 如果還是沒法執行可能原因有(以下為可能性,可能還有沒遇到的問題):

    • GitHub 的 Webhooks URL 沒有正常請求
    • 伺服器上沒有安裝 Git
    • 伺服器身份組的問題
    • 文件不存在
    • 沒有足夠的權限執行 git pull 操作
  • 身份組解決方式:

    • jenkins身份組, 加入該資料夾擁有者的身份組内