什么是 Jenkins?
Jenkins是一款开源 CI&CD 软件,用于自动化各种任务,包括构建、测试和部署软件。支持各种运行方式,可通过系统包、Docker 或者通过一个独立的 Java 程序。
中文网站:https://www.jenkins.io/zh/
文档手册:https://www.jenkins.io/zh/doc/
CI & CD 又是什么?
CI:Continuous Integration,持续集成。在CI环境中,开发人员将会频繁地向主干提交代码。这些新提交的代码在最终合并到主干前,需要经过编译和自动化测试流进行验证。通过自动化测试可以提早拿到回归测试的结果,避免将一些问题提交到交付生产中。
CD:Continuous Deployment,持续部署。在CD环境中,通过自动化的构建、测试和部署循环来快速交付高质量的产品。某种程度上代表了一个开发团队工程化的程度,任何修改通过了所有已有的工作流就会直接和客户见面。持续部署是一个很优秀的方式,可以加速与客户的反馈循环,但是会给团队带来压力,因为不再有“发布日”了。开发人员可以专注于构建软件,他们看到他们的修改在他们完成工作后几分钟就上线了。
另外还有一个 CD:Continuous delivery,持续交付。它可以让软件产品的产出过程在一个短周期内完成,以保证软件可以稳定、持续的保持在随时可以释出的状况。它的目标在于让软件的建置、测试与释出变得更快以及更频繁。这种方式可以减少软件开发的成本与时间,减少风险。
现在很多公司都有做持续集成,Jenkins就是一个持续集成的工具,开源的,基于 JAVA语言的。
Jenkins 持续交付工作流程
- 开发者向 GitLab 或者 Gitee 或者 GitHub 提交代码。
- GitLab 使用 WebHook 通知 Jenkins 有代码更新。
- Jenkins 从节点拉取代码,并打包生成镜像。
- Jenkins 在从节点上使用生成的镜像运行测试用例。
- 如果测试通过,将镜像推送到镜像仓库中。
- Jenkins 在应用服务器上更新部署。
- Jenkins 将构建过程的报告以邮件的方式通知相关人员。
从开发人员向代码库提交代码之后,整个流程都是自动进行的。如果中间哪个环节出现错误,将会中止流程的执行,并将结果通知相关人员。提交的代码不但要包括应用程序,还应该包括构建镜像的脚本、测试用例的脚本和部署的编排脚本等。
其中,各个步骤的操作可以使用插件或直接在命令行中使用各种工具来完成。
例如,拉取项目代码将会用到 Git 插件,项目的打包将使用 Maven 工具来实现,生成镜像和应用部署将直接通过命令行来使用 Docker-compose 工具,而集成测试也将通过命令行来执行由 Selenium、JMeter 等工具生成的脚本。
CentOS7 下安装 Jenkins
1、安装 JDK 环境
因为 Jenkins 是使用 Java 开发的,因此需要 JDK 运行环境。
查看安装 JDK 1.8 教程的博客:https://blog.csdn.net/BiandanLoveyou/article/details/117949441
2、CentOS7 安装 Jenkins
先下载 Linux版本,打开链接:https://www.jenkins.io/download/
进入 src 目录,创建 Jenkins 专属目录:/usr/local/src/jenkins
[root@localhost src]# mkdir jenkins
推荐使用清华大学的开源软件镜像站下载:https://mirrors.tuna.tsinghua.edu.cn/jenkins/redhat/
进入 jenkins 目录,下载2.241-1.1 的。太新的版本出问题网上很难查到方案解决。
yum -y install https://mirrors.tuna.tsinghua.edu.cn/jenkins/redhat/jenkins-2.241-1.1.noarch.rpm
下载完毕,并主动帮我们安装了:
安装完毕,我们先不启动,需要修改一下默认的配置。
启动 Jenkins 前修改配置
1、修改端口号
Jenkins 默认使用 8080 端口号启动,我们需要修改。不然很多人喜欢用 8080 ,导致端口号冲突。
Jenkins 自动安装后,默认的配置文件在:/etc/sysconfig/jenkins
vi /etc/sysconfig/jenkins
我们改为:8088
2、修改用户
Jenkins 默认以 jenkins 用户运行,在 Linux 环境中,容易导致一些权限问题,所以要改成以 root 用户运行,因此修改:JENKINS_USER=“root”
3、确认 Java 环境
打开文件 vi /etc/rc.d/init.d/jenkins ,搜索并确认 candidates
中是否包括了你的 JDK 路径(默认是不包含的,需要手动添加)
我们手动添加到末尾:注意啊,要添加到 bin/java 这一层。
/usr/local/src/jdk/jdk8/bin/java
最终配置:
candidates="
/etc/alternatives/java
/usr/lib/jvm/java-1.8.0/bin/java
/usr/lib/jvm/jre-1.8.0/bin/java
/usr/lib/jvm/java-1.7.0/bin/java
/usr/lib/jvm/jre-1.7.0/bin/java
/usr/lib/jvm/java-11.0/bin/java
/usr/lib/jvm/jre-11.0/bin/java
/usr/lib/jvm/java-11-openjdk-amd64
/usr/bin/java/jdk8/bin/java
/usr/local/src/jdk/jdk8/bin/java
"
效果图:
(如果不添加,启动报错,如下:其实 Jenkins 会默认找到 /usr/bin/java 这一目录,但是还不全,需要我们配置才行的。)
Job for jenkins.service failed because the control process exited with error code. See "systemctl status jenkins.service" and "journalctl -xe" for details.
或者报错:
Starting Jenkins bash: /usr/bin/java: 是一个目录
根据错误提示输入:systemctl status jenkins.service
或者,创建一个软链接:
ln -s /usr/local/src/jdk/jdk8/bin/java /usr/bin/java
修改后,需要:systemctl daemon-reload,然后启动 Jenkins:systemctl start jenkins
3、启动 Jenkins,并解决 Jenkins 安装插件慢的问题
1、启动 Jenkins:
service jenkins start
或者
systemctl start jenkins
查看 Jenkins 状态:
service jenkins status
效果图:
设置 Jenkins 开机启动:
systemctl enable jenkins
停止 Jenkins 的命令:
service jenkins stop
开启的状态下,外部电脑浏览器访问:http://192.168.0.105:8088/ (根据自己的虚拟机 IP 修改地址)
说明 Jenkins 启动成功!
2、解决 Jenkins 安装插件慢的问题
我们待会要启动 Jenkins 并安装一些插件,但是 Jenkins 默认访问的是谷歌 Google。因此需要修改 default.json 文件。
下面的命令是进入到 var/lib/jenkins/updates 目录并列出目录下的所有文档:
[root@localhost ~]# cd /var/lib/jenkins/updates;ls
default.json hudson.tasks.Maven.MavenInstaller
可以看到在 jenkins/updates 目录有 default.json 和 hudson.tasks.Maven.MavenInstaller ,修改 default.json 文档,分别执行下面两句命令:
将 updates.jenkins-ci.org/download 替换为 mirrors.tuna.tsinghua.edu.cn/jenkins,使用清华大学的开源软件镜像站下载。
将 www.google.com 替换为 www.baidu.com。
sed -i 's/www.google.com/www.baidu.com/g' default.json
sed -i 's/updates.jenkins-ci.org\/download/mirrors.tuna.tsinghua.edu.cn\/jenkins/g' default.json
然后重启 Jenkins:
service jenkins restart
这样,就为 Jenkins 配置了高速的访问速度了,解决了 Jenkins 安装插件慢的问题。
4、在 Jenkins 上安装插件
第一次使用 Jenkins 需要密码,可以看到红色的地址,在 CentOS 下使用 cat 查看密码:
[root@localhost ~]# cat /var/lib/jenkins/secrets/initialAdminPassword
把密码输入。进入第二个页面。安装推荐的插件即可。
配置了清华大学的开源软件镜像站和百度之后,明显比没有配置的快 N 倍。
如果有部分插件安装失败,重试或者继续都可以。我选择了重试。
安装完毕后,自动进入创建管理员的页面:
就这样,Jenkins 就安装好了。