Jenkins打造满足网络安全领域发展的CI/CD

2023-09-25 14:16:17 浏览数 (3)

对于一家必须领先于黑客、欺诈者和网络犯罪趋势的全球网络安全公司来说,构建、测试和发布软件的繁琐遗留流程是一个巨大的挑战。

背景

这家国际网络安全公司为全球的企业、政府和小型企业提供服务。开发团队总是有太多的悬念,多个项目同时进行。其中包括虚拟化工具,如基于内核的虚拟机 ( KVM ) IKVM 和 Oracle 的开源 VirtualBox。项目之间的相互依存关系解决的比较好。然而,几乎所有的事情都是通过 cron 作业管理的,cron 作业是类 Unix 计算机操作系统中基于时间的调度程序,可以将作业编程为在固定时间、日期或间隔定期运行。

目标:将所有内容转移到 Jenkins,而不是依赖 cron 作业和脚本。


解决方案和结果

主要目标是拥有一个自动化的 CI/CD工具链,并通过使用 Jenkins 的几个步骤,我们得到了我们想要的。每个项目都会用 Jenkinsfile 替换 cron 作业脚本和 makefile,我们使用 Jenkins 插件 API 或基于 http 的 API,而不必调用 shell 命令。

然后我们遇到了另一个挑战:将所有代码移动到 GitLab

为此,我们的开发人员将代码提交到 GitLab,这会触发 Jenkins 调用 Jenkinsfile。我们在容器上构建代码,后端使用 Python/C ,前端使用 node.js,允许我们推送到私有开源容器镜像注册中心 Harbor。现在我们可以拉取新镜像并部署到测试平台。完成后,我们可以启动自动化测试,如果测试通过,PM 可以发布最新版本。

我们必须遵循一些基本步骤,包括:

  • 如何说服开发人员使用 Jenkins:
  • 我们为每个项目创建了一个 Jenkinsfile
  • 我们删除了 Makefile 和 cron 作业脚本
  • 我们让开发者别无选择
  • 如何通知用户构建/测试结果:
  • 我们使用 Slack 和电子邮件
  • 如何与 GitLab 集成:
  • 我们使用了 Jenkins-GitLab-plugin
  • 如何与容器集成:
  • 我们使用了Jenkins-Docker-plugin
  • 如何监控Jenkins:
  • 我们依赖 Grafana 中的 Prometheus

现在,每个人都有一个 Jenkins 帐户,一切都可以在 Jenkins UI 上可见。这就像拥有一个 DevSecOps 中心。我们取得了优异的成绩,包括:

  • 一切都是自动触发的
  • 每个开发人员/QA 都知道他们的代码到底发生了什么,而且是实时的
  • 与 GitLab 集成使代码管理更容易
  • 与私有注册表的集成使镜像管理更容易
  • Jenkins 状态始终可见,以防服务器或服务出现故障

1 人点赞