如何在 CentOS 上安装 Jenkins 并连接到 GitHub
在此页
- 詹金斯安装:
- 配置设置:
- 詹金斯配置:
- 安装插件:
- 添加凭据:
Jenkins 提供广泛使用的开源 CI/CD 工具。在本文中,我们将学习如何安装 Jenkins 并使用 Github 配置它以使用 SSH 将文件发送到服务器。
詹金斯安装:
Jenkins 是基于 JAVA 的应用程序,因此首先我们需要安装 JAVA。以下命令将在 centos 7 上安装 JAVA。
sudo yum install java-1.8.0-openjdk-devel
验证Java版本
[ ~]# java -version
openjdk version "1.8.0_212"
OpenJDK Runtime Environment (build 1.8.0_212-b04)
OpenJDK 64-Bit Server VM (build 25.212-b04, mixed mode)现在使用以下命令配置 Jenkins 存储库。
curl --silent --location http://pkg.jenkins-ci.org/redhat-stable/jenkins.repo | sudo tee /etc/yum.repos.d/jenkins.repo
这将显示以下输出。
[jenkins]
name=Jenkins-stable
baseurl=http://pkg.jenkins.io/redhat-stable
gpgcheck=1然后运行以下命令添加 Jenkins 密钥。
sudo rpm --import https://jenkins-ci.org/redhat/jenkins-ci.org.key
现在我们已经配置了 Jenkins 存储库,我们准备使用以下简单命令安装 Jenkins。
sudo yum install jenkins
安装完成后检查 Jenkins 服务并在系统重启时启用它。
sudo systemctl start Jenkins
sudo systemctl enable jenkins现在重新启动系统并使用以下命令确保 jenkins 服务正在运行。
sudo systemctl enable jenkins
现在允许防火墙中的 Jenkins。
firewall-cmd --permanent --add-port=8080/tcp
firewall-cmd --reload配置设置:
我们不能直接使用 Jenkins,我们需要在 Web 浏览器中输入域名或 IP 地址,然后输入 Jenkins 默认端口号 8080。
在上面的截图中,我们需要输入一次 Jenkins 自动生成的密码。运行以下命令以获取密码。
sudo cat /var/lib/jenkins/secrets/initialAdminPassword
这将给出类似 2179c452db3b45f98cf9e4c4961ab635 的输出
输入密码后,我们需要给 Jenkins 系统安装插件。为此,只需选择已安装的建议插件即可安装所有默认插件。
填写所有详细信息,然后单击保存并继续。
现在它将要求实例配置,我们也可以在其中更改默认端口号。
现在我们的 Jenkins 已经保存并可以使用了。
恭喜,新的 Jenkins 设置成功完成并可以使用了。
以下屏幕截图显示了 Jenkins 的默认仪表板。
詹金斯配置:
安装插件:
在我们继续下一步之前,请确保安装以下插件。
转到管理 Jenkins -> 管理插件 -> 可用 -> 过滤器 -> 搜索与 GitHub 集成所需的以下插件。
通过 SSH 发布
Git
GitHub 插件
Git 客户端插件在这里,Publish Over SSH 插件需要通过 SSH 将我们的文件推送到服务器。
添加凭据:
我们需要在 Jenkins 中添加服务器凭据。
转到 Jenkins 仪表板→凭证→系统→全局凭证(不受限制)→添加凭证
我们可以选择要安装的凭据类型。在这里我们添加 GitHub 凭据用户名和密码以备后用。
詹金斯服务器上的 ssh。
Jenkins 可以使用 ssh 连接到远程服务器,并能够运行脚本、命令或将文件从一台服务器复制到另一台服务器。
为此,我们需要在 Jenkins 服务器和远程服务器之间创建一个 ssh 连接。
下一步在我们想要与 Jenkins 服务器连接的 Jenkins 上添加 SSH 凭据。
我们想使用 root 用户连接到 Jenkins 的 Web 服务器,例如,我们的 Web 服务器是 138.197.151.144 和用户 root,因此我们需要使用 ssh 登录到该服务器。
ssh
现在转到主目录并 cd 到 .ssh 文件夹。
cd ~/.ssh
下一步将是在我们的 Web 服务器上为 root 用户生成私钥和公钥。
ssh-keygen -t rsa -f private_key_for_jenkins
运行上面的命令后,它会要求“输入密码”,我们不需要输入密码。所以点击回车两次,它会在网络服务器private_key_for_jenkins和private_key_for_jenkins.pub上生成两个密钥。
这里 private_key_for_jenkins 是 138.197.151.144 的私钥,我们需要将这个文件的内容用于我们的 Jenkins 服务器。
我们有第二个名为 private_key_for_jenkins.pub 的文件,它是 Web 服务器的公钥。我们需要将其数据复制到位于同一目录中的另一个名为 authorised_keys 的文件。
在大多数情况下,authorised_keys 文件存在于 ~/.ssh/ 文件夹中,但有时它会丢失,我们需要生成新的 authorised_keys 文件。只需运行以下命令将其复制到 authorised_keys,此命令还会生成新的 authorised_keys(如果可用)。
cat private_key_for_jenkins.pub > authorized_keys
现在登录到 Jenkins 服务器,然后转到 Manage Jenkins -> Configure Systems
我们可以在 Web 浏览器中直接写入 http://ip_address:8080/configure 的替代方法,这将打开 Configure Systems 以进行 ssh 配置。
现在,在“配置 Jenkins”中查找 SSH 服务器服务器部分。请注意,仅当我们在 Jenkins 服务器上安装了“SSH Credential Plugin”时,此部分才可用。
转到通过 SSH 发布部分转到密钥并粘贴 private_key_for_jenkins 的内容
现在在 SSH 服务器选项中,单击添加按钮并输入 SSH 服务器详细信息。我们可以从高级选项更改 ssh 端口和其他设置。
进行更改后,单击“测试配置”,如果所有设置都正确,我们应该会收到如上图所示的成功消息。
请注意,我们可以根据使用 ssh 在多个服务器上发布相同代码的要求添加多个服务器。
为此,我们需要为前面提到的每个服务器生成私钥,并将它们的私钥添加到 Jenkins 服务器。
最后,单击“保存”按钮并保存我们的更改。我们已经成功地创建了一个到远程服务器的 ssh 连接。现在我们可以将文件发送到远程服务器,也可以在该服务器上执行任何命令或脚本。
使用 Github 配置 Jenkins
对于由 PUSH 和 PULL 请求触发的构建自动化,需要将 Jenkins WebHook 添加到每个 GitHub 存储库或组织 webhook。
从 Github 存储库配置 webhook 的步骤。
1. 登录您的 GitHub 帐户
2.点击我们需要设置webhook的repository
3.转到该存储库的设置选项
4. 点击 Webhooks 并添加 Payload URL,它看起来像 http://jenkins_ip:8080/github-webhook/
5. 从 Content type 中选择 \application/json\ 作为编码类型
6. 将 \Secret\ 留空(除非在 Jenkins \Configure System -> GitHub plugin\ 部分创建并配置了 secret)
7. 选择“让我选择个别事件”
8.启用PUSH和Pull Request事件
9.确保选中“活动”
10. 最后点击“添加Webhook”按钮。
查看下面的屏幕截图了解详细信息。
Jenkins 现在将收到该存储库的推送和拉取请求通知,相关构建将自动触发。
在 Jenkins 上创建第一份工作
现在转到我们的 Jenkins 仪表板,选择“新建项目”,然后输入项目名称,选择“自由式项目”。
单击确定后,您将被重定向到配置部分。
我们现在处于常规选项卡,如下面的屏幕截图所示。通常,选项卡给出项目的描述并单击 Github 项目,在这里输入我们项目的 GitHub URL。
现在转到源代码管理,然后单击 Git 并输入我们要从中获取代码的存储库 URL。
我们已经添加了 GitHub 凭据,单击下拉菜单并选择 GitHub 用户名和密码。
接下来,转到 Branches 构建并选择 */master 分支,我们可以根据我们的项目要求添加任何分支。
现在转到构建触发器选项卡并为 GITScm 轮询选项选择 Github 钩子触发器,这将在我们对 GitHub 存储库进行任何更改时自动
构建。现在转到构建环境并选择发送文件或在构建运行后通过 SSH 执行命令。
这将在构建运行后将文件发送到远程服务器。
转到 SSH 发布者 --> SSH 服务器 --> 从下拉菜单中选择服务器名称
在这里我们也可以设置高级参数,但目前我们只进行基本设置。
现在我们需要添加我们想要通过 ssh 复制的文件类型,在这里我们选择我们 GitHub 存储库的所有文件夹和文件。要添加文件和文件夹选择,只需在源文件中添加 **/*。
类似的方式,我们可以在 Exec 命令文本框中给出任何命令,这些命令将在我们的远程服务器上执行。
然后指定我们需要复制文件的远程目录。这是一个可选选项。
SSH 发布者 --> 传输 --> 传输集 --> 源文件 --> 添加 **/*
SSH 发布者 --> 传输 --> 传输集 --> 远程目录 --> /jenkins-test
SSH 发布者 --> 传输 --> 传输集 --> 执行命令 --> 命令
默认情况下,Jenkins 会排除某些文件,如 .git .svn .gitignore 等。这里我们要将所有文件复制到远程服务器。为此,单击 Exec 命令下方的高级按钮,然后选中“无默认排除”选项。
就是这样,我们在构建后操作中有很多选项,我们可以根据项目需要使用它们。
构建测试
是时候测试我们的配置了。
转到 Jenkins 仪表板,然后单击我们的项目 Jenkins-test。
然后单击构建的立即构建选项,如果构建过程失败,它将显示带有黄色图标的构建版本号。
让我们验证我们的构建过程,只需单击屏幕截图中显示的构建编号。
现在点击控制台输出。在这里我们可以在详细模式下看到每个进程。
最后,我们将在控制台输出的末尾看到 \Finished: SUCCESS\ 行。
恭喜!我们的 Jenkins 现在已经成功地与 GitHub 集成并可以使用了。