建木持续集成平台v2.2.2发布

Posted 开源建木+

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了建木持续集成平台v2.2.2发布相关的知识,希望对你有一定的参考价值。

哈喽,友友们,美好的周末又要来啦~是不是激动的心,颤抖的手,活没干完也准备走?

我们的开发小哥哥们快马加鞭,终于在下班前完成了本周的更新~一起来看看本周又修复了哪些问题吧~另外,超级感谢社区各位提issue的大大~

fixed:

  • 日志太大导致页面无法查看


  • 建木CI流程运行一段时间后,容器的挂在目录堆积导致磁盘空间不足

  • 分组管理出现横向滚动条


  • 复制任务参数报错


  • 项目详情中查看流程日志时,服务端没有对应日志文件时,报500错误

  • 项目详情中,打开流程日志抽屉后返回时,页面报错


  • workflow中任务状态码正常,节点结果失败

  • 建木CI无法正常使用本地节点

    建木CI使用本地节点时,没有添加本地节点,编辑有关此本地节点的流程定义时,此流程定义也能保存成功




    启动此流程,跑不动




  • 任务参数中存在所有属性为null的参数


  • 节点过多页面图形化展示问题
    描述:jianmu使用版本v2.1.0-beta.1;个项目的DSL流程中节点过多,前端图形化展示是否可以更好的处理

    修复后

    流程:

    管道:

  • 项目dsl缩进不正确但是能够保存成功




  • “建木”是上古先民崇拜的一种圣树,传说建木是沟通天地人神的桥梁。伏羲、黄帝等众帝都是通过这一神圣的梯子上下往来于人间天庭。《淮南子·墬形训》亦曰:“建木在都广,众帝所自上下。日中无景,呼而无响,盖天地之中也。”


    为此项目命名为“建木”,希望本项目也可以成为不同业务场景下系统间相互沟通的桥梁。建木自动化平台以触发器、流程编排、任务分发等功能为平台核心,可以应用在各类使用场景下,包括但不限于,CI/CD、DevOps、自动化运维、多业务系统集成等场景。

    官方交流群


    项⽬官⽹:https://jianmu.dev

    项⽬托管:https://gitee.com/jianmu-dev

    项⽬文档:https://docs.jianmu.dev

    在线体验:https://ci.jianmu.dev

    Jenkins——Jenkins构建企业CI/CD持续集成持续发布平台

    实现持续集成/持续发布的产品:开发(git)–> git主库 --> jenkins(git+jdk+tomcat+maven打包+测试)–>发布到tomcat服务器
    CI:(continues intergration) 持续集成,代码合并,构建,测试合并,不断执行的过程,并对结果反馈
    CD:(continues Deloyments) 持续发布 ,将代码部署到测试环境,预生产环境
    CD:(continues Delivery) 持续部署,将最终的产品发布到生产环境,供用户使用

    一、发布形式

    平滑发布

    什么叫平滑:在发布的过程中不影响用户的使用,系统不会因发布而暂停对外服务,不会造成用户短暂性无法访问;

    灰度发布

    什么叫灰度:发布后让部分用户使用新版本,其它用户使用旧版本,逐步扩大影响范围,最终达到全部更新的发布方式 ;

    • 灰度发布与平滑发布其实是关联的。当服务器的数量只有一台的时候,不存在灰度发布,一旦发布了就是所有用户都更新了;
    • 所以这个时候只有平滑发布。当服务器数量大于一台的时候,只要每台服务器都能达到平滑发布的方式,
    • 然后设定好需要发布的服务器占比数量,就可以实现灰度发布了。

    AB发布

    AB测试是为Web或App界面或流程制作两个(A/B)或多个(A/B/n)版本,在同一时间维度,分别让组成成分相同(相似)的访客群组随机的访问这些版本,收集各群组的用户体验数据和业务数据,最后分析评估出最好版本正式采用;

    二、Jenkins概述

    • Jenkins是一个开源的、提供友好操作界面的持续集成(CI)工具,起源于Husdson(Husdson是商用的),主要用于持续、自动的构建/测试软件项目、监控一些定时执行的任务。Jenkins用java语言编写,可在Tomcat等流行的servlet容器中运行,也可独立运行
    • Jenkins通常与版本管理工具(SCM)、构建工具结合使用;常用的版本控制工具有SVN、GIT。Jenkins构建工具有Maven、Ant、Gradle

    三、Jenkins 目标

    • 监控软件的开发流程
    • 快速显示问题
    • 提高开发效率
    • 过程控制

    四、Jenkins特性

    易于安装:不需要安装,不需要数据库,只需要通过java-jar jenkins.war或部署到一个servlet容器中
    易于配置:所有的配置都可能通过jenkins提供的web界面完成,当然如果你喜欢,也可以通过手动修改xml文件进行配置
    测试报告:生成jUnit或TestNG的测试报告,集成RSS/E-mail通过RSS发布构建结果或当构建完成时通过e-mail通知
    文件识别:jenkins能跟踪每次构建生成哪些jar包以及使用那个版本的jar包
    分布式构建: 支持jenkins能够让多台计算机一起构建/测试
    插件支持:jenkins可以通过第三方插件进行扩展,也可以根据团队需要开发插件
    任务(job)和构建(build):任务:(job)是jenkins的一个执行计划,是一系列操作的集合

    工作流程图
    在这里插入图片描述

    五、Jenkins部署配置详解

    环境准备

    总共使用三台服务器
    使用Github官方服务器
    192.168.100.10部署Jenkins (4G内存)
    192.168.100.20部署Tomcat服务器
    yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm  #均安装epel扩展源
    

    5.1 部署Git

    一、安装依赖包

    [root@jenkins ~]# yum -y install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker 
    

    二、Git官网下载Git安装包

    [root@jenkins ~]# wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.9.5.tar.gz
    

    三、安装Git

    [root@jenkins ~]# tar -xvzf git-2.9.5.tar.gz
    [root@jenkins ~]# cd git-2.9.5
    [root@jenkins git-2.9.5]# make prefix=/usr/local/git all      #编译Git源代码
    [root@jenkins git-2.9.5]# make prefix=/usr/local/git install  #安装
    

    四、修改环境变量

    [root@jenkins git-2.9.5]# vim /etc/bashrc
    PATH=$PATH:$HOME/bin:/usr/local/git/bin
    [root@jenkins git-2.9.5]# source /etc/bashrc
    

    五、测试是否安装成功

    [root@jenkins git-2.9.5]# git --version
    git version 1.8.3.1
    

    5.2 JDK环境部署

    版本使用 jdk-8u291-linux-x64.tar.gz

    注:不能使用jdk9和jdk10 与本版本不兼容

    一、解压安装

    [root@jenkins ~]# tar -xvzf jdk-8u291-linux-x64.tar.gz -C /usr/local/
    [root@jenkins ~]# cd /usr/local/
    [root@jenkins ~]# mv jdk1.8.0_291/ jdk
    

    二、修改环境变量

    [root@jenkins ~]# vim /etc/bashrc
    JAVA_HOME=/usr/local/jdk
    export PATH=$PATH:$JAVA_HOME/bin
    [root@jenkins ~]# source /etc/bashrc
    

    三、测试JDK

    [root@jenkins ~]# java -version
    java version "1.8.0_291"
    Java(TM) SE Runtime Environment (build 1.8.0_291-b10)
    Java HotSpot(TM) 64-Bit Server VM (build 25.291-b10, mixed mode)
    

    5.3 部署Maven

    一、下载和解压Maven

    [root@jenkins ~]# wget https://mirrors.bit.edu.cn/apache/maven/maven-3/3.5.4/binaries/apache-maven-3.5.4-bin.tar.gz
    [root@jenkins ~]# tar -xvzf apache-maven-3.5.4-bin.tar.gz -C /usr/local/ #解压到/usr/local
    [root@jenkins ~]# mv /usr/local/apache-maven-3.5.4/ /usr/local/maven     #更名为maven
    

    二、修改环境变量

    [root@jenkins ~]# vim /etc/bashrc
    export M2_HOME=/usr/local/maven
    export M2=$M2_HOME/bin
    PATH=$M2:$PATH:$HOME/bin:/usr/local/git/bin
    export JAVA_HOME=/usr/local/jdk                                          #声明环境变量
    export PATH
    [root@jenkins ~]# source /etc/bashrc
    

    三、测试Maven

    [root@jenkins ~]# mvn -version
    Apache Maven 3.5.4 (1edded0938998edf8bf061f1ceb3cfdeccf443fe; 2018-06-18T02:33:14+08:00)
    Maven home: /usr/local/maven
    Java version: 1.8.0_291, vendor: Oracle Corporation, runtime: /usr/local/jdk/jre
    Default locale: en_US, platform encoding: UTF-8
    OS name: "linux", version: "3.10.0-862.el7.x86_64", arch: "amd64", family: "unix"
    

    5.4 部署TOMCAT

    一、解压部署

    [root@jenkins ~]# wget https://downloads.apache.org/tomcat/tomcat-9/v9.0.46/bin/apache-tomcat-9.0.46.tar.gz
    [root@jenkins ~]# tar -xvzf apache-tomcat-9.0.46.tar.gz -C /usr/local/
    [root@jenkins ~]# mv /usr/local/apache-tomcat-9.0.46/ /usr/local/tomcat
    

    二、定义Tomcat所需环境变量

    [root@jenkins ~]# vim /etc/profile
    CATALINA_HOME=/usr/local/tomcat
    export CATALINA_HOME
    [root@jenkins ~]# source /etc/profile
    

    三、启动TOMCAT

    [root@jenkins ~]# /usr/local/tomcat/bin/startup.sh
    

    四、测试TOMCAT

    http://192.168.100.10:8080/
    

    在这里插入图片描述
    五、关闭TOMCAT

    上传代码前记得关闭TOMCAT

    [root@jenkins ~]# /usr/local/tomcat/bin/shutdown.sh
    

    5.5 部署Jenkins

    一、官方下载Jenkins

    下载2.296

    [root@jenkins ~]# wget http://updates.jenkins-ci.org/download/war/2.296/jenkins.war
    

    二、部署Jenkins.war到TOMCAT下

    [root@jenkins ~]# cp jenkins.war /usr/local/tomcat/webapps/
    

    附:jenkins忘记密码重置步骤对照表

    Jenkins重置
    关闭Tomcat /usr/local/tomcat/bin/shutdown.sh
    rm -rf /usr/local/tomcat/webapps/jenkins*
    rm -rf ~ /.jenkins*
    cp jenkins.war /usr/local/tomcat/webapps
    启动tomcat即可访问jenkins

    三、启动TOMCAT

    注意:启动TOMCAT会自动解压webapps下的war包

    [root@jenkins ~]# /usr/local/tomcat/bin/startup.sh
    

    四、登陆Jenkins

    http://192.168.100.10:8080/jenkins
    

    出现如下界面后将红色一行复制进服务器进行查看
    在这里插入图片描述

    [root@jenkins ~]# cat /root/.jenkins/secrets/initialAdminPassword
    55b1bb2b1d164668b1def74e32240d89
    

    点击安装推荐插件
    在这里插入图片描述

    会自己安装插件但是会发生报错 需要手动下载插件解决
    在这里插入图片描述

    安装过程可能出现报错,没关系,点击重新下载即可,如还是不行,请手动下载安装

    创建用户
    在这里插入图片描述点击保存并完成
    在这里插入图片描述
    配置完成后的提示
    在这里插入图片描述

    http://192.168.100.10:8080/jenkins/
    

    在这里插入图片描述完成Jenkins前后台部署
    在这里插入图片描述

    5.6 管理插件

    简介:我们配置的是 git+maven方式的自动化部署 所有git和maven的相关插件是必须的 还有一个ssh基于机器间的文件传送
    Git插件访问代码仓库 maven插件调用压缩打包工具 ssh插件用于文件传输
    安装过程请耐心等待

    一、安装插件 Deploy to container

    • 作用:支持自动化将代码部署到tomcat容器
    • 安装过程:系统管理 --> 插件管理 --> 可选插件 -->过滤Deploy to container --> 勾选,点击下面的按钮直接安装,时间可能较久,等待即可

    在这里插入图片描述选择安装后重启
    在这里插入图片描述
    二、安装插件 Maven integration

    • 作用:Jenkins利用Maven编译,打包,所需插件
    • 安装过程:同第一个插件
      在这里插入图片描述

    三、安装Git相关三个插件

    • GitHub Authentication
    • GitHub Branch Source
    • GitHub Organization Folder

    四、安装插件 Publish Over SSH

    5.7 Jenkins系统设置

    与前方程序进行调用并关联

    注意:没有强调的都设置为默认即可

    路径:系统管理->(全局工具配置)Global Tool Configuration,配置jdk,git,maven的根目录

    一、找到全局工具箱在这里插入图片描述
    二、配置jdk目录

    配置JDK根目录,注意不能是JDK9.0,切记

    取消自动安装勾选 选择自己的安装路径
    在这里插入图片描述三、配置git目录
    在这里插入图片描述四、配置Maven并保存
    在这里插入图片描述
    五、点击全局保存
    在这里插入图片描述

    六、关于重启Jenkins

        http://192.168.100.10:8080/jenkins/restart
        http://192.168.100.10:8080/jenkins/stop
        http://192.168.100.10:8080/jenkins/reload
    

    5.8 SSH设置

    目的:(192.168.100.10) jinkens 服务器上的maven将开发产生的*.war包。通过SSH自动推送到远程tomcat服务器上(192.168.100.20)。需要手工配置sshkey。配合自动化推送
    192.168.100.10是Jenkins
    192.168.100.20是tomcat网站服务器,代表业务服务器

    一、Jenkins服务器准备秘钥认证

    这里的192.168.100.20是一台tomcat服务器,什么都不用安装,接受代码即可

    [root@jenkins ~]# ssh-keygen
    [root@jenkins ~]# ssh-copy-id 192.168.100.20
    [root@jenkins ~]# ssh 192.168.100.20
    Last login: Tue Jun  8 22:37:05 2021 from 192.168.100.10
    [root@tomcat ~]# 
    

    二、在Jenkins服务器准备秘钥认证

    [root@jenkins ~]# cat .ssh/id_rsa
    ...                                             #秘钥略
    

    三、进入Jenkins系统设置
    在这里插入图片描述如下图配置完成后记得 保存
    在这里插入图片描述

    5.9 新建任务

    一、创建任务
    在这里插入图片描述
    二、定义名称和类型
    在这里插入图片描述

    三、设置Maven

    公有Git仓库

    ① 设置描述
    在这里插入图片描述

    ② 选择版本控制器和仓库地址
    在这里插入图片描述
    ③ 设置触发器(保持默认)
    在这里插入图片描述
    ④ 设置构建(编译打包)
    在这里插入图片描述
    ⑤ 构建后操作

    在构建设置中选择:(send build artifacts over ssh)通过ssh发送构建文件

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

    关于构建后文件的配置说明
    SSH Server Name因为之前的配置会默认出现tomcat业务服务器的名字
    Source file构建之后,在jenkins服务器上是可以自动看到war包的。(该路径不需要创建)ls /root/.jenkins/jobs/testjob1/builds/target/*.war
    Remove prefix自动删除路径前缀(不需要创建路径前缀)
    Remove directorytomcat业务服务器上的路径,需要提前在192.168.100.11(tomcat)上创建该目录用来存放网站源代码(需要后台创建)
    Exec commandtomcat(192.168.100.20)在接收到源码之后的自定义操作比如:将源码拷贝到网站的主目录(/jenkins),并执行一些其他操作如重启服务器等(或创建文件touch 需要后天创建)

    ⑥ 为TOMCAT服务器创建相应文件

    [root@tomcat ~]# mkdir /jenkins/war -p           #创建用于存放源代码的目录
    

    tomacat(192.168.100.20)在接受到源码之后的自定义动作
    比如:将源码拷贝到网站主目录(/jenkins),并执行一些其他操作如重启服务器等(或创建文件touch)(需要后台创建)

    [root@tomcat ~]# mkdir /jenkins/sh               #创建脚本目录
    [root@tomcat ~]# vim /jenkins/sh/deploy.sh       #创建待执行脚本,如果构建任务执行完成,此脚本也必须执行完成,否则认为失败
    touch /root/aaa.txt
    touch /root/bbb.txt
    [root@tomcat ~]# chmod +x /jenkins/sh/deploy.sh  #为脚本授权
    

    关于创建脚本的解释:
    创建脚本的目的是为了验证自动化构建之后能否执行一些我们自己的想法
    因为目前为测试,不需要安装网站环境,所以这里以创建文件进行代表

    5.10 构建任务

    一、立即构建
    在这里插入图片描述
    在这里插入图片描述
    点击下方构建的任务
    在这里插入图片描述
    进入控制台输出
    在这里插入图片描述等待大约5分钟提示完成
    在这里插入图片描述

    如果出现error,检查前边配置

    绿色为正常
    在这里插入图片描述

    二、查看构建结果
    在这里插入图片描述

    [root@tomcat ~]# ls /jenkins/war/
    easy-springmvc-maven.war               #此包为Github官网下载的软件包
    [root@tomcat ~]# ls                    #查看脚本是否运行成功
    aaa.txt  bbb.txt
    

    实验完成!

    六、总结一下

    • Jenkins属于较高端的技术,12k工资以上都要求掌握Jenkins
    • 重点难点部分本人觉得在于Jenkins配置部分,还是多操作多积累吧,END

    以上是关于建木持续集成平台v2.2.2发布的主要内容,如果未能解决你的问题,请参考以下文章

    Jenkins——Jenkins构建企业CI/CD持续集成持续发布平台

    Jenkins-持续集成交付平台

    CI/CD——构建企业级Docker+Jenkins+Git+Harbor流水线自动化持续集成持续发布平台

    CI/CD——构建企业级Docker+Jenkins+Git+Harbor流水线自动化持续集成持续发布平台

    研发协同平台持续集成之Jenkins实践

    持续集成使用Jenkins实现多平台并行集成