🚀 利用阿里云抢占式实例(Spot Instance)实现低成本、高性能的 GitLab CI/CD 构建流水线。
GitLab 原生的自动伸缩功能目前仅支持 Amazon AWS、Google Cloud Platform 和 Microsoft Azure 云平台,尚未官方支持阿里云(Alibaba Cloud)。这在一定程度上限制了国内用户或阿里云生态用户高效集成 GitLab CI/CD 的能力。
本脚本项目旨在填补这一空白,为 GitLab 与阿里云的深度集成提供自动化支持。通过本方案,用户可便捷地在阿里云上实现项目存储管理及持续构建与部署,从而提升开发运维效率,降低云资源成本,打造更贴合本土云环境体验。

本项目通过 GitLab CI/CD 流水线动态调用阿里云 API 创建抢占式实例(Spot Instance),在创建的实例中执行代码构建与部署任务。构建完成后自动释放实例,实现资源按需使用、成本极低的持续集成/持续部署方案。
适用于构建任务重、对服务器性能要求高,但希望控制基础设施成本的团队。
核心特点:轻量 GitLab 服务 + 临时构建高性能实例 + 自定义 Runner 调度
GitLab 本体服务器仅需承担调度职责,性能要求极低,所有繁重的构建任务由临时高性能实例完成。
✅ 成本极低:抢占式实例价格可低至按量付费实例的 10%~30%
✅ 性能强劲:可选择高配实例(如 8C16G、GPU 实例)快速完成构建
✅ 弹性伸缩:每次构建独立运行,避免资源争用
✅ 自动化管理:创建 → 构建 → 部署 → 销毁 全流程自动化
✅ 轻量 GitLab 服务:无需高配服务器运行 GitLab 和 Runner
- 服务器:用于搭建Gitlab和Gitlab-runner基础环境
- 阿里云镜像:用来构建实例的镜像(docker,java23,gradle、kubectl)
- 密钥对:用于登录临时创建的实例
- 搭建GitLab和Gitlab-runner完毕后,注册自定义执行器的runner:https://docs.gitlab.com/runner/register/ 搭建gitlab-runner时,需要挂载目录到启动的容器中,以便后续脚本的放置:
prepare.sh: 创建ecs实例
run.sh:具体业务逻辑
cleanup.sh:删除创建的ecs实例
一次CI所需成本在0.02块,即两分左右。(以一个月构建1000次为例:10000.025=25块钱,一年2512=300块)。对比之前准备一台 4核8G 包年计费实例,成本下降到了1/10

💡 用更少的成本,跑更快的构建!


