手把手教你在Linux下搭建Jenkins实现自动部署
Jenkins是一个开源的自动化服务器,可以用来轻松地建立持续集成和持续交付(CI/CD)管道。
持续集成(CI)是一种DevOps实践,在这种实践中,团队成员定期将他们的代码更改提交到版本控制存储库,然后运行自动化的构建和测试。持续交付(CD)是一系列实践,在这些实践中,代码变更被自动构建、测试并部署到生产环境中。
Jenkins可以作为独立应用程序安装,也可以作为Java servlet容器(如Apache Tomcat)中的servlet安装,也可以作为Docker容器运行。
本文介绍了如何在Ubuntu 20.04上安装Jenkins作为一个独立的服务。
安装Java
Jenkins是一个Java应用程序,需要在系统上安装Java 8或更高版本。我们将安装OpenJDK 11, Java平台的开源实现。
以root用户或具有sudo权限的用户或root用户运行以下命令来安装OpenJDK 11:
linuxmi@linuxmi:~/www.linuxmi.com$ sudo apt update linuxmi@linuxmi:~/www.linuxmi.com$ sudo apt install openjdk-11-jdk
安装完成后,请检查Java版本:
linuxmi@linuxmi:~/www.linuxmi.com$ java -version
输出应如下所示:
openjdk version "11.0.8" 2020-07-14 OpenJDK Runtime Environment (build 11.0.8+10-post-Ubuntu-0ubuntu120.04) OpenJDK 64-Bit Server VM (build 11.0.8+10-post-Ubuntu-0ubuntu120.04, mixed mode, sharing)
安装Jenkins
在Ubuntu上安装Jenkins相对简单。我们将启用Jenkins APT存储库,导入存储库GPG密钥,并安装Jenkins包。
使用以下wget命令导入Jenkins存储库的GPG键:
linuxmi@linuxmi:~/www.linuxmi.com$ wget -q -O - https://pkg.jenkins.io/debian/jenkins.io.key | sudo apt-key add -
接下来,使用以下命令将Jenkins存储库添加到系统中:
linuxmi@linuxmi:~/www.linuxmi.com$ sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'
启用Jenkins存储库后,通过输入以下命令更新apt包列表并安装最新版本的Jenkins:
linuxmi@linuxmi:~/www.linuxmi.com$ sudo apt update linuxmi@linuxmi:~/www.linuxmi.com$ sudo apt install jenkins
如果你得到一个错误消息说:
W: GPG 错误:https://pkg.jenkins.io/debian-stable binary/ Release: 由于没有公钥,无法验证下列签名:NO_PUBKEY 9B7D32F2D50582E6
E: 仓库 “http://pkg.jenkins.io/debian-stable binary/ Release” 没有数字签名。
解决方法
导入密钥:
linuxmi@linuxmi:~/www.linuxmi.com$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 9B7D32F2D50582E6
然后再次运行:
linuxmi@linuxmi:~/www.linuxmi.com$ sudo apt update linuxmi@linuxmi:~/www.linuxmi.com$ sudo apt install jenkins
Jenkins服务将在安装过程完成后自动启动。您可以通过如下命令来验证:
linuxmi@linuxmi:~/www.linuxmi.com$ systemctl status jenkins
你应该看到这样的东西:
● jenkins.service - LSB: Start Jenkins at boot time
Loaded: loaded (/etc/init.d/jenkins; generated) Active: active (exited) since Fri 2020-07-24 16:47:34 CST; 1min 27s ago Docs: man:systemd-sysv-generator(8) Tasks: 0 (limit: 4624) Memory: 0B CGroup: /system.slice/jenkins.service
7月 24 16:47:32 linuxmi systemd[1]: Starting LSB: Start Jenkins at boot time... 7月 24 16:47:32 linuxmi jenkins[33922]: Correct java version found 7月 24 16:47:32 linuxmi jenkins[33922]: * Starting Jenkins Automation Server j> 7月 24 16:47:33 linuxmi su[33976]: (to jenkins) root on none 7月 24 16:47:33 linuxmi su[33976]: pam_unix(su-l:session): session opened for u> 7月 24 16:47:33 linuxmi su[33976]: pam_unix(su-l:session): session closed for u> 7月 24 16:47:34 linuxmi jenkins[33922]: ...done. 7月 24 16:47:34 linuxmi systemd[1]: Started LSB: Start Jenkins at boot time.
也可以查看进程信息。
linuxmi@linuxmi:~/www.linuxmi.com$ ps -ef |grep jenkins
调整防火墙
如果你在一个被防火墙保护的远程Ubuntu服务器上安装Jenkins,你需要打开端口8080。
Jenkins 默认端口是8080,在配置文件/etc/default/jenkins 中定义。
HTTP_PORT=8080
本文修改为 9090
通常,您希望只允许从特定的IP地址或IP范围访问Jenkins服务器。例如,要仅允许来自“192.168.135.0/24”子网的连接,可以运行以下命令:
sudo ufw allow proto tcp from 192.168.135.0/24 to any port 9090
如果你需要允许访问从任何地方运行:
sudo ufw allow 9090
设置Jenkins
要安装新的Jenkins安装,请打开浏览器,输入域或IP地址,然后输入端口9090,http://192.168.150.135:9090
将显示如下页面,提示您输入安装过程中创建的管理员密码:
解锁 Jenkins
为了确保管理员安全地安装 Jenkins,密码已写入到日志中(不知道在哪里?)该文件在服务器上:
/var/lib/jenkins/secrets/initialAdminPassword
请从本地复制密码并粘贴到下面。
使用cat在终端上显示密码:
sudo cat /var/lib/jenkins/secrets/initialAdminPassword
你应该看到一个32字符长的字母数字密码,如下所示:
b55aa5df790f41688125c182193aecfe
从终端复制密码,粘贴到“管理员密码”域中,点击“继续”。
在下一个屏幕上,安装向导将询问您是要安装推荐的插件还是选择特定的插件。
点击“安装推荐的插件”框,安装过程将立即开始。
一旦插件安装完毕,系统将提示您设置第一个管理员用户。填写所有需要的信息,然后点击“保存并完成”。
下一页将要求您为Jenkins实例设置URL。该字段将使用自动生成的URL填充。
通过单击“保存并完成”按钮来确认URL,设置过程将完成。
单击重启开始使用Jenkins按钮,您将被重定向到以您在前面的步骤之一中创建的admin用户身份登录的Jenkins仪表板。
此时,您已经成功地在服务器上安装了Jenkins。
总结