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

如何通过CircleCI实现GitHub分支更新时自动更新AWS EC2上的源代码

实现方案

你已经完成的SSH密钥绑定配置可直接复用,不需要额外调用复杂的AWS Orbs,通过SSH远程执行命令即可实现代码自动同步,以下是完整操作步骤:


第一步:配置CircleCI项目环境变量

先在对应CircleCI项目的「Project Settings」->「Environment Variables」中添加3个非敏感配置变量,避免硬编码信息:

  • EC2_PUBLIC_IP:你的EC2实例公网IP地址
  • EC2_SSH_USER:EC2的SSH登录用户名,Amazon Linux默认是ec2-user,Ubuntu默认是ubuntu
  • EC2_CODE_PATH:EC2上存放源代码的绝对路径,比如/home/ec2-user/my-project

第二步:编写.circleci/config.yml配置文件

直接使用轻量基础镜像即可完成操作,配置示例如下:

version: 2.1

# 自带SSH客户端的轻量基础镜像
executors:
  base-executor:
    docker:
      - image: cimg/base:stable

jobs:
  update_ec2_source_code:
    executor: base-executor
    steps:
      # 加载你之前添加到CircleCI的SSH密钥,替换为自己的SSH密钥指纹
      - add_ssh_keys:
          fingerprints:
            - "替换为你的SSH密钥指纹,示例格式:ab:cd:ef:12:34:56:..."
      # 将EC2加入信任主机列表,避免SSH连接时弹出交互提示
      - run:
          name: 添加EC2主机到信任列表
          command: ssh-keyscan ${EC2_PUBLIC_IP} >> ~/.ssh/known_hosts
      # 远程连接EC2执行代码更新
      - run:
          name: 同步最新代码到EC2
          command: |
            ssh ${EC2_SSH_USER}@${EC2_PUBLIC_IP} "
              cd ${EC2_CODE_PATH}
              # 拉取对应分支的最新代码,替换为你要同步的分支名,比如main
              git pull origin main
              # 如有后续操作(安装依赖、重启服务等)可在下方添加,示例:
              # npm install && pm2 reload app.js
            "
workflows:
  auto_sync_code:
    jobs:
      - update_ec2_source_code:
          # 配置触发条件,只有对应分支推送时才执行同步
          filters:
            branches:
              only: main

请将上述配置中占位的SSH密钥指纹、同步分支名替换为你的实际业务配置


注意事项

  • 提前在EC2上手动执行一次对应仓库的git clone,确保EC2_CODE_PATH路径存在,且SSH登录用户对该路径有读写权限
  • 确保EC2实例的安全组入站规则放开22端口,允许CircleCI的IP段访问,避免SSH连接被拒绝
  • 如果你的GitHub仓库是私有仓库,需要提前在EC2实例上配置仓库的部署密钥,保证EC2有权限拉取最新代码
  • 配置完成后可推送一个小改动到对应分支,查看CircleCI的Job运行日志即可快速排查权限、路径类错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 12:15:05