使用docker-compose部署jenkins,实现部署自动化

前置环境


  1. 更新系统软件包

    1
    2
    3
    sudo yum update
    sudo yum git
    sudo yum maven
  2. 卸载旧版本

    1
    2
    3
    4
    5
    6
    7
    8
    sudo dnf remove docker \
    docker-client \
    docker-client-latest \
    docker-common \
    docker-latest \
    docker-latest-logrotate \
    docker-logrotate \
    docker-engine
  3. 设置仓库

    1
    2
    sudo dnf -y install dnf-plugins-core
    sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
  4. 安装docker引擎

    1
    2
    sudo dnf install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

  5. 开机启动

    1
    sudo systemctl enable --now docker

或者 一键装命令

curl -sSL https://resource.fit2cloud.com/1panel/package/quick_start.sh -o quick_start.sh && sh quick_start.sh

部署jenkins

  1. 编排docker-compose.yml

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    services:
    jenkins:
    image: jenkins/jenkins:lts # 使用官方的 Jenkins LTS 镜像
    container_name: jenkins
    user: root # 如果需要以 root 用户运行
    ports:
    - "8080:8080" # Jenkins Web 界面端口
    - "50000:50000" # 用于 Jenkins Agent 的通信端口
    volumes:
    - ./jenkins_home:/var/jenkins_home # 持久化 Jenkins 数据
    - /var/run/docker.sock:/var/run/docker.sock # 允许 Jenkins 调用宿主机的 Docker
    - /usr/bin/docker:/usr/bin/docker # 这是为了我们可以在容器内使用docker命令
    - /usr/local/bin/docker-compose:/usr/local/bin/docker-compose # docker-compose 命令
    - /etc/localtime:/etc/localtime # 让容器和宿主机时间保持一致
    #可选项:可提前在宿主机安装maven与jdk
    - /usr/lib/jvm/java-17-openjdk-17.0.15.0.6-2.0.1.el9.aarch64:/usr/lib/jvm/java-17-openjdk
    - /usr/share/maven:/usr/share/maven
    - /usr/bin/git:/usr/bin/git # git
    restart: unless-stopped #除非手动停止,否则就一直重启
    environment:
    - TZ=Asia/Shanghai # 设置时区为上海(根据需要调整
  2. 安装jenKins

访问:ip+端口 进入安装页

  • 从日志中找到密码,解锁jenkins安装
  • 安装官方推荐插件
  • 安装JDK, Git, Maven, Publish over ssh, Gitee插件
  • 系统设置, 全局工具设置,设置jdk, gitee凭证, maven 等
    • 新版本Jenkins自带了JDK, 直接使用自带的JDK17
    • 新版本Jenkins自带了git, 配置路径即可
    • maven可用宿主机,或者自动安装
  1. 构建部署Java项目
  • 新建maven任务
  • 设置源码git地址,以及用户token或密码,选择分支
  • maven 构建命令 clean package -Dmaven.test.skip=true
  • 后置shell命令部署,进入项目目录,启动docker-compose命令重新部署
    1
    docker-compose up --build -d
  1. WeHhooks触发自动构建
  • 在系统管理的中配置Gitee令牌(令牌申请点击Gitee私人令牌)
  • 选择之前的jenkins_demo构建任务, 点击Triggers (推送分支)
  • 生成随机密码, 这里的随机密码后续要复制到Gitee中的WebHooks中
  • Gitee添加WebHooks地址和密码,等待触发构建
  1. 远程推送和自动部署
  • 安装Publish Over SSH插件

  • 系统管理 -> 系统配置 -> Publish over SSH, 添加SSH Servers

  • 构建配置中添加Post Steps添加步骤

  • ssh publisher

    • 上传代码源文件,包括Dockerfile和docker-compose.yml
    • 移除前缀的目录名,如target
    • 目标服务器存储路径,如 /data/images
    • 执行命令:docker-compose up --build -d 重新构建

总结

  • 安装前置docker环境
  • 安装配置jenkins
  • 构建git项目
  • 推送自动触发