Jenkins入门
简介
Jenkins 是一款开源 CI&CD 软件,用于自动化各种任务,包括构建、测试和部署软件。
Jenkins 支持各种运行方式,可通过系统包、Docker 或者通过一个独立的 Java 程序。
部署安装
部署
Jenkins的部署环境根据公司团队的需求和项目实际情况,可以部署在公有云、私有云、甚至自己的办公机上。学习的同学可以选择虚拟机作为部署环境,在实际应用场景中,务必注意数据安全。
安装
Jenkins 支持多平台,包括Windows、Linux、MacOS、甚至像一些非主流的操作系统 OmniOS、Solaris 等都可以安装运行 Jenkins。
Jenkins 的安装方式多种多样,安装方式可分为 Docker 镜像安装,源码安装、安装包安装。
(推荐)采用基于 Docker 安装的方式是最简便的方式,通过 docker pull jenkinsci/jenkinsci
的方式即可安装,此中安装方式比较实用与团队主要开发语言是 Pyhon、Js 这类的,并且与服务器环境依赖不多的情况。若团队的 CI\CD 时需要较多环境变量、程序依赖时,Docker 安装方式在后期创建 Jenkins 任务时,可能会有一些繁琐。
基于源码安装,也不复杂,团队希望使用 Jenkins 开源团队提交的最新 Jenkis 代码,或希望对 Jenkins 代码加以修改时,使用源码安装能够满足需求。
我这里采用的是使用安装包安装的方式,在 Jenkins 的网站上可以下载到面向不同操作系统打包好的安装包,直接下载即可。我们的服务器其实是阿里云上的云主机,运行的 Ubuntu 系统,那么这里我们下载适用的安装包,如下:同学们可根据安装平台不同选择合适的安装包。
选择 Ubuntu 系统的安装包
Java环境
Java 是 Jenkins 运行的必须环境,在 Linux 上安装 Java 比较容易,不会的同学可以参考本人博客:
如何确定是否已安装好Java:
root@nefusmzjserver:~# java -version
java version "1.8.0_231"
Java(TM) SE Runtime Environment (build 1.8.0_231-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.231-b11, mixed mode)
安装好 Java 后,若不执行如下步骤,可能在运行 Jenkins 报告这样一个错误:
”/usr/bin/java No such file or directory“
可以提前创建好软连接来解决这个问题:
root@nefusmzjserver:~# ln -s /usr/local/jdk1.8.0_231/bin/java /usr/bin/java
也可以再安装完Jenkins 后,创建软连接或者修改Jenkins 配置文件来解决。
安装依赖项
Jenkins 运行需要 Daemon,那么 Daemon 是什么呢?Daemon 实际上是 Linux 上的一种守护进程机制,分析 Jeknins 也是希望自身能够被守护,防止意外退出的原因吧。
安装 Daemon
root@nefusmzjserver:~# apt-get install daemon
安装 Jenkins
root@nefusmzjserver:~# dpkg -i jenkins_2.190.3_all.deb
安装这个软件包将会:
-
将 Jenkins 设置为启动时启动的守护进程(这就是需要先安装 Daemon 的原因)
-
创建一个 Jenkins用户和组,来运行此服务
-
自身控制台日志输出到文件
/var/log/jenkins/jenkins.log
。如果您正在解决 Jenkins 问题,请检查此文件 -
/etc/default/jenkins为启动填充配置参数,例如 JENKINS_HOME, HTTP_PORT 等
-
将 Jenkins 设置为在端口 8080 上进行监听。使用浏览器访问此端口以开始配置
查看 Jenkins 启动情况
root@nefusmzjserver:~# systemctl status jenkins.service
如果 Active: active 表示 Jenkins 启动成功,可以使用浏览器进行访问了,请求地址是:http://localhost:8080
如果 Active: 状态不是 active,则表示启动失败,需要根据错误提示进行相应调整
常见的错误分为如下几种:
- 没有安装守护进程程序 Daemon,解决:安装 Daemon 程序
- 找不到 Java 可执行程序路径,解决:配置软连接,指向 /usr/bin。
- HTTP_PORT 端口占用,解决:修改 Jenkins 端口,或解除其他程序对 8080 端口的占用
- JENKINS_HOME 权限问题,解决:调整 Jenkins_HOME 指向目录的属组和所属用户
那么出现上述 4 种问题应该如何解决,请继续学习下文“配置文件”
配置文件
Jenkins 配置文件主要有两个与使用者关系密切
- Jenkins 服务启动脚本:/etc/init.d/jenkins
- Jenkins 服务参数:/etc/default/jenkins
Jenkins Web服务端口
Web 服务端口是 Jenkins 的 Web 服务监听的端口,即访问地址时需要指定的,默认值为 8080。
端口配置位于 /etc/default/Jenkins 配置文件中,可以根据自身需要进行修改。
HTTP_PORT=8080
通过本项配置能够解决上一节的问题 3。
Jenkins 工作目录
工作目录是 Jenkins 的配置、插件,包括后续 CI/CD 的工作任务存放的目录,默认值为 /var/lib/jenkins。
工作目录配置位于 /etc/default/jenkins 配置文件中,可以根据自身需要进行修改。
JENKINS_HOME=/var/lib/$NAME
注意,这个目录不是直接修改指定到某个路径就可以的,需要确保用户 jenkins 有权限访问得到,有一个办法是修改指向目录的属组和用户,即使用 chgrp 和 chown 命令。
通过本项配置能够解决上一节的问题 4。
设置向导
通过浏览器访问 Jenkins 服务,注意访问的地址根据自身 IP 进行调整,本机的话可以使用 localhost。
http://localhost:8080
http://47.98.xx.xx:8080
通过 web 访问 Jenkins
通过浏览器访问 Jenkins 页面,页面大概耗费 5s 左右进行初始化,然后出现如下页面:
这里需要输入初始管理员密码,按照页面提示,该密码位于/var/lib/jenkins/secrets/initialAdminPassword
文件中。
通过 cat 命令查看
root@nefusmzjserver:~# cat /var/lib/jenkins/secrets/initialAdminPassword
3fd789c996b6c96d453257f73a
将上述密码复制到页面地址栏,点击 ‘继续/Contiune’。
选择插件安装方式
进入插件向导页面,对 Jenkins 不熟的同学建议“安装推荐的插件”,这样 Jenkins 会根据社区推荐的插件,逐一安装,基本上可以满足大多数使用场景。
熟悉的同学可以根据自身需求“选择插件来安装”,这样也能避免安装一些不常用的插件占用空间。
这里我们选择前者“安装推荐的插件”,会进入下面的页面。
插件安装进程
这个过程中,Jenkins 会自动安装这些插件,这些插件也将成为后续使用 Jenkins 过程中十分重要的。此过程较慢,需要耐心等待。
全部完成出现对勾后,右下角会出现“继续”按钮,页面会进入下一步。中间出现插件安装失败的同学不要着急,Jenkins 会在页面其它插件安装完毕后,给用户提供重试的机会。
创建第一个管理员用户:
下图页面信息均为必填项
点击右下角“保存并完成”
提示 Jenkins 访问地址
开始使用 Jenkins
点击“开始使用Jenkins”,Jenkins 的页面正式出现
发现左侧菜单栏中仍有部分选项为英文,例如 “Manage Jenkins”,在插件向导中我们已经安装了 “Localization Chinese” 的插件了,为什么语言没有完全转变呢?可以在后台重启 Jenkins 服务解决:systemctl restart jenkins.service
,然后再刷新网页,看看是不是都是中文了?“Lockable Resources”还是英文,我们可以忽略,我分析原因是中文插件中并没有翻译此项菜单。
到此,同学们可以正式开始使用 Jenkins 开始 CI/CD 之旅了。
下一节,我们来开始 Jenkins 的处女作,Jenkins 之 HelloWorld。