• [基础服务] Jenkins的安装和部署


    简介

    Jenkins的部署其实很简单,因为Jenkins本身就是一个war包 使用Java -jar jenkins.war就可以很方便启动一个jenkins服务,但是这种部署方式很容易受到运行环境的干扰,jdk版本,服务器环境等,如果后续服务需要迁移、扩容会比较麻烦。

    其实这种像jenkins这种无状态应用非常适合使用docker来部署,后续扩展迁移可以完全保证环境的一致性。

    下面我们使用docker快速部署一个jenkins服务

    🔗 Docker-Hub仓库

    方法 / 步骤

    一: 拉取镜像

    # 使用jdk8 的lts版本
    docker pull jenkins/jenkins:2.346.3-lts-jdk8
    # 创建挂载文件夹
    mkdir -p /docker/jenkins18080
    # 创建挂载目录的同时要给该目录配置权限 777,如果权限不足的话,
    # 到时进行目录挂载的时候会失败导致无法启动 Jenkins 容器。
    chmod 777 /docker/jenkins18080
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    二: 安装

    docker run -d \
    -p 18080:8080 \
    -p 50000:50000 \
    --name=jenkins18080 \
    -v /docker/jenkins18080:/var/jenkins_home \
    -v /docker/jenkins18080/localtime:/etc/localtime \
    --restart=always \
    jenkins/jenkins
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 参数解析:
      -d:后台运行容器;
      -p 8888:8080:将容器的 8080 端口映射到服务器的 8888 端口;
      -p 50000:50000:将容器的 50000 端口映射到服务器的 50000 端口;
      -v /usr/local/jenkins:/var/jenkins_home:将容器中 Jenkins 的工作目录挂载到服务器的 /usr/local/jenkins;
      -v /etc/localtime:/etc/localtime:让容器使用和服务器同样的时间设置;
      –restart=always:设置容器的重启策略为 Docker 重启时自动重启;
      –name=jenkins:给容器起别名;

    2.1 查看是否在运行:

    docker ps -l
    ------------
    CONTAINER ID   IMAGE             COMMAND                  CREATED       STATUS       PORTS                                              NAMES
    9bbc86aa0358   jenkins/jenkins   "/sbin/tini -- /usr/…"   4 hours ago   Up 4 hours   0.0.0.0:8888->8080/tcp, 0.0.0.0:50000->50000/tcp   jenkins
    
    • 1
    • 2
    • 3
    • 4

    查看启动日志:

    docker logs jenkins18080
    
    -------------------
    Running from: /usr/share/jenkins/jenkins.war
    webroot: EnvVars.masterEnvVars.get("JENKINS_HOME")
    2022-03-16 03:49:09.190+0000 [id=1] [INFO] org.eclipse.jetty.util.log.Log
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    如果没有启动成功的话,可以排查一下挂载的目录是否正确,比如是否配了目录权限等。

    三: 访问和初始化 Jenkins

    在访问 Jenkins 页面前,我们需要对 Jenkins 的插件配置内容修改成内容的镜像加速地址 🔗 之配置国内镜像加速
    配置好后,访问 Jenkins 页面
    在这里插入图片描述
    管理员的初始密码在 Jenkins 的工作目录下:/var/jenkins_home/secrets/initialAdminPassword,我们可以进容器内部去查看,也可以在我们挂载的目录下查看:

    cat /usr/local/jenkins/secrets/initialAdminPassword
    
    • 1

    在下一个插件安装页面上,我们选择安装推荐的插件即可,下面是推荐的插件安装页面:

    在这里插入图片描述
    安装完成后,会进入管理员创建页面,可以选择使用admin账户继续,也可以创建一个新的管理员用户(建议创建新的管理员用户,方便管理账号密码):

    在这里插入图片描述
    完成之后就是欢迎界面了:
    在这里插入图片描述

    四: CI / CD 流程整合

    在这里插入图片描述
    第一次访问jenkins站点时会让你输入对应的密码进行配置,直接根据提示获取对应文件中的密码

    4.1 新建项目

    在这里插入图片描述
    在这里插入图片描述

    4.2 源码管理

    在这里插入图片描述

    4.3 触发器配置

    在这里插入图片描述

    • 生成授权码
      在这里插入图片描述

    4.4: Gitlab 配置

    在这里插入图片描述
    在这里插入图片描述

    4.5: Docker构建

    在项目根目录编写Dockerfile 文件用于配合docker build and publish 进行构建docker 镜像 内容如下

    FROM java:8 #环境依赖
    MAINTAINER hello <hello.dp@qq.com> #作者信息
    VOLUME /tmp
    ADD target/dev-ops-0.0.1-SNAPSHOT.jar  /dev-ops-0.0.1-SNAPSHOT.jar  #增加文件
    ENTRYPOINT ["java","-Xmx200m","-Xms200m","-jar","/dev-ops-0.0.1-SNAPSHOT.jar"] #运行命令
    EXPOSE 8081 #暴漏端口
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 镜像构造与发布 这里指定生成镜像的name 与tag

    在这里插入图片描述
    -镜像构造与发布可选配置

    在这里插入图片描述

    • 运行docker-compose.yml 文件运行镜像到容器
    version: '3' 
    services:
      hello-ci-cd:
        restart: always
        image: hello-maven-docke:v1 #指定镜像id 与tag
        container_name: hello-ci-cd #指定容器名称
        ports:
        - '8081:8081' #端口映射
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 指定dockers-compose.yml 文件
      在这里插入图片描述
      至此整个流程完毕,可本地修改代码后提交到gitlab。gitlab钩子触发jenkin,jenkins 再从gitlab中拉取更新的代码,进行编译、构建、发布、运行

    参考资料 & 致谢

    [1] CI CD流程整合

  • 相关阅读:
    由浅入深详解四种分布式锁
    【网络安全 --- kali2023安装】超详细的kali2023安装教程(提供镜像资源)
    Docker基础与常用命令
    夯实网络安全基石,筑牢网络安全防线
    Vue + Element-UI —— 项目实战(六)
    概率神经网络的主要思想,神经网络随机数预测
    百度编辑器 Ueditor 视频上传时 目录创建失败 解决办法
    运维:Centos7安装解压版mysql5.7
    【Leetcode】top 100 矩阵
    Uniapp 应用消息通知插件 Ba-Notify
  • 原文地址:https://blog.csdn.net/YangCheney/article/details/126470527