共计 2017 个字符,预计需要花费 6 分钟才能阅读完成。
一、CI, CD 与 Jenkins
互联网软件的开发和发布,已经形成了一套标准流程,最重要的组成部分就是持续集成 (Continuous integration,简称 CI) => 持续集成指的是, 频繁地 (一天多次) 将代码集成到主干。
它的好处主要有两个:
-
- 快速发现错误。每完成一点更新,就集成到主干,可以快速发现错误,定位错误也比较容易。
- 防止分支大幅偏离主干。如果不是经常集成,主干又在不断更新,会导致以后集成的难度变大,甚至难以集成。
持续集成的目的,就是 让产品可以快速迭代,同时还能保持高质量。与持续集成相关的,还有持续交付和持续部署。
持续交付指的是:频繁地将软件的新版本,交付给质量团队或者用户,以供评审 。如果评审通过,代码就进入生产阶段。它强调的是, 不管怎么更新,软件是随时随地可以交付的。
持续部署是持续交付的下一步,指的是 代码通过评审以后,自动部署到生产环境 。它强调的是 代码在任何时刻都是可部署的,可以进入生产阶段。
Martin Fowler 说:“持续集成并不能消除 Bug,而是让它们非常容易发现和改正。”
Jenkins 是一款流行的开源持续集成(CI)与持续部署(CD)工具,广泛用于项目开发,具有自动化构建、测试和部署等功能。官方网站:http://jenkins-ci.org/。
使用 Jenkins 的目的在于:
(1)持续、自动地构建 / 测试软件项目。
(2)监控软件开放流程,快速问题定位及处理,提升开发效率。
这里废话不多说了,更多内容,可以参考这一篇文章《不甘寂寞的 Jenkins:从持续集成到持续部署》
二、Jenkins 的基础安装
PS: 这里采用的是基于 CentOS7.x 的安装方式,非 Docker 安装。
2.1 安装 Java 环境
这里参考晓晨 Master 的《CentOS7 安装 Java 环境(JDK1.8)》,不再赘述安装步骤,最终验证效果:
Tip:里面需要注意的是为 jdk 创建软链接!
2.2 安装 Git
yum install git
2.3 安装 Jenkins
sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/RedHat-stable/jenkins.repo
sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
yum install jenkins
安装完成后提示信息:
默认安装后的端口绑定的是 8080,如果你想更改请进入文件编辑 JENKINS_PORT 属性项。
vim /etc/sysconfig/jenkins
如果你使用的是 root 用户(没有单独创建一个 jenkins 的用户),那么建议进入上面的配置文件编辑 JENKINS_USER 属性项将 jenkins 改为 root。
2.4 配置 Jenkins
(1)修改目录权限:
chown -R root:root /var/lib/jenkins
chown -R root:root /var/cache/jenkins
chown -R root:root /var/log/jenkins
Tip:在 Shell 中,可以使用 chown 命令来改变文件所有者。chown 命令是 change owner(改变拥有者)的缩写。- R 代表进行递归 (recursive) 的持续更改,即连同子目录下的所有文件、目录都更新成为这个用户组,常常用在更改某一目录的情况。
(2)重启 Jenkins 服务
service jenkins restart
ps -ef | grep jenkins
提示信息如下图所示:
PS:启动 Jenkins
systemctl start jenkins
验证启动状态:
systemctl status jenkins
2.5 初始化 Jenkins
(1)访问 http://xxxx:8080/ 进行 Jenkins 的解锁
可以通过下面的命令查看管理员密码:
cat /var/lib/jenkins/secrets/initialAdminPassword
然后把这个密码复制到 Web 界面中的文本框中去进入下一步
(2)自定义 Jenkins => 这里选择 安装推荐的插件
双击之后进入安装过程,耐心等待:
(3)创建管理账户 => 也可以直接使用 admin 账户继续
(4)安装完成
(5)Jenkins 主界面
至此,Jenkins 的基本安装与配置就到此结束,下一篇我们会结合 ASP.NET Core 与 Docker 来一个持续部署的实例。
三、小结
本篇简单介绍了一下持续集成、持续交付与持续部署的基本概念,然后介绍了如何在 CentOS7.x 下安装 Jenkins 并初始化 Jenkins。下一篇会会结合 ASP.NET Core、GitHub 与 Docker 来一个持续部署的实例。