Ubuntu 24.04 LTS 安装 jenkins

Ubuntu 22.04 LTS 安装 jenkins

  1. 安装 Docker(若未安装):
 sudo apt update && sudo apt install -y docker.io docker-compose-plugin
 sudo systemctl enable --now docker
 sudo usermod -aG docker $USER  # 非root用户添加docker权限(需重启生效)
 ##换源 并且配置Docker资源限制(避免占用过多内存)
 sudo mkdir -p /etc/docker
 sudo tee /etc/docker/daemon.json <<-'EOF'
 {
  "registry-mirrors" : ["https://docker.registry.cyou",
  "https://docker-cf.registry.cyou",
  "https://dockercf.jsdelivr.fyi",
  "https://docker.jsdelivr.fyi",
  "https://dockertest.jsdelivr.fyi",
  "https://mirror.aliyuncs.com",
  "https://dockerproxy.com",
  "https://mirror.baidubce.com",
  "https://docker.m.daocloud.io",
  "https://docker.nju.edu.cn",
  "https://docker.mirrors.sjtug.sjtu.edu.cn",
  "https://docker.mirrors.ustc.edu.cn",
  "https://mirror.iscas.ac.cn",
  "https://docker.rainbond.cc",
  "https://do.nark.eu.org",
  "https://dc.j8.work",
  "https://dockerproxy.com",
  "https://gst6rzl9.mirror.aliyuncs.com",
  "https://registry.docker-cn.com",
  "http://hub-mirror.c.163.com",
  "http://mirrors.ustc.edu.cn/",
  "https://mirrors.tuna.tsinghua.edu.cn/",
  "http://mirrors.sohu.com/" 
 ],
   "insecure-registries" : [
      "registry.docker-cn.com",
      "docker.mirrors.ustc.edu.cn"
   ],
  "debug": true,
  "experimental": false
  "default-shm-size": "256m",  # 共享内存限制
  "default-ulimits": {
    "memlock": { "hard": -1, "soft": -1 }
  }
}
EOF
sudo systemctl restart docker

部署 Jenkins(Docker 容器,资源限制)

1手动创建目录并设置正确权限

# 1. 宿主机创建挂载目录
mkdir -p ./jenkins_data

# 2. 赋予目录正确权限(uid=1000是Jenkins容器内默认用户ID)
sudo chown -R 1000:1000 ./jenkins_data

# 3. 启动容器并挂载该目录
docker run -d -p 8081:8080 -v ./jenkins_data:/var/jenkins_home jenkins/jenkins:lts-jdk11

2使用 Docker Volume 管理权限
创建docker-compose.yml文件,定义 Jenkins 服务并限制资源:
Docker Volume 会自动处理权限匹配,适合长期使用:

# 1. 创建Docker Volume(会自动分配存储路径和权限)
docker volume create jenkins_volume

# 2. 启动容器并挂载该Volume
docker run -d -p 8081:8080 -v jenkins_volume:/var/jenkins_home jenkins/jenkins:lts-jdk11
version: '3.8'
services:
  jenkins:
    image: jenkins/jenkins:lts-jdk11  # 选择轻量的LTS版本,基于JDK11
    container_name: jenkins
    restart: always
    ports:
      - "8081:8080"  # 映射到宿主机8081端口,避免与GitLab冲突
      - "50000:50000"
    volumes:
      - ./jenkins_data:/var/jenkins_home  # 持久化Jenkins数据
      - /var/run/docker.sock:/var/run/docker.sock  # 挂载Docker守护进程,实现容器内操作Docker
    deploy:
      resources:
        limits:
          cpus: '1'       # 限制1核CPU
          memory: '1500M' # 限制1.5GB内存

启动 Jenkins:

docker compose up -d

初始化 Jenkins

获取初始密码:

docker exec jenkins cat /var/jenkins_home/secrets/initialAdminPassword
#复制输出的密码,浏览器访问 http://宿主机IP:8081,输入密码进入初始化页面。

配置全局工具(JDK、Maven、Git)

Jenkins 需要集成 JDK、Maven 和 Git 来构建 Java 项目,通过 “全局工具配置” 完成:
进入 Jenkins → 管理 Jenkins → 全局工具配置:
。JDK:选择 “安装自动安装”,版本选11(与 Jenkins 镜像兼容)。
。Maven:选择 “安装自动安装”,版本选3.8.x(稳定版)。
。Git:若宿主机已安装 Git,可直接填写/usr/bin/git;否则选择 “安装自动安装”。

创建 Java 项目流水线(以 Spring Boot 为例)

步骤 1:编写 Jenkinsfile(项目根目录)

pipeline {
    agent any
    tools {
        jdk 'jdk11'       // 对应全局工具配置的JDK名称
        maven 'maven3.8'  // 对应全局工具配置的Maven名称
    }
    stages {
        stage('拉取代码') {
            steps {
                git url: 'http://GitLab宿主机IP/你的用户名/项目仓库.git', 
                    branch: 'main',
                    credentialsId: 'gitlab-credentials'  // 需提前在Jenkins中配置GitLab凭证
            }
        }
        stage('编译构建') {
            steps {
                sh 'mvn clean package -DskipTests'  // 跳过测试加快构建(生产环境建议保留测试)
            }
            post {
                success {
                    archiveArtifacts 'target/*.jar'  // 归档构建产物
                }
            }
        }
        stage('构建Docker镜像') {
            steps {
                sh '''
                    docker build -t your-java-app:${BUILD_NUMBER} .
                    docker tag your-java-app:${BUILD_NUMBER} your-java-app:latest
                '''
            }
        }
        stage('运行Docker容器') {
            steps {
                sh 'docker run -d -p 8082:8080 --name java-app your-java-app:latest'
            }
        }
    }
    post {
        always {
            cleanWs()  // 清理工作空间,释放资源
        }
    }
}

步骤 2:在项目根目录编写 Dockerfile

FROM openjdk:11-jre-slim
WORKDIR /app
COPY target/*.jar app.jar
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "app.jar"]

步骤 3:在 Jenkins 中创建流水线项目

  1. 进入 Jenkins → 新建项目 → 选择 “流水线” → 命名项目。
  2. 配置 “流水线” 部分:
    。选择 “从 SCM” → SCM 选 “Git” → 填写 GitLab 仓库地址。
    。凭证选择之前配置的gitlab-credentials(需提前在 “凭证管理” 中添加 GitLab 账号密码)。
    。脚本路径填写Jenkinsfile(与项目根目录一致)。
posted @ 2025-11-02 11:37  浮生醉清风_QQ  阅读(10)  评论(0)    收藏  举报