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

使用GitHub Actions+Yarn部署Angular到EC2脚本静默失败求排查

排查Angular应用部署至EC2的GitHub Action脚本问题

以下是你的YAML脚本中可能存在的问题及对应排查方向:

  • SSH密钥引用语法错误:
    SSH_PRIVATE_KEY: $ {{ secrets.SSH_PRIVATE_KEY }} 里的变量引用存在多余空格,正确写法应为 ${{ secrets.SSH_PRIVATE_KEY }}。空格会导致GitHub无法正确解析密钥变量,直接引发SSH连接失败。

  • Angular CLI全局安装的路径问题:
    用yarn global add @angular/cli安装后,ng命令可能不在GitHub Action的环境变量PATH中,后续构建步骤可能找不到命令。建议改为在项目依赖中本地安装@angular/cli,或在构建步骤用npx ng build --prod替代自定义的build:prod脚本,规避全局路径问题。

  • 构建产物路径验证:
    确认SOURCE: "dist/my-client-app"是否与Angular实际构建输出路径一致。可在Build步骤后添加调试步骤,查看实际生成的目录:

    - name: Check build output
      run: ls -la dist/
    

    避免因路径写错导致无文件可部署。

  • EC2 SSH连接前置条件:

    • 确认EC2安全组已开放22端口,允许GitHub Actions的IP访问(可临时开放0.0.0.0/0用于排查,后续需收紧权限)。
    • 验证GitHub Secrets中存储的SSH_PRIVATE_KEY是否与EC2实例的密钥对完全匹配,密钥不能有多余换行或格式损坏。
    • REMOTE_HOST填写实例公网IP是正确的,但要确认IP未发生变化(未使用弹性IP时,实例重启后IP会改变)。
  • 目标目录权限问题:
    EC2上的/var/www/html/my-client-app目录默认归www-data用户组所有,ubuntu用户可能没有读写权限。可在部署前通过SSH执行命令调整权限:

    - name: Prepare target directory
      uses: easingthems/ssh@2.1.5
      with:
        SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }}
        REMOTE_HOST: "你的实例IP"
        REMOTE_USER: "ubuntu"
        COMMAND: sudo mkdir -p /var/www/html/my-client-app && sudo chown -R ubuntu:ubuntu /var/www/html/my-client-app
    
  • 查看详细日志排查静默失败:
    在GitHub Action的运行记录中,展开Deploy步骤的详细日志,多数“静默失败”实际存在隐藏错误输出。若日志被截断,可在Action中添加verbose: true参数(参考对应SSH Action文档)开启详细调试信息。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 15:45:39