首页主机资讯Linux Jenkins怎样实现持续集成

Linux Jenkins怎样实现持续集成

时间2025-11-18 22:45:03发布访客分类主机资讯浏览971
导读:Linux 上用 Jenkins 实现持续集成的落地步骤 一 环境准备与安装 安装 Java:建议 Java 11 或 17(LTS)。例如在 Ubuntu/Debian 执行:sudo apt update && sud...

Linux 上用 Jenkins 实现持续集成的落地步骤

一 环境准备与安装

  • 安装 Java:建议 Java 11 或 17(LTS)。例如在 Ubuntu/Debian 执行:sudo apt update & & sudo apt install openjdk-11-jdk;在 CentOS/RHEL 执行:sudo yum install java-11-openjdk-devel。完成后用 java -version 验证。
  • 安装 Jenkins:
    • Ubuntu/Debian(使用签名密钥与 APT 源):
      curl -fsSL https://pkg.jenkins.io/debian-stable/jenkins.io-2023.key | sudo tee /usr/share/keyrings/jenkins-keyring.asc > /dev/null
      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 update & & sudo apt install jenkins
    • CentOS/RHEL(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-2023.key
      sudo yum install jenkins
  • 启动与开机自启:sudo systemctl start jenkins & & sudo systemctl enable jenkins;查看状态:sudo systemctl status jenkins。
  • 防火墙放行:
    • Ubuntu/Debian(ufw):sudo ufw allow 8080
    • CentOS/RHEL(firewalld):sudo firewall-cmd --permanent --add-port=8080/tcp & & sudo firewall-cmd --reload
  • 首次访问与解锁:浏览器打开 http://< 服务器IP> :8080,初始管理员密码在 /var/lib/jenkins/secrets/initialAdminPassword
  • 可选 Docker 方式:docker pull jenkins/jenkins:lts;数据持久化建议挂载 /var/jenkins_home

二 初始化与安全配置

  • 安装插件:首次进入选择 Install suggested plugins;后续可在 Manage Jenkins > Manage Plugins 安装所需插件,如 GitMaven IntegrationPipelineSSH Pipeline Steps 等。
  • 更换插件镜像源(国内加速):进入 Manage Jenkins > Manage Plugins > Advanced,将 Update Site URL 改为 https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
  • 系统配置:在 Global Tool Configuration 配置 JDK、Git、Maven 路径;在 Configure System 配置 SSH 服务器(用于发布与远程执行)。
  • 安全与权限:启用 CSRF 保护,使用 Role-Based Authorization Strategy 进行细粒度授权;建议配置 Nginx 反向代理 + HTTPS(证书可用 Let’s Encrypt)。

三 创建任务与触发器

  • Freestyle 任务(通用):
    • 源码管理:选择 Git,填写仓库 URL 与分支(如 main),配置凭证(SSH 或 HTTPS)。
    • 构建触发器:
      • 轮询 SCM:如 **H/5 * * * ***(每 5 分钟检查一次变更)
      • Webhook:在代码托管平台(如 GitLab/GitHub)配置 Webhook URL:http:///git/notifyCommit?url=< REPO_URL> ,Jenkins 安装 Git plugin 后可用;需要 CSRF 保护时配合 Crumb Issuer
    • 构建步骤:
      • Java/Maven:执行 mvn clean packagemvn clean install
      • Node.js:执行 npm install & & npm run build
      • C/C++:执行 make & & make test
  • Pipeline 任务(推荐,代码即流程):在项目根目录创建 Jenkinsfile,将构建、测试、部署流程纳入版本控制,便于复用与审计。

四 示例 Jenkinsfile 模板

  • Java + Maven
pipeline {

  agent any
  tools {

    maven 'Maven-3'   // 需在 Global Tool Configuration 中定义
    jdk   'JDK-11'   // 需在 Global Tool Configuration 中定义
  }

  stages {

    stage('Checkout') {

      steps {
 git url: 'https://github.com/your-org/your-app.git', branch: 'main' }

    }

    stage('Build') {

      steps {
 sh 'mvn clean package -DskipTests' }

    }

    stage('Test') {

      steps {
 sh 'mvn test' }

    }

    stage('Deploy') {

      when {
 branch 'main' }

      steps {

        sh 'mvn deploy'   // 结合 settings.xml 与仓库凭证
        // 或使用 sshPublisher 将产物发布到目标主机
      }

    }

  }

  post {

    always {
 cleanWs() }

    success {
     echo 'Build &
 Test SUCCESS' }

    failure {
 echo 'Build FAILED' }

  }

}

  • Node.js(前端)
pipeline {

  agent any
  tools {
 nodejs 'Node-16' }
  // 需在 Global Tool Configuration 中定义
  stages {

    stage('Checkout') {
 steps {
 git url: 'https://github.com/your-org/your-web.git', branch: 'main' }
 }

    stage('Install')  {
 steps {
 sh 'npm ci' }
 }

    stage('Build')    {
 steps {
 sh 'npm run build' }
 }

    stage('Deploy')   {

      when {
 branch 'main' }

      steps {
    
        // 示例:使用 sshPublisher 发布到 Nginx 目录
        sshPublisher(publishers: [sshPublisherDesc(
          configName: 'prod-ssh',
          transfers: [sshTransfer(execCommand: 'cd /var/www &
    &
 git pull', remoteDirectory: '/var/www')]
        )])
      }

    }

  }

}

  • C/C++
pipeline {

  agent any
  stages {

    stage('Checkout') {
 steps {
 git url: 'https://github.com/your-org/your-cpp.git', branch: 'main' }
 }

    stage('Build')    {
 steps {
 sh 'make -j$(nproc)' }
 }

    stage('Test')     {
 steps {
 sh 'make test || true' }
 }
 // 视测试框架调整
    stage('Archive')  {
 steps {
 archiveArtifacts artifacts: '**/target/*.zip,**/build/*.tar.gz', fingerprint: true }
 }

  }

}
    

说明:上述示例使用 Jenkins Pipeline拉取代码、构建、测试、部署 串联为可重复执行的流水线;SSH 发布可借助 sshPublisher 插件完成远程部署。

五 运维与优化要点

  • 日志与排错:查看服务日志 sudo journalctl -u jenkins.service -f;构建日志在 Jenkins 控制台/var/log/jenkins/jenkins.log
  • 端口与路径:默认 8080;修改 /etc/default/jenkins(Debian/Ubuntu)或 /etc/sysconfig/jenkins(CentOS/RHEL)中的 JENKINS_PORT;Jenkins 主目录 /var/lib/jenkins(备份与迁移重点)。
  • 性能与扩展:使用 Jenkins Agent 做分布式构建;构建环境使用 Docker 镜像 固化依赖;按项目拆分 Job/Pipeline视图,减少资源争用。
  • 安全加固:限制 代理到目标主机的 SSH 密钥 权限(仅部署所需目录与命令);开启 审计日志;定期升级 Jenkins 与插件;为外网访问启用 反向代理 + HTTPS

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Linux Jenkins怎样实现持续集成
本文地址: https://pptw.com/jishu/750622.html
Linux虚拟机如何实现数据迁移 Linux虚拟机内存分配原则是什么

游客 回复需填写必要信息