You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过GitLab CI/CD实现AWS EC2数据自动处理并推送至GitLab仓库

需求可行性确认

该需求完全可实现,GitLab CI/CD的bash runner支持主动拉取EC2实例上的文件,不需要依赖反向推送逻辑。

具体操作步骤

第一步:配置EC2访问凭证

  • 在EC2实例上创建专用服务账号,不要使用root账号,仅给该账号分配Amppot日志sqlite文件的只读权限
  • 生成CI专用SSH密钥对,不要使用个人日常使用的密钥:执行ssh-keygen -t ed25519 -C "gitlab-ci-amppot" -f gitlab-ci-ssh-key,生成时全程不要设置密码
  • 将生成的公钥gitlab-ci-ssh-key.pub的内容,追加到EC2服务账号的~/.ssh/authorized_keys文件中
  • 进入GitLab项目的「设置」-「CI/CD」-「变量」页面,新增三个变量:
    • EC2_SSH_PRIVATE_KEY:值为刚才生成的私钥gitlab-ci-ssh-key的全部内容,变量类型选择「文件」,勾选「保护变量」「掩码变量」
    • EC2_USER:值为EC2上创建的专用服务账号的用户名
    • EC2_HOST:值为EC2实例的公网IP或域名

第二步:上传处理脚本到GitLab项目

把你编写的sqlite转csv的Python脚本上传到项目根目录,脚本中的输入、输出路径统一使用相对路径,例如输入路径写./raw_data/amppot.db,输出路径写./processed_data/amppot_$(date +%Y%m%d).csv即可。

第三步:编写.gitlab-ci.yml配置文件

将以下内容保存为.gitlab-ci.yml放在项目根目录,按照注释替换成你自己的实际配置即可:

stages:
  - pull_data
  - process_data
  - push_result

# 全局前置配置:安装运行依赖
before_script:
  - apt-get update && apt-get install -y openssh-client python3 python3-pip
  - pip3 install pandas sqlite3 # 你脚本用到的所有Python依赖都写在此处
  - mkdir -p raw_data processed_data
  # 配置SSH免密访问EC2
  - chmod 600 $EC2_SSH_PRIVATE_KEY
  - eval $(ssh-agent -s)
  - ssh-add $EC2_SSH_PRIVATE_KEY
  - echo "StrictHostKeyChecking no" >> /etc/ssh/ssh_config

# 第一阶段:从EC2拉取sqlite原始文件
pull_ec2_data:
  stage: pull_data
  script:
    # 替换冒号后的路径为EC2上sqlite文件的实际存储路径
    - scp $EC2_USER@$EC2_HOST:/path/to/your/amppot.db ./raw_data/
  only:
    - schedules # 仅定时任务触发时运行,如需每次推送代码都运行可改为main

# 第二阶段:运行Python脚本处理数据
process_amppot_data:
  stage: process_data
  script:
    # 替换成你自己的Python脚本文件名
    - python3 your_process_script.py
  needs:
    - pull_ec2_data

# 第三阶段:将生成的csv推送回仓库
push_csv_to_repo:
  stage: push_result
  script:
    - git config --global user.name "GitLab CI Bot"
    - git config --global user.email "ci-bot@your-domain.com"
    - git add processed_data/*.csv
    - git commit -m "chore: auto update amppot csv $(date +%Y%m%d)"
    - git push https://gitlab-ci-token:${CI_JOB_TOKEN}@${CI_SERVER_HOST}/${CI_PROJECT_PATH}.git HEAD:main
  needs:
    - process_amppot_data
  only:
    - schedules

第四步:配置定时触发规则

进入GitLab项目的「构建」-「流水线计划」页面,新建定时任务,按照你的需求设置运行频率即可,例如设置为每天凌晨2点运行,刚好拉取前一天的完整日志。

注意事项

  • 如果EC2配置了安全组限制,需要将GitLab runner的公网IP添加到EC2安全组的SSH入站规则中,开放22端口访问权限
  • 配置完成后可以手动触发一次流水线测试,排查路径、权限相关问题
  • 如果生成的csv文件体积较大,建议配置Git LFS存储大文件,避免仓库体积过快膨胀

内容的提问来源于stack exchange,提问作者bustharime

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 09:57:02