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 專案
- 在 Jenkins 主介面,點選"New Item"
- 輸入專案名稱,例如"Python_Project"
- 選擇"Pipeline"
- 點選"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
- 進入 GitHub 倉庫
- 點選"Settings"
- 選擇"Webhooks"
- 點選"Add webhook"
- 在"Payload URL"中輸入 Jenkins 伺服器地址和 GitHub Webhook 的 URL
http://your-jenkins-server/github-webhook/
- 設定"Content type"為"application/json"
- 在"Which events would you like to trigger this webhook?"部分,選擇"Just the push event"
- 點選"Add webhook"
配置完成後,檢視"Recent Deliveries"是否成功。
5.測試流水線
執行任務,在Console Output檢視日誌