溫馨提示×

怎樣自定義centos jenkins部署

小樊
46
2025-09-20 08:34:25
欄目: 智能運維

一、環境準備:安裝基礎依賴

在CentOS上自定義Jenkins部署前,需先安裝Java(Jenkins依賴)、Git(代碼托管庫交互)、Docker(可選,用于容器化部署)等工具。

  • 安裝Java:Jenkins基于Java開發,需安裝JDK(推薦1.8或11版本)。
    sudo yum install -y java-11-openjdk-devel
    java -version  # 驗證安裝
    
  • 安裝Git:用于從代碼倉庫拉取代碼。
    sudo yum install -y git
    git --version  # 驗證安裝
    
  • 安裝Docker(可選):若需容器化部署應用(如Tomcat、Nginx),需安裝Docker。
    sudo yum install -y yum-utils device-mapper-persistent-data lvm2
    sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
    sudo yum install -y docker-ce docker-ce-cli containerd.io
    sudo systemctl start docker && sudo systemctl enable docker  # 啟動并設置開機自啟
    

二、安裝Jenkins:選擇合適方式部署

1. YUM方式安裝(推薦,便于管理)

# 添加Jenkins官方YUM倉庫
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

# 安裝Jenkins
sudo yum install -y jenkins

# 啟動Jenkins并設置開機自啟
sudo systemctl start jenkins
sudo systemctl enable jenkins

2. WAR包方式安裝(靈活,適合自定義環境)

# 下載Jenkins WAR包
wget http://mirrors.jenkins.io/war-stable/latest/jenkins.war

# 后臺啟動Jenkins(指定端口為8080)
nohup java -jar jenkins.war --httpPort=8080 > jenkins.log 2>&1 &

# 查看初始管理員密碼(用于首次登錄)
tail -f jenkins.log  # 密碼位于/var/lib/jenkins/secrets/initialAdminPassword

三、配置Jenkins:基礎設置與插件安裝

1. 首次登錄配置

  • 訪問http://<服務器IP>:8080,輸入初始管理員密碼(從/var/lib/jenkins/secrets/initialAdminPassword獲?。?。
  • 選擇“安裝推薦插件”(包含Git、Pipeline等基礎插件),或手動選擇所需插件。

2. 安裝必要插件

進入“Manage Jenkins” → “Manage Plugins”,安裝以下插件:

  • Git Plugin:用于拉取代碼倉庫代碼。
  • Pipeline Plugin:支持Pipeline as Code(通過Jenkinsfile定義流程)。
  • Generic Webhook Trigger Plugin:用于Git倉庫Webhook觸發構建。
  • Docker Pipeline Plugin(可選):用于Docker容器化部署。

3. 配置全局工具

進入“Manage Jenkins” → “Global Tool Configuration”,設置常用工具路徑:

  • Java:配置JAVA_HOME(如/usr/lib/jvm/java-11-openjdk)。
  • Git:配置Git安裝路徑(如/usr/bin/git)。
  • Maven(可選):配置MAVEN_HOME(如/usr/share/maven)。

4. 創建管理員賬戶

首次登錄后,設置管理員用戶名、密碼及郵箱,完成基礎配置。

四、創建Jenkins任務:自定義部署流程

1. 新建任務

進入Jenkins首頁,點擊“New Item”,選擇任務類型(如“Freestyle project”或“Pipeline”),輸入任務名稱后點擊“OK”。

