Jenkins

持续集成:Continuous Integration,简称CI,意思是,在一个项目中,任何人对代码库的任何改动,都会触发CI服务器自动对项目进行构建,自动运行测试,甚至自动部署到测试环境。这样做的好处就是,随时发现问题,随时修复。因为修复问题的成本随着时间的推移而增长,越早发现,修复成本越低。

持续集成工具

Travis CI

在线托管的CI服务,用Travis来进行持续集成,不需要自己搭服务器,在网页上点几下就好,用起来更方便。最重要的是,它对开源项目是免费的。私有项目会收费。

Jenkins

Jenkins是一个用Java编写的开源的持续集成工具。官方网站:https://jenkins.io/
Jenkins能实时监控持续集成过程中所存在的问题,提供详细的日志文件和提醒功能,还能用图表的形式,形象地展示项目构建的趋势和稳定性。

简介

Jenkins自动化部署可以解决集成、测试、部署等重复性的工作,工具集成的效率明显高于人工操作;并且持续集成可以更早的获取代码变更的信息,从而更早的进入测试阶段,更早的发现问题,这样解决问题的成本就会显著下降:持续集成缩短了从开发、集成、测试、部署各个环节的时间,从而也就缩短了中间出现的等待时间;持续集成也意味着开发、集成、测试、部署得以持续。。
使用Maven(Ant)等来实现lava项目自动化构建发布部署。这些工具可以帮助在构建过程中实现自动化发布、回滚等动作。

Jenkins提供Docker、war等部署方式,博猪比较倾向于yum源安装方式,同时作为一个服务启动。

安装教程

系统要求

最低推荐配置:

  • 256MB可用内存
  • 1GB可用磁盘空间(作为一个Docker容器运行jenkins的话推荐10GB)

为小团队推荐的硬件配置:

  • 1GB+可用内存
  • 50 GB+ 可用磁盘空间

软件配置:

  • Java 8—无论是Java运行时环境(JRE)还是Java开发工具包(JDK)都可以。

注意: 如果将Jenkins作为Docker 容器运行,这不是必需的

下载Jenkins

1
2
3
4
5
6
7
sudo wget -O /etc/yum.repos.d/jenkins.repo \
https://pkg.jenkins.io/redhat/jenkins.repo
sudo rpm --import https://pkg.jenkins.io/redhat/jenkins.io.key
sudo yum upgrade
sudo yum install epel-release java-11-openjdk-devel
sudo yum install jenkins
sudo systemctl daemon-reload

查看Jenkins状态

1
sudo systemctl status jenkins

如果是开启状态,关闭,以便更改配置。关闭命令如下:

1
sudo systemctl stop jenkins

自定义配置

配置路径如下: /etc/sysconfig

自定义配置路径

1
JENKINS_HOME="/opt/jenkins"

自定义默认用户

1
JENKINS_USER="root"

自定义访问路径

1
JENKINS_PORT="9955"

重启&&启动Jenkins服务

1
sudo systemctl start jenkins

访问&&解锁Jenkins

访问地址为:linux+端口号,如上配置为:http://192.168.56.121:9955,访问后,进入一下配置页面。

image-20211004202424221

按照上方提示,输入一下命令,输入密码:

1
cat /opt/jenkins/secrets/initialAdminPassword

按照插件

默认按照推荐按照即可。

image-20211004203303329

初始化用户

创建初始化用户,用户名:opser,密码:admin

image-20211004204936715

Jenkins初始URL默认不进行配置

image-20211004205136257

安装完成,开始使用

image-20211004205218802

Jenkins优化

插件优化

由于Jenkins默认使用国外的镜像,所以插件下载安装速度极慢,所以我们需要更改插件仓库。

