解锁CI/CD:如何成功在Ubuntu上安装Jenkins

你花费很多时间在基础设施中部署代码吗?不用担心,你来对地方了,可以学习如何安装最广泛使用的开源工具Jenkins

在本教程中,你将学习如何在Ubuntu机器上安装Jenkins,这样你就可以轻松地点击按钮构建和部署代码。

继续阅读并开始安装吧!

先决条件

本文将是一篇逐步教程。要跟着操作,请确保你有一台Ubuntu机器。本教程使用Ubuntu 18.04并安装了apache

在Ubuntu机器上安装Java版本11

Jenkins是一个持续集成(CI)和持续部署(CD)工具,可在不同的servlet容器中运行,如Apache TomcatGlassFish。但是在此演示中,您将在Jenkins的内置Java Servlet容器服务器上运行。

有多个Java实现可用于与Jenkins一起使用,但最流行的是OpenJDK,您将在本教程中安装和使用它。

1. 使用您喜欢的SSH客户端登录到您的Ubuntu机器。

2. 接下来,运行以下命令创建一个名为~/install_jenkins_demo的目录并切换到该目录。

mkdir ~/install_jenkins_demo
cd ~/install_jenkins_demo

3. 运行下面的apt install命令在您的机器上安装Java。

# 安装Java版本:Java SE 11(LTS)
sudo apt install default-jdk 
Installing Java Version: Java SE 11 (LTS)

4. 最后,运行下面的命令检查您计算机上安装的Java版本。这样做可以确保您已成功安装了Java。

# 检查Java版本以验证Java安装。
java -version
Checking the Version of Java to verify Java installation

在Ubuntu 18.04 LTS实例上安装Jenkins

现在您已经在Ubuntu计算机上安装了Java,是时候在您的计算机上安装Jenkins了。安装Jenkins与安装其他软件包的方式非常相似。

假设您仍然登录到SSH客户端:

1. 首先,运行apt update命令来更新系统软件包。

sudo apt update

2. 接下来,运行以下wget命令将Jenkins公钥添加到您的系统中。

添加公钥允许Jenkins网站下载Jenkins官方仓库或任何所需的软件包。

wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add -

3. 运行以下命令将Jenkins官方仓库添加到您的系统并更新您的系统。

# 将Jenkins官方仓库添加到系统中
sudo sh -c 'echo deb https://pkg.jenkins.io/debian-stable binary/ > \
    /etc/apt/sources.list.d/jenkins.list'
# 更新软件包
sudo apt-get update

4. 现在,运行以下命令install Jenkins软件包。

# 安装Jenkins软件包
sudo apt-get install Jenkins
Installing the Jenkins package on an ubuntu machine

5. 最后,运行以下service命令来验证Jenkins服务的状态。 # 在ubuntu机器上验证Jenkins服务的有效性 service jenkins status

# 在ubuntu机器上验证Jenkins服务的有效性
service jenkins status

如下所示,状态显示Jenkins服务为active

Verifying the status of Jenkins service

配置Jenkins实例

到目前为止,您已成功安装Jenkins一半。但在您真正开始使用之前,您需要使用基本设施对其进行设置。如何?设置Jenkins的第一步是解锁新安装的Jenkins。

假设您仍然登录到SSH客户端:

1. 打开您喜欢的浏览器,导航到服务器的IP地址后跟着端口8080,如jenkins-ip:8080导航到链接后,您需要通过提供管理员密码来解锁Jenkins。管理员密码存储在服务器上的/var/lib/jenkins/secrets/initialAdminPassword目录中(第二步)。

Unlocking Jenkins Instance

2. 运行以下cat命令,从/var/lib/jenkins/secrets/initialAdminPassword目录中在您的机器上添加管理员密码。

cat /var/lib/jenkins/secrets/initialAdminPassword

如下所示,输出中的巨大字符串即为管理员密码。请注意此管理员密码,您将需要它来解锁Jenkins(第三步)。

Checking the Initial Admin Password

3. 切换回您的Web浏览器(解锁Jenkins页面)并输入您在第二步中注意到的管理员密码。

一旦您解锁了Jenkins,您的浏览器将重定向到一个页面,您将在该页面上自定义Jenkins实例并安装插件(第四步)。

4. 在自定义Jenkins页面上,点击安装建议的插件选项。

Jenkins插件是与Jenkins集成的第三方工具,允许您执行诸如Git插件之类的任务。Git插件允许您与Git仓库连接,运行Git命令等等。

