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

Github Workflow部署Angular到EC2失败:tar空归档错误求助

问题:Github Workflow部署Angular到EC2时出现tar空归档错误

我是Github Workflow新手,尝试通过它将Angular应用部署到EC2实例,使用的Workflow配置如下:

name: Deploy

on:
  push:
    branches:
      - main

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: Install dependencies
        run: npm ci
      - name: Build application
        run: npm run build --configuration test-website-angular
      - name: Archive build artifacts
        run: tar -zcvf build.tar.gz dist/

  deploy:
    needs: build
    runs-on: ubuntu-latest
    steps:
      - name: Transfer build artifacts to EC2 instance
        uses: appleboy/scp-action@master
        with:
          host: ${{ secrets.HOST }}
          username: ec2-user
          key: ${{ secrets.SSH_PRIVATE_KEY }}
          source: build.tar.gz
          target: /var/www/html/
      - name: Extract and clean up build artifacts
        run: ssh -i ~/.ssh/id_rsa ec2-user@test.com 'tar -zxvf /var/www/angular/build.tar.gz -C /var/www/angular/ && rm /var/www/angular/build.tar.gz'

构建环节执行正常,但在部署步骤中出现如下错误:

tar all files into /tmp/3998473294/TeBaBukwyd.tar
tar: empty archive
exit status 1

解决方案

1. 核心问题:作业间未传递构建产物

Github Actions的每个作业(job)都是独立的运行环境,build作业生成的build.tar.gz不会自动传递到deploy作业中。deploy作业里找不到这个文件,scp-action只能打包空归档,导致报错。

2. 具体修复步骤

步骤1:在build作业中上传构建产物到Github Artifacts

在build作业的最后添加上传artifacts的步骤,把build.tar.gz保存起来:

- name: Upload build artifact
  uses: actions/upload-artifact@v3
  with:
    name: build-tar
    path: build.tar.gz

步骤2:在deploy作业中下载Artifacts

在deploy作业的开头添加下载步骤,拉取之前上传的归档文件:

- name: Download build artifact
  uses: actions/download-artifact@v3
  with:
    name: build-tar

步骤3:修正SSH命令中的路径不一致问题

你的scp目标路径是/var/www/html/,但后续SSH命令却指向/var/www/angular/,路径不匹配会导致解压失败。同时不要硬写主机地址,用secrets中的HOST变量:

- name: Extract and clean up build artifacts
  run: ssh -i ~/.ssh/id_rsa ec2-user@${{ secrets.HOST }} 'tar -zxvf /var/www/html/build.tar.gz -C /var/www/html/ && rm /var/www/html/build.tar.gz'

3. 完整修正后的Workflow配置

name: Deploy

on:
  push:
    branches:
      - main

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: Install dependencies
        run: npm ci
      - name: Build application
        run: npm run build --configuration test-website-angular
      - name: Archive build artifacts
        run: tar -zcvf build.tar.gz dist/
      - name: Upload build artifact
        uses: actions/upload-artifact@v3
        with:
          name: build-tar
          path: build.tar.gz

  deploy:
    needs: build
    runs-on: ubuntu-latest
    steps:
      - name: Download build artifact
        uses: actions/download-artifact@v3
        with:
          name: build-tar
      - name: Transfer build artifacts to EC2 instance
        uses: appleboy/scp-action@master
        with:
          host: ${{ secrets.HOST }}
          username: ec2-user
          key: ${{ secrets.SSH_PRIVATE_KEY }}
          source: build.tar.gz
          target: /var/www/html/
      - name: Extract and clean up build artifacts
        run: ssh -i ~/.ssh/id_rsa ec2-user@${{ secrets.HOST }} 'tar -zxvf /var/www/html/build.tar.gz -C /var/www/html/ && rm /var/www/html/build.tar.gz'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 20:05:33