以下是在Debian上編寫Jenkins部署腳本的核心技巧,結合搜索資源中的關鍵步驟和最佳實踐:
安裝Jenkins
通過腳本自動化安裝,需配置Java環境和Jenkins倉庫:
# 安裝Java
sudo apt update && sudo apt install -y openjdk-11-jdk
# 添加Jenkins倉庫并安裝
wget -q -O - https://pkg.jenkins.io/debian/jenkins.io.key | sudo apt-key add -
sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'
sudo apt update && sudo apt install -y jenkins
# 啟動服務并設置開機自啟
sudo systemctl enable --now jenkins
參考來源:
配置Jenkins
sudo cat /var/lib/jenkins/secrets/initialAdminPassword
獲取密碼。在項目根目錄創建Jenkinsfile
,定義CI/CD流程,以下為典型示例:
pipeline {
agent any
environment {
DEPLOY_PATH = "/var/www/app" // 部署路徑
BACKUP_PATH = "/var/www/backup" // 備份路徑
}
stages {
stage('Checkout') {
steps {
checkout scm // 從Git拉取代碼
}
}
stage('Build') {
steps {
sh 'mvn clean package -DskipTests' // Maven構建
}
}
stage('Test') {
steps {
sh 'mvn test' // 運行單元測試
}
}
stage('Deploy') {
steps {
// 備份舊文件
sh "cp -r ${DEPLOY_PATH} ${BACKUP_PATH}/$(date +%Y%m%d%H%M%S)"
// 部署新文件
sh "scp target/*.jar user@server:${DEPLOY_PATH}/app.jar"
// 重啟服務(示例為Java應用)
sh "ssh user@server 'systemctl restart app-service'"
}
}
}
post {
success {
echo "部署成功!"
}
failure {
echo "部署失敗,請檢查日志!"
}
}
}
參考來源:
使用參數化構建
在Jenkins任務中配置參數(如環境變量、分支名稱),在Jenkinsfile
中通過params
引用:
pipeline {
parameters {
string(name: 'DEPLOY_ENV', defaultValue: 'prod', description: '部署環境')
}
stages {
stage('Deploy') {
steps {
sh "scp target/*.jar user@${params.DEPLOY_ENV}-server:/app"
}
}
}
}
參考來源:
集成Docker與Kubernetes
stage('Build Docker Image') {
steps {
script {
docker.build("myapp:${env.BUILD_NUMBER}")
docker.withRegistry('https://registry.example.com', 'docker-credential') {
docker.image("myapp:${env.BUILD_NUMBER}").push()
}
}
}
}
stage('Deploy to K8s') {
steps {
sh "kubectl set image deployment/myapp myapp=myregistry/myapp:${env.BUILD_NUMBER}"
sh "kubectl rollout status deployment/myapp"
}
}
參考來源:
安全與權限管理
withCredentials
插件安全引用憑證:stage('Deploy with SSH') {
steps {
withCredentials([sshUserPrivateKey(credentialsId: 'ssh-key', keyFileVariable: 'SSH_KEY')]) {
sh 'scp -i $SSH_KEY target/*.jar user@server:/app'
}
}
}
參考來源:
通過以上技巧,可高效編寫Debian環境下的Jenkins部署腳本,實現從代碼提交到部署的全流程自動化。