亚马逊AWS官方博客

打造 CI/CD 平台:Jenkins 在 AWS 上的一键部署指南

引言

随着软件交付速度和质量要求的不断提高,持续集成与持续部署(CI/CD)已成为现代开发流程的核心组成部分。Jenkins 作为业界最流行的开源 CI/CD 工具之一,拥有强大的插件系统和广泛的社区支持,为自动化构建、测试和部署提供了理想的解决方案。本文将介绍如何在 AWS 云平台上一键部署 Jenkins,实现一个高可用、易维护、可扩展的云端 CI/CD 平台,该方案已在多个项目中成功验证。

系统概述

Jenkins 是一款用于自动化各种开发任务的开源服务,具备以下核心特性:

  • 支持流水线自动化(Pipeline as Code)
  • 丰富的插件生态系统(Git, Docker, Slack, Maven, etc.)
  • 易于配置和扩展的 Web UI
  • 支持多种构建环境和节点管理

部署准备

1. 创建密钥对

在开始部署之前,需要创建 EC2 密钥对:

  • 登录 AWS 控制台,然后进入 EC2 服务
  • 选择”密钥对”→”创建密钥对”
  • 输入密钥对名称,选择格式
  • 下载并安全保存密钥文件

一键部署步骤

1. 启动 CloudFormation 堆栈

(1)点击链接下载 CloudFormation 模板:[下载链接]

(2)进入 CloudFormation 控制台页面创建堆栈:[控制台链接](进入控制台后请确保所在区域与创建密钥对所在的区域一致。)

(3)选择现有模板->上传模板文件->选择之前下载的 CloudFormation 模板文件->下一步

2. 指定堆栈参数

(1)自定义堆栈名称

(2)AMI ID(默认为 Amazon Linux 2),下表为支持的 AMI ID

操作系统 CPU 架构 AMI ID
Amazon Linux 2 x86_64 /aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2
ARM64 /aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-arm64-gp2
Amazon Linux 2023 x86_64 /aws/service/ami-amazon-linux-latest/al2023-ami-kernel-default-x86_64
ARM64 /aws/service/ami-amazon-linux-latest/al2023-ami-kernel-default-arm64
Ubuntu 22.04 LTS x86_64 /aws/service/canonical/ubuntu/server/22.04/stable/current/amd64/hvm/ebs-gp2/ami-id
ARM64 /aws/service/canonical/ubuntu/server/22.04/stable/current/arm64/hvm/ebs-gp2/ami-id

(3)实例类型(默认为 t3.large)

(4)点击下一步

3. 配置堆栈选项

以下为可选配置:

  • 标签
  • 权限设置
  • 高级选项

若无特殊需求,直接使用默认配置点击下一步即可

4. 部署确认

  • 检查配置摘要
  • 确认 IAM 资源创建
  • 提交部署,等待部署完成(部署时间约为十分钟)

部署验证

1. 访问 CloudFormation 输出页面获取 Jenkins 的访问 URL(若打开页面出现错误,请等待一段时间后再次刷新页面即可):

2. 系统登录验证:

(1)首次访问时,Jenkins 会提示输入管理员密码,可以通过图中命令读取初始密码

(2)复制密码后,粘贴到浏览器中

(3)点击 Continue 继续设置 Jenkins 即可成功登陆

3. 成功登录 Jenkins

最佳实践建议

当前部署方案采用直接通过 HTTP 访问 IP 地址的方式进行访问,这种方式存在一定安全隐患。为了提升系统的安全性和高可用性,我们建议您使用 Amazon Route 53 作为 DNS 服务[参考链接],将 IP 访问方式改为域名访问。Route 53 支持多种智能路由策略,能够根据用户的地理位置、健康检查结果等,将流量引导至最优的终端节点。同时,建议配合 AWS Certificate Manager (ACM),为域名申请和管理 SSL/TLS 证书,实现 HTTPS 加密传输,确保数据传输的安全性。

在流量入口层,我们推荐使用 Application Load BalancerALB)[参考链接]进行流量分发。ALB 不仅能均衡分配请求到后端实例,还支持基于 URL 的流量路由,提升系统的灵活性和扩展性。此外,结合 Auto Scaling Group [参考链接],可以根据实际负载自动扩展或收缩计算资源,在保障系统性能的同时有效优化成本。

结论

本文提供的 Jenkins 在 AWS 上的一键部署方案,通过 CloudFormation 充分体现了基础设施即代码(IaC)的实践精神。该方案显著降低了在云端搭建 CI/CD 平台的技术门槛,同时确保了部署过程的一致性与可重复性。依托 AWS 的可扩展基础设施,开发团队可以快速构建一个高效、安全的持续集成与部署环境,有效支撑现代 DevOps 流程。未来可通过与更多 AWS 服务集成,进一步提升系统的自动化能力、安全性与可维护性,优化开发体验。

本篇作者

许伊夏

亚马逊云科技解决方案架构师,专注于为企业提供基于亚马逊云服务的架构设计、技术咨询及最佳实践指导,助力企业实现云端数字化转型。