• 从零开始带你实现一套自己的CI/CD(一)Jenkins


    一、简介

    DevOps,字面意思是Development &Operations的缩写,也就是开发&运维。DevOps的方式可以让公司能够更快地应对更新和市场发展变化,开发可以快速交付,部署也更加稳定。

    整体的软件开发流程包括:
    PLAN–》CODE --》BUILD --》 TEST --》DEPLOY --》OPERATE --》MONITOR --》INTEGRATE

    在这里插入图片描述

    技术栈准备
    Linux
    JDK
    Git
    Github/Gitee/GitLab
    Maven
    Jenkins
    Docker
    Docker-compose

    二、环境准备

    2.1 安装Docker和Docker-compose

    安装dockerdocker-compose环境:略

    docker-compose 下载地址:https://github.com/docker/compose

    2.2 远程仓库Github/Gitee/GitLab

    可以使用Github或者Gitee作为远程Git代码仓库,可以自己部署GitLab

    新建远程Git仓库:
    在这里插入图片描述

    2.3 部署Jenkins

    (需要部署好docker和docker-compose环境)

    准备docker-compose.yml 文件:

    端口8080,并且将容器内/var/jenkins_home/目录挂载到宿主机当前目录的data目录。

    version: "3.1"
    services:
      jenkins:
         image: jenkins/jenkins
         container_name: jenkins
         ports:
            - 8080:8080
            - 50000:50000
         volumes:
            - ./data/:/var/jenkins_home/
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    使用docker-compose up -d 命令执行docker-compose.yml 文件。
    在这里插入图片描述

    使用docker-compose logs -f命令查看docker-compose日志:

    在这里插入图片描述

    或者使用/var/jenkins_home/secrets/initialAdminPassword命令查看密码:
    在这里插入图片描述
    note:不是在宿主机目录,而是容器内目录。

    启动成功后,在浏览器访问:服务器IP+8080:
    在这里插入图片描述

    选择 选择插件来安装
    在这里插入图片描述

    搜索 Git 勾选Git Parameter:
    在这里插入图片描述

    搜索 publish 勾选Publish Over SSH:
    在这里插入图片描述
    点击安装
    在这里插入图片描述

    创建一个用户:
    在这里插入图片描述
    配置Jenkins URL,完成部署:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    三、配置Jenkins

    由于Jenkins需要从Git仓库拉取代码、需要本地构建、甚至需要直接发布自定义镜像到Docker仓库,所以Jenkins需要配置大量内容。

    3.1 Jenkins配置源码拉取地址

    创建Jenkins任务:
    在这里插入图片描述

    选择源码管理 --》选择Git ,输入Git远程仓库的地址,点击保存

    在这里插入图片描述

    点击立即构建

    在这里插入图片描述
    可以看到源码已经拉取带Jenkins本地,可以根据第三行日志信息,查看Jenkins本地拉取到的源码。

    在这里插入图片描述

    查看Jenkins容器中/var/jenkins_home/workspace/test的源码:
    在这里插入图片描述

    3.2 Jenkins配置Maven构建代码

    代码拉取到Jenkins本地后,需要在Jenkins中对代码进行构建,这里需要Maven的环境,而Maven需要Java的环境,接下来需要在Jenkins中安装JDK和 Maven,并且配置到Jenkins服务

    note: 在宿主机目录,在使用docker-compose部署Jenkins的时候已经将jenkins容器内的/var/jenkins_home/目录映射到了宿主机./data/目录:

    在这里插入图片描述
    所以只需要把jdk和maven的压缩包上传到此目录即可。

    3.2.1 准备jdk

    使用tar -zxvf jdk-8u351-linux-aarch64.tar.gz解压压缩包即可。(无需配置环境变量)
    在这里插入图片描述
    Note:
    oracle jdk 官网地址:https://www.oracle.com/java/technologies/downloads/#java8-linux
    Oracle下载jdk是需要登录的,这个Oracle账号亲测可用:

    账号:bnptrhinldfoguijh@mytrashmailer.com
    密码:#&qRfvE7rg37GhjEfDJy

    3.2.2 配置Maven

    使用tar -zxvf apache-maven-3.8.6-bin.tar.gz 命令解压Maven压缩包,并配置Maven的settings.xml

     
    <mirror>
    	<id>alimavenid> 
    	<name>aliyun mavenname> 
    	<url>http://maven.aliyun.com/nexus/content/groups/public/url> 
    	<mirrorOf>centralmirrorOf> 
    mirror> 
     
    <profile> 
    	<id>jdk-1.8id> 
    	<activation> 
    		<activeByDefault>trueactiveByDefault> 
    		<jdk>1.8jdk>
    	activation> 
    	<properties> 
    		<maven.compiler.source>1.8maven.compiler.source>
    		<maven.compiler.target>1.8maven.compiler.target> 
    		<maven.compiler.compilerVersion>1.8maven.compiler.compilerVersion> 
    	properties> 
    profile>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    3.2.3 Jenkins配置JDK&Maven并保存

    上面两步已经准备了jdk和maven环境,现在需要配置到Jenkins中。

    在这里插入图片描述

    JAVA_HOME/var/jenkins_home/jdk1.8.0_351
    MAVEN_HOME/var/jenkins_home/apache-maven-3.8.6
    在这里插入图片描述
    在这里插入图片描述

    3.3 配置Jenkins任务构建代码

    test项目中,配置构建环境:

    在这里插入图片描述
    选择调用底层Maven目标,目标为package,点击保存

    在这里插入图片描述
    点击立即构建

    在这里插入图片描述
    查看控制台日志
    在这里插入图片描述

    3.4 配置Publish发布&远程操作

    jar包构建好之后,就可以根据情况发布到测试或生产环境,这里需要用到之前下载好的插件Publish Over SSH
    配置远程服务器信息:
    在这里插入图片描述

    3.5 配置任务的构建后操作

    配置test任务的构建后操作,发布jar包到目标服务:
    选择Send build artifacts over SSH
    在这里插入图片描述

    Source files 填写 target/*.jar

    在这里插入图片描述

    3.6 立即构建任务

    点击立即构建,查看控制台日志,并去目标服务器查看:
    在这里插入图片描述

    在这里插入图片描述
    在服务器指定目录查看构建的jar包:

    在这里插入图片描述

    到此为止,我们实现了本地代码上传到远程仓库,通过Jenkins拉去代码,使用Maven构建打包,并将jar包发送到服务器指定目录。

    四、CI/CD入门操作

    1. 基于Jenkins拉取远程Git仓库的代码进行构建发布到测试环境实现持续集成。

    2. 基于Jenkins拉取Git仓库指定发行版本的代码进行构建发布到生产环境实现CD实现持续部署。

    为了让程序代码可以自动推送到测试环境基于Docker服务运行,需要添加Docker配置和脚本文件让程序可以在集成到主干的同时运行起来。

    4.1 添加Dockerfile文件

    FROM adoptopenjdk/openjdk8
    COPY app.jar /usr/local
    WORKDIR /usr/local
    CMD java -jar app.jar
    
    • 1
    • 2
    • 3
    • 4

    4.2 添加docker-compose.yml文件

    version: '3.1'
    services: 
      app:
        build: ./
        image: app:v1.0.0
        container_name: app
        ports:
          - 8888:8080
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    在这里插入图片描述

    4.3 追加Jenkins构建后操作脚本命令

    在Jenkins test项目的构建后操作的Source files 增加target/*.jar,docker/*

    Exec command 添加脚本命令:

    cd /data/jenkins_project/docker
    mv ../target/*.jar ./app.jar
    docker-compose down
    docker-compose up -d --build
    docker image prune -f
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在这里插入图片描述

    4.4发布到Git仓库后由Jenkins立即构建并托送到目标服务器

    点击 立即构建
    在这里插入图片描述

    4.5 测试部署到目标服务器程序

    进入目标服务器,使用docker ps命令,查看容器是否启动:
    在这里插入图片描述
    浏览器访问:
    在这里插入图片描述
    到此步骤,我们完成了:
    本地IDE --》远程Git仓库 --》Jenkins拉取代码 --》Jenkins使用Maven构建打包 --》发布到服务器 --》执行脚本命令启动Docker容器。

    下一篇文章我们继续学习DevOpsCI/CD流程。

  • 相关阅读:
    FAST-LIO(二):程序运行&代码注释
    信息学奥赛一本通:1165:Hermite多项式
    删除Windows网络连接的网络编号,网络号,有线网卡的网络1,网络2....,快速批量删除每次增加的网络序号
    独立站全网营销
    Django网站开发技术的应用(理论篇)
    Linux用户与用户组管理
    【webrtc】初始mia
    ESP32S3系列--代码执行速度优化(从PSRAM执行代码)
    使用图片制作3D背景
    Vant组件库入门知识
  • 原文地址:https://blog.csdn.net/DreamsArchitects/article/details/128122158