在CentOS上實現Jenkins自動化前,需完成以下基礎準備:
sudo yum update -y
確保系統軟件包為最新版本。sudo yum install -y java-11-openjdk-devel
),安裝后通過java -version
驗證是否成功。wget
用于下載Jenkins倉庫配置(sudo yum install -y wget
)。通過以下命令添加Jenkins Red Hat Stable倉庫并導入GPG密鑰(確保軟件包來源可信):
sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
使用YUM包管理器安裝Jenkins(自動解決依賴):
sudo yum install -y jenkins
啟動Jenkins服務并設置開機自啟:
sudo systemctl start jenkins
sudo systemctl enable jenkins
通過sudo systemctl status jenkins
檢查服務狀態(顯示“active (running)”即為成功)。
首次訪問Jenkins需輸入管理員初始密碼,可通過以下命令獲?。?/p>
sudo cat /var/lib/jenkins/secrets/initialAdminPassword
在瀏覽器中輸入http://<服務器IP>:8080
,粘貼初始密碼完成解鎖。
選擇“安裝推薦插件”(如Git、Maven、Pipeline等),覆蓋常用功能;或進入“Manage Jenkins > Manage Plugins”手動安裝所需插件(如Docker、Kubernetes等)。
進入“Manage Jenkins > Global Tool Configuration”,設置工具路徑(如JDK、Maven、Git):
/usr/lib/jvm/java-11-openjdk
);MAVEN_HOME
(如/usr/share/maven
);/usr/bin/git
)。允許Jenkins端口(默認8080)通過防火墻:
sudo firewall-cmd --permanent --add-port=8080/tcp
sudo firewall-cmd --reload
完成初始配置后,創建管理員賬戶(設置用戶名、密碼、郵箱),替代默認的“admin”賬戶。
進入Jenkins主頁,點擊“New Item”,輸入任務名稱(如“my-app-ci”),選擇任務類型:
選擇“Git”,填寫倉庫URL(如https://github.com/user/repo.git
)和分支(如main
);若倉庫為私有,需添加SSH密鑰或賬號密碼作為憑證。
http://<服務器IP>:8080/github-webhook/
);H/5 * * * *
表示每5分鐘觸發一次)。選擇“Pipeline script from SCM”,指定SCM類型為“Git”,填寫倉庫URL和Jenkinsfile路徑(如Jenkinsfile
,需存放在倉庫根目錄)。
pipeline {
agent any // 使用任意可用節點
stages {
stage('Checkout') {
steps {
git branch: 'main', url: 'https://github.com/user/repo.git' // 拉取代碼
}
}
stage('Build') {
steps {
sh 'mvn -B clean package' // 使用Maven編譯打包
}
}
stage('Test') {
steps {
junit '**/target/surefire-reports/*.xml' // 運行單元測試并生成報告
}
}
stage('Deploy') {
steps {
sh 'scp target/*.jar user@server:/opt/app/' // 部署到測試服務器
}
}
}
post {
always {
cleanWs() // 清理工作空間
}
}
}
保存任務后,點擊“Build Now”即可觸發首次構建。
在代碼倉庫(如GitHub、GitLab)中配置Webhook,指向Jenkins服務器的/github-webhook/
或/gitlab-webhook/
接口,實現代碼提交后自動觸發構建。
通過Cron語法設置定時任務(如每天凌晨2點構建):
pipeline {
triggers {
cron('H 2 * * *') // 每天2點觸發
}
// 其他配置...
}
在任務頁面點擊“Build Now”,手動啟動構建(適用于需要人工確認的場景)。
通過Docker添加構建節點(如Linux節點),提升構建效率:
docker run -d --name jenkins-agent -p 50000:50000 jenkins/agent
在Jenkins“Manage Jenkins > Manage Nodes and Clouds”中添加節點,配置Label(如linux
),在Pipeline中使用agent { label 'linux' }
指定節點。
結合Docker和Kubernetes實現標準化部署:
stage('Build Image') {
steps {
script {
docker.build("myapp:${env.BUILD_ID}") // 構建Docker鏡像
}
}
}
stage('Push to Registry') {
steps {
withCredentials([usernamePassword(credentialsId: 'dockerhub', usernameVariable: 'DOCKER_USER', passwordVariable: 'DOCKER_PASS')]) {
docker.withRegistry('https://registry.hub.docker.com', 'dockerhub') {
docker.image("myapp:${env.BUILD_ID}").push() // 推送鏡像到Docker Hub
}
}
}
}
stage('Deploy to Kubernetes') {
steps {
sh 'kubectl set image deployment/myapp myapp=myapp:${env.BUILD_ID}' // 更新Kubernetes Pod鏡像
}
}
集成SonarQube進行代碼質量掃描,阻斷問題構建:
stage('Code Scan') {
steps {
withSonarQubeEnv('sonar-server') { // 配置SonarQube服務器
sh 'mvn sonar:sonar'
}
}
}
stage('Quality Gate') {
steps {
timeout(time: 15, unit: 'MINUTES') {
waitForQualityGate abortPipeline: true // 若質量不達標,終止流水線
}
}
}