Jenkins 是非常流行的 DevOps 工具,特别是 Jenkins 2 的 Jinkins Pipeline 和 Configuration As Code 对于实施 DevOps 非常有帮助。千里之行始于足下,体验 Jenkins 的魅力也可以从安装一个节点和最简单的 “Hello World” 开始。
本文介绍在 Ubuntu 16.04.6 LTS 和 Ubuntu 18.04.2 LTS 安装 Jenkins 并使用最简单的构建项目验证 Jenkins 安装。
系统环境和要安装软件的版本
本次安装中使用的主要软件版本如下:
- Ubuntu 16.04.6 LTS 或 Ubuntu 18.04.2 LTS
- openjdk version "1.8.0_212" 或 openjdk version "11.0.3"
- Jenkins 2.164.3
安装 Jenkins
2018 年, Jenkins 官网有了中文站, Jenkins Handbook 给出了详细的安装方法, 以 Ubuntu 为例,只需运行:
wget -q -O - https://pkg.jenkins.io/debian/jenkins.io.key | sudo apt-key add -
sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'
sudo apt-get update
sudo apt-get install jenkins
即可完成 jenkins 的安装,安装过程会创建一个 jenkins
用户来运行 jenkins 服务。
Jenkins 需要 Java versions [8, 11], 如果未安装 Java 或 版本不正确,在启动 Jenkins 服务时会出现错误,如:
May 30 14:55:19 ecs-devops-test systemd[1]: Starting LSB: Start Jenkins at boot time...
May 30 14:55:19 ecs-devops-test jenkins[5464]: ERROR: No Java executable found in current PATH: /bin...bin
May 30 14:55:19 ecs-devops-test jenkins[5464]: If you actually have java installed on the system mak...ath
May 30 14:55:19 ecs-devops-test systemd[1]: jenkins.service: Control process exited, code=exited status=1
May 30 14:55:19 ecs-devops-test systemd[1]: Failed to start LSB: Start Jenkins at boot time.
May 30 14:55:19 ecs-devops-test systemd[1]: jenkins.service: Unit entered failed state.
May 30 14:55:19 ecs-devops-test systemd[1]: jenkins.service: Failed with result 'exit-code'.
或者 tail /var/log/jenkins/jenkins.log
时可以查看到:
Jenkins requires Java versions [8, 11] but you are running with Java 9 from /usr/lib/jvm/java-9-openjdk-amd64
java.lang.UnsupportedClassVersionError: 53.0
at Main.verifyJavaVersion(Main.java:174)
at Main.main(Main.java:142)
如果在运行以上命令前未安装 jdk 可能会出现错误,按照错误提示,安装合适版本的 java 或 jdk, 并确保 jenkins
用户适用的 java 版本正确即可。在 Ubuntu 下,可运行 sudo apt-get install openjdk-8-jdk-headless
安装 openjdk-8-jdk-headless, 或者运行 sudo apt-get install openjdk-11-jdk-headless
安装 openjdk-11-jdk-headless, 安装的 jdk 还可用于 java 项目的构建。
安装后重要的文件有:
/etc/init.d/jenkins
: 将Jenkins设置为启动时启动的守护进程/var/log/jenkins/jenkins.log
: 日志/etc/default/jenkins
: 配置参数/var/lib/jenkins/secrets/initialAdminPassword
: 初始密码
如果需要修改默认的监听端口 8080, 可编辑文件 /etc/default/jenkins
, 然后运行 sudo service jenkins restart
重新启动 jenkins 服务。
视服务器网络环境,可能还需要在安全组中开启 jenkins 监听端口,以便客户端访问 jenkins 服务。
设置向导
jenkins 服务正常启动后,使用浏览器访问 jenkins 服务,如果访问本机 8080 端口上的 jenkins 服务,访问地址为 http://localhost:8080。首次访问 jenkins 服务将进入设置向导,包括安装自定义插件、创建管理员用户。
解锁 Jenkins
首次访问新的 Jenkins 实例时,系统会要求使用自动生成的密码对其进行解锁,如下图:
图1. 解锁 Jenkins
按照提示信息,复制文件 /var/lib/jenkins/secrets/initialAdminPassword
中的内容作为管理员密码,单击 "继续" 进入下一步。
自定义 Jenkins 插件
解锁 Jenkins 之后,在 "自定义 Jenkins" 页面内,可以选择安装 Jenkins 插件。
图2. 自定义 Jenkins 插件
图2 中有 2 个选项:
- 安装推荐的插件 - 跳过 “选择插件” 直接安装推荐的一组插件。
- 选择插件来安装 - 基于推荐的插件,选择安装的插件。
因为以后可以通过 Jenkins 中的 Manage Jenkins » Manage Plugins 页面管理插件,选择哪个选项并不重要。但推荐单击 "选择插件来安装",至少可以先看一下有哪些推荐插件,如果不进行任何改动,直接单击 "安装",则与单击 "安装推荐的插件" 一样。
图3. 选择插件
图4. 安装插件
创建管理员用户
在安装插件完成后, Jenkins 提示创建第一个管理员用户,在该页面输入管理员用户的详细信息,单击 "保存并完成"。
图5. 创建第一个管理员用户
此后则需要以创建的用户访问 Jenkins.
如果在此页面中单击 "使用 admin 账户继续",则跳过此步骤。后续再访问 Jenkins 时,需要使用用户名为 admin 的账户,密码为解锁 Jenkins 时使用的密码。
实例配置
创建管理员用户完成后,会提示实例配置,这一步也不重要, Jenkins URL 以后可以通过 Manage Jenkins » Configure System » Jenkins Location » Jenkins URL 修改。
图6. 实例配置
单击 "保存并完成" 进入下一步。
开始使用 Jenkins
实例配置完成后,会提示 Jenkins 已就绪,单击 "开始使用 Jenkins" 进入到欢迎页面,可以创建新任务。
图7. Jenkins 已就绪
图8. 欢迎页面
更改界面语言
Jenkins UI 界面默认使用本地语言,虽然中文翻译得非常好,但并不是所有的插件都有中文翻译,屏幕上经常会出现一半英文一半中文。最主要的是以后编码还是要使用英文,很多帮助文档也是英文的,所以有时需要更改界面语言。
更改界面语言需要安装一个名为 Locale plugin 的插件。进入 Manage Jenkins » Manage Plugins 页面,在 Filter 中输入 Locale plugin, 在 Available 或 Installed 页签中找到该插件,确保该插件已经安装。
然后在 Manage Jenkins » Configure System » Locale » Default Language 中输入语言代码, 英文可输入 en 或 en.US, 并选中 "Ignore browser preference and force this language to all users"。
图9. 界面语言设置
以下截图将使用英文界面。
Hello World
在 Jenkins 主页面点击 "New Item" 或 "create new jobs", 输入项目名称,选择 "Freestyle project", 然后单击 "OK"。
图10. 新建项目
在项目配置页面,添加一个 "Execute shell" 的构建步骤。
图11. 添加构建步骤
在接下来的界面添加一个简单的 Shell Command, echo "Hello World"
, 然后单击 "Save"。
图12. 添加 Shell Command
在接下来的项目界面中单击 "Build Now" 启动手工构建。
图13. 项目界面
手工构建完成后,项目界面中出现构建历史。
图14. 构建历史
单击最近也是目前唯一的一次构建 "\#1", 在构建页面中单击 "Console Output" 可以看到构建结果。
图15. 构建结果