Skip to content

DingSheng-DEV/gitlab-aliyun-runner

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GitLab 阿里云弹性伸缩CI/CD脚本

🚀 利用阿里云抢占式实例(Spot Instance)实现低成本、高性能的 GitLab CI/CD 构建流水线。

项目背景

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


项目简介

本项目通过 GitLab CI/CD 流水线动态调用阿里云 API 创建抢占式实例(Spot Instance),在创建的实例中执行代码构建与部署任务。构建完成后自动释放实例,实现资源按需使用、成本极低的持续集成/持续部署方案。

适用于构建任务重、对服务器性能要求高,但希望控制基础设施成本的团队。

核心特点:轻量 GitLab 服务 + 临时构建高性能实例 + 自定义 Runner 调度


工作流程

image

GitLab 本体服务器仅需承担调度职责,性能要求极低,所有繁重的构建任务由临时高性能实例完成。


核心优势

成本极低:抢占式实例价格可低至按量付费实例的 10%~30%
性能强劲:可选择高配实例(如 8C16G、GPU 实例)快速完成构建
弹性伸缩:每次构建独立运行,避免资源争用
自动化管理:创建 → 构建 → 部署 → 销毁 全流程自动化
轻量 GitLab 服务:无需高配服务器运行 GitLab 和 Runner


环境构建方法

准备工作:

  1. 服务器:用于搭建Gitlab和Gitlab-runner基础环境
  2. 阿里云镜像:用来构建实例的镜像(docker,java23,gradle、kubectl)
  3. 密钥对:用于登录临时创建的实例

具体实操:

  1. 搭建GitLab和Gitlab-runner完毕后,注册自定义执行器的runner:https://docs.gitlab.com/runner/register/ 搭建gitlab-runner时,需要挂载目录到启动的容器中,以便后续脚本的放置:
image
  1. 配置注册的runner

    配置后的runner配置详情如下:image 按照上图所示将项目中相关文件放到指定文件夹下。

  2. 项目中脚本主要功能

   prepare.sh: 创建ecs实例
   
   run.sh:具体业务逻辑
   
   cleanup.sh:删除创建的ecs实例
  1. .gitlab-ci.yml配置样例

    image
  2. 按照上述配置完毕之后,触发流水线构建即可。


实际运行效果

原单台虚拟机成本 image

一次CI所需成本在0.02块,即两分左右。(以一个月构建1000次为例:10000.025=25块钱,一年2512=300块)。对比之前准备一台 4核8G 包年计费实例,成本下降到了1/10 image


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

About

Gitlab阿里云弹性伸缩CI/CD脚本

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •  

Languages