• DevOps持续集成与交付


    概述

    Jenkins是一个支持容器化部署的、使用Java运行环境的开源软件,使用Jenkins平台可以定制化不同的流程与任务、以自动化的机制支持DevOps领域中的CI与CD,在软件开发与运维的流程中自动化地执行软件工程项目的编译、构建、打包、测试、发布以及部署,本文主要是描述使用Jenkins支持DevOps的实施过程。

    环境描述

    A服务器的IP地址:192.168.0.100

    该服务器部署基于Java应用业务、Docker容器引擎

    B服务器的IP地址:192.168.0.102

    该服务器部署Nexus仓库服务、GitLab仓库服务、Docker容器引擎

    C服务器的IP地址:192.168.0.106

    该服务器部署Jenkins平台服务、Docker容器引擎

    准备服务器运行环境

    图片

    如上所示,在A服务器上安装Java应用运行环境、安装Docker容器运行环境

    图片

    如上所示,在B服务器上运行GitLab仓库服务、安装Nexus仓库服务

    图片

    如上所示,在C服务器上运行maven、Jenkins

    本地代码工程

    图片

    图片

    如上所示,将本地开发环境的项目代码工程提交到B服务器的GitLab的代码仓库

    图片

    图片

    如上所示,本地开发环境使用maven编译打包构建、安装到本地仓库、部署到服务器B的nexus仓库成功

    Jenkins运行环境配置

    图片

    如上所示,在C服务器上生成GitLab的客户端远程访问权限的ssh-key

    图片

    如上所示,在GitLab用户设置页面配置git的ssh-key成功

    图片

    如上所示,在C服务器上配置B服务器的GitLab的访问地址与IP映射

    图片

    如上所示,在C服务器上拉取B服务器GitLab上的test2023项目代码工程成功

    Jenkins构建项目配置

    图片

    如上所示,在Jenkins页面上安装Blue Ocean插件成功

    图片

    如上所示,在Jenkins页面上新建一个test2023的流水线项目

    图片

    如上所示,在Jenkins页面上,配置项目test2023的本地GitLab仓库对应的代码工程目录

    图片

    如上所示,在Jenkins页面上,配置项目test2023的Jenkinsfile,该文件用于Jenkins执行流水线任务的执行步骤

    /usr/lib/systemd/system/jenkins.service

    hudson.plugins.git.GitSCM.ALLOW_LOCAL_CHECKOUT=true

    图片

    如上所示,在C服务器上文件设置Jenkins环境变量、重新启动Jenkins服务

    /etc/maven/settings.xml

    图片

    如上所示,在C服务器上设置maven仓库的配置

    图片

    如上所示,在Jenkins页面的Blue Ocean上构建项目test2023成功

    Jenkins部署项目配置

    ssh-keygen

    ssh-copy-id -i /root/.ssh/id_rsa.pub  root@192.168.0.100

    ssh 192.168.0.100

     

    图片

    如上所示,在C服务器上生成ssh免密登录的公钥私钥,将公钥发送给A服务器,C服务器可以免密登录A服务器执行部署Java应用服务

    图片

    如上所示,在项目工程代码上编码部署发布的脚本deploy.sh

    图片

    如上所示,在Jenkinsfile上增加部署发布的步骤deploy.sh、设置Jenkins使用root用户启动

    图片

    如上所示,在Jenkins页面Blue Ocean显示项目构建成功、发布项目成功

    图片

    如上所示,在A服务器上显示Java应用test2023部署运行成功

  • 相关阅读:
    QT中Model-View-Delegate委托代理机制用法介绍
    餐饮商城外卖小程序的作用是什么
    Python——协程(Coroutine),异步IO
    技术分享 | Appium 用例录制
    Jenkins - Copy Artifact 插件 Build 之间数据共享传递
    04 src和href的区别?link标签和script标签的区别?如何提高权重?DOM和BOM区别
    Android AMS——AMS初始化(二)
    全量知识系统 程序详细设计 “智能”分类及标注的主题词架构(Q&A百度文库)
    Linux系统中安装git/gitlab仓库方法详解
    Javaweb项目创建
  • 原文地址:https://blog.csdn.net/uesowys/article/details/133376232