2. 配置源碼管理

  • 選擇“Git”,填寫代碼倉庫URL(如https://github.com/your-repo/project.git)。
  • 配置Credentials(SSH密鑰或賬號密碼),選擇分支(如main)。

3. 配置構建觸發器

  • Webhook觸發:安裝Generic Webhook Trigger插件后,勾選“Generic webhook trigger”,生成Token并配置Git倉庫Webhook(指向http://<Jenkins服務器IP>:8080/generic-webhook-trigger/invoke)。
  • 輪詢SCM:設置定時輪詢(如H/5 * * * *表示每5分鐘檢查一次代碼變更)。

4. 配置構建步驟

  • Freestyle項目:在“Build”部分添加“Execute shell”步驟,編寫構建腳本(如Maven編譯、打包):
    mvn clean package  # Maven項目編譯打包
    
  • Pipeline項目:選擇“Pipeline script from SCM”,配置SCM為Git,填寫Jenkinsfile路徑(如Jenkinsfile),后續在代碼倉庫中維護Pipeline腳本。

5. 配置構建后操作

  • 部署到測試環境:添加“Execute shell”步驟,執行部署腳本(如復制WAR包到Tomcat并重啟):
    scp target/*.war tomcat@<測試服務器IP>:/opt/tomcat/webapps/
    ssh tomcat@<測試服務器IP> "systemctl restart tomcat"
    
  • 發送通知:通過郵件或釘釘插件發送構建結果通知。

五、自定義Pipeline腳本:實現持續交付

在代碼倉庫根目錄創建Jenkinsfile,以代碼形式定義部署流程(推薦)。示例如下:

pipeline {
    agent any  // 使用任意可用節點

    stages {
        stage('Pull Code') {
            steps {
                git branch: 'main', url: 'https://github.com/your-repo/project.git'
            }
        }

        stage('Build') {
            steps {
                sh 'mvn clean package'  // Maven編譯打包
            }
        }

        stage('Deploy to Test') {
            steps {
                sh 'scp target/*.war tomcat@<測試服務器IP>:/opt/tomcat/webapps/'
                ssh tomcat@<測試服務器IP> 'systemctl restart tomcat'
            }
        }

        stage('Deploy to Production') {
            when {
                expression { return currentBuild.result == 'SUCCESS' }  // 僅構建成功時部署
            }
            steps {
                input message: '確認部署到生產環境?', ok: 'Deploy'
                sh 'scp target/*.war tomcat@<生產服務器IP>:/opt/tomcat/webapps/'
                ssh tomcat@<生產服務器IP> 'systemctl restart tomcat'
            }
        }
    }

    post {
        always {
            echo '構建流程結束,發送通知...'
        }
        success {
            echo '構建成功!'
        }
        failure {
            echo '構建失敗,請檢查日志!'
        }
    }
}

六、高級自定義:優化部署流程

1. 使用Docker容器化部署

  • 編寫Dockerfile:在項目根目錄創建Dockerfile,定義應用鏡像。
    FROM tomcat:9.0
    COPY target/*.war /usr/local/tomcat/webapps/ROOT.war
    EXPOSE 8080
    CMD ["catalina.sh", "run"]
    
  • 修改Pipeline腳本:添加Docker構建與部署步驟。
    stage('Build Docker Image') {
        steps {
            script {
                docker.build("your-dockerhub-id/your-app:${env.BUILD_NUMBER}")
            }
        }
    }
    
    stage('Push Docker Image') {
        steps {
            script {
                docker.withRegistry('https://registry.hub.docker.com', 'dockerhub-credentials') {
                    docker.image("your-dockerhub-id/your-app:${env.BUILD_NUMBER}").push()
                }
            }
        }
    }
    
    stage('Deploy with Docker') {
        steps {
            ssh tomcat@<測試服務器IP> 'docker pull your-dockerhub-id/your-app:${env.BUILD_NUMBER} && docker stop your-app || true && docker rm your-app || true && docker run -d -p 8080:8080 --name your-app your-dockerhub-id/your-app:${env.BUILD_NUMBER}'
        }
    }
    

2. 配置多環境部署

通過Jenkins參數化構建(如“String Parameter”添加ENVIRONMENT參數,值為testproduction),在Pipeline腳本中根據參數選擇部署目標:

parameters {
    string(name: 'ENVIRONMENT', defaultValue: 'test', description: '部署環境(test/production)')
}

stage('Deploy') {
    steps {
        script {
            if (params.ENVIRONMENT == 'test') {
                // 部署到測試環境
            } else if (params.ENVIRONMENT == 'production') {
                // 部署到生產環境(需增加確認步驟)
            }
        }
    }
}

3. 集成測試與代碼質量檢查

在Pipeline中添加測試階段(如JUnit測試)和代碼質量檢查(如SonarQube掃描):

stage('Test') {
    steps {
        sh 'mvn test'  // 執行單元測試
    }
}

stage('Code Quality Check') {
    steps {
        withSonarQubeEnv('sonarqube-server') {  // 配置SonarQube服務器
            sh 'mvn sonar:sonar'
        }
    }
}

七、常見問題排查

  • 無法訪問Jenkins:檢查防火墻是否開放8080端口(sudo firewall-cmd --add-port=8080/tcp --permanent,sudo firewall-cmd --reload)。
  • Git拉取失敗:檢查Credentials是否正確,或Git倉庫URL是否可達。
  • 構建腳本權限問題:確保Jenkins用戶(如tomcatjenkins)有執行腳本的權限(chmod +x deploy.sh)。
  • Docker部署失敗:檢查Docker服務是否啟動,或鏡像名稱、端口映射是否正確。

通過以上步驟,可在CentOS上自定義Jenkins部署流程,實現從代碼提交到測試、生產的自動化持續交付。根據項目需求,可進一步擴展Pipeline腳本(如集成性能測試、通知機器人),或優化部署策略(如藍綠部署、滾動更新)。

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