发布于 2026-01-06 0 阅读
0

使用 Jenkins 进行 CI/CD

使用 Jenkins 进行 CI/CD

你好,希望你一切安好。今天我们来了解一下持续开发和持续集成(CI/CD)工具。

Jenkins 是一个开源自动化服务器,可用于自动化与软件构建、测试、交付或部署相关的各种 任务


拿出你们的笔记本电脑,我们来自动化一些任务。

自动化


先决条件

🎯 Jenkins点击下方链接 ⬇️
🎯 需要一些脚本编写知识
🎯 您的机器上已安装 Java


议程

🎯 Jenkins 设置
🎯 创建作业
🎯 使用 Cron 表达式调度作业
🎯 远程触发
🎯 Webhook 和轮询 SCM
🎯 切换用户


Jenkins 设置

按照安装指南操作后,Jenkins 的默认端口是 802.1 8080。您可以使用任何浏览器访问http://localhost:8080该端口。安装指南已包含在下方的资源部分。
图片描述


⏭️ 之后,输入您在设置过程中创建的用户名和密码。您的控制面板应该如下所示:

图片描述


创造就业机会

现在让我们创建第一个任务。
图片描述

给它命名,选择free style project并单击“确定”

图片描述


您已被重定向到此页面。

图片描述

我选择使用窗口外壳是因为我的 Windows 机器上安装了 Jenkins。
图片描述


⏭️接下来,我们将着手开展工作。
图片描述


📝 绿色代表成功。
图片描述


我们来看看结果。

图片描述


结果

图片描述


工作调度

既然我们已经了解了如何创建新物品,接下来让我们看看如何使用自动化工具来实现这个任务。克朗

Cron 是内置的任务调度器——用于在固定时间运行任务、重复执行等等。

现在让我们使用以下命令安排构建:定时任务表达式找到该configure图标并点击它。
图片描述


⏭️ 选择定期构建选项

图片描述

图 1.8

图片描述
在描述图中Fig 1.8,我们以 1 分钟的间隔触发一次构建。

⚠️ 请记住在相邻的两颗星之间留出空格。

关于 cron/调度程序的一些说明:每个星号代表时间,即第一个星号(秒),第二个星号(分钟),依此类推。

图片描述

点击此处了解更多关于 cron 表达式的信息


⏭️ 让我们查看一下构建历史记录,看看是否cron调度器确实有效。

图片描述


远程触发器

我们还有其他构建文件的方法。让我们untick定期构建并选择build triggers
图片描述

⏭️ 这是令firebuild牌。然后我们以 URL 的形式输入远程触发器。点击应用并保存。URL
应如下所示:
http://localhost:8080/job/myfirstjob/build?token=firebuild

⏭️ 为了清晰起见,我已经清除了构建历史记录。
图片描述

💡 现在让我们在浏览器中运行上面的 URL;我们现在有了一个新的构建触发器。
图片描述

所以,只要你有远程触发链接,你就可以使用任何浏览器从任何地方进行构建。


参数化作业:

构建参数允许我们将数据传递给 Jenkins 作业。使用构建参数,我们可以传递任何想要的数据:git 分支名称、密钥凭据、主机名和端口等等。

点击配置图标
图片描述

⏭️ 选择参数化选项
图片描述

⏭️ 添加参数,选择字符串参数
图片描述

图片描述

⏭️ 如果你仔细观察,你会发现build with parameter
图片描述

⏭️ 点击构建
图片描述


Webhook 和 Poll SCM

Webhook 是一种机制,用于响应推送到 Git 存储库的提交,自动触发 Jenkins 项目的构建。

尽管

Poll SCM 会定期轮询 SCM,以检查是否进行了更改(即新的提交),如果自上次构建以来推送了新的提交,则会构建项目。

要使用 webhook,我们必须首先连接到我们的源代码管理器 git。
图片描述

图片描述
根据仓库的不同,将 Git 分支切换到 main 或 master。⚠️
对于私有仓库,需要提供凭据。


⏭️ 我们使用带有定时任务的投票功能
图片描述


GitHub Web Hook

📝 前往配置并选择 GitHub Webhook
图片描述

