Jenkins 在Ubuntu上安装
Jenkins简介
Jenkins是一个免费的自动化服务器。它帮助自动化与构建、部署、测试、持续交付和持续集成相关的软件开发要素。它是一个基于服务器的系统,运行在包括Apache Tomcat在内的servlet容器中。
Jenkins支持多种版本控制工具,包括RTC、ClearCase、Perforce、Mercurial、Git、Subversion、CVS和AccuRev,并且可以运行基于sbt、Apache Maven和Apache Ant的项目以及任意的Windows和shell脚本批处理命令。
Jenkins简史
最初,Jenkins项目被称为Hudson,并在2011年更名,与Oracle发生冲突。Hudson,Oracle的分支,继续整合一段时间后转为免费供给Eclipse基金会使用。Oracle的Hudson不再受管理,并于2017年2月作为过时的引入。
在2007年左右,Hudson作为一个更好的替代品取代了Cruise Control,并成为许多免费构建服务器的首选。在2008年5月的JavaOne大会上,Jenkins在开发者解决方案类别中获得了杜克(Duke)的选择奖。
- 在2010年11月,Oracle的Sun Microsystems恢复后,Hudson社区出现了一些基础设施使用的问题,该基础设施用于囊括有关Oracle控制和管理权的问题。
- Oracle与项目贡献者之间进行了讨论。然而,存在一些分歧点;一个重要的问题是在2010年12月Oracle指控拥有”Hudson”商标名称的权利,并使用了该商标。
- 于2011年1月11日发起了改变项目名称从”Hudson”到”Jenkins”的投票呼吁。
- 该提议于2011年1月29日通过了社区投票,成立了Jenkins项目。
- Oracle于2011年2月1日表示希望继续Hudson的开发。因此,Hudson和Jenkins作为两个不同的项目继续存在,两者互相指责对方是分支。
- 2011年,创始人Kohsuke Kawaguchi因其在Jenkins/Hudson项目上的表现获得奥莱利开源奖。
- 于2016年4月20日,默认启用并发布了2.0版本,附带了Pipeline插件。
- 该插件允许使用特定领域的基于Apache Groovy语言编写构建程序。
- Jenkins于2017年2月8日在Eclipse中取代了Hudson。
- Jenkins X软件程序于2018年3月公开发布,为Kubernetes提供支持,并得到多家云服务提供商的支持,如AWS EKS等。
Jenkins构建
构建可以通过多种方式进行,包括:
- 由另一个构建所需
- 在队列中的其他构建完成后进行
- 通过特定构建URL的请求
- 按照类似于cron的方法进行调度
- 在版本控制系统中遇到提交推送的Webhook
Jenkins插件
- 邮件发送器: 它允许我们为构建结果配置电子邮件消息。如果出现某些重要事件,如:
- 不稳定的构建。
- 构建失败。
- 不稳定的构建,后来成功一个,显示出回归。
- 成功的构建,后来失败的构建,显示灾难已经过去。
Jenkins将提供邮件给指定的收件人。
- 检查外部作业: 它们可以检查外部执行的作业的结果。
- 凭据: 凭据允许在Jenkins中保存凭据。它们为其他插件提供了一个标准化的API,以保存和获取不同类型的凭据。
- SSH代理: 它允许在SSH上维护在nix机器上执行的代理。它包括一个新的代理启动机制。这个启动机制将:
- 初始化代理进程。
- 当具有兼容的Java版本时,通过SFTP复制agent.jar。
- 查找用户的默认Java版本。
- 以指定的用户名启动SSH连接到指定的主机。
- 在线解释器: 为了按用户界面而不是命令提示符调度和检查shell脚本的执行,可以有效地使用Jenkins。
- Javadoc文档: 它支持Jenkins的Javadoc文档。这个过程曾经是核心的一部分,但是从1.431版本的Jenkins开始,它被分成了不同的插件。它通过后续构建操作启用 “发布Javadoc” 选项,命名要收集Javadoc的目录,并指定是否对所有成功的构建进行约束。
Jenkins安全性
Jenkins的安全性依赖于两个不同的因素:来自外部威胁的保护和访问控制。支持保护免受外部威胁的攻击,包括恶意构建和CSRF攻击。访问控制可以通过两种方式进行定制:用户授权和身份验证。
在Ubuntu上安装Jenkins
在服务器上安装软件包之前,必须更新系统软件包管理器。使用以下命令确保系统软件包管理器是最新的:
$ sudo apt update
安装Java
由于Jenkins是用Java编写的,第一步是安装Java。使用以下命令安装Java 8 OpenJDK软件包:
$ sudo apt install openjdk-8-jdk
目前的Jenkins版本还不支持Java 10或更高版本。如果您的系统上安装了多个Java版本,请确保Java 8是默认的Java版本。
要检查系统上的Java版本,请使用以下命令:
$ java -version
添加Jenkins Debian仓库
使用以下 wget 命令导入Jenkins仓库的GPG(GnuPG – GNU隐私卫士)密钥:
$ wget -q -O - https://pkg.jenkins.io/debian/jenkins.io.key | sudo apt-key add -
以上命令的输出应该是OK,这意味着密钥已成功导入,来自该存储库的软件包将被视为可信。
现在,使用以下命令将Jenkins存储库添加到系统中:
sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'
安装Jenkins
一旦启用了Jenkins存储库并添加了密钥和源,更新apt软件包列表:
$ sudo apt update
现在,使用以下命令安装最新版的Jenkins:
$ sudo apt install jenkins
安装完成后,Jenkins服务将自动启动。
我们可以使用以下命令进行验证:
$ systemctl status Jenkins
我们应该看到类似这样的东西:
● jenkins.service - LSB: Start Jenkins at boot time
Loaded: loaded (/etc/init.d/jenkins; generated)
Active: active (exited) since Wed 2019-07-06 1308 PDT; 2min 16s ago
Docs: man:systemd-sysv-generator(8)
Tasks: 0 (limit: 2319)
CGroup: /system.slice/jenkins.service
调整防火墙
如果您正在安装Jenkins在一个通过防火墙保护的远程Ubuntu服务器上,您将需要开放端口 8080 。请考虑您正在使用 UFW 来管理您的防火墙;您可以使用以下命令打开端口:
$ sudo ufw allow 8080
使用以下命令来验证更改:
$ sudo ufw status
输出将如下所示:
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
8080 ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
8080 (v6) ALLOW Anywhere (v6)
设置Jenkins
为了设置新的Jenkins安装,打开浏览器,在域名或IP地址后面输入端口8080,例如http://your_ip_or_domain:8080,屏幕会显示类似以下内容的Jenkins解锁屏幕:
在终端中输入以下cat命令以查看密码:
$ sudo cat /var/lib/jenkins/secrets/initialAdminPassword
将密码从终端复制并粘贴到“管理员密码”字段中,然后点击继续。现在,屏幕上提供了安装建议插件或选择特定插件的选项:
在安装插件之后,现在是创建一个管理员账号以登录Jenkins的时候了:
我们已经成功设置了Jenkins,现在Jenkins服务器已经准备好使用。