注意:该仓库更改必须要在没有下载插件之前!

  • 进入Jenkins目录,/opt/jenkins

  • 复制并重命名文件hudson.model.UpdateCenter.xml

    1
    cp hudson.model.UpdateCenter.xml hudson.model.UpdateCenter.xml.bak
  • 修改hudson.model.UpdateCenter.xml

    1
    2
    url改为
    https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
  • 修改default.json

  • 配置default.json

    1
    vim /var/lib/jenkins/updates/default.json
  • 全局替换

    把 updates.jenkins-ci.org/download 替换为 mirrors.tuna.tsinghua.edu.cn/jenkins

    地址修改把 www.google.com 替换为 www.baidu.com

  • 重启服务

    1
    systemctl restart jenkins

页面优化

装完Jenkins之后,我们发现有一部分菜单汉化了,有一部分菜单没有汉化,这让人很不爽,所以我们需要调整一下让页面保持统一!

  • 系统管理-插件管理-已安装,中搜索,Localization: Chinese (Simplified)
  • 卸载,重装,同时安装locale插件
  • 系统管理-系统配置-Locale-Default Language,填写zh_CN,勾选Ignore browser preference and force this language to all users
  • 重启

Jenkins操作

基本配置

配置一览

img

构建环境配置

指定构建时所依赖的环境参数,如jdk版本,可以手动安装jdk,也可以在【全局工具配置】中指定好jdk版本,在首次构建时会自动安装,首次构建下载时间较长,耐心等待即可。

以NodeJS自动安装为例:

img

插件管理

构建模块大多以插件形式存在,使用前需安装,否则无法找到对应构建项。

img

服务器配置

系统管理->系统配置->Publish over SSH,点击[新增]按钮添加服务器,按要求填写服务器信息,如果没有找到此选项,可先在【插件管理】中安装Publish over SSH插件。

img

说明:Remote Directory指定的目录会作为文件上传时的根目录。

Java应用构建配置

新建任务

以构建Maven项目为例,选择一个Maven构建风格,可以省去许多maven配置,如果已经有一个相同配置,可选择输入名称进行复制。

Maven setting.xml配置文件:

/var/lib/jenkins/tools/hudson.tasks.Maven_MavenInstallation/maven/conf/

img

构建包留存策略

img

源码仓库

正式环境采用参数化构建,只用Git参数指定构建tag分支,默认master分支

img

配置源码仓库,指定动态tag分支

img

自动构建选项

取消触发自动构建的选项

img

构建

img

在jekenis服务器本地构建,使用jekenis服务器的maven配置进行编译构建

上传

构建成功后上传到指定部署服务器,仅编译成功后进行上传

img

  • Name:在服务列表中选择上传目标;
  • Source files:指定上传的jar包,支持正则通配(根据构建目录距离jar包位置的不同,会自动在服务器端创建不同深度的目录)。
  • Remote directory:可以指定上传目录,目录位于配置服务器时指定的根目录之下。
  • Exec command:上传成功后在上传后的服务器上执行的命令或脚本。

注:整体涉及到的编译脚本详见“项目编译脚本”

Js应用构建

新建任务

选择一个自由风格的构建

img

构建包留存策略

img

源码仓库

正式环境采用参数化构建,只用Git参数指定构建tag分支,默认master分支

img

配置源码仓库,指定动态tag分支

image-20211006134146871

自动构建选项

取消自动构建选项

img

构建环境

指定构建环境,选择已配置的nodejs构建环境,在jekenis本地服务器进行编译构建

img

构建

在jekenis本地服务器进行编译构建

img

为方便后续上传,在构建环节执行了压缩命令,可视情况而定。

注:整体涉及到的编译脚本详见“项目编译脚本”

上传

将编译并压缩后的前端文件上传到指定服务器

img

在服务器列表中选择目标,指定上传文件,填写上传成功后需执行的命令。因VUE编译多次会生成不同的文件,故需将编译后的文件一次性上传多个负载的服务器。

即重新选择一次上传步骤:

img

img

注:整体涉及到的编译脚本详见“项目编译脚本”


Jenkins
https://github.com/yangxiangnanwill/yangxiangnanwill.github.io/2024/01/03/好好码代码吖/Linux/Jenkins/
作者
will
发布于
2024年1月3日
许可协议