Jenkins安裝與使用

rustling發表於2024-07-21

Jenkins是開源CI&CD軟體領導者,提供超過1000個外掛來支援構建、部署、自動化,滿足任何專案的需要。

官網: https://www.jenkins.io/zh/

Debian12安裝Jenkins

官方指導: https://pkg.jenkins.io/debian-stable/

主要步驟:

# 新增金鑰
sudo wget -O /usr/share/keyrings/jenkins-keyring.asc \
    https://pkg.jenkins.io/debian-stable/jenkins.io-2023.key

# 新增apt庫列表
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 > /dev/null

# 更新本地包索引
sudo apt-get update

# 安裝jre
sudo apt-get install fontconfig openjdk-17-jre

# 安裝jenkins
sudo apt-get install jenkins

# 檢視jenkins狀態
sudo systemctl status jenkins

# 訪問jenkins頁面 http://localhost:8080
# 獲取解鎖金鑰
sudo cat /var/lib/jenkins/secrets/initialAdminPassword
# 根據頁面提示安裝外掛,配置管理員賬號

使用Jenkins建立流水線

在Github上建立一個python flask專案,並在tests目錄下建立單元測試。當推送程式碼到倉庫時,透過GitHub webhook觸發器通知Jenkins執行流水線任務。

1.安裝外掛

在路徑Jenkins Dashboard -> Manage Jenkins -> Manage Plugins -> Available搜尋

  • GitHub Integration
  • Git
  • Pipeline

其中Git,Pipeline預設已安裝,可在Installed plugins中檢視

2.建立 Jenkins Pipeline 專案

建立 Pipeline 專案

  1. 在 Jenkins 主介面,點選"New Item"
  2. 輸入專案名稱,例如"Python_Project"
  3. 選擇"Pipeline"
  4. 點選"OK"

配置 Pipeline 專案

在"Pipeline"部分,選擇"Pipeline script"

pipeline {
    agent any
    environment {
        FLASK_APP = 'src/app.py'
        VENV_DIR = 'venv'
    }
    stages {
        stage('Clone Repository') {
            steps {
                git branch: 'main', url: 'https://github.com/<your_name>/<your_project>.git'
            }
        }
        stage('Setup Virtual Environment') {
            steps {
                sh 'python3 -m venv ${VENV_DIR}'
                sh '. ${VENV_DIR}/bin/activate'
            }
        }
        stage('Install Dependencies') {
            steps {
                sh '. ${VENV_DIR}/bin/activate && pip install --default-timeout=100 -i https://mirrors.aliyun.com/pypi/simple/ -r requirements.txt'
            }
        }
        stage('Run Unit Tests') {
            steps {
                sh '. ${VENV_DIR}/bin/activate && pytest tests/'
            }
        }
    }
    post {
        always {
            echo 'Pipeline completed.'
        }
        success {
            echo 'Pipeline succeeded.'
        }
        failure {
            echo 'Pipeline failed.'
        }
    }
}

3.啟用 GitHub webhook 觸發器

進入 Jenkins 專案配置,在"Build Triggers"部分,勾選"GitHub hook trigger for GITScm polling"

4.配置 GitHub Webhook

  1. 進入 GitHub 倉庫
  2. 點選"Settings"
  3. 選擇"Webhooks"
  4. 點選"Add webhook"
  5. 在"Payload URL"中輸入 Jenkins 伺服器地址和 GitHub Webhook 的 URL
    http://your-jenkins-server/github-webhook/
  6. 設定"Content type"為"application/json"
  7. 在"Which events would you like to trigger this webhook?"部分,選擇"Just the push event"
  8. 點選"Add webhook"

配置完成後,檢視"Recent Deliveries"是否成功。

5.測試流水線

執行任務,在Console Output檢視日誌

相關文章