📝 前往您在 GitHub 上的存储库,找到并点击 web-hook settings section
图片描述

📝 点击添加
图片描述

将 Jenkins URL 添加到有效负载中。
图片描述

⚠️ 上述方法对 localhost 无效,要使 localhost 成为公共 IP 地址,我们需要 ngrok 进行转发。

下载并安装。暴露 Jenkins 端口以8080获取 URL
图片描述

图片描述

当我们访问该网址时,会得到:

图片描述

接下来,我们将 ngrok 转发的 URL 粘贴到 GitHub Webhook 中, 点击并刷新页面。刷新后,页面会显示绿色 ✅
图片描述
Add webhook
图片描述

⏭️ 现在,让我们使用从 ngrok 生成的转发 URL 连接到 Jenkins webhook 登录 Jenkins。

要构建,请编辑您的 GitHub 仓库,提交更改并刷新 Jenkins 页面。
图片描述

成功之后,我们会得到
图片描述


管理用户

除了最初创建的第一个用户之外,我们再创建一个用户。

⏭️ 点击管理 Jenkins
图片描述

⏭️ 在安全部分,点击manage users
图片描述

⏭️ 点击create users
图片描述

⏭️ 输入凭据

图片描述

结果:

图片描述


切换用户

现在我们可以注销管理员用户,然后使用该testuser帐户登录。

图片描述

登录时可以看到访问被拒绝,因为我们需要授予该用户权限或提升权限才能在 Jenkins 中执行某些角色。

图片描述

让我们注销测试用户,并以管理员用户身份登录,通过基于角色的访问控制授予访问权限。

⏭️ 首先,我们需要让用户能够看到我们所有的任务。请转到“管理 Jenkins”,然后选择“配置全局安全”。

图片描述

authorization我之前已将其设置为“基于角色”,现在我将更改它 。点击“应用”,保存并注销。之后,您就可以使用测试帐户登录了。Anyone can do anything
图片描述

图片描述

现在是测试用户该账户可以看到所有已创建的作业。这不是最佳实践,因为我们不应该授予任何用户在 Jenkins 上执行某些操作的权限。

我们为此使用了基于角色的授权策略插件。点击manage plugin并搜索基于角色的授权策略。
图片描述

要使用角色库,请转到“管理 Jenkins”并配置全局安全。此时角色库选项应该可用。 然后返回“管理 Jenkins”并单击“角色库”。
图片描述
Manage and Assign Roles
图片描述

您将被重定向到此页面
图片描述

点击管理角色
图片描述

现在您可以勾选要为此角色启用的访问权限。保存并应用
图片描述

testuser现在让我们通过添加我们的.来分配角色。
图片描述

现在我们可以勾选要分配给测试用户帐户的角色。
图片描述

点击“应用并保存”。
现在让我们从主帐户注销,然后使用我们的测试用户帐户登录。
图片描述

之所以会出现这种情况,access denied 是因为我没有根据之前的配置授予该用户帐户查看权限。让我编辑一下,然后授予它。查看权限我将注销testuser管理员帐户,并启用查看权限和总体访问权限。

图片描述

图片描述
点击应用并保存。现在退出管理员账户,然后使用testuser账户登录。

结果:图片描述


配置系统

在这里您可以设置一些参数,例如 Jenkins URL、GitHub 服务器等。
图片描述
图片描述


电子邮件通知

在我们的 CI/CD 管道中,当构建过程或事务失败时,我们可以通过电子邮件通知收到通知。

设置方法:找到Configure System电子邮件设置部分。
图片描述

返回配置

图片描述

然后点击首选的帖子构建操作
图片描述


结论

希望这篇文章对你开始使用 Jenkins 构建 CI/CD 工作流程有所帮助。我计划在下一篇教程中部署一个 NodeJS 项目。感谢阅读。

资源

我强烈推荐Thetips4you 的 Jenkins 入门教程。经作者完全许可,我在此摘录了该教程的部分内容。

点击此处了解 CI/CD

guru99 的安装指南

文章来源:https://dev.to/drsimplegraffiti/cicd-using-jenkins-j83