my collection
    Gitee Support Center / detail

    搭建码云 CI 和 CLA 签署服务二(Jenkins 安装配置与部署)

    一、Jenkins 服务搭建

    建议使用 Docker 搭建,干净优雅,平台通杀,免去自己折腾一堆 java 环境(系统需提前安装 Docker 环境)。

    常规安装部署

    dood 安装部署(推荐)

    为了能够对每次构建隔离,保持系统环境一致,更好的方式是在新的容器中执行构建,这涉及到「在 docker 中使用 docker」的两种方式 —— dind 和 dood。

    官方镜像使用 dind 套娃的方式(基于 docker:dind 镜像),说到底还只是在同一个容器里面跑,不便于安装编译环境,也不利于针对不同项目制作独立镜像。而 dood 能够共享宿主机 Docker 资源,便于使用和管理,因此下文会详细介绍 dood 方式搭建 Jenkins 构建环境。

    其中实现 dood 的一种方法,就是先挂载 docker.sock 文件运行 jenkins:lts 镜像,把容器 Docker 和宿主机 Docker 程序关联(映射为同一个程序),然后在容器安装 Docker,这时两个 Docker 便能互相访问。

    下面这篇文章很有参考价值:

    Jenkins dood 搭建教程:The simple way to run Docker-in-Docker for CI - Releaseworks Academy

    在上面链接教程的基础上,加上数据持久化(创建、挂载数据卷)、root 权限等命令参数,运行 Docker 容器,完整步骤如下

    1. 创建数据卷:

    docker volume create jenkins-data

    1. 后台启动容器,基于 hub 官方 jenkins 镜像:

    docker run -d --restart always
    -p 8085:8080
    -v /var/run/docker.sock:/var/run/docker.sock
    --name jenkins
    --hostname jenkins
    --volume jenkins-data:/var/jenkins_home
    jenkins/jenkins:lts

    说明:若宿主机 8080 端口被占用,可映射到其他空闲端口号,如上述的 8085。/var/jenkins_home 目录保存 Jenkins 的所有配置信息,需要使用 Docker volume 做持久化。

    1. 进入容器:

    docker exec -u root -it jenkins bash

    1. 更换软件源:

    sed -i 's/deb.debian.org/mirrors.aliyun.com/g' /etc/apt/sources.list

    1. 容器内安装 Docker:

    curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

    1. 验证 dood 环境安装结果

    通过 docker stats 能看到容器自身信息,说明 dood 环境准备就绪,服务器访问 http://jenkins.rt-thread.org/,正常显示 Jenkins 登录页面,服务部署成功。

    说明:文中的 jenkins.rt-thread.org 是已经定向到主机 ip 8085 端口的域名,调试请访问对应的主机 ip 和端口号(如 xxx.xxx.xxx.xxx:8085)。

    Does this help you?

    Search