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

GitHub Action部署问题:无法拉取指定Tag版本代码

问题排查与解决方案

核心问题分析

你的部署流程存在两个关键问题:

  1. Runner上的操作无效:Workflow里的git fetch origin ${{ github.ref }}是在GitHub Runner(ubuntu-latest)上执行的,但实际部署动作在EC2服务器完成,这一步对EC2上的代码仓库没有任何影响。
  2. EC2服务器未拉取对应Tag代码:你的Script.sh完全没有更新EC2服务器代码仓库的步骤,直接执行依赖安装和构建,自然无法获取到指定Tag的代码。

具体修正步骤

1. 修正Deploy.yml

移除无用的Fetch only changes up to tag步骤,同时将当前Tag名称通过参数传递给EC2的部署脚本,实现精准拉取:

#Deploy.yml
name: Deploy to EC2

on:
  push:
    tags:
      - '*'

jobs:
  deploy:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout code
        uses: actions/checkout@v2
        with:
          ref: ${{ github.ref }} # 仅用于确保Workflow能正确读取部署脚本,代码拉取逻辑在EC2完成

      - name: Install SSH key
        run: |
          mkdir -p ~/.ssh
          echo "${{ secrets.AWS_SSH_KEY }}" > ~/.ssh/id_rsa
          chmod 600 ~/.ssh/id_rsa

      - name: Add SSH key to known_hosts
        run: |
          ssh-keyscan -t rsa -H ${{ secrets.SERVER_PUBLIC_IP }} >> ~/.ssh/known_hosts

      - name: Deploy to EC2
        run: |
          # 将当前Tag名称作为参数传递给EC2脚本
          ssh -v -i ~/.ssh/id_rsa ubuntu@${{ secrets.SERVER_PUBLIC_IP }} "bash -s ${{ github.ref_name }}" < ./Scripts/Script.sh

2. 修正Script.sh

添加拉取指定Tag代码的步骤,替换原有的直接进入目录逻辑:

echo "********** Running Script .sh file **********"
# 接收Workflow传递过来的Tag名称
TARGET_TAG=$1

cd /home/ubuntu/React-1/FJ6-Prod-React/
# 拉取远程仓库最新标签与分支信息
git fetch origin
# 切换到指定Tag版本
git checkout tags/$TARGET_TAG
# 强制重置本地代码,确保与Tag版本完全一致(丢弃本地未提交修改)
git reset --hard tags/$TARGET_TAG

# 安装依赖(用npm ci替代npm i,保证依赖版本与package-lock.json完全匹配)
npm ci
npm run build

sudo cp -r build/* /var/www/html/
ls -l
pwd
sudo systemctl reload apache2
echo "********** End of Script .sh file **********"

额外说明

  • 回滚旧Tag版本时,只需重新推送目标旧Tag(若之前已推送过,需用git push origin --force <tag-name>),Workflow会自动触发并部署对应版本。
  • git reset --hard用于避免EC2服务器上的本地修改干扰部署,若需保留本地配置文件,可提前将文件加入.gitignore或单独备份。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 09:46:23