Installing the Jenkins Plugin

5. 填写管理员用户详细信息,如下所示,并点击保存并继续以创建管理员用户。此管理员用户使您能够使用Jenkins UI仪表板或Jenkins实例。

一旦您点击保存并继续,您将看到步骤五中显示的实例配置屏幕。

默认情况下,Jenkins创建了一个带有用户名/密码(admin: admin)的管理员用户,但仍然为您提供选择创建自定义管理员用户的选项。如果您不想创建自定义管理员用户,可以跳过并继续作为管理员。

Creating the First Admin user

6. 最后,点击保存并完成以保存实例配置。

实例配置允许您指定要使用的Jenkins URL,在这种情况下,您将使用默认URL(即,server-ip:8080

Configuring the Jenkins Instance
Jenkins Running successfully on Port 8080

更改Jenkins实例的默认端口

以前,您了解到默认情况下,Jenkins在端口8080上运行,这没问题。但如果您需要在同一端口上运行其他一些应用程序,如apache或NGINX怎么办?别担心!您可以更改Jenkins的默认端口(8080),并将Jenkins实例运行在其他端口上。

1. 在您喜欢的文本编辑器中打开/etc/default/Jenkins文件,并将默认端口从8080更改为9090,然后保存更改。

Changing the Default Jenkins Port

2. 接下来,运行下面的命令重新启动Jenkins,以使更新的配置生效。

sudo systemctl restart jenkins

3. 最后,导航到Jenkins URL,但这次将端口更改为9090,如下所示。

Jenkins Running successfully on Port 9090

使用SSL证书安全运行Jenkins(HTTPS)

到目前为止,您的Jenkins实例在9090端口上运行得很完美。但是安全吗?不,不安全。通过启用SSL证书,确保您的Jenkins实例安全,并避免受到攻击者的威胁。

SSL证书主要用于在本地机器上测试,当没有来自外部认证机构的证书时。

要保护您的Jenkins实例:

1. 运行下面的每个命令,创建一个名为~/certificates的目录以存储证书,并切换到该目录。

mkdir ~/certificates
cd ~/certificates

2. 接下来,运行以下openssl命令来生成证书签名请求(CSR)和私钥。3. 运行以下命令创建另一个目录(/etc/apache2/ssl),并将证书从~/certificates/目录移动到/etc/apache2/ssl目录。

openssl req -x509 -newkey rsa:4096 -keyout apache.key -out apache.crt -days 365 -nodes
Generating a CSR and private key

4. 打开默认的SSL Apache站点配置文件(/etc/apache2/sites-available/default-ssl.conf)并添加下面的行。确保将<my-server-name>替换为您服务器的实际名称。

mkdir /etc/apache2/ssl
mv ~/certificates/* /etc/apache2/ssl/.

在下面的代码中,您指定了先前复制SSL证书的(证书密钥和文件)位置。此外,为了使Jenkins在端口9090上重定向,您将添加ProxyPass参数并启用ProxyPreserveHost

ServerName <my-server-name>
SSLCertificateFile    /etc/apache2/ssl/apache.crt
SSLCertificateKeyFile /etc/apache2/ssl/apache.key
ProxyPreserveHost On
ProxyPass / http://127.0.0.1:9090/
ProxyPassReverse / http://127.0.0.1:9090/
Updating default SSL Apache site configuration file

5. 现在依次运行以下命令以启用SSL模块,启用您修改过的站点(第四步)并重新启动Apache服务。

# 启用SSL模块,以便您可以使用SSL连接。
sudo a2enmod ssl proxy proxy_http proxy_balancer
# 启用您修改过的站点(第四步)
sudo a2ensite default-ssl.conf
# 重新启动Apache服务
sudo service apache2 restart

最后,导航到您的Jenkins实例,但这次请使用HTTPS,如下所示。

正如您所看到的,Jenkins成功地通过HTTPS端口打开了SSL连接。如果看到警告符号显示不安全消息,不要担心。您会收到此警告,因为您使用的是自签名证书(由您创建),而不是由证书颁发机构颁发的。

Accessing Jenkins Instance with SSL connections on HTTPS port

结论

在本教程中,您学会了如何在Ubuntu机器上安装Jenkins,并验证您可以安全访问Jenkins实例。

现在,您打算如何提升Jenkins的使用?也许是自动化Web部署?或者创建一个Jenkins CI CD流水线以改善您的软件开发流程?

Source:
https://adamtheautomator.com/install-jenkins/