温馨提示×

ubuntu jenkins怎么自动化

小樊
47
2026-09-22 12:16:39
栏目: 智能运维

在 Ubuntu 上实现 Jenkins 自动化,通常包含几个层面:
安装自动化、任务构建自动化、部署自动化、运维自动化。下面我按「从 0 到自动化」给你一个清晰路线。


一、Ubuntu 上安装 Jenkins(可脚本化)

1. 一键安装脚本(推荐)

#!/bin/bash
sudo apt update
sudo apt install -y openjdk-17-jdk

curl -fsSL https://pkg.jenkins.io/debian/jenkins.io.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 binary/ | sudo tee \
  /etc/apt/sources.list.d/jenkins.list > /dev/null

sudo apt update
sudo apt install -y jenkins
sudo systemctl enable --now jenkins

Jenkins 默认端口:8080


二、Jenkins 基础自动化(CI)

2. 创建自动化构建任务(Freestyle / Pipeline)

示例:自动拉代码 + 构建

源码管理

  • Git
  • Repository URL: https://github.com/your/repo.git

构建触发器

  • ✅ Poll SCM
H/5 * * * *

(每 5 分钟检查一次)

构建步骤(Shell)

npm install
npm run build

三、使用 Jenkinsfile 实现“真正自动化”(推荐)

3. 项目根目录加 Jenkinsfile

pipeline {
    agent any
    stages {
        stage('Clone') {
            steps {
                git 'https://github.com/your/repo.git'
            }
        }
        stage('Build') {
            steps {
                sh 'npm install'
                sh 'npm run build'
            }
        }
        stage('Test') {
            steps {
                sh 'npm test'
            }
        }
    }
}

Jenkins 会自动:

  • 拉代码
  • 构建
  • 测试

四、自动化部署(CD)

4. 自动部署到 Ubuntu 服务器

方法 1:SSH 部署(最简单)

Jenkins → 系统设置 → Publish over SSH

构建后执行:

scp -r dist/* user@server:/var/www/html
ssh user@server "systemctl restart nginx"

方法 2:Pipeline 部署

stage('Deploy') {
    steps {
        sh 'scp -r dist/* user@server:/var/www/html'
        sh 'ssh user@server "systemctl restart nginx"'
    }
}

五、定时 / 事件自动化

5. 常见触发方式

类型 说明
Poll SCM 定时检查 Git
Webhook Git Push 自动触发(推荐)
Cron 定时任务
upstream 其他 Job 完成后触发

GitHub Webhook 示例

http://jenkins-ip:8080/github-webhook/

六、Jenkins 自身运维自动化

6. 自动备份

tar czf jenkins-backup.tar.gz /var/lib/jenkins

7. 自动重启

sudo systemctl restart jenkins

七、进阶自动化(可选)

✅ Jenkins + Docker
✅ Jenkins + Ansible
✅ Jenkins + Kubernetes
✅ 多节点 Slave 自动扩容


你可以告诉我:

  1. 你是 前端 / 后端 / Java / Python?
  2. 想自动化到哪一步(构建 / 测试 / 部署)?
  3. 是否在 Docker / 云服务器 上?

我可以直接给你 可用的 Jenkinsfile + 脚本。

0 踩