溫馨提示×

Jenkins如何在Linux上部署應用

小樊
48
2025-10-11 19:40:37
欄目: 智能運維

1. 準備Linux環境
確保Linux系統(如Ubuntu/Debian/CentOS)滿足Jenkins基礎要求:安裝Java(推薦JDK 11+,通過java -version驗證),并配置網絡(允許Jenkins默認端口8080通過防火墻,如Ubuntu用sudo ufw allow 8080、CentOS用sudo firewall-cmd --add-port=8080/tcp --permanent && sudo firewall-cmd --reload)。

2. 安裝Jenkins

  • 通過官方倉庫安裝(推薦)
    Ubuntu/Debian:添加Jenkins倉庫密鑰wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io-2023.key | sudo tee /usr/share/keyrings/jenkins-keyring.asc,配置倉庫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,更新并安裝sudo apt update && sudo apt install jenkins;
    CentOS/RHEL:添加倉庫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,安裝sudo yum install jenkins。
  • 啟動服務sudo systemctl start jenkins(立即啟動),sudo systemctl enable jenkins(開機自啟)。

3. 配置Jenkins基礎設置

  • 訪問Web界面:瀏覽器輸入http://<服務器IP>:8080,輸入初始密碼(sudo cat /var/lib/jenkins/secrets/initialAdminPassword獲?。?;
  • 安裝推薦插件:勾選“Git”“Pipeline”“Docker”“Kubernetes”等常用插件(覆蓋版本控制、構建、部署需求);
  • 創建管理員賬號:設置用戶名、密碼及郵箱,完成初始配置。

4. 配置Jenkins與版本控制集成
若使用Git管理代碼,需添加Git憑證(Manage Jenkins → Credentials → System → Global credentials,點擊“Add Credentials”,選擇“Git Username with password”或“SSH Username with private key”,輸入Git賬號信息);若使用GitHub/GitLab,可配置Webhook(Manage Jenkins → Configure System,添加GitHub/GitLab服務器,填寫API Token,實現代碼推送自動觸發構建)。

5. 編寫Pipeline腳本
Pipeline是Jenkins實現CI/CD的核心,推薦使用聲明式Pipeline(結構清晰、易維護),腳本需包含agent(指定執行節點,如any表示任意節點)、stages(定義多階段流程)、steps(具體執行命令)。示例如下:

pipeline {
    agent any
    stages {
        stage('Checkout') {
            steps {
                git branch: 'main', url: 'https://github.com/your-repo/your-project.git' // 拉取代碼
            }
        }
        stage('Build') {
            steps {
                sh './mvnw clean package' // Maven構建(Java項目)
                // 或 sh './gradlew build' // Gradle構建
                archiveArtifacts 'target/*.jar' // 歸檔構建產物(如JAR文件)
            }
        }
        stage('Test') {
            parallel {
                stage('Unit Test') {
                    steps { sh './mvnw test' } // 單元測試
                }
                stage('SonarQube Analysis') {
                    steps {
                        withSonarQubeEnv('sonar-server') { // 集成SonarQube代碼質量分析
                            sh './mvnw sonar:sonar'
                        }
                    }
                }
            }
        }
        stage('Deploy') {
            when { branch 'main' } // 僅main分支觸發生產部署
            steps {
                script {
                    if (params.RUN_TESTS) { // 參數化構建:是否執行測試
                        sh "./run_cypress_tests ${params.ENVIRONMENT}" // 運行端到端測試
                    }
                    sh 'kubectl apply -f k8s/deployment.yaml' // 使用Kubernetes部署(需提前配置kubectl)
                    // 或 docker.withRegistry('https://registry.example.com', 'docker-creds') { // Docker部署
                    //     docker.image("myapp:${env.BUILD_ID}").push()
                    // }
                }
            }
        }
    }
    post {
        always {
            junit 'target/surefire-reports/*.xml' // 發布測試報告
        }
        failure {
            mail to: 'team@example.com', subject: 'Jenkins構建失敗', body: '請檢查構建日志' // 失敗通知
        }
    }
}

將腳本保存為Jenkinsfile,放入項目根目錄(與代碼一起提交到版本控制)。

6. 創建Jenkins Job并關聯Pipeline

  • 進入Jenkins主頁,點擊“New Item”,輸入Job名稱(如deploy-app),選擇“Pipeline”,點擊“OK”;
  • 配置Pipeline:
    • 定義:選擇“Pipeline script from SCM”(從版本控制獲取腳本);
    • SCM:選擇“Git”,填寫倉庫URL(如https://github.com/your-repo/your-project.git)和分支(如main);
    • Script Path:填寫Jenkinsfile(腳本路徑,默認為項目根目錄);
  • 觸發條件:可選“Poll SCM”(定時輪詢代碼變更,如H/5 * * * *表示每5分鐘檢查一次)或“GitHub hook trigger for GITScm polling”(Webhook觸發);
  • 保存并運行:點擊“Save”,再點擊“Build Now”啟動構建,通過“Build History”查看進度。

7. 部署到目標環境
根據項目需求選擇部署方式:

  • 容器化部署(Docker+Kubernetes):在Pipeline中添加docker build(構建鏡像)、docker push(推送至鏡像倉庫)、kubectl apply(更新Kubernetes Deployment)步驟;
  • 傳統應用部署(Shell腳本):編寫deploy.sh腳本(如停止舊服務、復制新JAR文件、啟動服務),在Pipeline中通過sh './deploy.sh'執行;
  • 配置管理工具(Ansible):編寫Ansible Playbook(如deploy.yml,包含git clone、install dependencies、start application任務),在Pipeline中通過ansiblePlaybook步驟調用。

8. 監控與優化

  • 查看構建日志:點擊Job名稱→“Build”→“Console Output”,實時查看構建過程;
  • 優化性能:通過--memory參數調整Jenkins JVM堆內存(如-Xmx2048m),避免內存不足;使用parallel指令并行執行測試(如單元測試與集成測試并行),減少構建時間;
  • 安全加固:配置角色權限(如“開發者”只能觸發構建、“運維”能部署)、集成SonarQube(代碼質量門禁)、Vault(密鑰管理),阻斷高危構建。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女